gas gasPrice

区块链浏览器查看交易数据在remix中向一个合约发送1wei的eth,介绍下交易明细中的各个字段的含义

1、区块链浏览器查看交易数据

在向合约中发送1wei的eth, 介绍下交易明细中的各个字段的含义。 https://goerli.etherscan.io/tx/0xf836049be423723eba16b00b84ecfbfde4c98e10a57c153426bd8834a7136a43 image.png

  • 在Input Data中数据为空, 所以是个纯发送的eth交易。
  • Gas Fees 指的是计算单个gas的费用时 涉及到三部分 gasPrice = min(Base + MaxPriority , Max)
    1. Base 基础费用由之前区块计算得出来的。在交易结束后改部分的eth会被燃烧掉,减少eth的通胀。
    2. Max Priority 最大优先费用,也就是我们自愿给矿工的小费, 该费用越高交易越会被优先打包执行。
    3. Max 本次交易中允许的最大Gas Fee。比如:在本次交易中没有被打包进区块,在下一次打包时通过计算Base的费用可能会增加。用户可以限制该费用,使Gas Fee不超限制。
  • Gas Price 单个gas的价格 Gas Price = Base + Max Priority = 0.000000111 Gwei + 1 Gwei = 1.000000111 Gwei < 1.5 Gwei(Max)
  • Gas Limit & Usage by Txn gas数量的最大限制和本次交易中使用的gas数量, 本次交易消耗了21055个gas
  • Transaction Fee 本次交易的费用 本次交易的费用 = 消耗的gas数量 gas的单价 0.000021055002337105 ETH = 0.000000001000000111 ETH 21055
  • Burnt & Txn Savings Fee 燃烧掉的eth和本次节省的eth费用
    1. Burnt燃烧的是Base单价 所以Burnt = 0.000000111 Gwei * 21055 = 0.000000000002337105 ETH
    2. Txn Savings Fee 设置的最大Gas Fee - 实际使用的Gas Fee (1.5 Gwei - 1.000000111 Gwei) * 21055 = 0.000010527497662895 ETH
  • value 本次发送给合约的1wei

2、EOA给合约发送ETH的gas数量

在上面的明细中有个小疑问, 发送eth不是固定的21000gas费用么, 这个为什么是21055个gas呢? 我们接收eth的合约使用了receive external payable函数, 在发送eth给合约时会执行receive方法, 有些初始化的操作也会消耗一部分的gas费用。 使用remix的debug查看相关opCode 初始化累计共55gas: image.png

opCode的gas耗费参考: https://ethereum.org/zh/developers/docs/evm/opcodes MSTORE操作码涉及到内存扩展的耗费, 计算参考: https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion

3、使用ethers.js v6查询交易信息

(async () => {
    const ALCHEMY_GOERLI_URL = 'https://eth-goerli.alchemyapi.io/v2/GlaeWuylnNM3uuOo-SAwJxuwTdqHaY5l';
    const goerliProvider = new ethers.JsonRpcProvider(ALCHEMY_GOERLI_URL);
    const block = await goerliProvider.getBlock(8871803, false);
    console.log(`8871803 block baseFeePerGas:${block.baseFeePerGas}`)
    const tx = await goerliProvider.getTransaction('0xf836049be423723eba16b00b84ecfbfde4c98e10a57c153426bd8834a7136a43');
    console.log(`8871803 block tx.maxPriorityFeePerGas:${tx.maxPriorityFeePerGas}`);
    console.log(`8871803 block tx.maxFeePerGas:${tx.maxFeePerGas}`);
})();

返回的信息, 与上面etherscan计算出的参数一致.

8871803 block baseFeePerGas:111
8871803 block tx.maxPriorityFeePerGas:1000000000
8871803 block tx.maxFeePerGas:1500000000
点赞 2
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
打野工程师
打野工程师
江湖只有他的大名,没有他的介绍。