Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hyperledger-labs/yui-ibc-solidity
IBC in Solidity
https://github.com/hyperledger-labs/yui-ibc-solidity
cosmos ethereum hyperledger-besu ibc solidity
Last synced: about 11 hours ago
JSON representation
IBC in Solidity
- Host: GitHub
- URL: https://github.com/hyperledger-labs/yui-ibc-solidity
- Owner: hyperledger-labs
- License: apache-2.0
- Created: 2021-02-12T09:46:36.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2025-01-30T17:53:40.000Z (9 days ago)
- Last Synced: 2025-01-31T20:54:20.057Z (7 days ago)
- Topics: cosmos, ethereum, hyperledger-besu, ibc, solidity
- Language: Solidity
- Homepage:
- Size: 2.99 MB
- Stars: 141
- Watchers: 15
- Forks: 64
- Open Issues: 16
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Codeowners: CODEOWNERS
Awesome Lists containing this project
README
ibc-solidity
![banner](docs/img/IBC-solidity-cover.svg)
[IBC](https://github.com/cosmos/ibc) implementations in Solidity.
**IBC compatibility:** [v8](https://github.com/cosmos/ibc-go/releases/tag/v8.2.0)
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](https://github.com/cosmos/ibc/tree/master/spec/core)
- Implementation of [ICS-20](https://github.com/cosmos/ibc/tree/master/spec/app/ics-020-fungible-token-transfer)
- [ERC-20 Token Transfer](./contracts/apps/20-transfer/ICS20TransferBank.sol)## Documents
- [Architecture Overview](./docs/architecture.md)
- [Learn how to develop an IBC Module](https://labs.hyperledger.org/yui-docs/yui-ibc-solidity/)
- [IBFT 2.0 Light Client spec](./docs/ibft2-light-client.md)## Supported Light Client
You can deploy a Light Client that implements [the ILightClient interface](./contracts/core/02-client/ILightClient.sol) to [integrate with ibc-solidity](./docs/architecture.md#light-client).
Here are some such examples:
- [Tendermint ZK Light Client](https://github.com/datachainlab/tendermint-zk-ibc)
- [QBFT/IBFT2.0 Light Client](./contracts/clients/qbft/QBFTClient.sol)
- [LCP(TEE) Client](https://github.com/datachainlab/lcp-solidity)
- [Localhost Client](./contracts/clients/LocalhostClient.sol)## IBC relayer support
- [yui-relayer](https://github.com/datachainlab/yui-relayer): An IBC relayer for heterogeneous chains
- [ethereum-ibc-relay-chain](https://github.com/datachainlab/ethereum-ibc-relay-chain): A relay-chain module for EVM-compatible chains
- [ethereum-ibc-relay-prover](https://github.com/datachainlab/ethereum-ibc-relay-prover): A relay-prover module for Ethereum sync committee
- [besu-ibc-relay-prover](https://github.com/datachainlab/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
```sh
$ make test
```### E2E test
Launch two Hyperledger Besu chains(ethereum-compatible) with the contracts deployed with the following command:
```sh
$ 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](https://github.com/hyperledger-labs/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](https://github.com/datachainlab/solidity-protobuf)
Currently, [v0.1.0](https://github.com/datachainlab/solidity-protobuf/tree/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
```## Maintainers
- [Jun Kimura](https://github.com/bluele)