IBC implementations in Solidity.
IBC compatibility: v4
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
You can deploy a Light Client that implements the IClient 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
- 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-e2e
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.3/tests/cases/eth2eth
- https://github.com/datachainlab/yui-relayer-build/blob/v0.3/.github/workflows/v0.3-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