yui-ibc-solidity icon indicating copy to clipboard operation
yui-ibc-solidity copied to clipboard

IBC in Solidity

IBC-Solidity

Test GoDoc

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.

Features

  • Implementation of ICS
  • Implementation of ICS-20
  • ERC-20 Token Transfer

Documents

Please see here.

In addition, a tutorial is here.

Supported Light Client

You can deploy a Light Client that implements the IClient interface to integrate with IBC-Solidity.

Here are some such examples:

Related projects

  • 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

Testing

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

For Developers

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.

Maintainers