v1.10.0
Summary
v1.10.0 has a hardfork, which will be activated at block height 22,991,401 (ETA is around 04/04/2023 11pm 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.
Also we'll use this release opportunity to disable the auto-upgrader, since the auto-upgrader is a fixed script that cannot adapt perfectly well to each release scenario, and has caused a couple of failed upgrades in the past.
In the past, if you use the one-line upgrader tool to run your IoTeX node, please continue to use it to do the v1.10.0 upgrade. This time the script will turn off the auto-upgrader (if it was turned on before). Run the script below just as before.
sudo bash # If your docker requires root privilege
bash <(curl -s https://raw.githubusercontent.com/iotexproject/iotex-bootstrap/master/scripts/setup_fullnode.sh)
If you use the very long docker run
command (like below) to run your IoTeX node, don't worry about the auto-upgrader since it is not turned on. Continue to upgrade your node using the v1.10.0 image:
docker stop iotex
docker rm iotex
docker run -d --restart on-failure --name iotex \
-p 4689:4689 \
-p 8080:8080 \
-v=$IOTEX_HOME/data:/var/data:rw \
-v=$IOTEX_HOME/log:/var/log:rw \
-v=$IOTEX_HOME/etc/config.yaml:/etc/iotex/config_override.yaml:ro \
-v=$IOTEX_HOME/etc/genesis.yaml:/etc/iotex/genesis.yaml:ro \
iotex/iotex-core:v1.10.0 \
iotex-server \
-config-path=/etc/iotex/config_override.yaml \
-genesis-path=/etc/iotex/genesis.yaml
Breaking Changes
v1.10.0 enables 2 important features:
- Claim reward via web3.js protocol
- Node status monitoring by p2p messaging
Claim reward via web3.js protocol
Similar to how we enabled sending transfer and staking actions via web3.js protocol, in v1.10.0 claim reward is enabled as well. Delegates can now send claim reward action using Metamask.
Node status monitoring by p2p messaging
Currently, the IoTeX node is relying on a pre-defined HTTP port to collect the real-time running status, such as the software version and blockchain height. This means that delegate nodes need to open up that HTTP port which might be a security risk, especially for nodes running on clour service provider. It also requires delegate nodes to expose their public IP address, which is not preferred due to both security and privacy concerns, and creates additional maintenance burden to manually update the IP address in case it changes.
In v1.10.0, a new node status monitoring solution is implemented based on the existing p2p network. By exchanging messages about their running status using the p2p network, delegate nodes no longer have to publicize their IP address nor open that specific HTTP port. In addition, the external IP address of a node can now freely change (like being assigned a new IP address after reboot) without worrying about status reporting/collection.
Also in upcoming new releases, we'll introduce more advanced node status monitor functionalities. For instance, an automatic alert service where delegates can register a webhook and receive notification when the node is becoming offline or entering probation.
Upgrade Priority
v1.10.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 Palau to activate at 04-04-2023 11pm UTC #3823
- [nodeinfo] keep updating broadcast list #3818
- [config] enable web3 staking and broadcast node info at Palau height #3810
- [API] add batch size limit for jsonrpc #3805
- implement isDelegate() in nodeinfo #3804
- [nodeinfo] broadcast node's height info into p2p network #3744
- [goMod] Upgrade iotex-proto to 0.5.13 #3799
- [state] Remove receipt checking after runAction #3780
- [pkg] Introduce batchWriter #3581
- [action] Clean code in handleTransfer #3761
- [state] Return err if receipt is nil #3759
- [block] deprecate ConvertToBlockHeaderPb() #3774
- [db] Optimize memory relocation in writeinfo #3763
- [rewarding] add active web3 rewarding settings #3740
- update docker build command #3751
- complete web3 intergrity test #3743
- [config] move config.API to api package #3739
- [config] move config.Blocksync to blocksync package #3736
- [action] validate candidate name #3705
- [config] move config.Consensus to consensus package #3735
- [api] web3 rewarding action #3691
- [tests] add more cases for gas refund #3707
- use config.GasStation instead of config.API #3721
- remove nonce field #3714
- move IsValidCandidateName to action package #3706