|
| 1 | +# v1.9.0 Release Note |
| 2 | + |
| 3 | +## Summary |
| 4 | +**v1.9.0 has a hardfork, which will be activated at block height |
| 5 | +21,542,761 (ETA is around 01/11/2023 12am UTC) on IoTeX mainnet.** |
| 6 | + |
| 7 | +All nodes **must** upgrade to this release, or otherwise the node |
| 8 | +won't be able to sync with the IoTeX blockchain after the |
| 9 | +activation block. |
| 10 | + |
| 11 | +v1.9.0 enables couple of important features: |
| 12 | +1. Zero-nonce feature |
| 13 | +2. EVM upgrade to London |
| 14 | +3. Complete fix to the issue patched by v1.8.4 |
| 15 | + |
| 16 | +## Breaking Changes |
| 17 | + |
| 18 | +### Zero-nonce for new account |
| 19 | +With this new feature, a newly created account will have 0 as its initial nonce. |
| 20 | +For historic reason, our mainnet is launched with that initial nonce value equal |
| 21 | +to 1, which is different from Ethereum's convention that the initial nonce starts |
| 22 | +from 0. Starting from v1.9.0, this behavior will converge to Ethereum's convention, |
| 23 | +further enhancing our chain's compatibility with Ethereum eco-system. In particular, |
| 24 | +the Gnosis Safe protocol (which hinges on this zero-nonce property) will be able to |
| 25 | +successfully integrate with the IoTeX blockchain after the v1.9.0 launch. |
| 26 | + |
| 27 | +### EVM upgrade to London |
| 28 | +With v1.9.0, the EVM has been upgraded to London (and including Berlin), which |
| 29 | +enables many important EIPs. For example, EIP-2565 lowers ModExp gas cost and |
| 30 | +EIP-2930 provides an optional access list (a list of addresses and storage keys) |
| 31 | +to reduce the gas cost when accessing these addresses and keys during contract |
| 32 | +execution. Here's a complete list of EIPs enabled in London and Berlin: |
| 33 | +1. [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559): Fee market change for ETH 1.0 chain |
| 34 | +2. [EIP-3198](https://eips.ethereum.org/EIPS/eip-3198): BASEFEE opcode |
| 35 | +3. [EIP-3529](https://eips.ethereum.org/EIPS/eip-3529): Reduction in refunds |
| 36 | +4. [EIP-3541](https://eips.ethereum.org/EIPS/eip-3541): Reject new contract code starting with the 0xEF byte |
| 37 | +5. [EIP-3554](https://eips.ethereum.org/EIPS/eip-3554): Difficulty Bomb Delay to December 2021 |
| 38 | + |
| 39 | +and EIPs enabled in Berlin: |
| 40 | +1. [EIP-2565](https://eips.ethereum.org/EIPS/eip-2565): ModExp Gas Cost |
| 41 | +2. [EIP-2718](https://eips.ethereum.org/EIPS/eip-2718): Typed Transaction Envelope |
| 42 | +3. [EIP-2929](https://eips.ethereum.org/EIPS/eip-2929): Gas cost increases for state access opcodes |
| 43 | +4. [EIP-2930](https://eips.ethereum.org/EIPS/eip-2930): Optional access lists |
| 44 | + |
| 45 | +## Other Features and Improvements |
| 46 | + |
| 47 | +### Complete fix of issue patched by v1.8.4 |
| 48 | +v1.9.0 has provided a complete fix to the issue patched by v1.8.4. After the v1.9.0 |
| 49 | +upgrade, the manual patch will no longer be needed, and we'll deprecate the patch |
| 50 | +in upcoming releases. |
| 51 | + |
| 52 | +### Other Improvements |
| 53 | +Couple of small improvements are added into v1.9.0, including: |
| 54 | +1. Disable http admin port by default |
| 55 | +2. DB will panic when no space left -- better error visibility |
| 56 | +3. Fixed slow context in workingset for faster block processing |
| 57 | +4. Fixed use of weak random number generator |
| 58 | +5. Fixed variadic interface bug |
| 59 | +6. Fixed file permission |
| 60 | +7. Add ReadHeaderTimeout for http connection |
| 61 | + |
| 62 | +## Upgrade Priority |
| 63 | +v1.9.0 comes with a hardfork, so all nodes **must** upgrade in order to keep |
| 64 | +syncing with the IoTeX blockchain |
| 65 | + |
| 66 | +| Node type | Action | |
| 67 | +| ---------- | ------------ | |
| 68 | +| Delegate | Must upgrade | |
| 69 | +| Fullnode | Must upgrade | |
| 70 | + |
| 71 | +## Important Commits (not a complete list) |
| 72 | +1. [genesis] set Okhotsk to activate at 01-11-2023 12am UTC [#3720](https://github.com/iotexproject/iotex-core/pull/3720) |
| 73 | +2. [evm] proper handle refundSnapshot and upgrade go-ethereum release [#3715](https://github.com/iotexproject/iotex-core/pull/3715) |
| 74 | +3. remove nonce field [#3714](https://github.com/iotexproject/iotex-core/pull/3714) |
| 75 | +4. [staking] full comparison of candidates [#3702](https://github.com/iotexproject/iotex-core/pull/3702) |
| 76 | +5. [rewarding] fix error check position [#3704](https://github.com/iotexproject/iotex-core/pull/3704) |
| 77 | +6. [evm] manually correct gas refund in case opcode execution returns Er… [#3690](https://github.com/iotexproject/iotex-core/pull/3690) |
| 78 | +7. Clean up candidates [#3696](https://github.com/iotexproject/iotex-core/pull/3696) |
| 79 | +8. [staking] remove unnecessary call from GetStakingStateReader [#3695](https://github.com/iotexproject/iotex-core/pull/3695) |
| 80 | +9. [db] panic when writing db returns no space [#3686](https://github.com/iotexproject/iotex-core/pull/3686) |
| 81 | +10. fix read tip tool bug [#3662](https://github.com/iotexproject/iotex-core/pull/3662) |
| 82 | +11. [staking] save owner list after PersistStakingPatchBlock [#3671](https://github.com/iotexproject/iotex-core/pull/3671) |
| 83 | +12. [staking] patch for staking protocol [#3661](https://github.com/iotexproject/iotex-core/pull/3661) |
| 84 | +13. [pkg] panic if no space is left [#3636](https://github.com/iotexproject/iotex-core/pull/3636) |
| 85 | +14. [db]fix counting_index data race [#3651](https://github.com/iotexproject/iotex-core/pull/3651) |
| 86 | +15. tool to read tip of state db [#3659](https://github.com/iotexproject/iotex-core/pull/3659) |
| 87 | +16. [evm] support opBasefee [#3643](https://github.com/iotexproject/iotex-core/pull/3643) |
| 88 | +17. [staking] nil pointer check [#3633](https://github.com/iotexproject/iotex-core/pull/3633) |
| 89 | +18. [api] trace web3.js API [#3626](https://github.com/iotexproject/iotex-core/pull/3626) |
| 90 | +19. [blockchain] change private key loading logic [#3621](https://github.com/iotexproject/iotex-core/pull/3621) |
| 91 | +20. GoLang upgarde from 1.17 to 1.18.5 [#3614](https://github.com/iotexproject/iotex-core/pull/3614) |
| 92 | +21. support producerPrivKey load from vault [#3612](https://github.com/iotexproject/iotex-core/pull/3612) |
| 93 | +22. [log] optimize console log format [#3499](https://github.com/iotexproject/iotex-core/pull/3499) |
| 94 | +23. remove config in evm and pool [#3611](https://github.com/iotexproject/iotex-core/pull/3611) |
| 95 | +24. limit account nonce [#3606](https://github.com/iotexproject/iotex-core/pull/3606) |
| 96 | +25. HandleBroadcast use message.(type) directly [#3604](https://github.com/iotexproject/iotex-core/pull/3604) |
| 97 | +26. Disable http admin by default [#3591](https://github.com/iotexproject/iotex-core/pull/3591) |
| 98 | +27. [workingset] Fix context bug in workingset [#3556](https://github.com/iotexproject/iotex-core/pull/3556) |
| 99 | +28. fix Use of weak random number generator [#3578](https://github.com/iotexproject/iotex-core/pull/3578) |
| 100 | +29. [rolldpos] refactor rolldpos.ChainManager [#3516](https://github.com/iotexproject/iotex-core/pull/3516) |
| 101 | +30. [config] move config.Indexer to blockindex package [#3573](https://github.com/iotexproject/iotex-core/pull/3573) |
| 102 | +31. [db] Fix variadic interface bug [#3568](https://github.com/iotexproject/iotex-core/pull/3568) |
| 103 | +32. fix dir permission and file inclusion [#3566](https://github.com/iotexproject/iotex-core/pull/3566) |
| 104 | +33. [pkg] fix deferring unsafe method "Close" on type "*os.File" [#3548](https://github.com/iotexproject/iotex-core/pull/3548) |
| 105 | +34. [httputil] add ReadHeaderTimeout [#3550](https://github.com/iotexproject/iotex-core/pull/3550) |
| 106 | +35. move chanid metrics to chainservice [#3544](https://github.com/iotexproject/iotex-core/pull/3544) |
| 107 | +36. [action] fix incorrect conversion between integer types [#3545](https://github.com/iotexproject/iotex-core/pull/3545) |
| 108 | +37. add ReadHeaderTimeout [#3539](https://github.com/iotexproject/iotex-core/pull/3539) |
| 109 | +38. [config] move config.ActPool to actpool package refactor [#3514](https://github.com/iotexproject/iotex-core/pull/3514) |
| 110 | +39. [config] move config.Chain to blockchain package [#3511](https://github.com/iotexproject/iotex-core/pull/3511) |
| 111 | +40. [config] remove EVMNetworkID() and SetEVMNetworkID() [#3503](https://github.com/iotexproject/iotex-core/pull/3503) |
0 commit comments