Organiser
Status:Testnet (CLI and /console).
- Register:
sealforge init --invite <code> --name <name>creates~/.sealforge/organiser.key(owner-only), or load a key in/console. - Describe the auction in a TOML file (
examples/auction.toml): mode (uniform_price|first_price), quantity, reserve, close height, payout UA (Orchard receiver required), three trustee labels. For sealed-reveal, setbid_mode = "commit_reveal"andreveal_close_height ≥ close_height + 144. sealforge auction new <file>prints three one-time trustee invites. Send each over a private channel.- After the trustees finish the DKG,
sealforge auction open <CODE>. The close height must be at least the tip + 144 (2.2 Lifecycle). - Optional:
sealforge auction fund-fees <CODE>prints a ZIP 321 request for a fee buffer (SF1FEE). Useful if the auction may end with no winners. - After close, you must publish:
sealforge auction publish <CODE>. Refunds don’t start until you do. - The payout (proceeds plus unspent fee buffer plus refund dust, minus fees) goes to your payout UA after the last refund confirms.
Trustee
Status:Testnet. Code: crates/sealforge-cli/src/trustee.rs, browser /trustee/<CODE> (crates/sealforge-signer-wasm).
sealforge trustee join <invite>, thensealforge trustee dkg <CODE> --wait. Your key share is written to your disk (owner-only).- Compare the fingerprint with the other two trustees on a call or in person. If they differ, stop.
- When batches are due:
sealforge trustee sign <CODE> --wait. You commit; if you’re one of the first two, you sign.
Bidder
Status:Testnet.
- Any shielded wallet: the bid page shows a ZIP 321 QR (escrow UA, amount, memo). Pay it from a wallet that supports ZIP 321 and memos and holds Ironwood or Orchard funds. Use a fresh refund address with an Orchard receiver. It becomes readable to everyone after publish.
- In-browser wallet:
/walletcreates a 24-word phrase and a passphrase-encrypted vault in your browser, and gives each bid a fresh refund address (WALLET-INTEGRATION.md). - Keep the receipt. It holds your salt, the only copy. In sealed-reveal mode you need it to reveal. Without a reveal, your deposit is refunded as
not_revealed. - Sealed-reveal: after the bidding close, send the reveal (10,000 zat,
SF1Rmemo) beforereveal_close_height. - Verify at
/verifyonce the result is published: inclusion, outcome and refund plan, checked in your browser. - Refunds arrive as several canonical notes at different times. Don’t move them all out at once (2.7).
Auditor
Status:Testnet. See 6 Verification. Use a lightwallet server you choose, not the auction’s. To look for bids outside the published range, widen it with --from / --to.
Integrator
- Embed card (
Tested, manually): add<script src="https://<sealforge-site>/embed.js" data-auction="CODE" async></script>. It renders in a shadow root, sets no cookies, reads only public fields, and opens bidding on the sealForge site in a new tab (apps/web/public/embed.js). - Card data:
GET /api/embed/{code}(apps/web/src/app/api/embed/[code]/route.ts), with CORS*and a 30 s cache. Fields:code,title,network,status,accepting_bids,sealed_reveal,mode,quantity,reserve_zat,close_height,blocks_left,bid_count(null below 5 bids),url,audit_url. - Your own bid flow: use
@sealforge/bid(8 API) to build commitments, memos and ZIP 321 URIs client-side. Never send the salt to a server. - White-labelled audit page:
Specified, not built. Today the audit page is served by the sealForge site; anyone can runsealforge-auditor embed the WASM auditor themselves.