WIP Ibc intro docs#306
Conversation
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Workflows to automatically generate PRs for you. |
Greptile SummaryThis PR adds three new conceptual overview pages (
Confidence Score: 4/5Not safe to merge until broken internal links, missing docs.json registration, and missing next/ counterparts are fixed. Three P1 findings block correct behavior: five internal links will 404, the pages won't appear in the sidebar (docs.json not updated), and the next/ sync is missing. The one P2 (bold text) is minor. Once the P1s are addressed this is safe to merge. All three new files need link fixes; docs.json and ibc/next/intro/ counterparts need to be created outside this diff. Important Files Changed
|
| @@ -0,0 +1,45 @@ | |||
| # What is IBC? | |||
There was a problem hiding this comment.
docs.json not updated and next/ counterparts missing
Three new pages are added under ibc/latest/intro/ but two required follow-up steps were skipped. First, docs.json must be updated to register each new .mdx file — without that, the pages are unreachable from the sidebar. Second, CLAUDE.md requires running node scripts/sync-latest-to-next.js ibc/latest/intro/ (or adding the files directly to ibc/next/intro/) after editing latest/. Neither ibc/next/intro/what-is-ibc.mdx, how-ibc-works.mdx, nor ibc-lifecycle.mdx appear to exist yet in next/.
Context Used: CLAUDE.md (source)
|
|
||
| A packet is the unit of communication in IBC. It is how one chain sends a message to another. Every cross-chain action, whether it is a token transfer, a contract call, or any other application message, is wrapped in a packet and sent through the IBC protocol. | ||
|
|
||
| A packet contains routing information (which clients are involved, what sequence number it has, when it expires) and one or more **payloads**. Each payload carries the actual application data: which ports are involved, what version and encoding the data uses, and the raw bytes of the message itself. Multiple payloads in a single packet execute atomically, which makes it possible to bundle cross-chain operations together. |
There was a problem hiding this comment.
The repo style guide prohibits bold or italic text in documentation content.
**payloads** should be plain text.
| A packet contains routing information (which clients are involved, what sequence number it has, when it expires) and one or more **payloads**. Each payload carries the actual application data: which ports are involved, what version and encoding the data uses, and the raw bytes of the message itself. Multiple payloads in a single packet execute atomically, which makes it possible to bundle cross-chain operations together. | |
| A packet contains routing information (which clients are involved, what sequence number it has, when it expires) and one or more payloads. Each payload carries the actual application data: which ports are involved, what version and encoding the data uses, and the raw bytes of the message itself. Multiple payloads in a single packet execute atomically, which makes it possible to bundle cross-chain operations together. |
Context Used: CLAUDE.md (source)
Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
|
|
||
| The routing information tells the protocol which chains are involved, which sequence number this packet is, and when it expires. This is what IBC Core (the on-chain IBC logic) uses to track the packet, verify proofs against it, and prevent replay. | ||
|
|
||
| The payloads carry the actual message data, which contains the ports are involved and the raw bytes of the message itself. IBC Core treats those bytes as opaque and passes them through untouched. A single packet can carry multiple payloads, which execute atomically (all succeed or all fail). |
There was a problem hiding this comment.
typo "which contains the ports are involved"
|
|
||
| Relayers carry no trust. They cannot forge or alter packets, because every proof they submit is verified by the receiving chain's light client. A malicious or faulty relayer can delay delivery, but it cannot cause Chain B to process a packet that was never sent, or change the contents of one that was. Because relayers do not need any special trust, there is no permissioning or registration required for them. | ||
|
|
||
| The above describes relaying with Tendermint light clients, used for Cosmos-to-Cosmos IBC. For Cosmos-to-EVM connections using attestation light clients, the model differs: rather than fetching Merkle proofs and submitting block headers, the relayer delegates proof construction entirely to a Proof API, which queries the attestor set and assembles the relay transaction. The trust guarantees remain the same, as the relayer cannot forge attestation signatures it does not hold. |
There was a problem hiding this comment.
- You can use attestor clients in cosmos-to-cosmos connections as well. I would just mention the connection chain types in this paragraph and just focus on the different client types.
- Proof construction is delegated to a proof api in all cases for ibc v2 right now. I would just not mention the proof api.
- Attestation clients do not have a trusting period or expiration.
Add IBC intro section (what-is-ibc, how-ibc-works, ibc-lifecycle)
Adds three new conceptual overview pages to
ibc/latest/intro/: