Aion4j Maven Plugin

Problem being solved

The Aion team has developed a Java-based virtual machine, called AVM, which can run smart-contract written in Java on blockchain. This has opened the possibilities of usage of established development tools in Java ecosystems. So, with the right tools and Java language support, mainstream developers can easily learn smart contract development. Every mature development ecosystems has standard build tools which help developers during different development lifecycles from development to delivery.

AVM ecosystem needs similar build tools for smart contract development. So the high-level goals of this tool are as follows:

  • Help to introduce blockchain smart contract concept to non-blockchain developers by providing simple development tools
  • Increase the productivity of smart contract developers
  • Instead of introducing drastically different development flow, focus on leveraging or integrating with the existing familiar development process.

How we solved it

Maven is a popular build automation tool used primarily for Java projects. Maven’s primary goal is to allow a developer to comprehend the complete state of a development effort in the shortest period of time. Most of the modern Java IDEs have in-built support for maven. So a developer can use any existing IDE to work with a Maven based project.

Aion4j Maven Plugin is a maven plugin which aims to provide end to end tooling support for smart contract development using Java. These smart contracts are executed on AVM. Aion4j Maven Plugin extends the support of Maven for smart contract development by supporting both embedded AVM and AVM running in a remote Aion kernel.

Some of the key features supported by this plugin are :

  • Maven based AVM project creation using maven archetype.
  • Compile & Package
  • Unit Test
  • Deployment, test and debug on an embedded AVM during development
  • Deployment and test on remote Aion Kernel or hosted service like Nodesmith
  • Interact with Aion blockchain through maven commands(deploy, get balance, get a receipt, call, contract transaction, transfer, get logs,etc.)
  • Client-side transaction signing
  • many more …