List the auction
The auctioneer commits to the item terms, the minimum bid, the commit deadline and the reveal deadline (both block heights) in a tamper-evident descriptor. Publish the descriptor before the commit deadline — that is what makes the sealed-bid phase provably fair.
The auction rules (published with the descriptor)
- One bidder, one commitment. A second commitment from the same address is flagged and both are excluded.
- Commitment hashes must be published before the commit deadline block — late hashes are refused.
- Bids are revealed after the commit deadline and before the reveal deadline. A reveal whose (bid, salt) does not reproduce the recorded commitment is refused loudly.
- Revealed bids below the minimum are refused. Highest verified bid wins; ties are broken by earliest reveal.
- The winner pays the seller directly, off-page. This page never moves PRL.
Auction listed
Commitment — publish this before the commit deadline
Post the descriptor (or the commitment below) publicly — X, Discord, the item page — before block is mined. Every bid commitment is bound to this descriptor's hash, so a commitment that references a descriptor published only after the commit deadline proves nothing.
Listed · minimum · commit by block · reveal by block
Commit a sealed bid
A bidder computes their commitment locally — address + bid + a random 16-byte
salt, hashed as SHA-256("pearl-auction-commit:v1:⟨descriptorHash⟩:⟨address⟩:⟨bidGrains⟩:⟨saltHex⟩").
Then they publish only the hash. The bid stays secret until the reveal phase.
1 · Generate the commitment
⛔ PUBLISH ONLY THE HASH — BEFORE THE COMMIT DEADLINE
Post the commitment hash anywhere public (X, Discord, the auction page). NEVER post the bid amount or the salt — anyone who sees them can read your bid. Save the bid + salt somewhere safe: you need both to reveal.
Your secret material (bid + salt — never publish)
2 · Organizer: record published commitments
Bidders publish their hashes themselves. The organizer records each (address, hash) pair. The page refuses hashes published at or after the commit deadline, duplicate hashes, and a second hash from the same address.
Commitment ledger (0)
| # | Bidder | Commitment hash | Recorded tip |
|---|
Reveal the bids
After the commit deadline and before the reveal deadline, each bidder reveals their bid + salt. The page re-derives the commitment — a mismatch is refused loudly and the bid is rejected. Bids below the minimum are refused. Reveals are processed in order; ties go to the earliest reveal.
Reveals — in reveal order (0)
No reveals yet. The order below is the reveal order — it breaks bid ties.
| Order | Bidder | Bid | Commitment check |
|---|
Settle the auction
Every commitment is re-checked, every reveal re-verified, cheaters (hash collisions, double
reveals) excluded, and the ranking computed: highest verified bid wins; ties go to the earliest
reveal. The winner pays the seller directly, off-page — the plan below gives the
exact pearl: payment URI with a QR code. This page never moves PRL.
Full derivation
| Reveal order | Bidder | Bid | Commitment check |
|---|
Payment plan — winner pays the seller off-page
Signed result record
Verify an auction
The standalone verifier. Paste anyone's descriptor, their published commitments, and the reveals (in reveal order) — the app re-derives the auction hash, re-checks every commitment, recomputes the winner. Tampered input gets a loud ✗ NOT PROVEN refusal.
Recomputed derivation
| Reveal order | Bidder | Bid | Commitment check |
|---|
Signed result record (recomputed)
Track the auction
Reload a descriptor to re-derive it, see committed/revealed counts (bids stay hidden until reveal), and count down to the commit and reveal deadlines via Blockbook or a manually entered height.
Unrevealed bids stay hidden — only counts are shown. Countdowns assume the 194-second target block time; real block times vary.
Honest limits
- No PRL ever moves through this page. It lists auctions, generates and checks sealed-bid commitments, settles to a winner, and plans the payment — the winner pays the seller directly from their own wallet, off-page.
- Fairness is a commitment protocol, not code: Pearl has no smart contracts, so nothing on-chain enforces the auction. The guarantee is that the descriptor must be published before the commit deadline — anyone can then re-check every commitment hash and redo every SHA-256 reveal by hand. A descriptor that appears only after the commit deadline proves nothing.
- Bids are only as sealed as the bidder's discipline. Publishing the bid or the salt before the reveal deadline lets anyone read (or front-run) the bid. Commitments are hiding only while the salt stays secret.
- The organizer's commitment ledger is manual: bidders publish their hashes publicly (X, Discord, the item page) and the organizer records them. Verify the ledger against those public posts for auctions that decide real money.
- One bidder, one commitment. A second commitment from the same address flags the bidder and excludes both — but nothing stops one person from bidding under two different addresses. Know your bidders.
- Blockbook is a third-party read source; for real-money deadlines, confirm heights with your own
pearldnode — the manual-height paths exist for exactly this. Block countdowns assume the 194-second target block time.