Releases: iotexproject/iotex-core
v1.14.2
Summary
v1.14.2 comes with new feature for ioID function.
Bug Fix and Performance Improvements:
- fixed an issue of not properly closing file.
New Features and Enhancements
- Added new function to set project name for the
ioctl ioid
commandline tool.
Upgrade Priority
v1.14.2 release is primarily for the new ioctl ioid
command. Delegate nodes and API nodes are not required to upgrade to v1.14.2
Node type | Action |
---|---|
Delegate | Not required |
Fullnode | Not required |
API node | Not required |
Important Commits (not a complete list)
v1.14.1
Summary
v1.14.1 is the first maintenance release after the latest release v1.14.0. It comes with enhancements across various components such as blockdao, staking, API. Also, ioctl commandline tool has a fresh upgrade that supports two new powerful functions: ioID and w3bstream. The ioID function enables seamless integration and management of decentralized identities on the IoTeX blockchain. The w3bstream functions allows for efficient management of w3bstream project on the chain, from project creation, device registration, to message operation and prover management.
Bug Fix and Performance Improvements:
- bumped go version to 1.21
- Resolved an issue where the blockdao process could become unresponsive while checking the indexer. This fix ensures that the node process can receive the break signal and exit if needed.
- Fixed an issue where the response ID type in the JSON-RPC API did not match the request type. This ensures consistency and reliability in web3js API.
- Enhanced the deserialization process when retrieving block receipts, resulting in faster access and improved overall performance of the blockdao component.
- Fixed wrong cache for API readState at tip height, now the cache always returns most accurate and latest result.
New Features and Enhancements
- Added endorsement details to the bucket fetch APIs, providing more comprehensive information for stakeholders and improving transparency within the staking process.
- Implemented rate limiting for the WebSocket API to prevent abuse and ensure fair usage. This enhancement protects the network from potential overload and improves service stability.
- Enabled the ToEthTx function for grantReward action, allowing it to be processed as an Ethereum-compatible transaction. This improvement facilitates interoperability and expands the utility of the IoTeX blockchain.
- Added 2 new commands
ioid
andws
to ioctl commandline tool. Enables the ioID management and w3bstream project functions.
Upgrade Priority
v1.14.1 does not have a hardfork, but contains several bug fixes, performance improvements, and new feature enhancements. All delegate nodes and API nodes are recommended to upgrade to v1.14.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)
- [ioctl] Add CandidateEndorsement and CandidateActivate action #4194
- [blockdao] Fix program unstopable when blockdao is checking indexer #4217
- [blockdao] Optimize derialization when retrieving receipts #4221
- [staking] Add endorsement info in bucket fetch apis #4207
- [api] Support for tracer and tracerConfig in debug_traceTransaction API #4216
- [api] fix JsonRPC api response id type doesn't match request type #4168
- [api] Add ratelimit for websocket API #4031
- [action] Add grantReward ToEthTx() #4047
- [api] Fix wrong cache for api readState at tip height #4253
- feat(wsctl): add project configuration cmd #4195
- [ioctl]: update ws project format #4224
- feat(ioctl/ws): sync latest w3bstream contract abis and generate go code #4279
- [ioctl][ws][#2] add w3bstream contracts address configurations #4280
- [ioctl][ws][#3] project sub command to support interaction with ws contracts #4281
- [ioctl][ws][#4] prover sub commands to support interaction with ws contracts #4282
- [ioctl][ws][#5] project device sub commands to support interaction with ws contracts #4283
- [ioctl][ioid][#1] ioid sub commands #4284
- [ioctl][ws] update ws default value #4285
v1.14.0
Summary
v1.14.0 has a hardfork, which will be activated at block height 29,275,561
(ETA is around 04/03/2024 00:52:05 AM 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 v1.14.0 image.
Version 1.14.0 has enabled two significant new features: IIP-24 Raise Block Gas
Limit to 50M and IIP-25 delegate endorsement.
With IIP-24, the block gas limit has now been raised to 50M, greatly enhancing
the processing capabilities of the IoTeX blockchain while ensuring its stability.
This enhancement allows the blockchain to achieve a maximum of 1000 TPS
(transactions per second), significantly speeding up transaction processing on
the blockchain, especially during times of network congestion.
The activation of IIP-25 introduces a novel governance model: it allows big
stakeholder to create a bucket for endorsing delegate. This would make delegate
management more flexible and encourage more enthusiastic projects to become IoTeX
delegates and actively participate in the IoTeX network operation, thereby
fostering the inclusivity of the IoTeX network and enhancing the diversity of the
ecosystem.
Other Improvements
v1.14.0 release also comes with a couple of improvements:
- Improved performance for DB snapshot operation
- Enabled web3js format for CandidateActivate and CandidateEndorsement
- Make action pick order deterministic
- Added more unit tests and end-to-end tests
Upgrade Priority
v1.14.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)
- [tools] fix readme typos #4199
- feat(api): add unit test for coreService #4193
- feat(wsctl): add project configuration cmd #4195
- [staking] testing endorsed bucket with existing staking actions #4186
- use buffered channel #4197
- feat(api): fix overflow in coreservice #4192
- test: add unit test for module blockdao #4182
- add e2etest for refactor fresh account conversion #4184
- [context] enable delegate endorsement and refactor fresh account conversion at Tsunami height #4188
- [staking] reject endorse action before HF activated #4187
- [staking] Cannot withdraw endorsement if it is withdrawing #4179
- [genesis] raise block gas limit to 50M starting Tsunami height #4181
- [genesis] add Tsunami block height #4180
- [account] revert ConvertFreshAccountToZeroNonceType func #4163
- [evm] add transaction log for Suicide() #4171
- [actpool] deterministic action pick order #4175
- [api] remove height check for message batcher #4176
- [action] Web3 for CandidateActivate and CandidateEndorsement #4140
- clean up blockdao #4164
- [staking] Candidate Register without Staking #4059
- [staking] ActiveCandidate Exclude Candidate with Expired Endorsement #4062
- [blockchain] add uni tests for runnable.go #4172
- [staking] Fix typo error #4173
- [staking] Cannot ChangeCandidate when Bucket is Endorsed #4133
- [api] get method return msg #4142
- [staking] Cannot Unstake if Bucket is Endorsed #4134
- [db] Remove duplicate keys when WriteBatch #4155
- fix test #4165
- reset only if snapshots size exceed 10 #4152
- [evm] add transient storage #4151
- [staking] Replace ContainsSelfStakingBucket with isSelfStakeBucket #4139
- add test #4138
- [db] ResetSnapshots() performance improvement #4153
- test(contractstaking): add unit tests #4126
- update tests for rlp_tx.go #4145
- feat(test): add unit test web3server_utils #4146
- sgdindexer performance improvement #4148
- [api] verify received tx hash is correct #4074
- add test for actionByPrice #4135
- fix benchmark #4127
- [genesis] test coverage #4125
- feat(test): add web3server unit test #4131
- [staking] Handling CandidateEndorsement Action #4020
- [staking] CandidateCenter Support for Missing and Changes of Self-Stake Bucket #4060
- [staking] Handling CandidateActivate Action #4011
- [refactor] Add bucket validation util functions #4019
- [staking] Implement Endorsement Statemanager #4018
v1.13.1
Summary
v1.13.1 is the first maintenance release after the latest release v1.13.0. It comes with a bug fix and improvement of ioctl commandline tool.
Bug fix
With the launch of v1.13.0 some user reported issue with old wallet address (see issue #4156 for details). The issue is quickly identified to relate to nonce calculation for certain wallet address, and is properly fixed in this release.
Other Improvements
In v1.13.1, the ioctl commandline tool has enabled querying delegate's reward amount by name. As of now you can only query the reward amount by the actual reward address. With the functionality of querying by name, it makes delegate more convenient to check their reward and improves user experience.
Upgrade Priority
v1.13.1 does not have a hard-fork, but contains a bug fix to ensure prompt transaction processing. All delegate nodes and API nodes are recommended to upgrade to v1.13.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)
v1.13.0
Summary
v1.13.0 has a hardfork, which will be activated at block height 28,516,681 (ETA is around 02/19/2024 00:58am 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 v1.13.0 image.
v1.13.0 marks a substantial advancement by upgrading IoTeX network's EVM to the latest Shanghai version. This upgrade brings in the new opcodes and improvements in Shanghai EVM, reducing gas cost with enhanced efficiency and reliability of smart contract execution, ultimately leading to a smoother and more cost-effective experience on the IoTeX network.
We are also excited to announce that v1.13.0 has enabled deterministic deployment functionality on the IoTeX network! This feature would deploy a proxy contract at a fixed address (same for all blockchains), and then it can be used to deploy any contract to a deterministic address using CREATE2. This ensures that any contract could be deployed consistently across different blockchain platforms to the same address, eliminates possible variations, and greatly enhance the predictability and reliability of smart contract deployment processes, providing developers with greater confidence in their deployments and facilitating seamless integration with other systems and protocols.
Other Improvements
v1.13.0 release also comes with a couple of improvements:
- Supported javascript tracing for web3 api
debug_traceCall
ioctl
commandline tool added more w3bstream project commands, and set
default endpoint to IoTeX mainnet- Add operator address into node's metrics reporting
- Updated gas station logic to give a dynamic gas price suggestion
- Increase max code deployment size to 48kB, same as Ethereum's limit
Upgrade Priority
v1.13.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)
- [actpool] skip adding accounts if pending acts is empty #4027
- [action] Define CandidateSelfStake Action #4007
- feat(ioctl): upgrade ws apis #4021
- [actpool] fix typo for worker queue #4028
- feat(ioctl): project register contract addr config #4039
- feat(ioctl): ipfs endpoint and ipfs gateway config #4038
- feat(ioctl): optimize w3bstream project subcommand #4013
- [staking] Define Endorsement State #4017
- [action] Define CandidateEndorsement Action #4016
- [evm] remove NotCheckPutStateErrorOption() #4040
- Bump golang.org/x/crypto from 0.14.0 to 0.17.0 #4022
- feat(ioctl): bc version #4005
- update github #4048
- [api] web3 api debug_traceCall support javascript tracing #3931
- [api] Get Pending Action by eth_getTransactionByHash #4025
- [ioctl] set default endpoint to iotex mainnet #4050
- [ioctl] ioctl ws code cmd support project config version #4042
- [server] add operator address into node's metrics #4056
- Improve action pool #4030
- feat(ioctl): ioctl ws message with did vc token #4052
- feat(ioctl): use ipfs cid as project config url #4053
- chore: change default ws register contract address #4054
- [log] mute some user request related logs #4033
- Replace with sort.Slice #4034
- [state] convert clean address to zero-nonce type #3991
- [genesis] whitelist replay deployer #4009
- [gasstation] Update gas station logic #4035
- replace golint with go vet #4058
- enable 48kB execution data limit, EIP-2930 tx, and deterministic deployment at Sumatra height #4070
- [action] check calldata size instead of total size for 48kB init code limit #4075
- [action] defer access list tx enabling #4129
- [genesis] set Sumatra to activate at 02-19-2024 00:58AM UTC #4128
v1.12.1
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
- Correct signature's V value in returned web3 transaction, to fix the transaction hash calculation
- Support "input" field in web3 request params to increase the compatibility with latest web3js standard
- 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)
- [api] correct signature's V value in returned web3 transaction #3952
- [api] fix typo should use EVMNetworkID() #3960
- [log] fix JSON log, better trace log #3914
- [evm] refactor evm parameters #3958
- [util] implement block time calculator #3951
- remove ValidateRewardProtocol flag #3946
- [config] add SumatraHeight #3962
- [action] add NewEthSigner() and pass Signer as input to rlpRawHash() and rlpSignedHash() #3967
- fix Dockerfile #3970
- [api] support "input" field in web3 request params #3971
- set gprc MaxConnectionIdle to 5 min #4023
v1.12.0
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:
- Add
ioctl bc delegate
command, allowing users to conveniently access the detailed information of any delegate by name or operator address - 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)
v1.11.2
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
- 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
- [api] fix json unmarshal error when calling TransactionByHash via ethclient #3933
v1.11.1
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:
- Enforce height check for system staking indexer to increase error detection
and handling robustness - Fix revert message in eth_call
- Fix panic: concurrent write to websocket connection
- Fix staking action ToEthTx() panic
ioctl] action transfer
now supports 0x address format- 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)
- [blockindex] return empty result before contract deploy height #3928
- [blockindex] restrict height for sgdindexer during write and read operation #3926
- [blockindex] restrict height for contract_staking_indexer during read operation #3927
- [contractstaking] fix transaction for merge after create bucket #3924
- [blockindex] introduce indexergroup #3906
- [api] fix revert message in eth_call #3922
- [ioctl] action transfer supports 0x address #3917
- [action] simplify address generation #3913
- [chainservice] build contract staking indexer only when staking protocol enabled #3886
- [api] fix panic: concurrent write to websocket connection #3908
- [staking] fix ToEthTx() panic #3910
- [ioctl] support querying delegate by operator address #3904
- [ioctl] Add INS register cmd #3903
- [staking] make contract staking indexer nullable #3883
- [iip15] improve sgd indexer test coverage #3893
v1.11.0
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:
- IIP-13 Represent Staking Buckets As Non-fungible Tokens
- IIP-14 Account Abstraction
- 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:
- Added an
ioctl bc delegate
command to retrieve the detailed info of a delegate - Added summary about the node status into console log output
- Enabled message batch in API service to improving network data efficiency
- Added an
ioctl did service
command - 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)
- [genesis] set Quebec to activate at 07-12-2023 11pm UTC #3895
- [chainservice] check SystemStakingContract and SystemSGDContract address #3896
- [iip-13] set mainnet contract address and height #3894
- [ioctl] add bc delegate command #3891
- [contract_indexer] improve robustness #3892
- Process batch serialise concurrently #3877
- [contract_indexer] fix vote bug when change delegate #3888
- [contract_indexer] fix transfer event handling #3887
- Log summary about the node status #3870
- [api] ReadStateBucketByIndices return existing buckets #3878
- [iip-13] contract indexer handle BucketExpanded event #3881
- [staking] fix readStateCandidates returning empty #3882
- [staking] validate address of contract indexer #3874
- [staking] add BucketTypes web3 api #3876
- implement composite buckets web3 api #3875
- [actpool] forbid processing system action #3867
- [iip-15] sgd indexer to ignore block less than start height #3873
- [iip-15] sgdRegistry implementation #3845
- [blockdao] introduce blockindexer with start height #3869
- [IIP-13] contract indexer ignore blocks lower than height of contract deployment #3868
- [config] enforce correct chainID and enable IIP-13 at Quebec height #3866
- [IIP-13] enable contract staking indexer #3865
- [IIP-13] combine native and LSD buckets #3859
- [IIP-13] handle contract staking events to store buckets into index #3863
- [IIP-13] introduce read contract staking buckets #3862
- [IIP-13] contract staking struct definition #3861
- [api] Enable message batching #3857
- [iip-15] Sharing gas-fee for DApps #3844
- [IIP-13] Combine native and liquid stake votes #3855
- unitest for iip15-manager contract #3850
- [context] remove EnableWeb3Rewarding flag #3852
- [context] remove FixRewardErroCheckPosition flag #3851
- [ioctl] add did service command #3848
- refactor did ioctl to new resolver #3841
- [state] validate system action layout #3838
- [state] fix test and speedup validation #3842
- [api] ServerV2.Stop() use correct context #3837