Alert Source Discuss
🚧 Stagnant Standards Track: Core

EIP-2026: 状态租金 H - 账户的固定预付款

Authors Alexey Akhunov (@AlexeyAkhunov)
Created 2019-05-14
Discussion Link https://ethereum-magicians.org/t/eip-2026-fixed-rent-prepayment-for-all-accounts-change-h-from-state-rent-v3-proposal/3273

简单总结

创建新的账户(包括合约账户和非合约账户)需要一次性的固定租金预付款。已存在的账户在第一次修改时需要支付相同的预付款。支付租金预付款的行为会导致账户添加一个额外的字段,称为 rentbalance。该字段成为状态的一部分。

摘要

这是状态租金路线图的一部分。这个特定的变更引入了一个固定的费用,用于状态扩展,该费用来自向状态添加新账户。理论上,它限制了可以创建的账户数量,因为该固定费用无法通过挖矿回收。

动机

罚款是对交易发送者征收的。与其提高创建账户的 gas 成本(这将直接对矿工征收费用),不如将此变更导向账户的特殊字段 rentbalance。它解决了简单提高 gas 成本的几个缺点:

  1. 预付款无法通过挖矿回收,这在理论上限制了状态中的账户数量(尽管不太可能达到)。
  2. 矿工无法规避罚款或将此类规避扩展到其他用户(例如,通过私人费用回扣)。
  3. 此预付款将用于支付未来的状态租金,并且它将允许新创建的 0 捐赠合约在同一区块中不被驱逐。
  4. 它使得在自毁时可以退还 rentbalance - 当合约自毁时,balancerentbalance 都会被退还。
  5. 在此变更之前,对预先存在的账户进行预付款是必要的,以防止囤积账户。

规范

在区块 H 之后,每个新创建的账户都会获得一个新的字段 rentbalance,类型为无符号 256 位整数。 在区块 H 之后,任何导致创建新账户的操作都会从 tx.origin 中扣除金额 ACCOUNT_PREPAYMENT。此金额将添加到已创建账户的 rentbalance 字段中。 在区块 H 之后,任何修改尚未具有 rentbalance 字段的账户的操作都会从 tx.origin 中扣除金额 ACCOUNT_PREPAYEMENT。此金额将添加到已修改账户的 rentbalance 字段中。这是一项反囤积措施。

导致创建新账户的操作:

  1. 通过将非零 ETH 发送到没有关联账户的地址来创建非合约账户
  2. 通过 coinbase 指向没有关联账户的地址的区块创建非合约账户
  3. 通过 SELFDESTRUCT 创建非合约账户,其参数是没有关联账户的地址
  4. 通过没有目的地但有数据的交易创建合约。这可能导致将非合约账户转换为合约账户,或创建合约账户。
  5. 通过执行 CREATECREATE2 创建合约。这可能导致将非合约账户转换为合约账户,或创建合约账户。

引入预付款后,从 tx.origin 中扣除以太币可能有两种原因:购买和花费 gas,以及花费 gas 用于预付款。交易的 Gaslimit 目前起着安全限制的作用,其中 gaslimit * gasprice 表示发送者 (tx.origin) 授权交易从其账户中扣除的最大 wei 金额。 引入预付款后,gaslimit * gasprice 仍将表示花费的最大 wei 金额,但它将用于购买 gas 和预付款,如有必要。

理由

在租金预付款之前,曾考虑过其他替代方案:

  1. 简单地提高 gas 成本 - 在动机部分讨论过。
  2. 状态租金提案的第一个版本 中,没有关于账户创建时额外征税的概念。这造成了一个轻微的可用性问题,即新创建的 0 捐赠合约将在同一区块中被驱逐(当引入租金时)。这会将状态租金计划的好处延迟到实际引入租金时(在第二次或第三次硬分叉中)。
  3. 状态租金提案的第二个版本 中,有一个锁定的概念。它与租金预付款非常相似,不同之处在于锁定不会涵盖未来的租金支付。

限制预付款的另一种方法(而不是使用 gaslimit * gasprice 作为限制)是在交易中引入一个新的专用字段 prepaymenlimit。此字段仅限制预付款。这种方法需要更改交易格式,以及更改交易发送者的用户界面,并在交易执行期间有两个计数器 - 一个用于 gas,一个用于预付款。

向后兼容性

此更改不向后兼容,需要硬分叉才能激活。 由于需要为创建新账户分配更多的 gas,因此它可能会对现有合约产生一些不利影响。这些不利影响需要更详细地分析。

测试用例

测试用例将从参考实现中生成。

实现

将有概念验证实现来完善和澄清规范。

版权

版权及相关权利通过 CC0 放弃。

Citation

Please cite this document as:

Alexey Akhunov (@AlexeyAkhunov), "EIP-2026: 状态租金 H - 账户的固定预付款 [DRAFT]," Ethereum Improvement Proposals, no. 2026, May 2019. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-2026.