IBC implementations in Solidity.
This is available not only for Ethereum and Hyperledger Besu, but also for Polygon PoS and other blockchains that supports EVM.
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
An example of E2E with IBC-Relayer can be found here:
- https://github.com/hyperledger-labs/yui-relayer/tree/main/tests/cases/tm2eth
- https://github.com/hyperledger-labs/yui-relayer/blob/main/.github/workflows/test.yml
After launch the chains, execute the following command:
$ make e2e-test
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.