Skip to content

docs: IBC documentation pages - #1380

Open
evanorti wants to merge 30 commits into
mainfrom
docs
Open

docs: IBC documentation pages#1380
evanorti wants to merge 30 commits into
mainfrom
docs

Conversation

@evanorti

@evanorti evanorti commented Aug 18, 2026

Copy link
Copy Markdown
Collaborator

Adds the IBC documentation set under docs/, organised into six numbered sections. docs/README.md is the table of contents and the entry point.

Introduction

  • 1-introduction/1-what-is-ibc.md — packets between chains, verified by on-chain light clients

How IBC works

  • 2-how-ibc-works/1-overview.md — the components, and the packet they pass
  • 2-how-ibc-works/2-packets-and-applications.md — what moves, and what gives it meaning
  • 2-how-ibc-works/3-core-router-and-store.md — the entry point, and the provable record
  • 2-how-ibc-works/4-clients-and-counterparties.md — how one chain verifies another
  • 2-how-ibc-works/5-relayer.md — what decides when packets move
  • 2-how-ibc-works/6-packet-lifecycle.md — delivered and acknowledged, or timed out

Applications

  • 3-applications/1-gmp.md — contract calls on another chain
  • 3-applications/2-ift.md — a token that burns here and mints there

Light clients

  • 4-light-clients/1-attestation-light-client.md — accepts what a quorum of attestors signs
  • 4-light-clients/2-attestors.md — the services that sign, and the keys trusted

IBC-solidity contracts

  • 5-ibc-solidity-contracts/1-overview.md — the contracts, and who deploys each
  • 5-ibc-solidity-contracts/2-ics26-router.md — entry points, storage, events, roles
  • 5-ibc-solidity-contracts/3-ics27-gmp-and-accounts.md — GMP and its per-sender accounts
  • 5-ibc-solidity-contracts/4-ift-contracts.md — the base contract and its variants
  • 5-ibc-solidity-contracts/5-attestation-light-client.md — what it verifies, and how
  • 5-ibc-solidity-contracts/6-permissions-and-upgrades.md — roles, proxies, and what is fixed

IBC CLI

  • 6-ibc-cli/1-overview.md — the three parts, and how they run

Guides

  • 6-ibc-cli/2-tutorial-deploy-ibc-and-send-a-token.md — deploy IBC on two chains and send a token
  • 6-ibc-cli/3-run-a-standalone-attestor.md — an attestor in its own process
  • 6-ibc-cli/4-run-a-standalone-relayer.md — connect a relayer to an existing connection
  • 6-ibc-cli/5-make-a-cross-chain-gmp-call.md — call a contract across chains

Reference

  • 6-ibc-cli/6-configuration.md — every key in ibc.yml
  • 6-ibc-cli/7-cli-commands.md — every command and flag
  • 6-ibc-cli/8-api.md — the relayer and attestor gRPC services

guides tests and ref generation

The four guides were each run end to end against two local Besu chains, from a clean teardown, in the order they appear.

The tables on the three reference pages are generated from this repository by docs/6-ibc-cli/tools/refgen.py. Prose around them is hand-written; anything between <!-- GEN:... START --> and its END is regenerated and should not be edited by hand. See the tooling README.

Comment thread docs/1-introduction/1-what-is-ibc.md
@linear-code

linear-code Bot commented Aug 19, 2026

Copy link
Copy Markdown

Comment thread docs/2-how-ibc-works/4-clients-and-counterparties.md
Comment thread docs/2-how-ibc-works/overview.md Outdated
Comment thread docs/2-how-ibc-works/overview.md Outdated
- Repeats those steps in the other direction, to return the acknowledgement.
- Proves the timeout on the source chain instead, if the packet timed out. That path waits for the deadline to pass rather than for a transaction to be final.

A relayer is trusted for liveness alone: it can never forge or alter a packet, because changing any of its contents breaks the proof the client checks. Visit the [Relayer](/how-ibc-works/relayer) page for more information.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Useful to mention it is important relayer liveness and uptime, if relayer down, no messages are exchanged.
Useful to mention also who can be/run a relayer

Comment thread docs/1-introduction/1-what-is-ibc.md
Comment thread docs/1-introduction/1-what-is-ibc.md
Comment thread docs/2-how-ibc-works/core-router-and-store.md Outdated

@srdtrk srdtrk left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll edit these later. Also, the docs may have identified a potential bug in solidity GMP

Comment thread docs/3-applications/gmp.md Outdated
Comment thread docs/3-applications/1-gmp.md
Comment thread docs/5-ibc-solidity-contracts/ics27-gmp-and-accounts.md Outdated
Comment thread docs/5-ibc-solidity-contracts/ics27-gmp-and-accounts.md Outdated
Comment thread docs/5-ibc-solidity-contracts/ics27-gmp-and-accounts.md Outdated
Comment thread docs/5-ibc-solidity-contracts/ics27-gmp-and-accounts.md Outdated
Comment thread docs/5-ibc-solidity-contracts/ics27-gmp-and-accounts.md Outdated
Comment thread docs/5-ibc-solidity-contracts/3-ics27-gmp-and-accounts.md
Comment thread docs/2-how-ibc-works/core-router-and-store.md Outdated

