EIP-1559 是以太坊的一项重要的费用市场改革提案,旨在改进交易费用的确定机制,并引入一种新的费用结构。在 EIP-1559 中,BASEFEE 是一个核心概念,它是动态调整的交易基础费用,用于调节网络拥堵情况。以下是 BASEFEE 的确定机制:
1. BASEFEE 的作用
- BASEFEE 是每笔交易必须支付的基础费用,用于调节网络拥堵。
- 它会被销毁(burned),而不是支付给矿工,从而减少以太坊的流通量。
- 它的动态调整机制旨在使区块的利用率(gas used)趋近于目标值(target gas used)。
2. BASEFEE 的计算
BASEFEE 是根据前一个区块的 gas 使用情况动态调整的。具体计算规则如下:
(1)目标 Gas 使用量(Target Gas Used)
- 每个区块有一个目标 gas 使用量,通常设置为当前区块 gas 上限(gas limit)的 50%,即
target_gas_used = gas_limit / 2
。
(2)调整公式
BASEFEE 的调整基于前一个区块的 gas 使用量(parent_gas_used
)与目标 gas 使用量(target_gas_used
)的差异。公式如下:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> basefee current = basefee parent × ( 1 + parent_gas_used − target_gas_used target_gas_used × 1 basefee_max_change_denominator ) \text{basefee}{\text{current}} = \text{basefee}{\text{parent}} \times \left(1 + \frac{\text{parent\_gas\_used} - \text{target\_gas\_used}}{\text{target\_gas\_used}} \times \frac{1}{\text{basefee\_max\_change\_denominator}}\right) </math>basefeecurrent=basefeeparent×(1+target_gas_usedparent_gas_used−target_gas_used×basefee_max_change_denominator1)
parent_gas_used
:前一个区块实际使用的 gas 量。target_gas_used
:目标 gas 使用量(通常为 gas limit 的 50%)。basefee_max_change_denominator
:一个常数,用于限制 BASEFEE 的最大调整幅度(通常为 8)。
(3)调整方向
- 如果前一个区块的 gas 使用量 高于 目标值(
parent_gas_used > target_gas_used
),BASEFEE 会 增加,以减少网络拥堵。 - 如果前一个区块的 gas 使用量 低于 目标值(
parent_gas_used < target_gas_used
),BASEFEE 会 减少,以鼓励更多交易。
(4)调整幅度限制
- BASEFEE 的调整幅度受到限制,每次调整的最大幅度为当前 BASEFEE 的 12.5%(即
1/8
),这是通过basefee_max_change_denominator
实现的。
3. BASEFEE 的动态调整示例
假设:
- 当前 BASEFEE 为 100 Gwei。
- 目标 gas 使用量为 15,000,000 gas。
- 前一个区块的实际 gas 使用量为 18,000,000 gas(高于目标值)。
basefee_max_change_denominator
为 8。
根据公式:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> basefee current = 100 × ( 1 + 18 , 000 , 000 − 15 , 000 , 000 15 , 000 , 000 × 1 8 ) \text{basefee}_{\text{current}} = 100 \times \left(1 + \frac{18,000,000 - 15,000,000}{15,000,000} \times \frac{1}{8}\right) </math>basefeecurrent=100×(1+15,000,00018,000,000−15,000,000×81)
计算:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> basefee current = 100 × ( 1 + 3 , 000 , 000 15 , 000 , 000 × 1 8 ) = 100 × ( 1 + 0.2 × 0.125 ) = 100 × 1.025 = 102.5 Gwei \text{basefee}_{\text{current}} = 100 \times \left(1 + \frac{3,000,000}{15,000,000} \times \frac{1}{8}\right) = 100 \times \left(1 + 0.2 \times 0.125\right) = 100 \times 1.025 = 102.5 \text{ Gwei} </math>basefeecurrent=100×(1+15,000,0003,000,000×81)=100×(1+0.2×0.125)=100×1.025=102.5 Gwei
因此,BASEFEE 会从 100 Gwei 增加到 102.5 Gwei。
4. BASEFEE 的特点
- 动态调整:BASEFEE 会根据网络拥堵情况自动调整,无需用户手动设置。
- 销毁机制:BASEFEE 会被销毁,而不是支付给矿工,这有助于减少以太坊的流通量。
- 交易费用结构:用户支付的交易费用由 BASEFEE 和优先费(Priority Fee,即矿工小费)组成。
5. 总结
EIP-1559 通过引入 BASEFEE 机制,使交易费用更加可预测和稳定。BASEFEE 的动态调整基于前一个区块的 gas 使用情况,目标是使区块的 gas 使用量趋近于目标值,从而有效管理网络拥堵。