Releases: iotexproject/iotex-core
v1.10.1
v1.10.1 Release Note
Summary
v1.10.1 is a maintenance release, with couple of improvements:
- Added ChatGPT code review, leveraging the latest AI technology to safeguard
the code quality. - Implemented 2 web3js API:
debug_traceCall
anddebug_traceTransaction
which
further increased our chain's compatibility with the Ethereum ecosystem. - Limited batch size for web3 API request, to help rate-limit the API endpoint and
protect against potential DDoS attack.
Upgrade Priority
Upgrade is not necessary, nodes can continue to run normally.
Node type | Action |
---|---|
Delegate | Not required |
Fullnode | Not required |
Commits In This Release
- [context] remove EnableWeb3Rewarding flag #3852
- [context] remove FixRewardErroCheckPosition flag #3851
- [api] ServerV2.Stop() use correct context #3837
- add chatgpt code review #3824
- [API] add limit batch request for web3 API #3822
- [API] implement web3 API debug_traceCall #3813
- [consensus] Add proposer role #3814
- [API] implement web3 API debug_traceTransaction #3779
- [state] remove unnecessary new(big.Int) #3778
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
v1.9.2: [API] add batch size limit for jsonrpc (#3805)
Summary
v1.9.2 is a maintenance release, with the following fix:
- Limit the maximum size of RPC response data to prevent node from running out
of memory.
Upgrade Priority
If your node is running as gateway, it is recommended to upgrade to v1.9.2 to
better protect it from potential out-of-memory attack.
Node type | Action |
---|---|
Delegate | Not required |
Gateway | Recommended |
Fullnode | Not required |
Commits In This Release
- [API] add batch size limit for jsonrpc #3805
v1.9.1
Summary
v1.9.1 is a maintenance release, with 2 fixes:
- Certain build config is accidently deleted, causing git version and commit_id
being missed from the software binary. This is a quick fix to restore that info
so delegate nodes can correctly report the binary version they are running. ioctl node delegate
command can correctly show all probated delegates now.
Upgrade Priority
All delegate nodes must upgrade in order to correctly report the binary version
they are running.
Node type | Action |
---|---|
Delegate | Must upgrade |
Fullnode | Not required |
Commits In This Release
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
v1.8.4
v1.8.4 is a hot-fix release. Please see https://github.com/iotexproject/iotex-bootstrap/blob/master/184_patch/patch.md for details
v1.8.2
v1.8.2 is a regular maintenance release
- Enhanced p2p network robustness by adding GroupID to DHT protocol in peer discovery (#3409,#3580)
- Multiple API improvments and code refactor (#3303,#3432,#3433,#3434,#3441,#3442,#3443,#3485)
- Remove the global config.EVMNetworkID() (#3431,#3437,#3460,#3491)
- Use internal caching to speed up action.Address(), action.Hash(), and action.SenderAddress() (#3420,#3446)
- Clean-up of certain obsolete code (#3453,#3463,#3464,#3465)
v1.8.1
v1.8.1 is a regular maintenance release
v1.8.0
Note that v1.8.0 has a hardfork, which will be activated at block height 17,662,681 (ETA is 05/30/2022 around 11pm UTC) on IoTeX mainnet.
- Added chain ID into transaction for enhanced transaction security (#3188)
- Supported staking transactions via web3 protocol (#3209)
- Improved p2p connection robustness (#3371)
- Multiple API improvements (#3073, #3174, #3205, #3217)
- Introduced chainservice builder to better manage service start-up and shut-down (#3235,#3364)