Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Headers And Ingress

How headers, finality signals, and related evidence enter a consumer chain so light clients can advance.

This chapter is technical.

Ingress roles

RoleResponsibility
Source nodeZcash / Crosslink full node (e.g. zebrad family) exporting headers, finality, or RPC
Relayer / operatorFormats and submits UpdateClient (and packet/proof messages) to the consumer chain
Wasm light clientValidates updates against current client state; advances consensus state
ApplicationReads verified heights/roots; may gate contract logic or IBC handlers

Typical flow

Zcash / Crosslink tip
        │
        ▼
  Header / finality export (RPC, indexer, custom feeder)
        │
        ▼
  Relayer builds client update message
        │
        ▼
  Consumer chain: 08-wasm UpdateClient
        │
        ▼
  Client state height / root advanced
        │
        ▼
  App / contracts act on verified state

Design tips for public verify

  1. Idempotent updates — submitting an already-known tip should be a no-op or cheap reject, not a halt.
  2. Multiple relayers — prefer update formats that allow independent operators (historical update support where required).
  3. Checksum pinning — document the Wasm LC checksum your deployment expects.
  4. Observability — log client height, last update time, freeze status for public dashboards.
  5. Separation of concerns — header ingress is not proof verification; keep ZK proof submission as a separate message path.

See Demos for developer-facing verify paths that exercise public clients and contracts.