Skip to Content

Threat Model

The original can be found at Zenon Developer Commons .

Status: Proposed (applies to future light-client + proof-bundle designs)

This document defines adversaries, assumptions, and safety/liveness boundaries for:

  • browser-native/light verification
  • bundle-serving infrastructure (Sentinels/Supervisors)
  • Momentum/header synchronization

Goals

Safety goals (must not break)

  • A light client MUST NOT accept an invalid chain tip as canonical.
  • A light client MUST NOT accept an invalid account frontier / state transition as valid.
  • A light client MUST NOT accept proofs that do not match on-chain commitments.

Liveness goals (best effort)

  • A light client SHOULD be able to make progress without trusted RPCs, given reasonable peer connectivity.
  • Bundle unavailability MAY stall progress, but MUST NOT break safety.

Adversaries

Assume any of the following can be Byzantine:

  • peers serving headers
  • Sentinels relaying transactions
  • Supervisors serving bundles
  • a large fraction of non-committee nodes
  • some fraction of committee/producers (bounded by consensus fault tolerance)

Assume network-level adversaries can:

  • eclipse a client (peer isolation)
  • delay or drop messages
  • serve inconsistent data to different clients
  • withhold bundles while serving headers

Trust assumptions (explicit)

A light client’s safety relies on:

  • cryptographic integrity of signatures/hashes
  • correctness of fork-choice rule
  • correctness of producer eligibility verification (committee proof strategy)
  • at least one honest path to receive canonical headers eventually (anti-eclipse mitigation)

A light client’s liveness relies on:

  • access to data availability (bundles/patches/proofs) from at least one source eventually

Attack classes & handling

Eclipse attack

Impact: can stall or mislead a client about best tip. Mitigations:

  • multi-peer sampling
  • periodic peer rotation
  • diversity constraints (networks/ASNs when possible)
  • checkpointing / weak subjectivity anchors (if adopted)

Withholding (data availability)

Impact: stalls client (liveness) if bundles are unavailable. Safety: should remain safe if commitments are checked. Mitigations:

  • multiple independent bundle sources
  • fallback modes (full patch fetch, or slow-path sync)
  • explicit “availability timeout” policy

Equivocation by bundle servers

Impact: serve different bundles for the same commitment. Safety: client rejects any bundle that fails commitment checks. Mitigation: commitment checks + optional gossip of bundle hashes.

Invalid header chain (fork injection)

Impact: attempt to convince client to follow invalid fork. Mitigation: strict header verification + committee/producer proofs + fork-choice.

Safety vs Liveness Summary

  • Bundle absence is primarily a liveness issue.
  • Bundle mismatch (fails commitment checks) is a safety rejection, not a risk.
  • Committee proof weakness is the highest safety-risk area for light clients.

Non-goals

  • No requirement that a browser executes global state.
  • No requirement that a browser validates every transition on the network.
  • No “trusted RPC gateway” assumption as a security requirement.
Last updated on