Tools


IntelliJ Overview

The Aion4j plugin for IntelliJ is packed with features that can help speed up your contract development. You can compile, deploy, and call your contract to a local or remote node, all from within the IntelliJ IDE.

/developers/tools/intellij-plugin/overview/


Overview

Maven is a Java development toolkit that allows you to manage a project's reporting, documentation, and build process more easily. More information about Maven specifically can be found on the Apache Maven website at https://maven.apache.org/.

/developers/tools/maven-cli/overview/


Install

Installing Maven is quite simple, but differs between operating systems. If these instructions don't work for you check out the Apache Maven website to see detailed instructions for specific operating systems.

/developers/tools/maven-cli/install/


End to End

The Aion4j plugin for Maven is packed with features that can help speed up your contract development. You can compile, deploy, and call your contract to a local or remote node using simple CLI. In this section, we're going to be walking through the entire workflow of creating and deploying a Java smart contract to the Aion testnet. You can drop in as particular sections if you want to, or you can follow it through end-to-end.

/developers/tools/maven-cli/end-to-end/


Create a Project

When creating a new Aion project, developers can use Maven's built in project creation commands to download the latest version of the Aion archetype, and begin development with a fresh bolierplate template.

/developers/tools/maven-cli/create-a-project/


Install the Plugin

The Aion4j plugin available for IntelliJ allows you to create, test, compile, deploy, and call your Java dApps, all from within the same IDE. No more copy-and-pasting contract from your local machine to a browser based IDE just to check if things actually work!

/developers/tools/intellij-plugin/install-the-plugin/


End to End

The Aion4j plugin for IntelliJ is packed with features that can help speed up your contract development. You can compile, deploy, and call your contract to a local or remote node, all from within the IntelliJ IDE. In this section, we're going to walk through the entire workflow of creating and deploying an application to the Aion testnet.

/developers/tools/intellij-plugin/end-to-end/


Update Maven

Because Maven is a command-line tool, updating any projects with a new Maven package requires some modification of the project configuration file and removal of the library folder.

/developers/tools/maven-cli/update-maven/


Setup your Project

Quickly run through setting up a project using the Aion IntelliJ plugin. This section assumes you have IntelliJ and the Aion plugin installed.

/developers/tools/intellij-plugin/setup-your-project/


Import a project

You can import existing projects into the IntelliJ IDE. If you are importing a project that utilizes the Aion4j plugin and the AVM, you need to follow these instructions in order for the project to be compiles and built properly.

/developers/tools/intellij-plugin/import-a-project/


Client-side Signing

This feature allows you to deploy a smart contract without having to access the account management features on the node you are connected to. Certain hosting providers like Nodesmith and Blockdaemon block access to account management features on their nodes for security reasons. This allows you to ignore that restriction as all transactions can be signed locally before being made public on the network. This is the preferred way to interact with a public network, as your private key never leaves your local machine.

/developers/tools/maven-cli/client-side-signing/


Configure the Plugin

There are lots of configuration options available within the Aion4j plugin for IntelliJ to help speed up your contract development.

/developers/tools/intellij-plugin/configure-the-plugin/


Caching

The embedded AVM includes the ability to automatically cache the results from certain commands.

/developers/tools/maven-cli/caching/


Endpoint URL

You can define the URL of the endpoint that you want to use, within your configuration file. This enables you to use remote commands without having to specify the web3 endpoint URL every time. If you are storing your project in a public repository, you may want to remove this endpoint URL, as some node hosting-services like Nodesmith include your API key within the URL itself.

/developers/tools/maven-cli/endpoint-url/


Create Account

The nature of blockchain development requires applications and users to have accounts. The IntelliJ IDE, along with the Aion4j plugin, allows developers to create accounts on the fly, and use them to deploy and interact with dApps.

/developers/tools/intellij-plugin/create-account/


Create an Account

The nature of blockchain development requires applications and users to have accounts. The Maven CLI allows developers to create accounts on the fly, and use them to deploy and interact with dApps.

/developers/tools/maven-cli/create-account/


Deploy

Once a dApp has been written, it can be compiled and deployed to a local or remote blockchain network. Deploying dApps is similar to how regular applications are deployed currently, however there are some differences. One major difference is that to deploy an application to a public blockchain network, an account must be supplied with tokens in order to cover the deployment costs. However, when deploying to a local network through the Aion4j plugin there is no need to create an account or supply it with test tokens, as everything is contained within the local network.

/developers/tools/intellij-plugin/deploy/


Get Balance

Every account has a balance associated with it, including empty accounts. Finding out the balance of an account is incredibly simple with the Maven CLI tool.

/developers/tools/maven-cli/get-balance/


Call

Calls to a contract can either be simple calls, or contract transactions. Calls do not necessarily incur a cost, but contract transactions always incur a cost as they are changing the state of the blockchain. Calls to a contract will always return something, whereas contract transaction may not depending on the function called.

/developers/tools/intellij-plugin/call/


Compile

Translate your code from Java source-code down to Java bytecode, so that it can run on the Aion blockchain. This command is the same for both local and remote deployment. Regardless of where your contract is going to end up, you must compile it on your local machine first. There is no way to compile your contract using a remote node.

