Everything under the hood of SCRATCH: how cards are drawn, how winners are defined, how the money moves, and why you can verify every single step on-chain.
You open a campaign link (or scan its QR code) and land on that campaign's page. From scan to prize in your wallet: about 90 seconds.
WalletConnect or any injected wallet. The odds, remaining cards and prize pool are shown before you pay anything.
The contract verifies your wallet hasn't played this campaign yet, you hold enough SCRATCH tokens, and you're on the right network.
One single transaction burns (or stakes) the entry cost and requests the random draw. If anything fails, everything reverts — you're never charged without a card.
The card reveals your result. If you won, the smart contract has already sent the prize to your wallet in the same flow. No claiming, no waiting, no humans.
Each wallet can play a given campaign exactly once — enforced on-chain by the contract, not by cookies or accounts. Coming back with another wallet is technically possible, but every extra try costs the full entry price again. That's the point: sybil-resistance here is economic, not identity-based.
Any project, community or brand can launch a scratch campaign in under 5 minutes. You fund it, configure it, and share the link — the protocol handles everything else.
Deposit funds (e.g. $1,000) and choose a canonical Robinhood Stock Token such as TSLA, NVDA, SPY or QQQ. The pool is locked in that final asset and remains 100% collateralized in the contract.
Total cards (e.g. 1,000), winning cards (e.g. 250), and how the pool splits: uniform, or tiers like 1 jackpot + 24 big prizes + 225 small ones. A live simulator shows odds and expected value.
How many SCRATCH tokens a player must burn or stake to scratch (e.g. 10,000). Burn destroys them forever; stake locks them for a period you choose.
You get a unique link + a print-ready QR code. Real-time dashboard tracks scratches, winners, burned tokens. After expiry, you reclaim any undistributed funds.
A full campaign at 1,000 cards × 10,000 SCRATCH means 10,000,000 SCRATCH burned out of circulation — deflation, attention and on-chain engagement data, in exchange for the pool you distribute. The creation simulator shows this math before you sign anything.
On SCRATCH, "winning" doesn't mean "receiving something". A card is a winner only if its prize is worth more than what you paid to scratch it. No consolation-prize tricks.
This rule is enforced at campaign creation: the smallest prize in the table must exceed the entry cost with a 20% safety margin (to absorb token volatility between creation and draw). If it doesn't, the campaign simply cannot be launched. Odds (winning cards ÷ total cards) are engraved in the contract at creation and can never be changed — not even by the creator or the platform.
Draws happen without replacement: the contract picks from the remaining cards, so a 1,000-card campaign with 250 winners pays out exactly 250 winners if all cards get scratched — not "probably around 250".
Every entry permanently burns the amount of $SCRATCH configured by the creator. The burn and the one-wallet-per-card rule make each attempt scarce and auditable.
| Rule | Burn entry |
|---|---|
| Your tokens | Destroyed permanently by the campaign contract |
| Real cost to you | The full $SCRATCH entry amount shown before signing |
| Effect on supply | Permanent reduction in circulating supply |
| Wallet rule | One card per wallet for each campaign |
| Verification | Burn, draw and prize are visible on Robinhood Chain |
If the connected wallet does not hold enough $SCRATCH, the campaign page can request a non-custodial 0x quote and let the wallet approve and execute the swap.
The scratch animation is pure theater — your result is decided before you scratch, by a public random draw nobody can rig. Here's the actual sequence:
Your burn/stake transaction atomically requests randomness from Chainlink VRF — a verifiable random function whose output comes with a cryptographic proof.
Seconds later, VRF delivers the random number on-chain. The contract maps it to one of the remaining cards and, if it's a winner, transfers the prize in the same callback.
Every draw emits a public event with the request ID. From any block explorer you can recompute: this seed → this card → this prize. The platform can't fake it, the creator can't fake it, we can't fake it.