Skip to content

Commit

Permalink
Update IBC overview document to latest ICS-24 link (backport #9044) (#…
Browse files Browse the repository at this point in the history
…9316)

* Update overview.md (#9044)

Co-authored-by: SaReN <sahithnarahari@gmail.com>
(cherry picked from commit cad3987)

# Conflicts:
#	docs/ibc/overview.md

* Fix conflits

Co-authored-by: Calvin Lau <38898718+calvinaco@users.noreply.github.com>
Co-authored-by: Amaury M <1293565+amaurym@users.noreply.github.com>
  • Loading branch information
3 people committed May 12, 2021
1 parent f9d13e6 commit 29db772
Showing 1 changed file with 25 additions and 32 deletions.
57 changes: 25 additions & 32 deletions docs/ibc/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,38 +26,31 @@ module correctly.

## Components Overview

### [Clients](https://github.com/cosmos/cosmos-sdk/tree/release/v0.42.x/x/ibc/core/02-client)

IBC Clients are light clients (identified by a unique client-id) that track the consensus states of
other blockchains, along with the proof spec necessary to properly verify proofs against the
client's consensus state. A client may be associated with any number of connections to multiple
chains. The supported IBC clients are:

* [Solo Machine light client](https://github.com/cosmos/cosmos-sdk/tree/release/v0.42.x/x/ibc/light-clients/06-solomachine): devices such as phones, browsers, or laptops.
* [Tendermint light client](https://github.com/cosmos/cosmos-sdk/tree/release/v0.42.x/x/ibc/light-clients/07-tendermint): The default for SDK-based chains,
* [Localhost (loopback) client](https://github.com/cosmos/cosmos-sdk/tree/release/v0.42.x/x/ibc/light-clients/09-localhost): Useful for
testing, simulation and relaying packets to modules on the same application.

### [Connections](https://github.com/cosmos/cosmos-sdk/tree/release/v0.42.x/x/ibc/core/03-connection)

Connections encapsulate two `ConnectionEnd` objects on two seperate blockchains. Each
`ConnectionEnd` is associated with a client of the other blockchain (ie counterparty blockchain).
The connection handshake is responsible for verifying that the light clients on each chain are
correct for their respective counterparties. Connections, once established, are responsible for
facilitation all cross-chain verification of IBC state. A connection may be associated with any
number of channels.

### [Proofs](https://github.com/cosmos/cosmos-sdk/tree/release/v0.42.x/x/ibc/core/23-commitment) and [Paths](https://github.com/cosmos/cosmos-sdk/tree/release/v0.42.x/x/ibc/core/24-host)

In IBC, blockchains do not directly pass messages to each other over the network. Instead, to
communicate, a blockchain will commit some state to a specifically defined path reserved for a
specific message type and a specific counterparty (perhaps storing a specific connectionEnd as part
of a handshake, or a packet intended to be relayed to a module on the counterparty chain). A relayer
process monitors for updates to these paths, and will relay messages, by submitting the data stored
under the path along with a proof to the counterparty chain. The paths that all IBC implementations
must use for committing IBC messages is defined in
[ICS-24](https://github.com/cosmos/ics/tree/master/spec/ics-024-host-requirements) and the proof
format that all implementations must be able to produce and verify is defined in this [ICS-23 implementation](https://github.com/confio/ics23).
This section describes the IBC components and links to the repos.

### [Clients](https://github.com/cosmos/ibc-go/blob/main/modules/core/02-client)

IBC clients are light clients that are identified by a unique client id. IBC clients track the consensus states of other blockchains and the proof specs of those blockchains that are required to properly verify proofs against the client's consensus state. A client can be associated with any number of connections to multiple chains. The supported IBC clients are:

- [Solo Machine light client](https://github.com/cosmos/ibc-go/blob/main/modules/light-clients/06-solomachine): devices such as phones, browsers, or laptops.
- [Tendermint light client](https://github.com/cosmos/ibc-go/blob/main/modules/light-clients/07-tendermint): The default for Cosmos SDK-based chains.
- [Localhost (loopback) client](https://github.com/cosmos/ibc-go/blob/main/modules/light-clients/09-localhost): Useful for testing, simulation, and relaying packets to modules on the same application.

### [Connections](https://github.com/cosmos/ibc-go/blob/main/modules/core/03-connection)

Connections encapsulate two `ConnectionEnd` objects on two separate blockchains. Each `ConnectionEnd` is associated with a client of the other blockchain (the counterparty blockchain). The connection handshake is responsible for verifying that the light clients on each chain are correct for their respective counterparties. Connections, once established, are responsible for facilitating all cross-chain verification of IBC state. A connection can be associated with any number of channels.

### [Proofs](https://github.com/cosmos/ibc-go/blob/main/modules/core/23-commitment) and [Paths](https://github.com/cosmos/ibc-go/blob/main/modules/core/24-host)

In IBC, blockchains do not directly pass messages to each other over the network.

- To communicate, a blockchain commits some state to a precisely defined path reserved for a specific message type and a specific counterparty. For example, a blockchain that stores a specific connectionEnd as part of a handshake or a packet intended to be relayed to a module on the counterparty chain.

- A relayer process monitors for updates to these paths and relays messages by submitting the data stored under the path along with a proof of that data to the counterparty chain.

- The paths that all IBC implementations must support for committing IBC messages are defined in [ICS-24 host requirements](https://github.com/cosmos/ics/tree/master/spec/core/ics-024-host-requirements).

- The proof format that all implementations must produce and verify is defined in [ICS-23 implementation](https://github.com/confio/ics23).

### [Capabilities](./ocap.md)

Expand Down

0 comments on commit 29db772

Please sign in to comment.