Skip to content

Releases: iotexproject/iotex-core

v1.12.1

22 Dec 06:07
Compare
Choose a tag to compare

Summary

v1.12.1 is the first maintenance release after the latest release v1.12.0. It comes with several important improvements and fixes for the API functionality.

This release introduces a significant enhancement to the transaction pool functionality. First, pending transactions that can soon be included in upcoming blocks will no longer be expired. Secondly, a mechanism has been implemented to replace less favorable pending transactions with more promising ones when the transaction pool approaches its capacity limit. This helps to ensure a higher likelihood of executing more successful transactions on the blockchain. With these improvement, we anticipate a relatively more stable block size, and legitimate transactions with higher gas prices stand a better chance of being swiftly processed on the blockchain, thereby enhancing the end user's experience.

Major Improvements

  1. Correct signature's V value in returned web3 transaction, to fix the transaction hash calculation
  2. Support "input" field in web3 request params to increase the compatibility with latest web3js standard
  3. Set gRPC MaxConnectionIdle time to 5 minutes to improve the API server performance and responsiveness

Upgrade Priority

v1.12.1 does not have a hardfork, but contains important feature improvements to boost the transaction pool functionality. All delegate nodes and API nodes are strongly recommended to upgrade to v1.12.1 in order to provide the best up-to-date service

Node type Action
Delegate Recommended
Fullnode Not required
API node Recommended

Important Commits (not a complete list)

  1. [api] correct signature's V value in returned web3 transaction #3952
  2. [api] fix typo should use EVMNetworkID() #3960
  3. [log] fix JSON log, better trace log #3914
  4. [evm] refactor evm parameters #3958
  5. [util] implement block time calculator #3951
  6. remove ValidateRewardProtocol flag #3946
  7. [config] add SumatraHeight #3962
  8. [action] add NewEthSigner() and pass Signer as input to rlpRawHash() and rlpSignedHash() #3967
  9. fix Dockerfile #3970
  10. [api] support "input" field in web3 request params #3971
  11. set gprc MaxConnectionIdle to 5 min #4023

v1.12.0

27 Oct 01:53
6125a8a
Compare
Choose a tag to compare

Summary

v1.12.0 has a hardfork, which will be activated at block height 26,704,441 (ETA is around 11/05/2023 23:59pm UTC) on IoTeX mainnet.

All nodes must upgrade to this release, otherwise the node runs the risk of not being able to sync with the IoTeX blockchain after other nodes have upgraded.

Note:
There's no change to the mainnet config.yaml and genesis.yaml. You only need to restart your node with the new image.

v1.12.0 marks a substantial advancement by upgrading the EVM to the Bellatrix release, surpassing the previous London release. Furthermore, our team is actively preparing for the integration with most recent Shanghai release, with more desired features planned for subsequent releases.

v1.12.0 has also enabled weighted vote counting for the Staking Bucket NFT, a feature newly launched in July with version 1.11.0. As a result, buckets created under this new feature will now enjoy an equal voting power and receive identical rewards as those of native buckets with equal balances.

Other Improvements

v1.12.0 release also comes with a couple of improvements:

  1. Add ioctl bc delegate command, allowing users to conveniently access the detailed information of any delegate by name or operator address
  2. Fix json unmarshal error when calling eth_getTransactionByHash via ethclient

Upgrade Priority

v1.12.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 Redsea to activate at 11-05-2023 23:59pm UTC #3949
  2. [emv] enable Bellatrix at Redsea height #3942
  3. [staking] fix weighted votes of contract staking bucket #3936
  4. [config] Add RedseaHeight #3934

v1.11.2

29 Sep 01:55
Compare
Choose a tag to compare

Summary

v1.11.2 is a minor release, which fixes a format issue in the return data of
eth_getTransactionByHash API call.

Only API nodes need to upgrade to this release. Delegate nodes can continue to
run v1.11.1 normally, and are NOT required to upgrade.

