/ibc_contracts

A implementation of Inter-blockchain Communication Protocol based on Light Client and Simplified Payment Verification

Primary LanguageC++MIT LicenseMIT

ibc_contracts

starting from version 4, ibc_contracts supports the hub protocol, through this protocol, a star shaped inter-blockchain communication network can be formed, with one hub chain and multiple parallel chains. You can transfer a token on a parallel chain to another parallel chain with only one transfer, for more detailed information, please refer to IBC_Hub_Protocol.md

Build

The two contracts are developed entirely on eosio.cdt, so you can compile them with eosio.cdt. Also, you can compile them with bos.cdt, for bos.cdt only adds some contract interfaces, the existing interfaces of eosio.cdt have not been changed. However, eosio.cdt and bos.cdt use different version number, so you should use following commands to compile:

$ ./build.sh eosio.cdt  # compile with eosio.cdt
$ ./build.sh bos.cdt    # compile with bos.cdt

If the target chain of the deployment contract is a hub chain, you need to compile with the hub protocol.

$ ./build.sh eosio.cdt HUB_PROTOCOL=ON
$ ./build.sh bos.cdt HUB_PROTOCOL=ON

IBC related softwares' version description

There are three IBC related softwares, ibc_contracts, ibc_plugin_eos and ibc_plugin_bos, There are currently multiple major versions for all these three software repositories and between major versions maybe incompatible, so the three repositories need to use the correct major version number to coordinate their work.

compatible combination 1:

code tag(s)
ibc_contracts v4.1.x
ibc_plugin_bos ibc-v4.1.x
ibc_plugin_eos ibc-v3.x.x/ibc-v4.x.x

compatible combination 2:

code tag(s)
ibc_contracts v3.x.x / v4.0.x
ibc_plugin_bos ibc-v3.x.x/ibc-v4.x.x
ibc_plugin_eos ibc-v3.x.x/ibc-v4.x.x

IBC test localhost environment

ibc_test_env provides a great localhost IBC test cluster environment, you can find all the details related to IBC system deployment, contracts initialization, testing inter-blockchain token transfers in the bash scripts.

Documents