ăď¸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
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
Threshold Encryption (tâofân) â Bids stay private until the block they clear.
DelegateâPull PST â Lot remains offâchain; only a SHAâ256 hash is stored until settlement.
Uniform Clearing Price (UCP) â All winning bidders pay the same price, maximising fairness and depth.
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
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
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