Bug Fix

  1. TransactionByHash returns error #3932

Upgrade Priority

v1.11.2 contains fix for an API return data format issue. Only API nodes need to
upgrade to this release.

Node type Action
Delegate Not needed
API node Recommended

Commits in This Release

  1. [api] fix json unmarshal error when calling TransactionByHash via ethclient #3933

v1.11.1

01 Sep 20:33
11b446b
Compare
Choose a tag to compare

Summary

v1.11.1 is an important maintenance release, which fixes a bug in the system
staking contract.
The issue was discovered in a pro-active manner, and
precautionary actions are taken to make sure that no actual harm/damage is done
to the system staking.

All nodes must upgrade to this release, otherwise the node runs the risk of
not being able to sync with the IoTeX blockchain after other nodes have upgraded.

Note:
There's no change to the latest config.yaml and genesis.yaml. You only need to
restart the node with the new image.

Other Improvements

v1.11.1 release also comes with a couple of improvements:

  1. Enforce height check for system staking indexer to increase error detection
    and handling robustness
  2. Fix revert message in eth_call
  3. Fix panic: concurrent write to websocket connection
  4. Fix staking action ToEthTx() panic
  5. ioctl] action transfer now supports 0x address format
  6. Added a new ioctl ins register command for INS service

Upgrade Priority

v1.11.1 contains a mandatory bug fix, 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. [blockindex] return empty result before contract deploy height #3928
  2. [blockindex] restrict height for sgdindexer during write and read operation #3926
  3. [blockindex] restrict height for contract_staking_indexer during read operation #3927
  4. [contractstaking] fix transaction for merge after create bucket #3924
  5. [blockindex] introduce indexergroup #3906
  6. [api] fix revert message in eth_call #3922
  7. [ioctl] action transfer supports 0x address #3917
  8. [action] simplify address generation #3913
  9. [chainservice] build contract staking indexer only when staking protocol enabled #3886
  10. [api] fix panic: concurrent write to websocket connection #3908
  11. [staking] fix ToEthTx() panic #3910
  12. [ioctl] support querying delegate by operator address #3904
  13. [ioctl] Add INS register cmd #3903
  14. [staking] make contract staking indexer nullable #3883
  15. [iip15] improve sgd indexer test coverage #3893

v1.11.0

05 Jul 22:08
020f965
Compare
Choose a tag to compare

Summary

Version 1.11.0 includes a hardfork that will be activated on the IoTeX mainnet at block height 24,838,201 (ETA approximately 07/20/2023 11pm UTC). It is imperative that all nodes upgrade to this release. Failure to do so will result in the inability to sync with the IoTeX blockchain after the activation block.

Note:
Prior to restarting the node, you must upgrade to the latest config.yaml file. It contain new configurations required for v1.11.0 to function properly.

Instructions for configuring a node can be found here: https://github.com/iotexproject/iotex-bootstrap#join-mainnet

Breaking Changes

v1.11.0 enables 3 important features:

  1. IIP-13 Represent Staking Buckets As Non-fungible Tokens
  2. IIP-14 Account Abstraction
  3. Enforce ChainID in transaction to prevent possible replay

IIP-13 Represent Staking Buckets As Non-fungible Tokens

IIP-13 supports native representation of staking buckets as Non-fungible Tokens
on the IoTeX blockchain, which opens opportunities for applications such as
Liquid Staking Derivatives (LSD), where these buckets can be traded or used as
collateral in other DeFi protocols. This in turn increases the overall staking
ratio and therefore enhances the degrees of security and decentralization of the
IoTeX blockchain.

IIP-14 Account Abstraction

IIP-14 Account abstraction is a ground-breaking proposal that aims to enhance
the IoTeX platform by abstracting various account operations and properties,
such as authentication, authorization, replay protection, gas payment, batching,
and atomicity. IIP-14, based on EIP-4337, makes IoTeX a more user-friendly and
secure platform, surpassing the limitations of externally owned accounts (EOAs).
For more information on the implementation details, please refer to ​our github
repo here

