|
| 1 | +# v1.10.0 Release Note |
| 2 | + |
| 3 | +## Summary |
| 4 | +**v1.10.0 has a hardfork, which will be activated at block height |
| 5 | +22,991,401 (ETA is around 04/04/2023 11pm UTC) on IoTeX mainnet.** |
| 6 | + |
| 7 | +All nodes **must** upgrade to this release, or otherwise the node won't be able |
| 8 | +to sync with the IoTeX blockchain after the activation block. |
| 9 | + |
| 10 | +Also we'll use this release opportunity to disable the auto-upgrader, since the |
| 11 | +auto-upgrader is a fixed script that cannot adapt perfectly well to each release |
| 12 | +scenario, and has caused a couple of failed upgrades in the past. |
| 13 | + |
| 14 | +In the past, if you use the one-line upgrader tool to run your IoTeX node, please |
| 15 | +continue to use it to do the v1.10.0 upgrade. This time the script will turn off |
| 16 | +the auto-upgrader (if it was turned on before). Run the script below just as before. |
| 17 | +```bash |
| 18 | +sudo bash # If your docker requires root privilege |
| 19 | +bash <(curl -s https://raw.githubusercontent.com/iotexproject/iotex-bootstrap/master/scripts/setup_fullnode.sh) |
| 20 | +``` |
| 21 | + |
| 22 | +If you use the very long `docker run` command (like below) to run your IoTeX node, |
| 23 | +don't worry about the auto-upgrader since it is **not** turned on. Continue to |
| 24 | +upgrade your node using the v1.10.0 image: |
| 25 | +``` |
| 26 | +docker stop iotex |
| 27 | +docker rm iotex |
| 28 | +docker run -d --restart on-failure --name iotex \ |
| 29 | + -p 4689:4689 \ |
| 30 | + -p 8080:8080 \ |
| 31 | + -v=$IOTEX_HOME/data:/var/data:rw \ |
| 32 | + -v=$IOTEX_HOME/log:/var/log:rw \ |
| 33 | + -v=$IOTEX_HOME/etc/config.yaml:/etc/iotex/config_override.yaml:ro \ |
| 34 | + -v=$IOTEX_HOME/etc/genesis.yaml:/etc/iotex/genesis.yaml:ro \ |
| 35 | + iotex/iotex-core:v1.10.0 \ |
| 36 | + iotex-server \ |
| 37 | + -config-path=/etc/iotex/config_override.yaml \ |
| 38 | + -genesis-path=/etc/iotex/genesis.yaml |
| 39 | +``` |
| 40 | + |
| 41 | +## Breaking Changes |
| 42 | +v1.10.0 enables 2 important features: |
| 43 | +1. Claim reward via web3.js protocol |
| 44 | +2. Node status monitoring by p2p messaging |
| 45 | + |
| 46 | +### Claim reward via web3.js protocol |
| 47 | +Similar to how we enabled sending transfer and staking actions via web3.js protocol, |
| 48 | +in v1.10.0 claim reward is enabled as well. Delegates can now send claim reward action |
| 49 | +using Metamask. |
| 50 | + |
| 51 | +### Node status monitoring by p2p messaging |
| 52 | +Currently, the IoTeX node is relying on a pre-defined HTTP port to collect the |
| 53 | +real-time running status, such as the software version and blockchain height. |
| 54 | +This means that delegate nodes need to open up that HTTP port which might be a |
| 55 | +security risk, especially for nodes running on clour service provider. It also |
| 56 | +requires delegate nodes to expose their public IP address, which is not preferred |
| 57 | +due to both security and privacy concerns, and creates additional maintenance |
| 58 | +burden to manually update the IP address in case it changes. |
| 59 | + |
| 60 | +In v1.10.0, a new node status monitoring solution is implemented based on the |
| 61 | +existing p2p network. By exchanging messages about their running status using |
| 62 | +the p2p network, delegate nodes no longer have to publicize their IP address nor |
| 63 | +open that specific HTTP port. In addition, the external IP address of a node can |
| 64 | +now freely change (like being assigned a new IP address after reboot) without |
| 65 | +worrying about status reporting/collection. |
| 66 | + |
| 67 | +Also in upcoming new releases, we'll introduce more advanced node status monitor |
| 68 | +functionalities. For instance, an automatic alert service where delegates can |
| 69 | +register a webhook and receive notification when the node is becoming offline or |
| 70 | +entering probation. |
| 71 | + |
| 72 | +## Upgrade Priority |
| 73 | +v1.10.0 comes with a hardfork, so all nodes **must** upgrade in order to keep |
| 74 | +syncing with the IoTeX blockchain |
| 75 | + |
| 76 | +| Node type | Action | |
| 77 | +| ---------- | ------------ | |
| 78 | +| Delegate | Must upgrade | |
| 79 | +| Fullnode | Must upgrade | |
| 80 | + |
| 81 | +## Important Commits (not a complete list) |
| 82 | +1. [genesis] set Palau to activate at 04-04-2023 11pm UTC [#3823](https://github.com/iotexproject/iotex-core/pull/3823) |
| 83 | +2. [nodeinfo] keep updating broadcast list [#3818](https://github.com/iotexproject/iotex-core/pull/3818) |
| 84 | +3. [config] enable web3 staking and broadcast node info at Palau height [#3810](https://github.com/iotexproject/iotex-core/pull/3810) |
| 85 | +4. [API] add batch size limit for jsonrpc [#3805](https://github.com/iotexproject/iotex-core/pull/3805) |
| 86 | +5. implement isDelegate() in nodeinfo [#3804](https://github.com/iotexproject/iotex-core/pull/3804) |
| 87 | +6. [nodeinfo] broadcast node's height info into p2p network [#3744](https://github.com/iotexproject/iotex-core/pull/3744) |
| 88 | +7. [goMod] Upgrade iotex-proto to 0.5.13 [#3799](https://github.com/iotexproject/iotex-core/pull/3799) |
| 89 | +8. [state] Remove receipt checking after runAction [#3780](https://github.com/iotexproject/iotex-core/pull/3780) |
| 90 | +9. [pkg] Introduce batchWriter [#3581](https://github.com/iotexproject/iotex-core/pull/3581) |
| 91 | +10. [action] Clean code in handleTransfer [#3761](https://github.com/iotexproject/iotex-core/pull/3761) |
| 92 | +11. [state] Return err if receipt is nil [#3759](https://github.com/iotexproject/iotex-core/pull/3759) |
| 93 | +12. [block] deprecate ConvertToBlockHeaderPb() [#3774](https://github.com/iotexproject/iotex-core/pull/3774) |
| 94 | +13. [db] Optimize memory relocation in writeinfo [#3763](https://github.com/iotexproject/iotex-core/pull/3763) |
| 95 | +14. [rewarding] add active web3 rewarding settings [#3740](https://github.com/iotexproject/iotex-core/pull/3740) |
| 96 | +15. update docker build command [#3751](https://github.com/iotexproject/iotex-core/pull/3751) |
| 97 | +16. complete web3 intergrity test [#3743](https://github.com/iotexproject/iotex-core/pull/3743) |
| 98 | +17. [config] move config.API to api package [#3739](https://github.com/iotexproject/iotex-core/pull/3739) |
| 99 | +18. [config] move config.Blocksync to blocksync package [#3736](https://github.com/iotexproject/iotex-core/pull/3736) |
| 100 | +19. [action] validate candidate name [#3705](https://github.com/iotexproject/iotex-core/pull/3705) |
| 101 | +20. [config] move config.Consensus to consensus package [#3735](https://github.com/iotexproject/iotex-core/pull/3735) |
| 102 | +21. [api] web3 rewarding action [#3691](https://github.com/iotexproject/iotex-core/pull/3691) |
| 103 | +22. [tests] add more cases for gas refund [#3707](https://github.com/iotexproject/iotex-core/pull/3707) |
| 104 | +23. use config.GasStation instead of config.API [#3721](https://github.com/iotexproject/iotex-core/pull/3721) |
| 105 | +24. remove nonce field [#3714](https://github.com/iotexproject/iotex-core/pull/3714) |
| 106 | +25. move IsValidCandidateName to action package [#3706](https://github.com/iotexproject/iotex-core/pull/3706) |
0 commit comments