# How to check this result yourself **Who is the G.O.A.T.?** You do not have to trust us for any of this. Everything below can be done from the chain and these files. Where something *cannot* be checked, the last section says so plainly. Files published for this event: | file | what it is | |---|---| | `eligible.json` | the final list of counted votes, and everything needed to rebuild it | | `commitment.json` | proof the list was fixed before the draw block existed | | `draw.json` | the seed block and the winners | --- ## 1. Pull the votes off the chain The token is WIF at `0x5173b8eA6923c2d40267890D45C46a3480954773` on Robinhood Chain (chain id 4663). Votes are ERC-20 `Transfer` events to the deposit addresses, between block **50914697** and block **62879883** inclusive. - **cryptogle** receives votes at `0xc0E29A4DBcE886D6bebe64702B60f418aA26e5e7` - **MoneyLord** receives votes at `0x2455C6C76C9Dd9bBB61d3470a7Ef0d3a54FB2711` - **theunipcs** receives votes at `0x08BB76A2d34D7204cad9f6f54D82361E9Ddc49c1` - **rasmr_eth** receives votes at `0x8A9242bcFbeD5dE2B7Aec0a9192fEf54D1bBC878` - **remusofmars** receives votes at `0x9dC0886D83cBc823940Fa253bd250c4e2461dC87` - **The__Solstice** receives votes at `0xace7336AAddFb6c1c11e5170FB3709EA2F4F7F9b` - **surveillor** receives votes at `0xFd5aFe2F252562039ce4DE8596531B554Ee3d7d2` - **game_for_one** receives votes at `0xA1901fb5Caf00c163dd693C035c532fcd9cd34Ef` - **theveeman** receives votes at `0xad5dDFD99d21b3DD0c7F2F3dFB37E55Fd9B688F6` - **lesabrefomo** receives votes at `0x44b17036e2A0566e47F249fD65684FD5D5724eEc` - **thokani** receives votes at `0x04F1b89965aBb4AA01CA3cFA98b6806D3D46bD25` - **Dprisav** receives votes at `0xCB42667927c22f5bd45C99F8F3CeA21643B650Be` - **0xAvast** receives votes at `0xf79035c4e375Cb392bF6ad46639d1069d0c503A4` - **ResellCalendar** receives votes at `0x9c4877A5Eb80550C3bdf1947efB9495a7868b920` - **smol_intern** receives votes at `0x74b3441236BDb9e22986782C5D0c4267ce47143D` - **Pasterniq** receives votes at `0x729E049787B624B2Ec5b138F58fd9955fee3B70e` - **f4vel** receives votes at `0x3D385428E53525f3e0BD15A3F63d234A0a53A388` - **PoorGoat_** receives votes at `0x4336df297737043983497e3908260F40F3Bd7FAB` - **frankdegods** receives votes at `0xe74D8661D36079DF218ED1eAC4A4182723E32A15` - **changefomo** receives votes at `0x0192B2d890A3d10663bE5080E1D066c7ada8f99D` - **sapphycrypto** receives votes at `0xA16bFDB688c415D260AD6d2493B03a4674C7e862` - **RuneCrypto_** receives votes at `0x948821E380B9B2E229befdb199e2A6B1BdB0033C` - **CrashiusClay69** receives votes at `0x4aDcE9fda4d10A55eB1D3959d74a197279875D37` - **TCryptochicks** receives votes at `0x0603296894Aff6283C6c391d093652413Cfd8ce2` - **KookCapitalLLC** receives votes at `0xb59784a659eEbF5eD6A52fAEb97b37C84cAC3915` - **cz_binance** receives votes at `0xA94F790a1201c8A15A3343d519Bb0385d9aD9adD` - **that1618guy** receives votes at `0xa575ceE15a47c4A10C8801336d01817ABE5e8566` - **RaoulGMI** receives votes at `0x1CDAaF61aF57fd19a9f6361cd99CdA66CaA813Ef` - **MEADGod** receives votes at `0x826c7aCC971189651555c4a4eeb3eA738C459985` - **0xnobi** receives votes at `0xd0513B689980CAf26829a916b285D977D61e987D` - **brian_armstrong** receives votes at `0x9112225aF85056E4aEe80240E1B97868b8a39D38` - **a1lon9** receives votes at `0xfD0347D5dA594b29625ec15d8073456a408A56d5` - **vladtenev** receives votes at `0xFCA4b2e0b789Cb2e2957e644F950B32b3F096295` - **Altcoinist** receives votes at `0xc160F2DaB8D0eec394A108AF8491387FA4a95960` - **mdudas** receives votes at `0x932DBA96dce39cc12785B8FE4ed9b5B2630BC76c` - **cobie** receives votes at `0xe79bcF8e6c8ce8042416eb1974F1D8A71435d0e9` - **scottmelker** receives votes at `0x210B73CD5e5BA36dFc77650775B706aeF3D054a1` - **TheCryptoDog** receives votes at `0x65cA168d4e8342B4832FAd5e991bFa291088A9eB` - **CryptoHayes** receives votes at `0x97f883f123Aa3C41918304FFdf73f1a9CE03F5DF` - **IvanOnTech** receives votes at `0x63f30df82bAb1723Ab9Ba1D0e1506BB12C034990` - **rektcapital** receives votes at `0x4d983c12c2FED742f1Eb5A1af60F44604A6aDf7e` - **punk6529** receives votes at `0xD395e9758655224954fC1Ed5b168292Ee2f1965A` - **loomdart** receives votes at `0x57e4c1B72fdb4A5F64bC5C3D5515498E7148877D` - **ika_xbt** receives votes at `0x8b37EcBC460FA36f1dbAf6B20b434434ea032FeC` - **balajis** receives votes at `0x283ae6e18A75Ac647fC77eCBA1A86B7C990b9502` - **mickymalka** receives votes at `0xA358E0f15Ea444677Ee77D0D0E35FE7ECAe07340` - **blknoiz06** receives votes at `0x8831d241f010566399E91BC0eD2FE85ec641B021` - **AvgJoesCrypto** receives votes at `0xE0ef57C2F057b9314709B840C2a6664fA5a1971d` - **MustStopMurad** receives votes at `0xa6dFFF5399e5fc0b9925bE4278852f7f3dEF509c` - **FlippingProfits** receives votes at `0x2891806984Fe2dBc36F85CBcB997B613F2c3DbEE` - **astaso1** receives votes at `0x7293e06008fAdb400b5dEf90C68E2f70027CBb00` - **RowdyCrypto** receives votes at `0xC8d282853C22edbE13CCe2c5C9ED6499D2b4eB3B` - **Aurelius0121** receives votes at `0x4DdF25B4Bd1B4a36d946bFD1D40C92d9Bb16e75d` - **0xForgivable** receives votes at `0x98d62e55Fcb86c2F2974f1E15c8ceC446127f660` - **zinceth** receives votes at `0x4625c507F1347976a14c9A9575Ed1674B89dc592` - **cryptokillua99** receives votes at `0xbEe5D5e348917f8c4979A58687a7DD44b078128c` - **ether_monk** receives votes at `0x06b0c1c6AC262597E7B983E9ACE5398760FBDEF6` - **smokey0x** receives votes at `0x641ADe740F66E1e834b6D0D65773A350c781e9A9` - **insentos** receives votes at `0x256DCBdFc3A4bC8Bf06B7E31bC45Bfd320984d0f` - **traderpow** receives votes at `0xb173d1Ded2631Cc4553e26597742617De206147d` - **ChrisKogias** receives votes at `0xb57B3Ce93cAe95b375C9073bd3a71461Cc3f89BB` - **Ancientdogehdlr** receives votes at `0x927CAa256ace9A5F9012FD47854df153079b7E01` - **AndrewSeb555** receives votes at `0xD11a33D651f32F4fF6a75E2b0fA2471d045D4225` - **orangie** receives votes at `0xe3Abd3Fb9de448AB69B11188BeF7c90385d73F7f` - **_Shadow36** receives votes at `0x1B3bCa133847e8d0f5c46Fc056065816148FF108` - **mrpunkdoteth** receives votes at `0x24DABF53c24553203948C8C30BF6fc781100Fd76` - **xet** receives votes at `0x63eC83148D3F6291e82eD31845D90C155b8dD6A4` - **notthreadguy** receives votes at `0x1F1b2405e6cbbFbeb8f9feEfC87df957454Ca8F6` - **pxblocito** receives votes at `0x2DDC7DdE579433CF718fACf5AcDBF58900F3F1Ac` - **Dior100x** receives votes at `0x1119c74239eda9115D225C9a8361B1Ae0c974376` - **ChillTRD** receives votes at `0xE7a0Ba3cd40C3fE4bb25d66d35aB0cD0Fe203e00` - **Chairman_DN** receives votes at `0xB855CDE328c2EC19B311435730CbBBeC8F771dD7` - **Quanterty** receives votes at `0x07Fc664d610F77B542A69C944195847bC2dd1148` - **OnlyLJC** receives votes at `0xFD4Ff7E100E0831B9AefEf48bB2ff5cce971fd0e` - **Cupseyy** receives votes at `0x20f2745A1d67BAA3F644a35F3bd3bc2B9aa86D45` - **Kylechasse** receives votes at `0x5AB1Ca03a2850173cf3EC7F6B08271eed0BF474e` - **Dxranteth** receives votes at `0x54242ab1A73E799dcf21392FC365ddAfEA0e41f7` - **himgajria** receives votes at `0xad8fC12b11abfE7577eaC0112aF196D8B16DC2A6` With `cast`: ```sh cast logs --from-block 50914697 --to-block 62879883 --address 0x5173b8eA6923c2d40267890D45C46a3480954773 'Transfer(address,address,uint256)' --rpc-url https://rpc.mainnet.chain.robinhood.com ``` Filter those to the ones whose recipient is a deposit address above. ## 2. Work out which transfers counted - A deposit counts only if it is **at least 1 WIF**. Anything smaller is not an entry and is not in any list. - **One entry per wallet.** A wallet that sent twice counts once. If a wallet sent to more than one option, its **first** qualifying deposit is the vote, ordered by block number then log index. That gives you the raw vote: every wallet that voted, and for which option. ## 3. Check the eligible list hash `eligible.json` contains `entries` and `entries_sha256` = `bd3a14aa67193bab1ea1d86efc2305f1c09879a9f5dc3a970b99b3be3e9eb032`. The hash is sha256 over the entries, lowercased, one per line, sorted, with a trailing newline on each: ```sh python3 -c "import json,hashlib; e=json.load(open('eligible.json'))['entries']; print(hashlib.sha256(''.join(a.lower()+chr(10) for a in sorted(e, key=str.lower)).encode()).hexdigest())" ``` That should print `bd3a14aa67193bab1ea1d86efc2305f1c09879a9f5dc3a970b99b3be3e9eb032`. Your reconstruction from steps 1–2 should produce the same 1454 addresses. ## 4. Check the list was fixed before the draw block existed This is the part that stops anyone choosing a list after seeing who would win. `commitment.json` records the same `entries_sha256`, and an **anchor block**: block 63610643, mined at 2026-09-15T11:07:23Z. That block existed when the list was frozen. The draw time, **2026-09-15T18:45:00Z**, was written into the same file at block 63868353. The draw is seeded by the first block at or after **2026-09-15T18:45:00Z** that also comes after block 63868353. Neither the list nor the time was fixed after that block's hash existed, so neither could have been chosen to suit it. ## 5. Rerun the draw and get the same winners The seed is the hash of block **63877199**, mined at 2026-09-15T18:45:00Z: the first block at or after the announced draw time that also comes after block 63868353, the later of the two anchors in `commitment.json`: ``` 0x4b9c71c798321ec1ac81d21e092eb5e240c0b9c2436f5c3204810dc8714425c7 ``` Check that hash against the chain yourself: ```sh cast block 63877199 --rpc-url https://rpc.mainnet.chain.robinhood.com ``` Then shuffle the eligible list with it. The order is a Fisher-Yates shuffle driven by `sha256(block_hash || "world-is-fair/draw/v1" || counter)`, taking the first 10 entries. Rejection sampling is used when reducing to a range, so no position is favoured: ```sh python3 -c " import json, hashlib entries = sorted(json.load(open('eligible.json'))['entries'], key=str.lower) seed = bytes.fromhex('4b9c71c798321ec1ac81d21e092eb5e240c0b9c2436f5c3204810dc8714425c7') buf, ctr = b'', 0 def below(n): global buf, ctr if n == 1: return 0 width = ((n-1).bit_length() + 7)//8 limit = (256**width // n) * n while True: while len(buf) < width: buf += hashlib.sha256(seed + b'world-is-fair/draw/v1' + ctr.to_bytes(8,'big')).digest(); ctr += 1 v, buf_ = int.from_bytes(buf[:width],'big'), buf[width:] globals()['buf'] = buf_ if v < limit: return v % n for i in range(len(entries)-1, 0, -1): j = below(i+1); entries[i], entries[j] = entries[j], entries[i] print(entries[:10]) " ``` That should print, in this order: 1. `0xe520902aA8Da5067b3f94afdBFD1C7D8c0BfE0be` 2. `0xB5f99E9AaE27BD788D76341969F64Cd3Ea96FeAE` 3. `0x6D89ceb511cE86957C25036B3792222c36f2260b` 4. `0xD68c6490248cd7bD006205c5D9758ec1a8073Dd9` 5. `0xD19d39aa8b1CF38dE61f02667420Dd7661130032` 6. `0x4f6EF48db5baAa08bdA5dcD9Dc97C9d8697F7b59` 7. `0xb5435D2220e2252ba0b968d63629a714429A10dF` 8. `0x7794c83A50295b4f4ecBDeeF907ED50d95076328` 9. `0x7008586bf23AA1A3860BE1bbcdB97d17ff5b5d55` 10. `0x176c9B558989D82bDA8C182361fFB8F429C4E4Ba` source_sha256 in the draw record is a sha256 of the draw's source code: the files rng.py, commit.py, draw.py and version.py, joined in that order. That source is not published with these files, so this hash cannot be checked from here. It is not needed: the script in step 5 reproduces the winners from the seed and the eligible list alone, using nothing of ours. ## What you cannot check from here - **`committed_at`** in the commitment is our server clock. It is labelled as our own record, not as a fact. The anchor block beside it is the part you can check, and it is the real bound.