cosmos-sdk/docs/spec/ibc
Christopher Goes f01ab5e4c9
Start editing of Queues 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 Cleanup & clarification in progress 2018-04-17 16:28:33 +02:00
appendix.md Move specification.md to README.md, cleanup overview, separate MVP directory 2018-04-17 16:28:33 +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 Start editing of Queues 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

Appendix A: Encoding Libraries

Appendix B: IBC Queue Format

Appendix C: Merkle Proof Format

Appendix D: Universal IBC Packets

Appendix E: Tendermint Header Proofs