[ANN] Aion v0.3.2 - Release Notes and FAQ

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)

->Aion Kernel Configuration Migration Guide DRAFT<-

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)

New Requirements

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.

New Feature

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.

Enhancements

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.

API

sendTranscations

Better, more meaningful responses.

eth_signTransaction support

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

Kernel Configuration

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.

->Aion Kernel CLI Docs<-

->Importing a Pre-Existing Configuration<-

Other enhancements

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

User warning

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.

Bug Fixes

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

  1. Migrated to Gradle build tool #647, #659, #664, #666
  2. Migrated JAVA env to JDK 11 #677
  3. Enhanced Syncing manager and block import mechanism (lightning sync) #635, #662, #663
  4. 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
  5. Enhanced database function #637, #670
  6. 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
  7. Enhanced CLI functionalities #650, #682
  8. Precompiled Contract support - AIP006, AIP007 and EDVerify method(hard fork) #690
4 Likes

FAQ

Q: Is this a required update?
A: Yes, for everyone operating an Aion node, you will need to update before block number 1,902,000 on Mainnet - Target date: December 10, 2018 10:00 (ET)

Q: How do I know I installed and am running the correct version?

A: Launch Log output
<Protocol name: fork0.3.2 block#: 1920000 updated!
18-11-28 21:17:14.447 INFO  GEN  [main]: 
-------------------------------- USED PATHS --------------------------------
> Logger path:   /home/aion/mainnet/log
> Database path: /home/aion/mainnet/database
> Keystore path: /home/aion/mainnet/keystore
> Config write:  /home/aion/mainnet/config/config.xml
> Genesis write: /home/aion/mainnet/config/genesis.json
> Fork write:    /home/aion/mainnet/config/fork.properties
----------------------------------------------------------------------------
> Config read:   /home/aion/mainnet/config/config.xml
> Genesis read:  /home/aion/mainnet/config/genesis.json
> Fork read:     /home/aion/config/mainnet/fork.properties
----------------------------------------------------------------------------
18-11-28 21:17:14.456 INFO  GEN  [main]: 
                     _____                  
      .'.       |  .~     ~.  |..          |
    .'   `.     | |         | |  ``..      |
  .''''''''`.   | |         | |      ``..  |
.'           `. |  `._____.'  |          ``|
                v0.3.2.e909a6a
                    mainnet