cosmos-sdk/docs/spec/ibc
Christopher Goes 1cdfef81cd
Reorder Merkle proof section
2018-04-17 16:28:34 +02:00
..
images Clean up optimization section 2018-04-17 16:28:33 +02:00
mvp Move specification.md to README.md, cleanup overview, separate MVP directory 2018-04-17 16:28:33 +02:00
protobuf Added protobuf specifications for ibc messages 2018-04-17 16:28:32 +02:00
README.md Pluralize 2018-04-17 16:28:34 +02:00
appendices.md Pluralize 2018-04-17 16:28:34 +02:00
conclusion.md Cleanup & clarification in progress 2018-04-17 16:28:33 +02:00
footnotes.md Cleanup & clarification in progress 2018-04-17 16:28:33 +02:00
optimizations.md Move specification.md to README.md, cleanup overview, separate MVP directory 2018-04-17 16:28:33 +02:00
overview.md Cleanup & clarification in progress 2018-04-17 16:28:33 +02:00
proofs.md Cleanup & clarification in progress 2018-04-17 16:28:33 +02:00
queues.md Reorder Merkle proof section 2018-04-17 16:28:34 +02:00

README.md

Cosmos Inter-Blockchain Communication (IBC) Protocol

Abstract

This paper specifies the Cosmos Inter-Blockchain Communication (IBC) protocol. The IBC protocol defines a set of semantics for authenticated, strictly-ordered message passing between two blockchains with independent consensus algorithms.

IBC requires two blockchains with cheaply verifiable rapid finality. The protocol makes no assumptions of block confirmation times or maximum network latency of packet transmissions, and the two consensus algorithms remain completely independent. Each chain maintains a local partial order and inter-chain message sequencing ensures cross-chain linearity. Once the two chains have registered a trust relationship, cryptographically provable packets can be sent between the chains.

The core IBC protocol is payload-agnostic. On top of IBC, developers can implement the semantics of a particular application, enabling users to transfer valuable assets between different blockchains while preserving, under particular security assumptions of the underlying blockchains, the contractual guarantees of the asset in question - such as scarcity and fungibility for a currency or global uniqueness for a digital kitty-cat.

IBC was first outlined in the Cosmos Whitepaper, and later described in more detail by the IBC specification paper. This documentation replaces and supersedes both. It explains the requirements and structure of the protocol and provides sufficient detail for both analysis and implementation, including example pseudocode.

Contents

  1. Overview
    1. Definitions
    2. Threat Models
  2. Proofs
    1. Establishing a Root of Trust
    2. Following Block Headers
  3. Messaging Queue
    1. Merkle Proofs for Queues
    2. Naming Queues
    3. Message Contents
    4. Sending a Packet
    5. Receipts
    6. Relay Process
  4. Optimizations
    1. Cleanup
    2. Timeout
    3. Handling Byzantine Failures
  5. Conclusion
  6. Appendices
    1. Appendix A: Encoding Libraries
    2. Appendix B: IBC Queue Format
    3. Appendix C: Merkle Proof Format
    4. Appendix D: Universal IBC Packets
    5. Appendix E: Tendermint Header Proofs