Skip to content

Latest commit

 

History

History
69 lines (43 loc) · 2.75 KB

3_IBC_ARCHITECTURE.md

File metadata and controls

69 lines (43 loc) · 2.75 KB

3: IBC Architecture

This is an overview of the high-level architecture & dataflow of the IBC protocol.

For the design rationale behind the protocol, see here.

For definitions of terms used in IBC specifications, see here.

This document outlines the architecture of the authentication, transport, and ordering layers of the IBC protocol stack.

What is IBC?

IBC is an application-agnostic layered protocol stack for inter-blockchain communication which handles authentication, transport, and ordering of structured data packets relayed between two blockchains.

What is IBC not?

IBC is not (only) a token transfer protocol: token transfer is a possible application-layer use of the IBC protocol.

IBC is not (only) a sharding protocol: there is no single state machine being split across chains, but rather a diverse set of different state machines on different chains which share some common interfaces.

IBC is not (only) a layer-two scaling protocol: all chains implementing IBC exist on the same "layer", although they may occupy different points in the network topology, and there is no single root chain or single validator set.

Protocol Stack

IBC can be conceptualized as a layered protocol stack, through which data flows top-to-bottom (when sending IBC packets) and bottom-to-top (when receiving IBC packets).

Consider the path of an IBC packet between two chains — call them A and B:


Dataflow on chain A:

Actor --> Module --> Handler -> Packet --> Channel --> Connection --> Consensus -->


Off-chain (note that one relayer can handle many chains, connections, and packets):

--> Relayer -->


Dataflow on chain B:

--> Consensus --> Connection --> Channel --> Packet --> Handler --> Module


Packet Traversal

Consider the path of an IBC packet between two chains — call them A and B.

  1. On chain A
    1. Actor (application-specific)
    2. Module (application-specific)
    3. Handler (parts defined in different ICSs)
    4. Packet (defined in ICS 5)
    5. Channel (defined in ICS 4)
    6. Connection (defined in ICS 3)
    7. Consensus (defined in ICS 2)
  2. Off-chain
    1. Relayer (defined in ICS 18)
  3. On chain B
    1. Consensus (defined in ICS 2)
    2. Connection (defined in ICS 3)
    3. Channel (defined in ICS 4)
    4. Packet (defined in ICS 5)
    5. Handler (parts defined in different ICSs)
    6. Module (application-specific)