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

Pure PoW Path

The pure proof-of-work path tracks Zcash headers and treats finality as confirmation depth (enough accumulated work / blocks), without requiring Crosslink BFT finality.

This design sits next to the light-client packaging and Crosslink paths: same header sources and often the same 08-wasm deployment shape, different acceptance rule.

Credits And Code

SurfaceUpstreamLink
Header / node stackZebra / Crosslink forksShieldedLabs/zebra-crosslink, permissionlessweb/zebra-crosslink
PoW test fixturesCrosslink test datacrosslink-test-data/test_pow_block_*.bin (engineering fixtures, not a public API)
On-chain LC packagingICS-08 Wasmibc-go 08-wasm, Eureka Wasm programs

When to prefer pure PoW

Prefer pure PoW when…Prefer Crosslink when…
You want a simpler trust story (work only)You need faster economic finality
Crosslink is unavailable or out of scopeYour product assumes Crosslink-active networks
Bridging is low-frequency and depth is acceptableUX needs short finality latency

Integrator notes

  • Client state stores the trusted header tip (and parameters such as minimum depth).
  • Updates submit new headers (or header batches) that connect to the trusted chain and increase work.
  • Acceptance rule: application logic should only act on heights with depth ≥ your configured threshold.
  • Test data: PoW block fixtures under zebra-crosslink crosslink-test-data/ are useful when writing verifiers.

Full pure-PoW 08-wasm packaging may lag or share modules with the Crosslink client tree. Always check current Eureka / zebra-crosslink programs for which Wasm artifacts are production-ready.

TopicPure PoWCrosslink
Finality signalConfirmation depthHybrid finality certificates / Crosslink layer
Update payloadHeaders / work proofsFinality + parent PoW linkage as designed by client
Failure modeReorg within depthConflicting finality / freeze policies
Ops dependencyZcash header sourceZcash + Crosslink participants

Combining with proofs

Public inputs to a ZK circuit can bind to a block hash, nullifier set root, or note commitment tree root that your contract only trusts after the pure PoW (or Crosslink) client has accepted that height. Keep the light-client update and the proof_instance_verify call in a deliberate order inside your application protocol.

See also