Before reading this proposal, review the updated IoTeX governance process here .
Change log
- 2022-09-01: Initial draft
Proposer
iotex-core
Summary
This proposal introduces upgrades to the iotex-core blockchain protocol, including upgrading to EVM London and changing the first nonce from 1 to 0 for a new address.
Context
The IoTeX blockchain uses the Ethereum Virtual Machine (EVM) to process Solidity smart contracts. Currently, the iotex-core blockchain protocol utilizes the Berlin release of the EVM. The latest production release of EVM is London, which added 5 Ethereum Improvement Proposals (EIPs) to the Berlin release. Three of these EIPs are relevant to the IoTeX blockchain:
-
EIP-3198 Returns the
BASEFEE
from a block -
EIP-3529 Reduces gas refunds for EVM operations
-
EIP-3541 Prevents deploying contracts starting with
0xEF
Additionally, for historical reasons, the first transaction sent from an IoTeX address uses nonce = 1
, while on Ethereum the first transaction has nonce = 0
.
Proposal
We propose upgrading the iotex-core protocol’s EVM to the London release, as well as updating IoTeX blockchain’s nonce format from nonce = 1
to nonce = 0
for new wallets to align with Ethereum.
Expected Impact
Upgrading the EVM version will align IoTeX with the latest production version on Ethereum where smart contracts can now access use the BASEFEE
value for a block. In addition, it will fix the gas refund amounts to prevent some attacks and will prohibit the deployment of contracts whose bytecode starts by the 0xEF
byte to ensure any conract deployed on IoTeX can still be deployed on Ethereum as is.
For the nonce behavior upgrade, while it is generally only a nuance and not an issue, we should correct the behavior so that the first transaction from a new address created after Mainnet v1.9 will use the same first nonce = 0
format as is the case for Ethereum. This further enhances IoTeX blockchain’s Ethereum compatibility and paves the way for open integration with more projects, such as Gnosis Safe.
Implementation Plan & Future Work
This proposal, if passed, will be activated as part of the Mainnet v1.9 code release. If approved by the community, Mainnet v1.9 will be activated via hard-fork in mid- to late-September 2022.
Call to Action
Please share your thoughts on this proposal using the comments section below – we appreciate your feedback!
-
If you are in support of this proposal, click “Yes” on the poll below.
-
If you are not in support of this proposal, click “No” on the poll below.
If this idea receives >50 “Yes” votes, a formal proposal will be uploaded to the Governance Portal for voting. If you are unfamiliar with the IoTeX governance process, review it here.
- Yes
- No