IBC implementations in Solidity.
IBC compatibility: v8
This is available not only for Ethereum and Hyperledger Besu, but also for Polygon PoS and other EVM-compatible chains.
DISCLAIMER: This project is still under development and has not been audited.
- Implementation of ICS
- Implementation of ICS-20
- ERC-20 Token Transfer
You can deploy a Light Client that implements the ILightClient interface to integrate with ibc-solidity.
Here are some such examples:
- yui-relayer: An IBC relayer for heterogeneous chains
- ethereum-ibc-relay-chain: A relay-chain module for EVM-compatible chains
- ethereum-ibc-relay-prover: A relay-prover module for Ethereum sync committee
- besu-ibc-relay-prover: A relay-prover module for Hyperledger Besu's QBFT and IBFT 2.0 consensus
- A demo of trustless bridge
- between Harmony and Cosmos(Tendermint): https://github.com/datachainlab/harmony-cosmos-bridge-demo
- between Celo and Cosmos: https://github.com/ChorusOne/celo-cosmos-bridge
- A demo of bridge between Cosmos(ibc-go) and Ethereum using IBC and LCP: https://github.com/datachainlab/cosmos-ethereum-ibc-lcp
$ make test
Launch two Hyperledger Besu chains(ethereum-compatible) with the contracts deployed with the following command:
$ make network-qbft
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/ibft2-relay-prover/tree/main/e2e
- https://github.com/datachainlab/yui-relayer-build/tree/v0.4/tests/cases/eth2eth
- https://github.com/datachainlab/yui-relayer-build/blob/v0.4/.github/workflows/v0.4-eth2eth.yml
To generate the proto encoders and decoders in solidity from proto files, you need to use the code generator solidity-protobuf
Currently, v0.1.0 is required.
If you edit the proto definitions, you should execute the following command:
$ make SOLPB_DIR=/path/to/solidity-protobuf proto-sol