Alert Source Discuss
🛑 Withdrawn Standards Track: Core

EIP-2780: 降低交易的固有 gas 消耗

Authors Matt Garnett (@lightclient), Uri Klarman (@uriklarman)
Created 2020-07-11
Discussion Link https://ethereum-magicians.org/t/eip-2780-reduce-intrinsic-cost-of-transactions/4413

摘要

将交易的固有成本从 21,000 gas 降低到 7,000 gas。

动机

目前交易的 21,000 gas 固有成本使得发送 ETH 的成本非常高,对于少量金额(几十美元)来说通常是高得令人望而却步。 虽然在其他 EIP(如 EIP-1559)中正在考虑对 gas 价格和首次价格拍卖进行广泛的更改, 但如果以安全的方式大幅降低发送 ETH 的成本并实现更高的交易量,那将是一个净收益, 并且不会带来负面的外部性,如下所述。

规范

block.number >= FORK_BLOCK 之后,强制执行 7,000 的固有 gas 成本。

理由

对 DeFi 智能合约的调用激增,大大增加了进行交易的成本, 因为此类调用通常既对时间敏感又涉及大量资金。 虽然链的容量被最有价值的交易利用是经过设计的, 但是发送交易的高成本限制了 Ethereum 的用例, 创造了糟糕的用户体验, 降低了 ETH 创造(和捕获)的实际价值, 并促使用户在其他拥塞程度较低的链中寻求替代方案。

关于 Layer-2 的说明:高成本可能会促使用户尝试使用 L2 解决方案, 但是通过允许 L1 的用户体验恶化来强迫用户利用 L2 是一种失败的策略(参见 BTC / Lightning), 并且许多 L2 解决方案的安全性取决于在需要时使用 L1 的能力。 如果 L2 要获得显着的吸引力,它们必须通过提供卓越的属性(例如,终结性、成本、UX)来实现, 而不是通过施加人为的限制来鼓励它。

将交易的固有成本从 21,000 gas 降低到 7,000 gas 将使发送交易更便宜, 易于实现,并且不会产生技术负担。 但是,只有在确定它不会带来不可忽略的外部性之后,才应进行此类更改,具体来说:

  • 提高叔块率。

  • 加快 Ethereum 状态大小的增长速度。

  • 增强 gas 操纵技术(gas 代币)。

向后兼容性

此 EIP 向后兼容,并且与其他 EIP 中采取的其他方法兼容。

测试用例

虽然降低交易固有成本的好处显而易见, 但是只有在不产生负面外部性, 或者此类影响可以忽略不计时,才应应用此类更改。

增加叔块率

从历史上看,高交易计数的时期与 挖出高于平均水平的叔块相关。必须确定 新的固有成本 7,000 不会对叔块率产生不利影响。

应部署应用此更改的测试网,以测试此更改对叔块率的影响。

详细信息待定。

实现

待定

安全考虑事项

增加状态大小增长

Ethereum 状态大小的增长继续引起社区成员的关注。 但是,对 Ethereum 帐户的分析表明,它们对状态大小的影响可以忽略不计。

查看 2020 年上半年,Ethereum 链上的帐户数量从 84,127,955 增长到 103,485,373 - 增加了 19,357,418。由于每个新帐户的创建都会向链状态添加 20 字节,因此这些新帐户已向状态添加了约 369 MB。 与此同时,该链已从约 117 GB 增长到约 147 GB - 增加了 30 GB。 因此,创建新帐户仅占链增长的很小一部分 (1.2%)。

即使在非常激进的假设下,即将交易的固有成本从 21,000 gas 降低到 7,000 gas 将转化为创建的新帐户数量增加 3 倍,如果此更改在 2020 年 1 月 1 日实施,则状态大小仅比今天大 0.49%(见下文)

虽然状态大小仍然是需要解决的未决问题 - 降低交易的固有成本几乎不会影响状态大小的增长速度,并且会显着提高链的可用性。

增强 Gas 操纵(gas 代币)

Gas Token (https://gastoken.io/) 是一种 Ethereum 智能合约,它通过以低 gas 价格存储数据 (V.1) 或创建帐户 (V.2) 来利用存储退款机制,然后在以后的交易中使用更高的 gas 价格释放 (V.1) 或自毁 (V.2) 它们。仅当赎回代币的高 gas 价格是用于铸造它们的低 gas 价格的两倍以上时,此机制才经济。 Gas Token 实际上并没有长期增加状态大小,因为它们会释放它们存储的所有数据,以便从 gas 提升中受益。 但是,它们确实操纵了 gas 价格拍卖。

有人担心将交易的固有成本从 21,000 降低到 7,000 会提高使用 gas 代币所能实现的节省,但是这些担心是没有根据的。 由于使用智能合约的一些开销,铸造和释放单个 gas 代币是不经济的,但是随着铸造和释放的代币数量的增加,开销的影响会减小。 这也是为什么它们的效率几乎不受交易的固有成本影响的原因 - gas 代币旨在将交易成本分摊到许多代币上。

gas 代币的创建者概述了在铸造大量代币时(V.1 最高可达 x2.97,V.2 最高可达 3.49)的最大潜在节省。这些数字不受建议的更改的影响。在铸造 100 个 gas 代币的更实际的场景中,建议的更改仅以微小的数量增加了节省乘数,通常小于铸造 200 个代币而不是 100 个代币所实现的增加。 下表捕获了此提案对以下节省乘数的影响

版本 free_gas_price / mint_gas_price 旧的节省乘数 新的节省乘数 200 个代币的节省乘数
V.1 10 2.075 2.077 2.1
V.1 100 2.780 2.781 2.819
V.2 10 2.243 2.275 2.261
V.2 100 3.251 3.315 3.316

版权

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

Citation

Please cite this document as:

Matt Garnett (@lightclient), Uri Klarman (@uriklarman), "EIP-2780: 降低交易的固有 gas 消耗 [DRAFT]," Ethereum Improvement Proposals, no. 2780, July 2020. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-2780.