v1.9.0
Summary
v1.9.0 has a hardfork, which will be activated at block height 21,542,761 (ETA is around 01/11/2023 12am UTC) on IoTeX mainnet.
All nodes must upgrade to this release, or otherwise the node won't be able to sync with the IoTeX blockchain after the activation block.
v1.9.0 enables couple of important features:
- Zero-nonce feature
- EVM upgrade to London
- Complete fix to the issue patched by v1.8.4
Breaking Changes
Zero-nonce for new account
With this new feature, a newly created account will have 0 as its initial nonce. For historic reason, our mainnet is launched with that initial nonce value equal to 1, which is different from Ethereum's convention that the initial nonce starts from 0. Starting from v1.9.0, this behavior will converge to Ethereum's convention, further enhancing our chain's compatibility with Ethereum eco-system. In particular, the Gnosis Safe protocol (which hinges on this zero-nonce property) will be able to successfully integrate with the IoTeX blockchain after the v1.9.0 launch.
EVM upgrade to London
With v1.9.0, the EVM has been upgraded to London (and including Berlin), which enables many important EIPs. For example, EIP-2565 lowers ModExp gas cost and EIP-2930 provides an optional access list (a list of addresses and storage keys) to reduce the gas cost when accessing these addresses and keys during contract execution. Here's a complete list of EIPs enabled in London:
- EIP-1559: Fee market change for ETH 1.0 chain
- EIP-3198: BASEFEE opcode
- EIP-3529: Reduction in refunds
- EIP-3541: Reject new contract code starting with the 0xEF byte
- EIP-3554: Difficulty Bomb Delay to December 2021
and EIPs enabled in Berlin:
- EIP-2565: ModExp Gas Cost
- EIP-2718: Typed Transaction Envelope
- EIP-2929: Gas cost increases for state access opcodes
- EIP-2930: Optional access lists
Other Features and Improvements
Complete fix of issue patched by v1.8.4
v1.9.0 has provided a complete fix to the issue patched by v1.8.4. After the v1.9.0 upgrade, the manual patch will no longer be needed, and we'll deprecate the patch in upcoming releases.
Other Improvements
Couple of small improvements are added into v1.9.0, including:
- Disable http admin port by default
- DB will panic when no space left -- better error visibility
- Fixed slow context in workingset for faster block processing
- Fixed use of weak random number generator
- Fixed variadic interface bug
- Fixed file permission
- Add ReadHeaderTimeout for http connection
Upgrade Priority
v1.9.0 comes with a hardfork, so all nodes must upgrade in order to keep
syncing with the IoTeX blockchain
Node type | Action |
---|---|
Delegate | Must upgrade |
Fullnode | Must upgrade |
Important Commits (not a complete list)
- [genesis] set Okhotsk to activate at 01-11-2023 12am UTC #3720
- [evm] proper handle refundSnapshot and upgrade go-ethereum release #3715
- remove nonce field #3714
- [staking] full comparison of candidates #3702
- [rewarding] fix error check position #3704
- [evm] manually correct gas refund in case opcode execution returns Er… #3690
- Clean up candidates #3696
- [staking] remove unnecessary call from GetStakingStateReader #3695
- [db] panic when writing db returns no space #3686
- fix read tip tool bug #3662
- [staking] save owner list after PersistStakingPatchBlock #3671
- [staking] patch for staking protocol #3661
- [pkg] panic if no space is left #3636
- [db]fix counting_index data race #3651
- tool to read tip of state db #3659
- [evm] support opBasefee #3643
- [staking] nil pointer check #3633
- [api] trace web3.js API #3626
- [blockchain] change private key loading logic #3621
- GoLang upgarde from 1.17 to 1.18.5 #3614
- support producerPrivKey load from vault #3612
- [log] optimize console log format #3499
- remove config in evm and pool #3611
- limit account nonce #3606
- HandleBroadcast use message.(type) directly #3604
- Disable http admin by default #3591
- [workingset] Fix context bug in workingset #3556
- fix Use of weak random number generator #3578
- [rolldpos] refactor rolldpos.ChainManager #3516
- [config] move config.Indexer to blockindex package #3573
- [db] Fix variadic interface bug #3568
- fix dir permission and file inclusion #3566
- [pkg] fix deferring unsafe method "Close" on type "*os.File" #3548
- [httputil] add ReadHeaderTimeout #3550
- move chanid metrics to chainservice #3544
- [action] fix incorrect conversion between integer types #3545
- add ReadHeaderTimeout #3539
- [config] move config.ActPool to actpool package refactor #3514
- [config] move config.Chain to blockchain package #3511
- [config] remove EVMNetworkID() and SetEVMNetworkID() #3503