Skip to main content
Protocol version SF1. The key words MUST, SHOULD and MAY are used as in RFC 2119.

Roles

The coordinator operator and the organiser MAY be the same party (a self-hosted deployment). Where that’s the case, the organiser row inherits the coordinator row.

Knowledge and power matrix

Columns:
  • A. sees which wallet placed a bid
  • B. sees bid amounts before close (deposit mode)
  • C. sees prices before the reveal window (sealed-reveal mode)
  • D. can move escrowed funds
  • E. can alter the published result without an auditor detecting it
Sources, in cell order:
  • A: shielded payments don’t carry the sender in decryptable form. Scanning is incoming-only (sealforge-scan, zcash_note_encryption::try_note_decryption with the Orchard/Ironwood domains).
  • B, coordinator: crates/sealforge-coordinator/src/scanner.rs syncs each escrow’s view-only wallet from the UFVK (crates/sealforge-chain/src/wallet.rs) and records amounts and memos as bids arrive.
  • C: in sealed-reveal mode the deposit memo carries price_commitment (2.4), and the price appears only in an SF1R reveal mined after close_height (2.5). Tests: commit_reveal_tests::*, tests/commit_reveal.rs.
  • D: crates/sealforge-escrow/src/signing.rs. Trustees sign SpendAuthRequest { sighash, alpha } (crates/sealforge-cli/src/trustee.rs, sign_step).
  • E: anyone recomputes with sealforge_auditor::audit_chain. Tamper tests: inflated_volume_or_hidden_bid_is_caught, rewritten_outcome_is_caught, tampered_root_breaks_inclusion, a_suppressed_reveal_is_caught. The check covers the published scan range (6 Verification).

Requirements on each role

  • A bidder MUST use a refund Unified Address with an Orchard receiver (3 Zcash integration). A bidder SHOULD use a fresh address for each bid, because the address is readable by anyone with the UIVK after publish.
  • A bidder MUST keep the receipt (salt included). The salt is never sent to the server. Without it, a sealed-reveal bidder can’t reveal, and the deposit is refunded as not_revealed.
  • Trustees MUST compare the DKG fingerprint out of band before the auction opens (4 Architecture).
  • The organiser MUST publish after close for refunds to start. Nothing publishes automatically (POST /v1/auctions/{code}/publish, organiser-signed).