EIP-3300: 逐步取消退款
Authors | William Morriss (@wjmelements) |
---|---|
Created | 2020-02-26 |
Discussion Link | https://ethereum-magicians.org/t/eip-3300-phase-out-refunds/5434 |
简单总结
逐步取消 SSTORE
和 SELFDESTRUCT
gas 退款。
摘要
此 EIP 将定义一个区块,在该区块中 SSTORE
和 SELFDESTRUCT
退款将开始减少。
退款将线性递减,以加速的速度侵蚀此类退款的隐式价值。
动机
退款增加了区块弹性,因此区块 gas 目标可以超过矿工设定的数量高达 2 倍。 这可能会导致矿工犹豫是否增加区块 gas 目标。
退款,无论是否代币化,对持有者都很有价值,尤其是在拥塞期间。 如果必须删除退款,那么其价值的逐渐变化对 gas 市场的破坏性将小于突然取消。 退款消耗将继续进行,尤其是在拥塞期间,并且可以从状态中清除退款。 由需求驱动的退款创建将随着退款效率的下降而自然减少。 随着退款价值接近激活成本,退款的隐式价值将接近于零,但在拥塞期间,它们将被清除。
与补偿和清理相比,此更改对协议开发人员来说工作量更少,同时可能仍然可以实现清理。
规范
参数:
FORK_BLOCK_NUM
: EIP-3300 激活区块REFUND_DECAY_STEP
: 1 gasREFUND_DECAY_FREQUENCY
: 100 个区块
计算:
REFUND_DECAY
:REFUND_DECAY_STEP * ceil((block.number + 1 - FORK_BLOCK_NUM) / REFUND_DECAY_FREQUENCY)
在此 EIP 激活的区块上,并且每 REFUND_DECAY_FREQUENCY
个区块再次激活,所有 gas 退款(包括 SELFDESTRUCT
和 SSTORE
)将减少 REFUND_DECAY_STEP
,直到 0。
当前差异称为 REFUND_DECAY
,应从每个 gas 退款中减去。
对于具有取消先前退款的退款删除的 gas 成本体系,退款计数器不能为负的不变量将通过将这些删除的大小减少 REFUND_DECAY
来保持,直到 0。
EIP-2929
截至 EIP-2929 的退款如下:
- SELFDESTRUCT 为 24000
SSTORE_RESET_GAS - SLOAD_GAS
(5000 - 100)SSTORE_SET_GAS - SLOAD_GAS
(20000 - 100)SSTORE_SET_GAS - SLOAD_GAS
(20000 - 100)SSTORE_CLEARS_SCHEDULE
(15000)
每个退款将减少当前的 REFUND_DECAY
。
还有一种情况是从退款计数器中删除 SSTORE_CLEARS_SCHEDULE
。
该删除也将减少 REFUND_DECAY_STEP
直到 0,从而保持非负退款计数器不变量。
理由
持久化的退款将在低于其激活成本之前变得毫无价值。
一旦退款毫无价值,就可以通过另一个硬分叉将其删除,而无需等待 0。
指定的减少速率当前将需要 (24000-5000) * 100 = 1,900,000 个区块用于 SELFDESTRUCT
,以及 (15000-5000) * 100 = 1,000,000 个区块用于 SSTORE
。
目前,这个时间范围大约为一年,应该有足够的灵活性来消耗剩余的退款。
向后兼容性
此提案破坏了 gas 退款,gas 退款有助于区块弹性。 这样做的效果是 gas 价格波动性增加:更高的高点和更低的低点。
由于退款计数器与 gas 计数器分开,因此区块到区块的 gas 更改不会破坏 eth_estimateGas
。
版权
通过 CC0 放弃版权及相关权利。
Citation
Please cite this document as:
William Morriss (@wjmelements), "EIP-3300: 逐步取消退款 [DRAFT]," Ethereum Improvement Proposals, no. 3300, February 2020. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-3300.