什么是 gas?
Gas 就像是机车行驶过程中需要燃烧燃料一样,对于区块链信息的记录至关重要,它是指在网络上执行特定操作所需的计算工作量。
为什么需要 gas?
Gas 还有助于保障以太坊网络的安全。对每次在网络上执行的操作都收取一定费用,可以防止网络上出现过多的垃圾信息,例如用户有易或无意的无限循环浪费网络资源。
收取 Gas 还会让矿工更有动力记账。在 EVM 上进行每笔交易都需要矿工付出资源执行,因此用户必须支付一定的费用给矿工作为劳动的报酬。Gas 费就是用户进行交易所需要支付的费用。
Gas 如何提供?
以以太坊为例,当用户需要在链上进行一笔交易时,gas fee 不是从用户发送的 token 数量中扣除,而是从用户地址剩余的 ETH 中扣除。
Gas fee 会在用户进行交易的同时扣除,交易预计要支付 gas fee 的数量会在交易时提示给用户,因此用户需要保证在钱包中拥有足够的 ETH 可以支付 gas fee。
以太坊上支付 gas fee 的使用的是其原生代币 ETH,同理在 EVM 链上进行交易基本都需要先在钱包中兑换出足够足够的原生代币(如 ETH)才能进行。
例如,Alice 的钱包地址中有 5 ETH,她希望转出 1 ETH 给 Bob,假如当时的交易较拥堵,完成这笔交易需要 Alice 支付 0.1 ETH 作为 gas fee。当在链上完成交易后,Bob 将收到这 1 ETH,而 Alice 的钱包将剩下 3.9 ETH(5-1-0.1=3.9).
EIP-1559 后的 gas fee
2021年8月5日(12:33:42 PM +UTC),在以太坊区块高度 12,965,000 时激活了第十一次硬分叉——伦敦升级。本次升级的社区提案(EIP)中最受关注的 EIP-1559 对以太坊的 gas 费机制进行了重大的改变。
伦敦升级主要从两方面优化升级前 gas fee 的问题
伦敦升级后虽然让 gas 费的计算变的更加复杂了,但提升了用户在设定 gas fee 时的体验,这些机制也使得 gas 价格可以更加平稳。
在 Footprint Analytics 中如何监控 gas fee
一笔总交易的 Transaction Fee 是基础费和优先费之和, 从另外一个角度来看, 也是 Gas Price 与 Usage by Txn 相乘。Gas Price 是矿工工作的单价,Usage by Txn 是矿工使用的工作量。
知道了原理,就可以在 Footprint Analytics 上对 Gas 进行多角度的分析。分析师可以根据需求使用 ethereum_transactions 和 ethereum_blocks 的字段进行运算。
Field | Field Type | Description |
---|---|---|
block_hash | string | Hash of the block where this transaction was in |
block_number | integer | Block number where this transaction was in |
block_timestamp | timestamp | Timestamp of the block where this transaction was in |
from_address | string | Address of the sender |
gas | integer | Gas provided by the sender |
gas_price | float | Gas price provided by the sender in Wei |
hash | string | Hash of the transaction |
input | string | The data sent along with the transaction |
max_fee_per_gas | integer | Total fee that covers both base and priority fees |
max_priority_fee_per_gas | integer | Fee given to miners to incentivize them to include the transaction |
nonce | integer | The number of transactions made by the sender prior to this one |
receipt_contract_address | string | The contract address created, if the transaction was a contract creation, otherwise null |
receipt_cumulative_gas_used | integer | The total amount of gas used when this transaction was executed in the block |
receipt_effective_gas_price | integer | The actual value per gas deducted from the senders account. Replacement of gas_price after EIP-1559 |
receipt_gas_used | integer | The amount of gas used by this specific transaction alone |
receipt_root | string | 32 bytes of post-transaction stateroot (pre Byzantium) |
receipt_status | integer | Either 1 (success) or 0 (failure) (post Byzantium) |
to_address | string | Address of the receiver. null when its a contract creation transaction |
transaction_index | integer | Integer of the transactions index position in the block |
transaction_type | integer | Transaction type |
value | float | Value transferred in Wei |
ethereum_transactions dictionary
更多 数据字典 可以在此了解。
由于 gas 的消耗相比 1 ETH 会小很多,通常使用 GWei 或 Wei 作为计量单位。Footprint Analytics 上的数据单位为 Wei,计算 gas fee 可通过 receipt_effective_gas_price 和 receipt_gas_used 进行相乘获得。
如果想了解基础费可则需要与 ethereum_blocks 通过 block_number 字段进行连表获取该 block 的 base_fee_per_gas。
如何使用数据关注 gas 的波动
gas 会受到当前网络情况的影响,当交易频繁时也会推高 gas price。可以利用 Footprint Analytics 的趋势图了解到 EVM 链上特定时间段的 gas 涨幅,为用户节约不必要的支出。
除了看近期 gas 的波动情况,通过时段分析也可为交易者节约费用。通过计算可以看到近 30 天不论从中位数还是平均的 gas price,UTC+0 时间的 14 点到 21 点是价格较高的时段,选择避开这段时间交易是更为明智的选择。
对 gas price 进行分箱分析,近 30 天有 12% 交易的 Gas price 在 20 - 30 Wei 之间,用户可以通过此判断即将进行的交易价格是否合理。
同样是 EVM 的其他公链,也可以进行比较,选择一个 gas fee 消耗低的公链进行交易也不妨是一个明智的选择。但不同公链的 gas 费使用的代币不同,直接拿来对比不具有可比性,因此需要都将他们转换成美元。
这时我们可以通过连表功能与币价表( token_daily_stats )进行关联,将之前计算出的 gas fee 再乘上它每日的币价便可快速地转回成美元计价。
很明显的可以看出以太坊上的每日的平均 gas fee 近期在 2 美元左右,而 Polygon 在 0.02 美元左右,相差大约 100 倍。对于交易金额不大的用户每次交易都要支付高额的 gas fee 成本会显得更大,选择一个 gas fee 低的公链操作将会是个更好的方案。
由于 EVM 上交易的特性,每笔交易都需要消耗 gas 费,通过数据对 gas 进行分析,了解目前的形式,对于交易频繁的用户可以是必不可少的功课。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。