Awesome
<div align="center"> <h1>ibc-solidity</h1> </div> <div align="center"> <img alt="Version" src="https://img.shields.io/github/tag/hyperledger-labs/yui-ibc-solidity.svg"> <a href="https://github.com/hyperledger-labs/yui-ibc-solidity/blob/main/LICENSE"> <img alt="License: Apache-2.0" src="https://img.shields.io/github/license/hyperledger-labs/yui-ibc-solidity.svg" /> </a> <a href="https://github.com/hyperledger-labs/yui-ibc-solidity/actions/workflows/test.yml"> <img alt="Test" src="https://github.com/hyperledger-labs/yui-ibc-solidity/actions/workflows/test.yml/badge.svg" /> </a> <a href="https://pkg.go.dev/github.com/hyperledger-labs/yui-ibc-solidity?tab=doc"> <img alt="GoDoc" src="https://godoc.org/github.com/hyperledger-labs/yui-ibc-solidity?status.svg" /> </a> </div>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.
Features
- Implementation of ICS
- Implementation of ICS-20
- ERC-20 Token Transfer
Documents
Supported Light Client
You can deploy a Light Client that implements the ILightClient interface to integrate with ibc-solidity.
Here are some such examples:
IBC relayer support
- 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
Related projects
- 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
For Developers
Unit test
$ make test
E2E 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
E2E-test with IBC-Relayer
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
solidity-protobuf
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