Aion Kernel v0.3.2 ‘Ama Dablam’ Release Notes
Please post all discussion to V0.3.2 Megathread discussion
The upcoming release of the Aion Kernel (v0.3.2) is a required update for all nodes on the network.
Target Release date: November 28, 2018
Github link (will be available here after released)
Node operators need to update their kernel to support the network changes that go live on the following dates:
- Testnet Mastery Block number 1,132,000 Target date: December 3, 2018 10:00am (ET)
- Mainnet Kilimanjaro Block number 1,920,000 Target date: December 12, 2018 10:00am (ET)
Java JDK 11
Java 10 has reached the end of support from Oracle and all implementations are recommended to migrate to v11. This version of Java is on the Long Term Support (LTS) track and will be supported by Oracle for approx 3 years.
With kernel v0.3.2, Java 11 will be included in the Aion Kernel runtime. If you are compiling your self, please update your local version of Java.
Enhanced Syncing Manager and Block import mechanism
Improved block syncing performance. Conventionally, blocks are gathered in sequential order, and discarded if they are not in sequence. With this enhancement, blocks are collected and stored as they are available from peers. Blocks will be temporarily stored until they can be imported into the database in sequential order. Test results show that the full sync time is reduced by a factor of up to 10x when the kernel has many peers. Syncing from block 1 to 1,675,652 was completed in around 3 hours.
ZMQ Secure Connection
With this version, the Aion Java API now supports secure connection to the kernel through ZMQ.
Migrated to Gradle Build tool
In support of Aion dApp Developers, Aion has migrated to Gradle build tools. Gradle is an open-source build automation system that enables better management of dependencies. With Gradle, developers don’t have to manage project dependencies or libraries further removing friction to begin development.
Enhanced database function for unit testing
This enhancement expands the available testing options and improves unit testing. Additionally, database repairability has been added to the kernel. If the leveldb database becomes corrupt the kernel attempts to repair it instead of just failing to execute.
Better, more meaningful responses.
Implements eth.signTransaction (as eth_signTransaction method) support into Aion compatible Web3. Allowing private keys to signs an Aion transaction.
Web3 API enhancement
Adds more support and compatibility with Web3 interface
->Aion Web3 Docs<-
Command Line Interface
Improved Aion directory structure to better manage distinct network configuration and database files. The default network and datadir are set to launch the Kilimanjaro mainnet.
- Using the picocli library for parsing CLI input parameters.
- Support for absolute path use for log and database folders #627.
- Correct and consistent behavior for the --network and --datadir options #524.
- Advanced Networkenum with support for the mastery test net and custom networks.
- Compatibility with old kernels when the above options are not used and the xmland genesis.json files are encountered at the old location.
- Extensive unit tests for the new functionality.
Improvements to the overall user experience of interacting with the Kernel through the command line options. If incompatible CLI arguments are used, the user will be provided with feedback to clarify why arguments are incompatible. Fixes Issue #676.
P2P (peer-to-peer) inbound thread spin
- This bug occurs during P2P refactoring and causes the p2p inbound thread to occupy 100% of usage thread
P2P block propagation issue
- Fixed a bug so blocks propagate only if they have a valid result (defined as !equals(INVALID_BLOCK) && !equals(CONSENSUS_BREAK)) after import attempt
- Added block timestamp to evaluation criteria and to log
- Results in the overall reduction of network traffic of block propagation
Transaction empty “From” address issue
- If the API’s estimateGas function is called without a from address, the VM uses the wrong offset when serializing. The fix is to simply use the Zero Address instead.
Transaction ReceiptLog address field issue
- Fixed a bug where the transaction log returns the incorrect address (i.e. always returns the entry contract address) when the transaction using one contract call another contract.
Database exception handle
- Exceptions generated in the PendingBlockStore are now caught and logged
- Provided valid return values to ensure that the program continues to work after an exception
- Added catch statements and default return values for non-critical functionality relating to the PendingBlockStore
- Copying the reference to the pendingBlockStorewhen creating snapshots to avoid null pointer exceptions if the store is accessed from the snapshot
- This version helps in recovering from database corruptions as the one described in issue #408
Aion Improvement Process 006, 007, EDVerifty precompiled contract implementation
- Merging the EDVerify implementation by Centrys team APB-46 and implemented the Blake2bHash, TransactionHash precompiled contract by AIP006, AIP007. This version requires the solidity and fastVM native libraries update (v0.3.2). Please see the related PR in the fastVM repo PR#29
- How to use the precompiled contracts
Links to Github Issues
- Migrated to Gradle build tool #647, #659, #664, #666
- Migrated JAVA env to JDK 11 #677
- Enhanced Syncing manager and block import mechanism (lightning sync) #635, #662, #663
- Fixed bugs:
4.1. P2P inbound thread spin #639
4.2. P2P block propagation issue #697
4.3. Transaction empty “From” address issue #646, #654
4.4. Transaction ReceiptLog address field issue #656
4.5. Database exception handle #683, #688
- Enhanced database function #637, #670
- Enhanced API server:
6.1. ZMQ secure connection #641
6.2. API message response #678
6.3. eth_signTransaction support #667
6.4. Web3 API enhancement #696
- Enhanced CLI functionalities #650, #682
- Precompiled Contract support - AIP006, AIP007 and EDVerify method(hard fork) #690