文章目录

    • Gas 费用
        • 部分变量说明
        • 转账Gas计算公式
    • 以太测试网
        • Goerli 测试网
        • Sepolia 测试网
    • 测试网单笔转账(弄清Gas费用)
        • 不设置Gas进行转账
        • 设置Gas进行转账:web3-eth
    • 报错
        • Error: eip-1559 transaction do not support gasPrice

Gas 费用

参考文章:

  • 以太坊转账手续费与到账速度 如何巧妙设置Gas能省钱?
  • 以太坊ETH中的 gas、gasprice 和 gaslimit(核心理解,终于知道怎么计算了)
  • 官方Gas解释
部分变量说明

根据测试网-不设置Gas进行转账的交易数据,来分析一下交易Gas。在交易数据中,Gas相关的变量主要有如下四个:

变量名变量含义一般设置
maxPriorityFeePerGas每份燃料支付给矿工的最大小费可以设置为1gwei / $0.03
maxFeePerGas每份燃料支付给矿工小费的最大费用,包含baseFeePerGas和maxPriorityFeePerGas可以不设置
gasPrice每份燃料的价格8gwei / $0.26
gasLimit一次交易中gas的可用上限可以不设置
转账Gas计算公式

感觉这些不是关键,根据文章计算一下:一次转账固定消耗21000gas,gas使用ETH来支付。

根据以太坊浏览器里的实时Gas价格,1eth=10亿Gwei,一次转账需要21000Gas,当前Gas单价为 14Gwei,也就是一次转账需要美刀:(0.000000001**21000*14)*1579$/eth=$0.464226,刚好能够对应图里的 $0.46。

以太测试网

Goerli 测试网

参考文章:如何在 Goerli 网络中获取测试 ETH

https://goerli-faucet.mudit.blog/,该水龙头已经没有 GöETH 测试币余额了。

通过 goerli-faucet.pk910.de/ 地址在线挖测试币,竞争很大,要挖 1 个小时左右才能获得最低提现额度 0.02 GöETH。

北京时间上午十点,这也太慢了,先取消吧。

不挖还不行,挂着吧,运气好15分钟就能挖到0.02提取了。

Sepolia 测试网

没有找到水龙头。

测试网单笔转账(弄清Gas费用)

不设置Gas进行转账

参考文章:Ethers极简入门: 4. 发送ETH

事先定义好钱包私钥、钱包地址:

// 根据钱包私钥创建对象const wallet_11 = new ethers.Wallet(privateKey_11, provider)const oneGwei = ethers.BigNumber.from("1000000000");console.log(ethers.utils.formatUnits(oneGwei, "ether"));//发送交易,获得收据const sendETH = async() => {const tx = {to: wallet_address_12,value: ethers.utils.parseEther("0.001")}const receipt = await wallet_11.sendTransaction(tx)await receipt.wait() // 等待链上确认交易console.log(receipt) // 打印交易详情}sendETH()

打印的交易详情:

{type: 2,chainId: 5,nonce: 0,maxPriorityFeePerGas: BigNumber { _hex: '0x59682f00', _isBigNumber: true },maxFeePerGas: BigNumber { _hex: '0x246fd2c674', _isBigNumber: true },gasPrice: null,gasLimit: BigNumber { _hex: '0x5208', _isBigNumber: true },to: '0x79B47AAfC5Bf1AAcC07F022A04fcFc8cDC66d3e8',value: BigNumber { _hex: '0x038d7ea4c68000', _isBigNumber: true },data: '0x',accessList: [],hash: '0x76033a70f23933c80c91bce282452a6d6bb48b5df2a5327679152dabc58a0d75',v: 0,r: '0x49e803e3b44dd0fd49597233d8c8620930f3dc7888785ea78408030d3865335c',s: '0x4fbdbed45de9364964626a2a4c2582d66de269feec5ccff5725e2b727675bc43',from: '0x281aF131Fc854Cb6756A7e2F57D895bcCf6DaFd5',confirmations: 0,wait: [Function (anonymous)]}

ETH变化如下,转账gas费用=0.032-0.0293+0.001=0.0017。

钱包发送前余额发送后余额
钱包110.0320.0293
钱包1200.001
设置Gas进行转账:web3-eth

见文章:

【区块链交互】第七篇:以太坊测试网转账(改用web3-eth库)

报错

Error: eip-1559 transaction do not support gasPrice

参考文章:智能合约 空投 nodejs调用web3js进行批量转账

Goerli 测试网转账,对于交易中的 Gas 参数设置会报错,提示”无效键名”:

连接以太坊主网,也是同样的报错。

排查:问题出在对象及其方法上, ethers.Wallet(privateKey, provider).sendTransaction(tx) 这个方法的参数里不包含 gas 等相关参数。

解决:使用 web3 或者 web3-eth 库。