This section walks you through the fundamentals of dealing with Java blockchain developments on the Aion network. These pages have been designed to be read individually, but you can walk through the whole section to get a thorough idea of how to develop dApps.

ABI Packages

Defines classes related to encoding/decoding the high-level data types serialized into transaction payload data.


ABI Types

While Java blockchain appliactions don't need to use an ABI, they are handy if you're sharing a contract with other developers. If they don't have access to the original Java classes, developers can use the ABI to learn what methods and variables are available.


AVM Packages

There are three classes in the avm package, Address, Blockchain and Result, which can be used to access blockchain-specific functionality exposed by the AVM.


Callable Functions

Mark a function as entry point to the contract.


Contract to Contract

Java smart contracts are able to interact with other Java contracts on the Aion network. This page details how that is achived.


Fallback Functions

Mark a function as the default function to be called when the data is null, empty, or doesn't match any method names.


Hybrid Storage

AVM Hybrid Storage is a storage design that allows developer to use both object graphs and manual storage at the same time.


Initializable Fields

A static field can be labelled @Initializable if it should be initialized through a deployment argument.



Call functions and supply arguments as soon as a contract is deployed to a network.


JCL Whitelist

The Java Class List (JCL) whitelist is a list of classes that are available to your Java contract.



A log is used to store arguments and data in a transaction receipt on the blockchain. Within the Aion Virtual Machine, a log can have 0 to 4 topics and at least one data field.



You can use Blockchain.require() to add requirements or restrictions for an action to be executed. It checks the provided condition is true or not. If it is false, it triggers a revert. This is sometimes called a modifier.



Send funds from one account or contract, to another account or contract.


Userlib Packages

Classes in the userlib package and userlib.abi package are optionally packaged along-side your contract code as common-case utilities and quality of life routines.