@mattac21 mattac21 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think my 3 pages look pretty good, I am no attestation light client expert so it was mostly a sanity check for accuracy, but things made sense to me and I thought it read well

Comment thread docs/4-light-clients/1-attestation-light-client.md
@evanorti
evanorti marked this pull request as ready for review August 25, 2026 16:39
@evanorti
evanorti requested a review from a team as a code owner August 25, 2026 16:39
@greptile-apps

greptile-apps Bot commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR adds a broad IBC documentation set covering protocol concepts, applications, light clients, Solidity contracts, and CLI workflows, along with tooling and tests that generate portions of the CLI/API reference.

  • Introduces conceptual and implementation-level IBC documentation.
  • Adds deployment, relayer, attestor, token-transfer, and GMP CLI tutorials.
  • Adds a Python reference generator with unit and end-to-end tests.
  • One tutorial workflow currently uses an unsupported CLI flag.

Confidence Score: 4/5

The PR should not merge until the unsupported --ws option is removed from the tutorial and command reference or implemented in the CLI.

The documented add-chain commands fail during argument parsing because the current Cobra command does not register the --ws option, blocking readers before they can continue the deployment workflow.

Files Needing Attention: docs/6-ibc-cli/2-tutorial-deploy-ibc-and-send-a-token.md and docs/6-ibc-cli/7-cli-commands.md

Important Files Changed

Filename Overview
docs/6-ibc-cli/2-tutorial-deploy-ibc-and-send-a-token.md Adds the end-to-end deployment and token-transfer tutorial, but both add-chain invocations use an unsupported --ws flag and stop the workflow.
docs/6-ibc-cli/7-cli-commands.md Adds generated CLI command reference material but incorrectly lists --ws as an option for config add-chain.
docs/6-ibc-cli/tools/refgen.py Adds source-driven CLI, configuration, and API documentation generation; no independently publishable generator defect was established.
docs/2-how-ibc-works/packet-lifecycle.md Documents packet send, receive, acknowledgement, and timeout paths, including callback behavior and settlement guarantees.
docs/5-ibc-solidity-contracts/ics26-router.md Adds detailed router contract documentation covering packet operations, verification, storage, callbacks, and permissions.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart LR
  Source["IBC and Link source"] --> Generator["refgen.py"]
  Generator --> Reference["Generated CLI/API reference"]
  Reference --> Reader["Documentation reader"]
  Tutorials["CLI tutorials"] --> Reader
  Reader --> CLI["ibc CLI"]
  CLI --> Workflow["Deploy and operate IBC"]
Loading

Reviews (1): Last reviewed commit: "docs: add IBC CLI tutorial, guides, and ..." | Re-trigger Greptile

5. Next, register the first chain's details in the config. This passes the chain id, RPC and websocket endpoints, and deployer key.

```bash
./bin/ibc config add-chain --chain-id 41001 --rpc http://localhost:8545 --ws ws://localhost:8546 --deployer deployer

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Unsupported websocket flag blocks tutorial

When a reader runs this command, Cobra rejects the undocumented --ws implementation gap as an unknown flag because config add-chain registers only --chain-id, --rpc, --router, and --deployer, blocking the remainder of the deployment tutorial. The same unsupported flag is used again for the second chain and listed in the generated command reference.

@evanorti evanorti changed the title docs: IBC documentation pages for review docs: IBC documentation pages Aug 25, 2026
evanorti and others added 12 commits August 25, 2026 20:38
Add IBC docs drafts for review
Signed-off-by: dhfang <dhsfang@gmail.com>
Signed-off-by: dhfang <dhsfang@gmail.com>
* docs: address GMP review comments on gmp.md (FOU-1386)

Signed-off-by: srdtrk <srdtrk@hotmail.com>

* docs: address GMP review comments on ics27-gmp-and-accounts.md (FOU-1392)

Signed-off-by: srdtrk <srdtrk@hotmail.com>

* docs: correct the gas-retry boundary and restore the success-flag derivation

The delivery paragraph on the GMP page said a failed attempt could be
re-delivered with more gas, which reads as the general rule for an
out-of-gas destination call and contradicts the FailedCall paragraph
later on the same page. ICS26Router.recvPacket writes the packet receipt
before it calls the application, so past proof verification the packet is
consumed either way; only a delivery that reverts before the receipt is
written leaves it in flight. Say that instead.

Also restore two details dropped with the old packet-handlers section:
how ICS27GMP derives the callback's success flag, and that the three
router handlers revert ICS27Unauthorized for any other caller.

Signed-off-by: srdtrk <srdtrk@hotmail.com>

---------

Signed-off-by: srdtrk <srdtrk@hotmail.com>
Signed-off-by: dhfang <dhsfang@gmail.com>
Signed-off-by: dhfang <dhsfang@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants