← Back to the raffle

The rehearsal

Before the raffle took a single real entry, we ran a complete round on Ethereum mainnet with our own money — real USDC, real Chainlink VRF randomness, at one fifty-thousandth of the size. It worked. Every transaction below is on the public chain and you can open all of them.

Settled and fully paid. 2,000 tickets sold, 100 winners drawn by Chainlink VRF, all 99 cash prizes delivered, and nothing left stranded in the contract.

What happened, in order

Round opened
11:33
4 Sep 2026 UTC
Draw requested
11:42
after 2,000/2,000 sold
Randomness arrived
84 s
Chainlink VRF v2.5
Every prize paid
11:44
5 batches, 99 winners
StepOn Etherscan
First ticket bought0xd6abe868…a90181
…39 more purchase transactions2,000 tickets, 20.00 USDC in total
Draw requested from Chainlink VRF0xa9065817…1d9f9a
Randomness delivered and round settled0xe027c234…3be700

The five payout transactions

The money, reconciled

The round collected 20.00 USDC and paid out 20.00 USDC. Because this was a rehearsal, the same address was the house and every winner, so all of it came back — but the contract did not know that, and split it exactly as it will in a real round.

Collected
20.00
2,000 × 0.01 USDC
Prize budget
8.16
40.8% of the pot
To 99 winners
7.92
0.08 USDC each
To the house
12.08
including the watch value
Left in contract
0.00
nothing stranded
Cost to run
0.0049
ETH of gas, whole round

The randomness

Winners are drawn by Chainlink VRF v2.5, which produces a random number together with a cryptographic proof that it was not tampered with. The proof is verified on-chain before our contract is allowed to use it. Nobody — not us, not a miner, not Chainlink — can pick the winners.

We deliberately do not use block data for this. A block proposer can see values like prevrandao before publishing, and could quietly re-roll a draw worth a million dollars. Chainlink VRF costs more and is worth it.

Request0xa9065817…1d9f9a
Fulfilment0xe027c234…3be700
Time to answer84 seconds
LINK actually charged0.017217 of 50 held in reserve

The 100 winning tickets it produced

All 100 distinct, all inside the 0–1,999 range. The first drawn ticket (1501, in red) takes the watch; the other 99 take cash.

1501109756196246815767525199873119993917661672106586915471461788887558104039513708461631158169675598616521664625112384752147189574759810921755158515147631235179150391310032455551388213619148593561071510711589651764660145311751810659633478307432014615891510191988312974781211829163415231749989138657674148025813711206194114004841410686108812

Every prize, as paid

In the order the contract delivered them. Ticket 1501 is absent because it won the watch, which is a physical object handed over off-chain rather than a transfer.

#Winning ticketUSDC paid
110970.08
2560.08
319620.08
44680.08
515760.08
6750.08
72510.08
89980.08
97310.08
1019990.08
113910.08
127660.08
1316720.08
1410650.08
158690.08
1615470.08
171460.08
1817880.08
198870.08
205580.08
2110400.08
223950.08
2313700.08
248460.08
2516310.08
2615810.08
276960.08
287550.08
299860.08
3016520.08
3116640.08
326250.08
3311230.08
348470.08
35520.08
3614710.08
378950.08
387470.08
395980.08
4010920.08
4117550.08
4215850.08
4315140.08
447630.08
4512350.08
461790.08
4715030.08
489130.08
4910030.08
502450.08
515550.08
5213880.08
532130.08
546190.08
5514850.08
569350.08
576100.08
587150.08
591070.08
6011580.08
619650.08
6217640.08
636600.08
6414530.08
6511750.08
6618100.08
676590.08
686330.08
69470.08
708300.08
717430.08
722010.08
734610.08
745890.08
7515100.08
7619190.08
778830.08
7812970.08
794780.08
801210.08
8118290.08
8216340.08
8315230.08
8417490.08
859890.08
8613860.08
875760.08
887410.08
894800.08
902580.08
9113710.08
9212060.08
9319410.08
9414000.08
954840.08
9614100.08
976860.08
981080.08
998120.08

What this does and does not prove

It proves the machine runs

Real USDC moved, real randomness arrived, the arithmetic came out exact, and the contract emptied itself to the last cent without anyone intervening.

It does not replace an audit

A working rehearsal shows the contract does the right thing when nobody is attacking it. That is a different question from whether it resists someone with a million dollars to win, and only a professional audit answers the second.

Contracts

This rehearsal contract is not the one a real round will use. It is configured at one fifty-thousandth scale, and its house and guardian addresses are the test wallet. The production contract is deployed separately and its address will be published here and on the raffle page before it accepts a single ticket.