gas gasPrice

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

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

remix中向一个合约发送1wei的eth, 介绍下交易明细中的各个字段的含义。 image.png

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

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

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

00 PUSH1 80            (3 gas)
02 PUSH1 40            (3 gas)
04 MSTORE              (3 + 9 gas)
05 CALLDATASIZE        (2 gas)
06 PUSH1 0a            (3 gas)
08 JUMPI               (10 gas)
09 STOP

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

本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

  • 发表于 2022-09-24 20:39
  • 阅读 ( 381 )
  • 学分 ( 14 )
  • 分类:智能合约

0 条评论

请先 登录 后评论
打野工程师
打野工程师

2 篇文章, 18 学分