㊙️Noir Stealth Auctions

Solution — Noir Stealth Auction

Goal – Enable any institution to sell (or buy) a $500 k–$10 M block of SPL tokens on Solana in a single click with zero intent‑leak and uniform‑price clearing.


1. UX at a Glance

Step
Actor
What Happens (User‑Visible)

1. Create Stealth Auction

Seller

Pick asset + cap, sign a delegate‑pull PST. UI shows “Auction created – bids open for X min.”

2. Submit Encrypted Bids

Bidders

Discover auction → enter max price & qty → wallet signs → dApp submits threshold‑encrypted ciphertext.

3. Close & Decrypt

Anyone

At commit deadline, anyone calls triggerDecryption(); keyper nodes publish shares; dApp shows clearing price.

4. Settle Atomically

Program

Seller’s pre‑signed PST is posted → clearAuction() moves tokens ↔ USDC in one instruction; winners / seller receive receipts.

Total user clicks: Seller (2) • Bidder (2).


2. How It Works Under the Hood

Key Components

  1. Threshold Encryption (t‑of‑n) – Bids stay private until the block they clear.

  2. Delegate‑Pull PST – Lot remains off‑chain; only a SHA‑256 hash is stored until settlement.

  3. Uniform Clearing Price (UCP) – All winning bidders pay the same price, maximising fairness and depth.

  4. Atomic Swap Instruction – One Solana program call transfers tokens → winners and USDC → seller—no partial fills, no counter‑party risk.

Minimal On‑Chain State

AuctionState {
  pstHash: bytes32  // seller lot commitment
  mpk: bytes        // encryption master pubkey
  t, n: u8          // threshold params
  commitDL: u64     // Unix ts
  revealDL: u64     // Unix ts
  status: enum {Commit, Reveal, Closed}
}
Ciphertexts[]       // appended during Commit phase
Shares[t]           // stored during Reveal phase

3. Core Instruction Set

Ix
When
Purpose

createAuction(H, mpk, t, n, DLs)

Start

Store params, open Commit phase.

submitCipher(id, ct)

Commit

Append encrypted bid.

triggerDecryption(id)

Reveal

Emit event for keypers to post shares.

publishShare(id, share, proof)

Reveal

Verify proof, store share.

clearAuction(id, pstBytes)

Close

Reconstruct bids, compute UCP, pull lot via PST, atomically settle.


4. Privacy ↔ Auditability Matrix

Who Knows What
Before Auction
Before Settlement
After Settlement

Seller lot size

Hidden (hash only)

Hidden

Revealed (lot pulled)

Bid prices / qty

Encrypted

Encrypted

Winners & fills revealed; losers stay private

Clearing price

Unknown

Calculated

Public

Outcome – Both sides remain invisible until the exact block that finalises the trade, yet auditors can verify the uniform‑price clearing on‑chain.


Next: see Protocol Architecture for gas benchmarks and keyper network design.

Last updated