github iotexproject/iotex-core v1.10.0

latest releases: v1.14.2, v1.14.1, v1.14.1-testing...
15 months ago

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:

  1. Claim reward via web3.js protocol
  2. 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)

  1. [genesis] set Palau to activate at 04-04-2023 11pm UTC #3823
  2. [nodeinfo] keep updating broadcast list #3818
  3. [config] enable web3 staking and broadcast node info at Palau height #3810
  4. [API] add batch size limit for jsonrpc #3805
  5. implement isDelegate() in nodeinfo #3804
  6. [nodeinfo] broadcast node's height info into p2p network #3744
  7. [goMod] Upgrade iotex-proto to 0.5.13 #3799
  8. [state] Remove receipt checking after runAction #3780
  9. [pkg] Introduce batchWriter #3581
  10. [action] Clean code in handleTransfer #3761
  11. [state] Return err if receipt is nil #3759
  12. [block] deprecate ConvertToBlockHeaderPb() #3774
  13. [db] Optimize memory relocation in writeinfo #3763
  14. [rewarding] add active web3 rewarding settings #3740
  15. update docker build command #3751
  16. complete web3 intergrity test #3743
  17. [config] move config.API to api package #3739
  18. [config] move config.Blocksync to blocksync package #3736
  19. [action] validate candidate name #3705
  20. [config] move config.Consensus to consensus package #3735
  21. [api] web3 rewarding action #3691
  22. [tests] add more cases for gas refund #3707
  23. use config.GasStation instead of config.API #3721
  24. remove nonce field #3714
  25. move IsValidCandidateName to action package #3706

Don't miss a new iotex-core release

NewReleases is sending notifications on new releases.