This folder contains the smart contracts for ICON-IBC in java. The gradle commands should be run inside this folder.
It is the implementation of the core protocol of the Inter Blockchain Communication (IBC) in Java smart contracts for ICON blockchain. The ibc protocol is modified to specifically work with ICON BTP network. It sends BTP messages to communicate with other blockchains.
This is the light client implementation of tendermint in Java smart contracts.
This contract is a utility contract to make a connection between the ibc protocol and the xcall contract.
- JDK 11+
The build command is used to compile java classes, create the jar files and run the unit tests.
# build and test specific contract
./gradlew ibc:build
# build and run unit test for all contracts
./gradlew build
This step creates optimized Jar which can be used for deployment. The optimized jar is smaller compared to the jar. The optimized jar is converted to bytes for deployment.
# Create optimized jar for deployment for specific contract
./gradlew ibc:optimizedJar
# Create optimized jar for all the contracts
./gradlew optimizedJar
To run the integration tests, you need to have a local icon node running on your machine. You can read more on how to start the local icon container here. After the container is running, you can run the following gradle command.
./gradlew integrationTest
./gradlew ibc:deployToLocal -PkeystoreName=<your_wallet_json> -PkeystorePass=<password>