区块链-前端交互第六篇:以太测试网转账和Gas计算

Posted 区块链市场观察家

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区块链-前端交互第六篇:以太测试网转账和Gas计算相关的知识,希望对你有一定的参考价值。

文章目录

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 库。

以上是关于区块链-前端交互第六篇:以太测试网转账和Gas计算的主要内容,如果未能解决你的问题,请参考以下文章

区块链-前端交互第一篇:使用python交互以太测试网(奔向JS)

科普 | 以太坊转账手续费与到账速度,巧妙设置Gas能省钱?

区块链教程之以太坊查询余额及其转账

智能合约实战 gas gasprice gaslimit

智能合约实战 gas gasprice gaslimit

区块链 以太坊 gaslimit 区块大小