Enforce ChainID in transaction for enhanced transaction security

In v1.8 release, we added ChainID into transaction to distinguish transactions on
different networks. In this v1.11 release, the additional constraint is enforced
that each transaction must bear with it the correct ChainID (1 for mainnet, and 2
for testnet), and the default ChainID value 0 will be rejected. This would further
enhance the security of the IoTeX blockchain.

Other Improvements

v1.11 release also comes with a couple of small improvements:

  1. Added an ioctl bc delegate command to retrieve the detailed info of a delegate
  2. Added summary about the node status into console log output
  3. Enabled message batch in API service to improving network data efficiency
  4. Added an ioctl did service command
  5. Added system action validation step in the block validation process

Upgrade Priority

v1.11.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 Quebec to activate at 07-12-2023 11pm UTC #3895
  2. [chainservice] check SystemStakingContract and SystemSGDContract address #3896
  3. [iip-13] set mainnet contract address and height #3894
  4. [ioctl] add bc delegate command #3891
  5. [contract_indexer] improve robustness #3892
  6. Process batch serialise concurrently #3877
  7. [contract_indexer] fix vote bug when change delegate #3888
  8. [contract_indexer] fix transfer event handling #3887
  9. Log summary about the node status #3870
  10. [api] ReadStateBucketByIndices return existing buckets #3878
  11. [iip-13] contract indexer handle BucketExpanded event #3881
  12. [staking] fix readStateCandidates returning empty #3882
  13. [staking] validate address of contract indexer #3874
  14. [staking] add BucketTypes web3 api #3876
  15. implement composite buckets web3 api #3875
  16. [actpool] forbid processing system action #3867
  17. [iip-15] sgd indexer to ignore block less than start height #3873
  18. [iip-15] sgdRegistry implementation #3845
  19. [blockdao] introduce blockindexer with start height #3869
  20. [IIP-13] contract indexer ignore blocks lower than height of contract deployment #3868
  21. [config] enforce correct chainID and enable IIP-13 at Quebec height #3866
  22. [IIP-13] enable contract staking indexer #3865
  23. [IIP-13] combine native and LSD buckets #3859
  24. [IIP-13] handle contract staking events to store buckets into index #3863
  25. [IIP-13] introduce read contract staking buckets #3862
  26. [IIP-13] contract staking struct definition #3861
  27. [api] Enable message batching #3857
  28. [iip-15] Sharing gas-fee for DApps #3844
  29. [IIP-13] Combine native and liquid stake votes #3855
  30. unitest for iip15-manager contract #3850
  31. [context] remove EnableWeb3Rewarding flag #3852
  32. [context] remove FixRewardErroCheckPosition flag #3851
  33. [ioctl] add did service command #3848
  34. refactor did ioctl to new resolver #3841
  35. [state] validate system action layout #3838
  36. [state] fix test and speedup validation #3842
  37. [api] ServerV2.Stop() use correct context #3837

v1.10.1

10 May 17:10
Compare
Choose a tag to compare

v1.10.1 Release Note

Summary

v1.10.1 is a maintenance release, with couple of improvements:

  1. Added ChatGPT code review, leveraging the latest AI technology to safeguard
    the code quality.
  2. Implemented 2 web3js API: debug_traceCall and debug_traceTransaction which
    further increased our chain's compatibility with the Ethereum ecosystem.
  3. 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

  1. [context] remove EnableWeb3Rewarding flag #3852
  2. [context] remove FixRewardErroCheckPosition flag #3851
  3. [api] ServerV2.Stop() use correct context #3837
  4. add chatgpt code review #3824
  5. [API] add limit batch request for web3 API #3822
  6. [API] implement web3 API debug_traceCall #3813
  7. [consensus] Add proposer role #3814
  8. [API] implement web3 API debug_traceTransaction #3779
  9. [state] remove unnecessary new(big.Int) #3778

