v2.0.0
Summary
v2.0.0 has a hardfork, which will be activated at block height 31,174,201 (ETA is around 07/22/2024 00:05:55 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 v2.0.0 image.
We are excited to unveil IoTeX Blockchain v2.0.0, a milestone in our journey towards a more scalable, secure, and user-centric blockchain ecosystem. This release introduces impactful features designed to elevate user experience and expand the capabilities of our staking eco-system, and includes enhancements aimed at improving the security and robustness of the blockchain system.
Users and developers are encouraged to review the updated documentation and migration guides ahead of the release to fully leverage these new features. We are excited to continue empowering decentralized infra for DePIN globally with the new IoTeX Blockchain v2.0.0 release.
Key Features and Enhancements
- New NFT staking contract: introducing a new NFT staking contract that offers users enhanced flexibility and reduced constraints when staking their tokens
- Migrate native staking bucket to NFT staking: users with native staking buckets can now seamlessly migrate to NFT-based staking, enjoying the benefits and flexibility provided by NFT-based staking
- Delegate ownership transfer: delegates now have the option to transfer their ownership to newcomer, providing a streamlined process for management changes
- Enhanced transaction handling: transactions sent in web3js API/format are now wrapped in a general container format, which improves accuracy of execution and compatibility across various tools and frameworks
Bug Fix and Performance Improvements:
- Purge failed transactions: failed transactions are automatically purged from the action pool, ensuring they do not hinder block production. This enhancement optimizes network efficacy, reliability, and throughput.
- Error handling in EVM module: handles missing transaction logs on contract's SelfDestruct() and managing unrecoverable errors effectively, enhancing robustness and stability of the system by ensuring that critical errors are properly taken care of
Upgrade Priority
v2.0.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 |
API node | Must upgrade |
Important Commits (not a complete list)
- [staking] update new staking contract abi #4326
- [genesis] set Upernavik to activate at Jul-22-2024 00:05:55AM +UTC #4328
- [ioctl] print action hash when send action #4323
- [genesis] set default staking contract v2 address & start height for mainnet #4329
- [api] set candidate id for fetching api #4324
- [e2etest] add more test #4322
- more e2etest for native staking migration #4321
- [ioctl] stake migrate #4325
- [api] fix estimateGas panic for StakeMigrate #4320
- transfer back #4319
- [staking] only validate duplicate candidate id after HF #4318
- [workingset] purge actpool when run action fails #4317
- enabling features at Upernavik height #4309
- revise self stake buckets #4312
- Enforce legacy endorsement feature ctx #4315
- add endorsement op but only allow legacy #4314
- fix a bug in vote reviser #4313
- return keys for function States #4311
- [db] Share db for two contract indexer #4307
- [rewarding] keep both v1 and v2 claimRewardingInterfaceABI for backward compatibility #4304
- [rewarding] move claim address check to LoadProto() and SanityCheck()
- [evm] defer Cancun enabling #4308
- [action] New MigrateStake Action #4299
- [staking] enable new staking index #4305
- [ioctl] make function comment match function names #4303
- [workingset] remove action from actpool upon tx container unfold error #4306
- feat(ioctl): del require datasource in ws #4298
- [action] evm tx container #4278
- [api] clear candidate selfstake if endorsement expired #4288
- [staking] ReadState API support Candidate ID #4276
- [e2etest] add tests for original actions after candidate ownership transfer #4295
- sign action with chainID #4294
- [stakingindex] implement indexer for new staking contract #4237
- [staking] implement staking abi v3 #4273
- [action]: add unit test for eth tx decode verify #4291
- [staking] refactor to split staking abi into separate version #4272
- [staking] refactor statereader to support multiple contract indexers #4255
- [ioctl] Add stake2 transferownership command #4250
- [staking] enable CandidateTransferOwnership at CandidateIdentifiedByOwner feature #4275
- fix some function names #4286
- use GetIdentifier() instead of Owner for staking #4245
- [action] add claim reward account #4277
- Add delegate transfer ownership handler #4239
- [action] Transfering delegate ownership, add CandidateTransferOwnership #4236
- chore: fix function names #4260
- [api] readState support to non-rolldpos mode #4247
- [action] add GasTipCap and GasFeeCap to AbstractAction #4252
- [action] use AbstractAction in envelope
- [action] add EvmTransaction to represent actions that run in EVM #4227
- [action] add execution.To() method
- move struct cache to blockDAO #4226
- [evm] use common.Address as map key to reduce byte slice copy/conversion #4230
- [db] add KvVersioned interface #4041
- [evm] clean-up #4225
- [evm] EIP-1153 enable transient storage feature #4214
- [api] add unit test for coreService #4213
- [evm] panic on unrecoverable error #4178
- [evm] panic on duplicate revert version
- [test]fix TestHash genesis hash not match mainnet genesis hash #4190
- [blockindex]: change private to public #4205
- [evm] rename suicide to selfDestruct #4215
- [genesis] add Upernavik block height #4206
- [evm] EVM upgrade to cancun #4210
- [evm] gate the generation of suicide transaction log #4198