文章目录
- 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。
钱包 | 发送前余额 | 发送后余额 |
---|---|---|
钱包11 | 0.032 | 0.0293 |
钱包12 | 0 | 0.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
库。