Lineage: Wake and Knotline

Proof of where a postcard came from, carried to its next holder in the same transaction.

◐ Awaiting external review. Everything on this page describes a circuit and a format that nobody outside the project has reviewed yet.

Two parts

What it isWhat it answers
WakeA Halo 2 zero-knowledge proof, one per transfer, made in the sender’s wallet before the sendDoes this note descend from the collection’s genesis output?
KnotlineHow those proofs travel: one knot per transfer, written to the chain inside the transfer itselfHow does the next holder get the proofs?
  1. Each transfer ties one knot: its own proof, sealed under a fresh one-time key.
  2. The key goes to the new holder inside the same transfer, encrypted to them.
  3. Each knot holds the key to the knot before it.
  4. The new holder’s wallet follows the line back to the genesis output and rebuilds the full history.

On by default in 0.7.1. Turn it off in Settings → Lineage records; a record can also be saved as a sealed file and handed over by any means. Delivery does not pass through zecboat.com.

What the receiving wallet checks

On your machine, before the postcard shows a lineage mark:

  • The rebuilt history matches the fingerprint in the postcard’s memo, byte for byte
  • The first proof starts at a genesis output the collection’s signed manifest names, and that output is on the chain
  • Every proof verifies under the wallet’s pinned Wake keys
  • Each proof links to the one before: one spend, one successor
  • The last proof ends at the note you hold
  • Every proof is anchored at least 100 blocks deep

◐ your own node◐ Lineage checks out · your provider✗ broken

A wallet without its own node takes the chain’s answers from its provider. Balances, lineage and collection checks are then only as good as that provider’s answers, and the wallet says so: the send screen reads “Chain answers from: your provider”, and a lineage checked that way reads “Lineage checks out · your provider”, never “Verified”. Run your own node and the wallet checks the chain itself.

A knot transfer is recognisable

TransferActionsSize
plain shielded send2~9 KB
one knot14~47 KB
start of a line, three earlier proofs34~110 KB

Every note stays encrypted: no addresses, no item, no proof in the clear. But the shape says “probably a Knotline transfer”. Nothing in it says which postcard. A uniform shape for every transfer is planned, not in 0.7.1. Who can read what →

Known limits

  • Anchor depth: 100 blocks. A proof counts only once its anchor is 100 blocks deep, about two hours. A postcard resold sooner cannot be confirmed by its buyer until then. It clears by itself; nothing needs re-sending.
  • Chain space per transfer. About 47 KB, five times a plain send. Fine for collections in the hundreds or low thousands; a load on the chain at mass scale.
  • A line runs about 512 transfers. A reading wallet walks at most 512 knots back. A new line can be started only by a postcard with at most 64 proofs behind it (the Zecboat wallet itself starts one with at most six). Past that, the record travels as a sealed file: checked the same way, delivered by hand.
  • Verification grows with the line. One proof per transfer, about 7 KB each, all checked by the receiving wallet.
  • The circuit is unreviewed. A missing constraint would be a forgery. Until someone who does Halo 2 for a living has reviewed it, the wallet shows every lineage result in amber.

◐ Awaiting external review: Wake v1 and Knotline v1 have had internal and automated review only. No external audit has taken place.