ibc-go

module
v8.8.8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 11, 2024 License: MIT

README

ibc-go

banner

The Inter-Blockchain Communication protocol (IBC) allows blockchains to talk to each other. This end-to-end, connection-oriented, stateful protocol provides reliable, ordered, and authenticated communication between heterogeneous blockchains. For a high-level explanation of what IBC is and how it works, please read this blog post.

This IBC implementation in Golang is built as a Cosmos SDK module. To understand more about how to use the ibc-go module as well as about the IBC protocol, please check out the Interchain Developer Academy section on IBC, or our docs.

Roadmap

For an overview of upcoming changes to ibc-go take a look at the roadmap.

This roadmap is also available as a project board.

For the latest expected release timelines, please check here.

Releases

The release lines currently supported are v7 and v8.

Please refer to the Stable Release Policy section of RELEASES.md for more details.

Please refer to our versioning guide for more information on how to understand our release versioning.

Ecosystem

Discover more applications and middleware in the cosmos/ibc-apps repository.

Community

We have active, helpful communities on Discord and Telegram.

For questions and support please use the developers channel in the Cosmos Network Discord server or join the Interchain Discord server. The issue list of this repo is exclusively for bug reports and feature requests.

To receive announcements of new releases or other technical updates, please join the Telegram group that we administer.

We run biweekly community calls to update the community with our current direction and gather feedback on what to work on next. The community calls are also a platform for you to update everyone else with what you're working on, ask questions and find opportunities to collaborate. Please join this Google group to receive a calendar invitation for the meeting.

Contributing

If you're interested in contributing to ibc-go, please take a look at the contributing guidelines. We welcome and appreciate community contributions!

This project adheres to ibc-go's code of conduct. By participating, you are expected to uphold this code.

To help contributors understand which issues are good to pick up, we have the following two categories:

  • Issues with the label good first issue should be pretty well defined and are best suited for developers new to ibc-go.
  • Issues with the label help wanted are a bit more involved and they usually require some familiarity already with the codebase.

If you are interested in working on an issue, please comment on it; then we will be able to assign it to you. We will be happy to answer any questions you may have and help you out while you work on the issue.

If you have any general questions or feedback, please reach out to us in the Interchain Discord server.

Security

To report a security vulnerability, see our Coordinated Vulnerability Disclosure Policy.

Audits

The following audits have been performed on the ibc-go source code:

Quick Navigation

  1. Core IBC Implementation

    1.1 ICS 02 Client

    1.2 ICS 03 Connection

    1.3 ICS 04 Channel

    1.4 ICS 05 Port

    1.5 ICS 23 Commitment

    1.6 ICS 24 Host

  2. Applications

    2.1 ICS 20 Fungible Token Transfers

    2.2 ICS 27 Interchain Accounts

  3. Middleware

    3.1 ICS 29 Fee Middleware

    3.2 Callbacks Middleware

  4. Light Clients

    4.1 ICS 07 Tendermint

    4.2 ICS 06 Solo Machine

    4.3 ICS 09 Localhost

  5. E2E Integration Tests

Documentation and Resources


The development of ibc-go is led primarily by Interchain GmbH. Funding for this development comes primarily from the Interchain Foundation, a Swiss non-profit.

Directories

