# EIP-3860

> EIP-3860 是一项关于更改以太坊中 initcode 的最大大小限制并引入与 initcode 长度成比例的 gas 费用的提案。

- Canonical URL: https://iq.wiki/zh/wiki/eip-3860
- Categories: Projects & Protocols
- Tags: Layer 1, DeFi
- Created: 2023-03-14T03:55:13.868Z
- Last updated: 2023-03-31T23:40:56.898Z
- Source: IQ.wiki — the world's largest blockchain and crypto encyclopedia (https://iq.wiki)

---

**EIP-3860** 提出了对 [以太坊](https://iq.wiki/wiki/ethereum) 中 initcode 的最大大小限制的更改，并引入了对 initcode 的每 32 字节块的 gas 费用，作为 Shapella 升级的上海[硬分叉](https://iq.wiki/wiki/hard-fork)的一部分。该提案旨在确保 initcode 被公平收费，成本与 initcode 的长度成正比。

## 概述

2021 年 7 月 16 日，创建了 [EIP](https://iq.wiki/wiki/ethereum-improvement-proposal-eip)-3860 以更新 initcode，从而最大限度地降低风险。由于缺乏对 initcode 大小的限制，导致一些 EVM 提案进行了长时间的讨论，影响了设计，甚至导致了功能的延迟或取消。通过引入限制，该提案旨在通过设置显式限制（例如代码大小、代码偏移量和跳转偏移量）来简化 EVM 引擎，以适应 16 位。[\[1\]](#cite-id-4n5ohaqlh38)[\[3\]](#cite-id-8u5tp4oibvf)

Initcode 是在创建新合约期间执行的代码，当前 initcode 的最大值在 EIP-170 中设置为 24576 字节。但是，EIP-3860 建议将 initcode 的新最大值增加到 49152 字节，是当前最大值的两倍。此更改将使最大合约大小翻倍，并使合约具有更复杂的功能。[\[1\]](#cite-id-4n5ohaqlh38)

## 详情

每个 initcode 字节的 gas 成本将增加 0.0625 gas，并且将 gas 部署到合约的成本也将略有增加。此外，对于每个 32 字节的 initcode 块，还有额外的 2 gas 成本，这表示合约创建期间 jumpdest 分析的成本。[\[2\]](#cite-id-ydbfi2nqpc)

EIP-3860 提案为在以太坊区块链上创建新程序设置了规则。两个重要的规则是 INITCODE\_WORD\_COST（成本为 2）和 MAX\_INITCODE\_SIZE（是允许的最大代码大小的两倍）。如果交易的程序代码大于 MAX\_INITCODE\_SIZE，则该交易无效。此外，程序代码的成本包含在交易的总成本中，如果交易没有足够的 gas 来支付成本，则该交易无效。对于 CREATE 和 CREATE2 指令，在执行程序代码之前会扣除额外的 gas 成本。INITCODE\_WORD\_COST 的成本常数由性能基准确定，基准是 geth 1.10.9 中的 KECCAK256 哈希。[\[2\]](#cite-id-ydbfi2nqpc)



## 作者

* Martin Holst Swende
* Paweł Bylica
* Alex Beregszaszi
* Andrei Maiboroda

[\[2\]](#cite-id-ydbfi2nqpc)