/developers/tools/maven-cli/compile/


Contract Transaction

Contract transactions are the same as calls, except transactions always initiate a state-change. This means that something within the contract, like a variable, changes. This changes the state of the blockchain, which incurs a cost. Transaction calls can also change the state, or value, of something _without_ the contract having to return anything. Calls do not necessarily initiate a state-change. Calls are able to simply request the content or value of a variable. Calls will always return something, whereas contract transaction may not.

/developers/tools/intellij-plugin/contract-transaction/


Deploy

Once a dApp has been written, it can be compiled and deployed to a local or remote blockchain network. Deploying dApps is similar to how regular applications are deployed currently, however there are some differences. One major difference is that to deploy an application to a public blockchain network, an account must be supplied with tokens in order to cover the deployment costs. However, when deploying to a local network through the Maven CLI there is no need to create an account or supply it with test tokens, as everything is contained within the local network.

/developers/tools/maven-cli/deploy/


Call

Calls to a contract can either be simple calls, or contract transactions. Calls do not necessarily incur a cost, but contract transactions always incur a cost as they are changing the state of the blockchain. Calls to a contract will always return something, whereas contract transaction may not depending on the function called.

/developers/tools/maven-cli/call/


Get Balance

Every account has a balance associated with it, including empty accounts. Finding out the balance of an account is incredibly simple with the Aion4j plugin for IntelliJ.

/developers/tools/intellij-plugin/get-balance/


Contract Transactions

Contract transactions are the same as calls, except transactions always initiate a state-change. This means that something within the contract, like a variable, changes. This changes the state of the blockchain, which incurs a cost. Transaction calls can also change the state, or value, of something _without_ the contract having to return anything. Calls do not necessarily initiate a state-change. Calls are able to simply request the content or value of a variable. Calls will always return something, whereas contract transaction may not.

/developers/tools/maven-cli/contract-transactions/


Transfer

Transfer funds from one account to another using the Aion4j plugin for IntelliJ. This function is only available through a remote node.

/developers/tools/intellij-plugin/transfer/


Get Receipt

Just like regular real-world transactions, when a transaction is processed on a blockchain network a receipt is generated. This receipt lists pieces of information that can be helpful in debugging contracts, as well as vital information such as a contract's block hash and contract address. The Maven CLI does not automatically retrieve the receipt after a transaction has been sent.

/developers/tools/maven-cli/get-receipt/


Get Receipts

Just like regular real-world transactions, when a transaction is processed on a blockchain network a receipt is generated. This receipt lists pieces of information that can be helpful in debugging contracts, as well as vital information such as a contract's block hash and contract address. The Aion4j plugin automatically receives the receipt of each transaction, so you shouldn't need to use this feature unless you are looking for the receipt of a specific historical transaction.

/developers/tools/intellij-plugin/get-receipt/


ABI Type Check

ABI type check feature warns you if any non-allowed data types are used as an input into a function, or a return value from a function. Certain types are blocked from being called from outside the contract to increase the security and consistency of the network.

/developers/tools/intellij-plugin/abi-type-check/


Get Logs

Reviewing the logs from a node can be useful when attempting to debug issues with contracts or the node itself. Logs can also be useful at finding choke points or memory issues within your contracts.

/developers/tools/maven-cli/get-logs/


Transfer

You can also send tokens to and from contracts and accounts using the Maven CLI. Just like other transactions, the transaction receipt is not automatically returned once the transaction has finished, you need to request the receipt manually.

/developers/tools/maven-cli/transfer/


Unlock Account

Unlock an account on a remote node. This allows you to use the specified account to deploy, call, and interact with contracts. This is not advised on public / shared nodes. Some hosting services disable the unlocking of account on their shared nodes.

/developers/tools/intellij-plugin/unlock-account/


Community Tools

Here is a list of tools that the Aion community has built. While some of the internal developers at the Aion Foundation help out with these projects, none of the tools listed on this page are officially supported by the Aion Foundation. Each tool has it's own support and installation processes. Check out the GitHub pages of each project to learn more about what's going on. For more general help, you can post any issues or questions on StackOverflow, using the AION tag.

/developers/tools/community-tools/


Faucet

When creating a Dapp, it is generally a good idea to run it on test network before deploying it to a Mainnet. To do that, you're going to need some cryptocurrency to test with. Luckily, faucets exist to supply you with all the test coins you'll ever need. Test faucets are a way for developers to get some tokens to test on the Testnet (Mastery) with.

/developers/tools/faucets/


Variable Types

When calling or deploying a contract with arguments, you must specify the type of variable you are submitting.

/developers/tools/maven-cli/variable-types/


Wallets

Wallets allow you to store your native Aion tokens and other cryptocurrencies locally on your computer, and are sometimes called offline wallets. Other wallets allow you to keep your tokens online and are always accessible. However, these are generally seen as slightly less secure than locally stored wallets. Finally, there are mobile wallets that help bridge the gap between security and usability.

/developers/tools/wallets/