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_decryptionwith the Orchard/Ironwood domains). - B, coordinator:
crates/sealforge-coordinator/src/scanner.rssyncs 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 anSF1Rreveal mined afterclose_height(2.5). Tests:commit_reveal_tests::*,tests/commit_reveal.rs. - D:
crates/sealforge-escrow/src/signing.rs. Trustees signSpendAuthRequest { 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).