EIP-1559升级提案中是如何确定BASEFEE的

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 使用量趋近于目标值,从而有效管理网络拥堵。

相关推荐
罗_三金8 天前
(3)solidity文件结构介绍
web3·去中心化·区块链·solidity·以太坊
杰哥的技术杂货铺1 个月前
以太坊账户详解
以太坊
howard20051 个月前
搭建私有链
以太坊·私有链
howard20051 个月前
初试以太坊Geth客户端
以太坊·geth客户端
天涯学馆2 个月前
以太坊基础知识结构详解
web3·以太坊
Daniel_1873 个月前
区块链技术与应用-PKU 学习笔记
区块链·以太坊·比特币
花花花14 个月前
如何使用智能合约铸造 NFT —— 以 NftMarket 合约为例
去中心化·区块链·智能合约·以太坊·nft·sepolia
bighu4 个月前
区块链应用与以太坊的交互
以太坊·l2
bighu4 个月前
以太坊Rollup方案之 arbitrum(1)
区块链·以太坊·arbitrum·l2