-
Notifications
You must be signed in to change notification settings - Fork 16
OPEN Chain Cosmos Integration
Cosmos is a decentralized network of independent parallel blockchains, each powered by BFT consensus algorithms like Tendermint consensus.
Fig.1 - Cosmos ArchitectureTendermint is open-source software for launching blockchains, allowing developers to build blockchain applications' networking and consensus layers in any language. Better yet, they can communicate with other blockchains using IBC.
Tendermint consists of two chief technical components: a blockchain consensus engine and a generic application interface. The consensus engine, called Tendermint Core, ensures that the same transactions are recorded on every machine in the same order. The application interface, called the Application BlockChain Interface (ABCI), enables the transactions to be processed in any programming language.
Fig.2 - Tendermint with ABCIThe Inter-Blockchain Communication (IBC) protocol is a core feature of the Cosmos ecosystem, developed to facilitate communication, data transfer, and interoperability between independent blockchains. It is a general purpose message passing protocol, which means that any form of data can be sent and received using IBC.
Fig.3 - IBC OverviewAn IBC relayer is a software component that facilitates communication between two distinct blockchain networks that support the Inter-Blockchain Communication (IBC) protocol. The IBC protocol is a standard for the secure and reliable transfer of digital assets and data across different blockchain networks.
An IBC relayer is responsible for relaying IBC packets, which are used to send messages and data between two different blockchain networks. It receives packets from one chain, verifies their authenticity and validity, and then relays them to the receiving chain.
The following diagram shows how IBC works at a high level:
IBC-Go Relayer (https://github.com/cosmos/relayer)
Hermes Relayer (https://github.com/informalsystems/hermes)
OPEN Chain is building on top of the Tendermint to enable Inter-Blockchain Communication (IBC) across chains.
- Generate Tendermint proto in Open Chain
./gradlew clean build
- Implement
ABCIApplicationGrpc.ABCIApplicationImplBase()
- Run Open Chain
- Run Tendermint Core with proxy app
As the result we have now running consensus and networking mechanism as Fig.2
tendermint node --consensus.create_empty_blocks=false --abci grpc --proxy_app tcp://{open_chain_host}:{grpc_port}
- Run IBC-Go Relayer