Java kernel v1.0 (Denali) release
This release is a mandatory update.
This release is a milestone release and the network consensus is changing from a pure PoW consensus to Unity, a hybrid (PoW + PoS) consensus. New features such as AVM upgrade to v2.0, meta-transaction, beacon hash, and runtime multi-AVM version support are also part of the release. Please note that this release requires database migration and network configuration update, please read the migration guide carefully before the upgrading process.
Features:
- Implemented Unity consensus protocol #1013 #1015 #1021 #1016 #1018 #1023 #1024 #1025 #1031 #1033 #1035 #1040 #1049 #1056 #1057 #1058 #1063
- Integrated with AVM 2.0 #1044 to support meta-transaction, bug fixing, and diagnostic utilities
- Implemented BeaconHash AIP-010 #984
- Supported multiversion AVM #995 #1050 #1051
- Added meta transaction #1001 #1009
- Added system resources log #1028
Migration guide:
To update your node, you must:
Move/Backup old network data folder
- Shut down the kernel (old version).
- decompress the 1.0 kernel package by
tar -xvf <package file name>
, anoan
folder will be created, and it is the kernel default executing folder. - Move the network folder, e.g.
mainnet
, to the new kernel executing path.
Re-import blocks or Sync blocks from scratch.
- Overwrite the genesis.json file in the
<new aion executing path>/<network>/config/
folder. This can be done by copying the genesis.json file in<new aion executing path>/config/<network>/
from the new release. - Update your local database (If you are running a node prior to version 0.4.2) to the new database structure by executing
./aion.sh -n <network> --redo-import
If you are running a node on the Mainnet ./aion.sh --redo-import
If you are running a node on the Amity testnet ./aion.sh -amity --redo-import
It will take around a few hours, depending on your hardware specs, to reconstruct your current database to the new structure, after which you can launch the kernel to sync with the network. The best practice is to backup your current database first and then execute the re-import command mentioned above.
- Or sync the database from scratch
Remove database
folder in the folder
relaunch the kernel
It will take around 4 hours, depending on your network environment.
Overwrite the hardfork settings (if running mainnet)
-
Overwrite the fork.properties file in the
<aion executing path>/mainnet/config/
folder. This can be done either by overwriting this file with the following properties or by copying the fork.properties file in<aion executing path>/config/mainnet/
from the new release. -
Fork.properties before 1.0:
fork0.3.2=1920000
fork0.4.0=3346000
- Fork.properties after 1.0:
fork0.3.2=1920000
fork0.4.0=3346000
fork1.0=4721900
Overwrite the genesis file (if running mainnet)
- Overwrite
genesis.json
in the<aion executing path>/mainnet/config/
folder. This can be done either by overwriting this file with the following properties or by copying thegenesis.json
in<aion executing path>/config/mainnet/
from the new release. - genesis.json before 1.0:
{
"alloc": {
"0xa0eeaeabdbc92953b072afbd21f3e3fd8a4a4f5e6a6e22200db746ab75e9a99a": {
"balance": "465934586660000000000000000"
}
},
"networkBalanceAlloc": {
"0": {
"balance": "465934586660000000000000000"
}
},
"energyLimit": "15000000",
"nonce": "0x00",
"difficulty": "0x4000",
"coinbase": "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp": "1524528000",
"parentHash": "0x6a6d99a2ef14ab3b835dfc92fb918d76c37f6578a69825fbe19cd366485604b1",
"chainId": "256",
}
- genesis.json after 1.0 (extra stakingContractAddress field):
{
"alloc": {
"0xa0eeaeabdbc92953b072afbd21f3e3fd8a4a4f5e6a6e22200db746ab75e9a99a": {
"balance": "465934586660000000000000000"
}
},
"networkBalanceAlloc": {
"0": {
"balance": "465934586660000000000000000"
}
},
"energyLimit": "15000000",
"nonce": "0x00",
"difficulty": "0x4000",
"coinbase": "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp": "1524528000",
"parentHash": "0x6a6d99a2ef14ab3b835dfc92fb918d76c37f6578a69825fbe19cd366485604b1",
"chainId": "256",
"stakingContractAddress": "a0733306c2ee0c60224b0e59efeae8eee558c0ca1b39e7e5a14a575124549416"
}
Notes:
The mastery
testnet will be deprecated in the near future. This release is NOT compatible with the current testnet (Mastery). Please migrate your test to the amity
as your blockchain testnet.
Bug fixes:
- Energy rule check within kernel and FVM #1046
- Avoided to store negative balances #1041 #1047
- Fixed transformed code #1027
- Fixed gradle build library dependency #1026
- Fixed block encoding/decoding inconsistency #1064
Enhancements:
- Removed implementation of DatabaseWithCache #1010
- Implemented a static factory method for creating blocks #1011
- Made ByteArrayWrapper immutable #1012
- Modularity: modVm, modPrecompiled, and modMcf #1014
- Refactoring ContractDetails #1019
- Enhanced Transaction store #1017
- Simplified AionRepositoryCache locking #1037
- Removed unused code #1036 #1038 #1039
- Predefined stakerRegistry contract #1030
- Improved CLI blockchain revert speed #1042
- Updated Peer connect status #1052 #1053
- Improved CI environment #1060