How a ticket proves it was paid for without saying who paid.
01 · Start here
What Blindwoods is
02 · Mechanism
Two doors, one wall
- the wallet that bought or claimed, how many tickets, the purchase tx (public anyway)
- a valid, unspent ticket; hourly totals for the meter
- which wallet a ticket came from, your questions or answers, an account, your address at the gate once the relay ships
The wall is not a policy. It is a property of the signature scheme: the stamp the booth gives and the ticket the gate sees share no number anyone can compare.
03 · Math
How a blind ticket works
- RSABSSA-SHA384 (RFC 9474), RSA-2048
- one per 24 h epoch; a ticket names its key id
- 72 h after its key was published, then the key is deleted
- up to 200 tickets per draw
- the Authorization: PrivateToken header (RFC 9577)
The booth on the home page runs this math for real in your browser, with a simplified full-domain-hash encoding instead of PSS. Sealing, stamping and opening are the same operations.
04 · Booth
Getting tickets
Packs
- 500 tickets · $5 USDG
- 2,500 tickets · $25 USDG
- 10,000 tickets · $100 USDG
- 50,000 tickets · $500 USDG
Holder allowance
- holds none · buys packs
- hold 100,000 $BLIND · up to 20 tickets a day
- hold 1,000,000 $BLIND · up to 250 tickets a day
- hold 10,000,000 $BLIND · up to 3,000 tickets a day
budget = 1/30 of the Compute Pool each UTC day, in tickets weight = $BLIND held × tier multiplier (1 · 1.25 · 1.5) allowance = min(tier cap, budget × weight / all weights)
Seeds
- 1 ticket · up to 2,000 tokens in, 1,000 out
- 3 tickets a message
- 5 tickets
05 · Models
Enclaves, checked by you
A failed or skipped check is a failure, never a warning: the chat sends nothing until every step passes. A badge that only checks that evidence exists is not a check.
06 · Every trade buys a prompt
Fees and where they go
- Compute Pool: buys inference for holder tickets50%
- Buyback and burn: $BLIND bought and sent to the dead address20%
- Builders: team, audits, infrastructure20%
- Leak Bounty Vault: pays whoever finds a log10%
- Inference and operations80%
- Compute Pool10%
- Buyback and burn10%
pool tickets per $1 traded = 1.7% × 50% / $0.01 = 0.85
- $850 to the router · 42,500 pool tickets
- $4,250 to the router · 212,500 pool tickets
- $17,000 to the router · 850,000 pool tickets
- $0.01 · cost ≈ $0.006 (assumed)
- $0.03 · cost ≈ $0.020 (assumed)
- $0.05 · cost ≈ $0.030 (assumed)
Volumes are model inputs, not forecasts. The meter on the home page shows the real numbers from launch on.
07 · $BLIND
$BLIND and the launch
- 1,000,000,000 $BLIND, fixed, no mint function
- none · no presale · no private round
- Pons launchpad on Robinhood Chain, fair launch, quote token USDG
- the launchpad's setting for the USDG pair, read on chain at launch
- at most 2%, in the creation transaction, into a 90-day vesting wallet
- the dev wallet, nothing else
- sold along the bonding curve (measured on a live launch of the same launchpad)71.4%
- seeded into the pool at graduation20.4%
- locked by the launchpad at graduation8.2%
What $BLIND does
What $BLIND never does
Launch receipt
08 · On chain
Contracts
- buy(packId), buyWithPermit(…): USDG in, split 80% / 10% / 10% in the same call · event Purchased
- the coin's fee recipient · claim() pulls the fee, distribute() splits 50% / 20% / 20% / 10%
- dailyBudget() public, in tickets · pays only a published inference address
- pays only on a 2-of-3 verdict, with the report hash in the event · unspent after 12 months goes to audits, never to the team
- buys $BLIND and sends it to the dead address
None of these contracts can be upgraded or paused, and none has an owner who can move money. Addresses are published here and on the receipt at launch.
09 · Your side
Your device
10 · For builders and agents
API
- today's stamp key and every key still honoured
- the same keys, in the standard Privacy Pass directory format
- door 1: a signed-in wallet's blinded batch → blind signatures
- door 1: tickets bought, drawn and left
- door 2: tickets in the Authorization header, the body sealed to the enclave
- the enclave's attestation bundle, passed through for your own check
- models and what each costs in tickets
- public hourly totals
- door 2: 5 tickets a picture (phase 2)
POST /v1/chat/completions Authorization: PrivateToken token="<one ticket>" Ehbp-Encapsulated-Key: <hex> Content-Type: application/json <the chat-completions body, sealed to the enclave's key>
11 · Firewatch
Leak bounty
- Link a ticket to a wallet50%
- Find a log of a question or an answer30%
- Catch the app calling a third party10%
- up to: Any other privacy defect5%
12 · Honest limits
Threat model
What blind tickets cannot protect
Attacks and defences
- balance checked now and at two random blocks in the last 24 h
- super-linear caps: many small wallets get fewer tickets
- drawn tickets expire 72 h after their key
- the spent set, per key epoch
- allowed; it hurts nobody's privacy and expiry keeps it small
- every request costs a ticket
13 · Waymarks
Roadmap
Phase 1 · days 1 to 10 · building now
Phase 2 · weeks 2 to 6
Phase 3 · months 2 to 4
Phase 4 · months 4 to 12
14 · Numbers
Assumptions open for correction
- ticket $0.01 = one standard message (up to 2,000 in, 1,000 out)
- cost ≈ $0.006 a standard message
- premium = 3 tickets, picture = 5
- tier lines 100k / 1M / 10M $BLIND, caps 20 / 250 / 3,000 a day
- creator tax 1%, so 1.7% of volume to the router
- router split 50 / 20 / 20 / 10; ticket sale split 80 / 10 / 10
- key epoch 24 h, ticket life 72 h, batch 200
- dev buy at most 2%, 90-day vesting
- quote token USDG (an ETH pair is possible)
- curve, pool and lock shares from a live launch of the same launchpad
- a USDG-paired launch from a contract, its fees claimed in USDG (proven on a mainnet fork)
- phase 1 inference through a vetted enclave gateway, its release and hardware checked in the browser
15 · Questions