Path Synopsis
cmd
internal
modules
apps/27-interchain-accounts
Package ica implements the packet data structure, state machine handling logic, and encoding details for the account management system over an IBC channel between separate chains.
Package ica implements the packet data structure, state machine handling logic, and encoding details for the account management system over an IBC channel between separate chains.
apps/27-interchain-accounts/controller/types
NOTE: Usage of x/params to manage parameters is deprecated in favor of x/gov controlled execution of MsgUpdateParams messages.
NOTE: Usage of x/params to manage parameters is deprecated in favor of x/gov controlled execution of MsgUpdateParams messages.
apps/27-interchain-accounts/host/types
Package types is a reverse proxy.
Package types is a reverse proxy.
apps/29-fee
Package fee implements the packet data structure, state machine handling logic, and encoding details for handling fee payments on top of any ICS application protocol.
Package fee implements the packet data structure, state machine handling logic, and encoding details for handling fee payments on top of any ICS application protocol.
apps/29-fee/types
Package types is a reverse proxy.
Package types is a reverse proxy.
apps/transfer
Package transfer implements the packet data structure, state machine handling logic, and encoding details for the transfer of fungible tokens over an IBC channel between two modules on separate chains.
Package transfer implements the packet data structure, state machine handling logic, and encoding details for the transfer of fungible tokens over an IBC channel between two modules on separate chains.
apps/transfer/types
NOTE: Usage of x/params to manage parameters is deprecated in favor of x/gov controlled execution of MsgUpdateParams messages.
NOTE: Usage of x/params to manage parameters is deprecated in favor of x/gov controlled execution of MsgUpdateParams messages.
core/02-client
Package client implements the ICS 02 - Client Semantics specification (https://github.com/cosmos/ibc/tree/master/spec/core/ics-002-client-semantics).
Package client implements the ICS 02 - Client Semantics specification (https://github.com/cosmos/ibc/tree/master/spec/core/ics-002-client-semantics).
core/02-client/types
NOTE: Usage of x/params to manage parameters is deprecated in favor of x/gov controlled execution of MsgUpdateParams messages.
NOTE: Usage of x/params to manage parameters is deprecated in favor of x/gov controlled execution of MsgUpdateParams messages.
core/03-connection
Package connection implements the ICS 03 - Connection Semantics specification (https://github.com/cosmos/ibc/tree/main/spec/core/ics-003-connection-semantics).
Package connection implements the ICS 03 - Connection Semantics specification (https://github.com/cosmos/ibc/tree/main/spec/core/ics-003-connection-semantics).
core/03-connection/types
NOTE: Usage of x/params to manage parameters is deprecated in favor of x/gov controlled execution of MsgUpdateParams messages.
NOTE: Usage of x/params to manage parameters is deprecated in favor of x/gov controlled execution of MsgUpdateParams messages.
core/04-channel
Package channel implements the ICS 04 - Channel and Packet Semantics specification (https://github.com/cosmos/ibc/tree/main/spec/core/ics-004-channel-and-packet-semantics).
Package channel implements the ICS 04 - Channel and Packet Semantics specification (https://github.com/cosmos/ibc/tree/main/spec/core/ics-004-channel-and-packet-semantics).
core/04-channel/types
Package types is a reverse proxy.
Package types is a reverse proxy.
core/05-port
Package port implements the ICS 05 - Port Allocation specification (https://github.com/cosmos/ibc/tree/main/spec/core/ics-005-port-allocation).
Package port implements the ICS 05 - Port Allocation specification (https://github.com/cosmos/ibc/tree/main/spec/core/ics-005-port-allocation).
core/24-host
24-host is an implementation of ICS 24.
24-host is an implementation of ICS 24.
light-clients/06-solomachine
Package solomachine implements a concrete LightClientModule, ClientState, ConsensusState, Header and Misbehaviour types for the Solo Machine light client.
Package solomachine implements a concrete LightClientModule, ClientState, ConsensusState, Header and Misbehaviour types for the Solo Machine light client.
light-clients/07-tendermint
Package tendermint implements a concrete LightClientModule, ClientState, ConsensusState, Header, Misbehaviour and types for the Tendermint consensus light client.
Package tendermint implements a concrete LightClientModule, ClientState, ConsensusState, Header, Misbehaviour and types for the Tendermint consensus light client.
light-clients/09-localhost
Package solomachine implements a concrete LightClientModule, ClientState, ConsensusState, Header and Misbehaviour types for the Localhost light client.
Package solomachine implements a concrete LightClientModule, ClientState, ConsensusState, Header and Misbehaviour types for the Localhost light client.
This file contains the variables, constants, and default values used in the testing package and commonly defined in tests.
This file contains the variables, constants, and default values used in the testing package and commonly defined in tests.
mock
This package is only intended to be used for testing core IBC.
This package is only intended to be used for testing core IBC.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL