EVM Gas 分析

2023-02-02 15:27:20 浏览数 (2)

什么是 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 的问题

  • 费用分配机制:由原来一整笔给矿工的费用,拆分为基础费(Base Fee, 也称作 Burnt Fee)和优先费(Priority fee)。
  • 基础费:每个区块都有作为底价的基础费,会根据上一个区块的基础费和区块利用率计算而来。基础费是用户无法自行调节必须支付的费用,但也让用户更容易预测交易费用。这部分费用最后将被销毁并退出流通。
  • 优先费:由用户选择性支付,该费用直接支付给矿工,对于想要加快交易速度的用户同样可以设置高额度来吸引矿工。
  • 区块的松弛机制:在面对突然激增的交易需求时,EIP-1559允许区块的大小可变。如果超过目标区块大小,每个区块的基础费将最多增加 12.5%。

伦敦升级后虽然让 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 涨幅,为用户节约不必要的支出。

Ethereum GasEthereum Gas

除了看近期 gas 的波动情况,通过时段分析也可为交易者节约费用。通过计算可以看到近 30 天不论从中位数还是平均的 gas price,UTC 0 时间的 14 点到 21 点是价格较高的时段,选择避开这段时间交易是更为明智的选择。

Ethereum Median & Avg Gas Prices By Hour of Day (UTC)Ethereum Median & Avg Gas Prices By Hour of Day (UTC)

对 gas price 进行分箱分析,近 30 天有 12% 交易的 Gas price 在 20 - 30 Wei 之间,用户可以通过此判断即将进行的交易价格是否合理。

Ethereum Txn Gas Price Distribution in 30D %Ethereum Txn Gas Price Distribution in 30D %

同样是 EVM 的其他公链,也可以进行比较,选择一个 gas fee 消耗低的公链进行交易也不妨是一个明智的选择。但不同公链的 gas 费使用的代币不同,直接拿来对比不具有可比性,因此需要都将他们转换成美元。

这时我们可以通过连表功能与币价表( token_daily_stats )进行关联,将之前计算出的 gas fee 再乘上它每日的币价便可快速地转回成美元计价。

很明显的可以看出以太坊上的每日的平均 gas fee 近期在 2 美元左右,而 Polygon 在 0.02 美元左右,相差大约 100 倍。对于交易金额不大的用户每次交易都要支付高额的 gas fee 成本会显得更大,选择一个 gas fee 低的公链操作将会是个更好的方案。

Ethereum Daily Avg Gas Fee in USDEthereum Daily Avg Gas Fee in USD
Polygon Daily Avg Gas Fee in USDPolygon Daily Avg Gas Fee in USD

由于 EVM 上交易的特性,每笔交易都需要消耗 gas 费,通过数据对 gas 进行分析,了解目前的形式,对于交易频繁的用户可以是必不可少的功课。

0 人点赞