【区块链】走进web3的世界-gas费用

        气体单位用于衡量在以太坊上执行交易所需的计算量。由于每笔交易都需要一些计算资源来执行,因此需要一笔费用,通常称为Gas fee或Transaction fee 。

        汽油费以以太坊的本地货币——ether或ETH支付。汽油费的计算方式在伦敦升级前后略有不同。 

        注意:通常当有人说“Gas”时 - 他们指的是“Gas Fees”而不是单位本身。但是,出于本教程的目的,我们在技术上是正确的,在提到单位时说“Gas”,在提到 Ether 中的费用时说“Gas Fees”。

1、gas为什么存在?

        gas有助于保持以太坊网络的安全。通过对网络上执行的每次计算收取费用,可以防止不良行为者向网络发送垃圾邮件。

        为了避免智能合约中的意外或恶意无限循环,这将导致所有以太坊节点永远卡住,交易的气体限制设置了交易可以使用多少计算的限制。

2、gas的计算方式

Gwei 代表 Giga-Wei,等于 1,000,000,000 (10^9) wei。Wei是ETH的最小面额。1 ETH = 10^18 Wei。

    gas fee = gas的价格 * 需要消耗gas的数量

    2.1、gas价格的获取方式,可以通过ethers进行获取


import {  getProvider } from '@wagmi/core'

export const getGasPrice = async () => {
    const providers = getProvider()
    const result = await providers.getGasPrice()
    console.log('getGasPrice...', getGasPrice)
    return result.toString()
}

 2.2、消耗gas数量的获取方式(影响gas最大的因素是gas的单价)


import {  getProvider } from '@wagmi/core'

/**
 *
 * @param factor 需要多少个gas
 * @returns
 */
export const estimateGasNumber = async (factor: number) => {
    const provider = getProvider()
    const gasPrice = await provider.getGasPrice()
    const data = formatFixed(gasPrice.mul(factor), 18)
    // 统一保留6位。
    return data.slice(0, 8)
}

// 预判eth注册的gas费用
export const estimateEthRegisterGasFee = async () => {
    const registerCount = 169869
    const commitCount = 46255
    const totalCount = registerCount + commitCount
    const data = await estimateGasNumber(totalCount)
    return data
}

// 预判bnb普通注册费用
export const estimateRegisterBnbGasFee = async () => {
    const registryCount = 293767
    const commitCount = 44027
    const totalCount = commitCount + registryCount
    const data = await estimateGasNumber(totalCount)
    return data
}

// 预判bnb礼品卡注册费用
export const estimateRegisterBnbAndPointGasFee = async () => {
    const registerCount = 304505
    const commitCount = 44027
    const totalCount = commitCount + registerCount
    const data = await estimateGasNumber(totalCount)
    return data
}

ENS浏览器:                

https://testnet.bscscan.com/tx/0x48187736a21e19bc1d274002b3b557745695bf80e520ee0ea6b373e681c94809

注意(合约每一个操作消耗的gas数量基本不变,ETH举例):

     1、Commit所需的gas数量:46255

     2、注册所需的gas数量:169869

     3、授权需要的gas数量:46339

     4、转换需要的gas数量:27966

猜你喜欢

转载自blog.csdn.net/qq_23334071/article/details/130179745