v1.10.0

23 Mar 23:25
Compare
Choose a tag to compare

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

v1.9.2: [API] add batch size limit for jsonrpc (#3805)

24 Feb 17:39
Compare
Choose a tag to compare

Summary

v1.9.2 is a maintenance release, with the following fix:

  1. 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

  1. [API] add batch size limit for jsonrpc #3805

v1.9.1

05 Jan 06:18
Compare
Choose a tag to compare

Summary

v1.9.1 is a maintenance release, with 2 fixes:

  1. 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.
  2. 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

  1. update docker build command #3751
  2. [ioctl] use candidate.OperatorAddress to show probated delegates #3727

v1.9.0

22 Dec 07:14
Compare
Choose a tag to compare

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:

  1. Zero-nonce feature
  2. EVM upgrade to London
  3. 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:

  1. EIP-1559: Fee market change for ETH 1.0 chain
  2. EIP-3198: BASEFEE opcode
  3. EIP-3529: Reduction in refunds
  4. EIP-3541: Reject new contract code starting with the 0xEF byte
  5. EIP-3554: Difficulty Bomb Delay to December 2021

and EIPs enabled in Berlin:

  1. EIP-2565: ModExp Gas Cost
  2. EIP-2718: Typed Transaction Envelope
  3. EIP-2929: Gas cost increases for state access opcodes
  4. 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:

  1. Disable http admin port by default
  2. DB will panic when no space left -- better error visibility
  3. Fixed slow context in workingset for faster block processing
  4. Fixed use of weak random number generator
  5. Fixed variadic interface bug
  6. Fixed file permission
  7. 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)

  1. [genesis] set Okhotsk to activate at 01-11-2023 12am UTC #3720
  2. [evm] proper handle refundSnapshot and upgrade go-ethereum release #3715
  3. remove nonce field #3714
  4. [staking] full comparison of candidates #3702
  5. [rewarding] fix error check position #3704
  6. [evm] manually correct gas refund in case opcode execution returns Er… #3690
  7. Clean up candidates #3696
  8. [staking] remove unnecessary call from GetStakingStateReader #3695
  9. [db] panic when writing db returns no space #3686
  10. fix read tip tool bug #3662
  11. [staking] save owner list after PersistStakingPatchBlock #3671
  12. [staking] patch for staking protocol #3661
  13. [pkg] panic if no space is left #3636
  14. [db]fix counting_index data race #3651
  15. tool to read tip of state db #3659
  16. [evm] support opBasefee #3643
  17. [staking] nil pointer check #3633
  18. [api] trace web3.js API #3626
  19. [blockchain] change private key loading logic #3621
  20. GoLang upgarde from 1.17 to 1.18.5 #3614
  21. support producerPrivKey load from vault #3612
  22. [log] optimize console log format #3499
  23. remove config in evm and pool #3611
  24. limit account nonce #3606
  25. HandleBroadcast use message.(type) directly #3604
  26. Disable http admin by default #3591
  27. [workingset] Fix context bug in workingset #3556
  28. fix Use of weak random number generator #3578
  29. [rolldpos] refactor rolldpos.ChainManager #3516
  30. [config] move config.Indexer to blockindex package #3573
  31. [db] Fix variadic interface bug #3568
  32. fix dir permission and file inclusion #3566
  33. [pkg] fix deferring unsafe method "Close" on type "*os.File" #3548
  34. [httputil] add ReadHeaderTimeout #3550
  35. move chanid metrics to chainservice #3544
  36. [action] fix incorrect conversion between integer types #3545
  37. add ReadHeaderTimeout #3539
  38. [config] move config.ActPool to actpool package refactor #3514
  39. [config] move config.Chain to blockchain package #3511
  40. [config] remove EVMNetworkID() and SetEVMNetworkID() #3503