When Robinhood Chain meets Bitcoin

NetNat

Capital

Bitcoin picks the winners.

winners every draw. Half the pot to one, the rest shared by ten.

Stake NET · Win NAT · Stake NAT
Deposited
sNET
Current cap – sNET · vault on RobinScan ↗
Next draw
committed block
oracle: – · last attestation at block –
Settled draws
– winners paid, prizes staked in NATStaking
Last settled draw
Draw –
Block on mempool.space ↗ Settlement on RobinScan ↗

NAT
settled pot
committed Bitcoin block
Block hash
Seed = keccak256(hash ‖ vault ‖ draw number)
Attestations
Keeper reward
Tickets in play
Prizes
Rank
Winner
Share
NAT staked
Proof
1
2
3
4
5
6
7
8
9
10
11
Committed Bitcoin blocks, settled draws
All draws →
How to verify it yourself

“Bitcoin picks. Attestors relay. You verify.

Five readings, no trust required
01 · The committed height
Read the committed height in the vault before the draw. It is fixed from the last attested height, before the block exists.
02 · The Bitcoin hash
Take the block hash from mempool.space or your own node and compare it with the oracle. The hash is used as is, as bytes32.
03 · The seed
seed = keccak256(abi.encodePacked(hash, vault, draw number)). Hash, then vault address, then number: the only source of randomness, and nobody can choose it.
04 · The tickets
For i from 0 to 10, ticket r = keccak256(abi.encodePacked(seed, i)) mod totalWeight. Eleven numbers, one per prize, over the ticket list frozen at the sweep.
05 · The winners
drawTicketOwner(draw, r) returns the address holding ticket r. The same address can win several prizes. Compare with DrawSettled, and with winnersOf in v2.
full recipe → Verify