IBC implementations in Solidity.
IBC compatibility: v4.0.0
This is available not only for Ethereum and Hyperledger Besu, but also for Polygon PoS and other blockchains that supports EVM-compatible.
NOTE: This is yet pre-beta non-production-quality software.
- Implementation of ICS
- Implementation of ICS-20
- ERC-20 Token Transfer
Please see here.
In addition, a tutorial is here.
You can deploy a Light Client that implements the IClient interface to integrate with IBC-Solidity.
Here are some such examples:
- A demo of trustless bridge between Harmony and Cosmos(Tendermint): https://github.com/datachainlab/harmony-cosmos-bridge-demo
- A demo of trustless bridge between Celo and Cosmos: https://github.com/ChorusOne/celo-cosmos-bridge
Launch two Besu chains(ethereum-compatible) with the contracts deployed with the following command:
# If NO_GEN_CODE is empty, setup-script will generate a proto3 marshaler in solidity
$ NO_GEN_CODE=1 ./scripts/setup.sh testtwochainz
After launch the chains, execute the following command:
$ make e2e-test
An example of E2E with IBC-Relayer(yui-relayer) can be found here:
- https://github.com/datachainlab/yui-relayer-build/tree/v0.2/tests/cases/tm2eth
- https://github.com/datachainlab/yui-relayer-build/blob/v0.2/.github/workflows/v0.2-tm2eth.yml
To develop this project, you need the code generator solidity-protobuf to generate encoders and decoders in solidity from proto files.
Currently, you need to use this version.