ACP-24: Shanghai Eips
Details for Avalanche Community Proposal 24: Shanghai Eips
ACP | 24 |
---|---|
Title | Activate Shanghai EIPs on C-Chain |
Author(s) | Darioush Jalali (@darioush) |
Status | Activated |
Track | Standards |
Abstract
This ACP proposes the adoption of the following EIPs on the Avalanche C-Chain network:
- EIP-3651: Warm COINBASE
- EIP-3855: PUSH0 instruction
- EIP-3860: Limit and meter initcode
- EIP-6049: Deprecate SELFDESTRUCT
Motivation
The listed EIPs were activated on Ethereum mainnet as part of the Shanghai upgrade. This ACP proposes their activation on the Avalanche C-Chain in the next network upgrade. This maintains compatibility with upstream EVM tooling, infrastructure, and developer experience (e.g., Solidity compiler >= 0.8.20).
Specification & Reference Implementation
This ACP proposes the EIPs be adopted as specified in the EIPs themselves. ANCs (Avalanche Network Clients) can adopt the implementation as specified in the coreth repository, which was adopted from the go-ethereum v1.12.0 release in this PR. In particular, note the following code:
- Activation of new opcode and dynamic gas calculations
- EIP-3860 intrinsic gas calculations
- EIP-3651 warm coinbase
- Note EIP-6049 marks SELFDESTRUCT as deprecated, but does not remove it. The implementation in coreth is unchanged.
Backwards Compatibility
The following backward compatibility considerations were highlighted by the original EIP authors:
- EIP-3855: "... introduces a new opcode which did not exist previously. Already deployed contracts using this opcode could change their behaviour after this EIP".
- EIP-3860 "Already deployed contracts should not be effected, but certain transactions (with initcode beyond the proposed limit) would still be includable in a block, but result in an exceptional abort."
Adoption of this ACP modifies consensus rules for the C-Chain, therefore it requires a network upgrade.
Security Considerations
Refer to the original EIPs for security considerations:
Open Questions
No open questions.
Copyright
Copyright and related rights waived via CC0.
Is this guide helpful?