Skip to content

Latest commit

 

History

History
53 lines (34 loc) · 5.48 KB

project-structure.md

File metadata and controls

53 lines (34 loc) · 5.48 KB

Project structure

If you're not familiar with the overall module structure from the SDK modules, please check this document as prerequisite reading.

Every Interchain Standard (ICS) has been developed in its own package. The development team separated the IBC TAO (Transport, Authentication, Ordering) ICS specifications from the IBC application level specification. The following sections describe the architecture of the most relevant directories that comprise this repository.

modules

This folder contains implementations for the IBC TAO (core), IBC applications (apps) and light clients (light-clients).

capability

This module is an implementation of Cosmos SDK's ADR 003 that allows for provisioning, tracking, and authenticating multi-owner capabilities at runtime.

core

  • 02-client: This package is an implementation for Cosmos SDK-based chains of ICS 02. This implementation defines the types and methods needed to operate light clients tracking other chain's consensus state.
  • 03-connection: This package is an implementation for Cosmos SDK-based chains of ICS 03. This implementation defines the types and methods necessary to perform connection handshake between two chains.
  • 04-channel: This package is an implementation for Cosmos SDK-based chains of ICS 04. This implementation defines the types and methods necessary to perform channel handshake between two chains and ensure correct packet sending flow.
  • 05-port: This package is an implementation for Cosmos SDK-based chains of ICS 05. This implements the port allocation system by which modules can bind to uniquely named ports.
  • 23-commitment: This package is an implementation for Cosmos SDK-based chains of ICS 23. This implementation defines the functions required to prove inclusion or non-inclusion of particular values at particular paths in state.
  • 24-host: This package is an implementation for Cosmos SDK-based chains of ICS 24.

apps

  • transfer: This is the Cosmos SDK implementation of the ICS 20 protocol, which enables cross-chain fungible token transfers. For more information, read the module's docs
  • 27-interchain-accounts: This is the Cosmos SDK implementation of the ICS 27 protocol, which enables cross-chain account management built upon IBC. For more information, read the module's documentation.
  • 29-fee: This is the Cosmos SDK implementation of the ICS 29 middleware, which handles packet incentivisation and fee distribution on top of any ICS application protocol, enabling fee payment to relayer operators. For more information, read the module's documentation.
  • callbacks: This is an implementation of ADR 008 that allows for secondary applications (e.g. smart contracts, modules) to call into IBC apps as part of their state machine logic and then do some actions on packet lifecycle events. For more information, read the module's documentation.

light-clients

  • 06-solomachine: This package implements the types for the Solo Machine light client specified in ICS 06.
  • 07-tendermint: This package implements the types for the Tendermint consensus light client as specified in ICS 07.
  • 08-wasm: This package implements a proxy light client module that routes requests to the actual light clients uploaded as Wasm byte code, as specified in ICS 08.
  • 09-localhost: This package implements a localhost loopback client with the ability to send and receive IBC packets to and from the same state machine, as specified in ICS 09.

proto

This folder contains all the Protobuf files used for

  • common message type definitions,
  • message type definitions related to genesis state,
  • Query service and related message type definitions,
  • Msg service and related message type definitions.

testing

This package contains the implementation of the testing package used in unit and integration tests. Please read the package's documentation for more information.

e2e

This folder contains all the e2e tests of ibc-go. Please read the module's documentation for more information.