Public mainnet verification

Inspect the evidence. Replay the result.

Evidence for five SoltoshiDICE mainnet programs: public IDLs, reproducible source hashes, transaction decoding and a read-only Cee-lo replay.

Start here — no wallet or login required

All five mainnet program hashes matched independently verified builds in our read-only check at 2026-10-19T02:45:11.896Z. All five canonical public IDLs and security records matched the pinned public repository. These are dated observations; the live verifier links below let you check again. No wager, deposit or program upgrade was performed for this evidence.

Four questions need separate evidence: which code is deployed, how data is decoded, how a result is derived, and whether funds moved. Source verification answers the first; an IDL answers the second. Neither replaces a game proof, a successful payment receipt or a security audit.

  • Fetch evidence.json for exact program IDs, hashes, authorities, source commits and verification APIs.
  • Inspect Solscan’s Program IDL, Verification and Security tabs, or read canonical metadata directly.
  • Rebuild a pinned source revision, then compare its executable hash with the current program.
  • Replay the Cee-lo example below and inspect the independent blackjack payout example.

Bank, Cee-lo, blackjack, slots and staking

Mainnet program: CuTLp7pDmNGkFgi4aoh8Ef1YSjc2BzECQRLzYqaoVWBR

Verified source commit: e875a74a72af04b0bb203ac2952401e2eb0cef0c. Finalized deployment slot: 448889056.

Deployed executable SHA-256 (zero-trimmed): 2d8b12dc307b5ac98f95adc24d4054a907350dcaf2b75e2a7b45f8f5057207c9

Upgrade authority at the recorded check: 5SD2yUKBHkUhpC7rHzEqLgYKHrkNoyYymNkDXmFaoJ1Y. This program was upgradeable; a future plan to revoke authority is not a completed revocation.

Texas Hold’em and poker tournaments

Mainnet program: 3EB6JJ2k1yPdg9qokViBdSWq4jaEVG4wiKbS8Pw3FmWQ

Verified source commit: d2c0b0b7fd14b727d925b137f64ee910261c9f3c. Finalized deployment slot: 457004605.

Deployed executable SHA-256 (zero-trimmed): 085eb68e5d157e35664dfb0943a85fd7216c5fa288e4c57b9eb7d0b7ddc66245

Upgrade authority at the recorded check: 5SD2yUKBHkUhpC7rHzEqLgYKHrkNoyYymNkDXmFaoJ1Y. This program was upgradeable; a future plan to revoke authority is not a completed revocation.

Street Fights

Mainnet program: 5PrHPCCbKpW4SvBZfXmt23RKMaShSM4XGTJdBh8qpw3q

Verified source commit: d2c0b0b7fd14b727d925b137f64ee910261c9f3c. Finalized deployment slot: 446664066.

Deployed executable SHA-256 (zero-trimmed): a050bde1ebadfd813cbc3a40c5a683420fa635b4a728f1145f6ad035b25dce49

Upgrade authority at the recorded check: 5SD2yUKBHkUhpC7rHzEqLgYKHrkNoyYymNkDXmFaoJ1Y. This program was upgradeable; a future plan to revoke authority is not a completed revocation.

Rock Paper Scissors

Mainnet program: 96hGHn4JD3AyzXvNPdx4RyNtS8y7sQ5NizagMsdMAXhG

Verified source commit: d2c0b0b7fd14b727d925b137f64ee910261c9f3c. Finalized deployment slot: 446768753.

Deployed executable SHA-256 (zero-trimmed): fd92af695b42e2b8fde87026e7c5c03a4f4c9457686ae843c55c2c25e288d90c

Upgrade authority at the recorded check: 5SD2yUKBHkUhpC7rHzEqLgYKHrkNoyYymNkDXmFaoJ1Y. This program was upgradeable; a future plan to revoke authority is not a completed revocation.

SDICE Perps

Mainnet program: 7YWUnPaP5tQjJTC5kZu235P5Qix2VpoJk5rTMgkXeCw7

Verified source commit: a67357f6fe18755b8a33e337bcb8350dc5fd7020. Finalized deployment slot: 458267056.

Deployed executable SHA-256 (zero-trimmed): c3e105266b4a9a2d74487bf799c775c88b78fd7bfad615aa3602ec2ff6ac3b94

Upgrade authority at the recorded check: GqJwW3CF9XfopAmCP9zNKN1BvVo3aSPQHmfHdrGUeTzA. This program was upgradeable; a future plan to revoke authority is not a completed revocation.

Reproduce source and metadata verification

The public repository contains the five programs, their dependencies, locked build inputs, source provenance and verification receipts. The current metadata commit is not necessarily each program’s verified source commit: use the exact revision listed above. A repository’s age, stars or a source link alone cannot establish a binary match.

Use the repository’s verify.sh for bank, poker, fights, rps or perps on Linux with Docker and solana-verify 0.5.2. The README pins the builder image and documents the bank’s reproducibility wrapper. The wrapper restores original crate metadata and source line positions; its purpose and inputs are public.

The independent verifier reports executable_hash and on_chain_hash. Both must equal the SHA-256 shown above and is_verified must be true. The comparison trims trailing zero allocation padding, as solana-verify does. evidence.json also records the full allocated-byte hash so padding is not confused with a different executable.

IDL and security publication uses separate Program Metadata Program accounts, not a program upgrade. Solscan can display these records without an embedded ELF security section. Poker and Perps publish Anchor IDLs; bank, fights and RPS publish native Codama schemas. The native schemas decode payloads and layouts but do not supply a transaction-builder account list. Validate owners and PDA identities before decoding similarly sized accounts.

git clone https://github.com/battlejoose/soltoshidice-programs.git
cd soltoshidice-programs
# Choose the exact source commit and program listed above.
git checkout e875a74a72af04b0bb203ac2952401e2eb0cef0c
bash verify.sh bank

# Read separate metadata records; no wallet signature or write.
npx @solana-program/program-metadata@0.11.0 fetch idl CuTLp7pDmNGkFgi4aoh8Ef1YSjc2BzECQRLzYqaoVWBR
npx @solana-program/program-metadata@0.11.0 fetch security CuTLp7pDmNGkFgi4aoh8Ef1YSjc2BzECQRLzYqaoVWBR

Worked Cee-lo proof: round 1759

This real, finalized mainnet receipt replays bank dice 1–2–1 (point 2) and player dice 4–1–4 (point 1). Both took two throws. The wager was 10,000 SDICE, the player lost, and the correct gross payout was zero. A loss or a state-transition transaction need not contain a winning token transfer.

The verifier checks mainnet genesis, successful transaction status, the direct bank instruction, the origin of the program’s log, round/bet PDAs, recorded entry/request timing, request identity, dice, throw counts, outcome and payout. It compares the retained output with the ORAO-owned fulfilled request, including its discriminator, client, seed and PDA, when that account remains available. That comparison passed for this example.

The program records SDICE_FINAL_BET_V1 in the successful cleanup transaction before reclaiming game-account rent. A later getAccountInfo can therefore return null for a real completed round. Its transaction-log receipt still contains the final native round and bet bytes. An archival RPC is needed if a provider has pruned that transaction history.

This is a deterministic replay and oracle-output comparison. It relies on Solana consensus and ORAO’s fulfillment validation; it does not independently regenerate the oracle’s cryptographic proof or establish a full historical transaction trace. The recorded requested time is after the recorded close time. Inspect the original wager and request receipts as well when auditing ordering. A winning payout additionally requires its token-transfer receipt.

npm install @solana/web3.js@1.98.4
# Download verify-ceelo.mjs from the link below into this directory.
node verify-ceelo.mjs
# Optionally provide another supported v4 final-cleanup signature.
node verify-ceelo.mjs <TRANSACTION_SIGNATURE>

Worked payout: 90,000 SDICE in blackjack

The receipt below succeeded at mainnet slot 458279657. Its bank-program instruction starts with native tag 88: blackjack fulfill, which consumes the authenticated draw result and advances the contract’s rules. The program log identifies blackjack table 7gi41j1CFXTkTjks2m2X6gR6GBNJdm4g4ty7fLnzyWH2, round 635, revision 6563, stage Complete. It is not a Cee-lo receipt.

A Token-2022 inner transferChecked moved 90,000,000,000 base units (90,000 SDICE at six decimals) from vault 951nS8NJoi7ajueDo7iztaWQiapUZuHAx5xt3vVApJXa to 3CEz32zeuq2S2wNuQTpkX1dWD7QF4hhJDRmkk4p7Y6RK, under bank PDA 9vBaKrxgtQEc6zavSVTvptAM2oRmX38SkyHXpfvUFoKR. The destination owner is the program-owned blackjack table. Its token balance increased from 595,800 to 685,800 SDICE; the bank vault decreased by 90,000.

That proves a bank-to-table escrow payment. It does not prove a 90,000-token withdrawal to a player’s ordinary wallet or a player’s net profit. Table accounting and a later cash-out are distinct. Review the complete round and withdrawal receipts for those claims.

An activity feed can link to a request, fulfillment, outcome record, payout, fee settlement or SOL return. First decode the instruction and its account roles. No balance change in a randomness request or loss record is expected; it is not by itself evidence that a winning payment failed. A failed transaction or missing winning claim still needs investigation.

Where fairness is enforced

A request to a Cloudflare Worker is evidence of transport or coordination, not proof of offchain game-rule execution. For Cee-lo, slots, blackjack, fights and RPS, inspect the native Solana instructions and state validation below. The server can deliver permitted transactions and can fail to deliver them; it cannot make the deployed program accept an arbitrary winner. Upgrade control is a separate power to change that deployed program.

  • Cee-lo: bets lock before one fresh ORAO RequestV2 is bound to the round. The contract validates oracle owner, PDA, seed, client and fulfilled state. SHA-256 domain separation and rejection of bytes 252–255 derive dice without modulo bias. Native banker-first rules fix results and recipients. A fulfilled losing result cannot be turned into a timeout refund.
  • Slots: a fresh MagicBlock base-layer VRF request is bound to the player and spin counter. An authenticated callback supplies randomness. Native rules sample the three 20-stop reels and enforce the paytable and reserved maximum liability. Maximum gross award is 150×; theoretical RTP is 96%.
  • Blackjack: authenticated MagicBlock callbacks are bound to table, round and draw. Fresh card-action randomness and six-deck copy accounting run through native rules. Replaying an entire historical shoe requires its draw receipts and before/after state; one payout does not prove every card.
  • Fights: a fresh bound ORAO request drives deterministic combat inside the native fight program. Validate the fight accounts, oracle output, attack sequence, escrow and winner payout.
  • RPS: players choose moves; there is no random oracle. Both salted commitments must exist before reveal. The native program validates reveals, winner and timeout/forfeit. Relays transport messages; the reveal-to-commitment check is onchain.
  • Poker: players shuffle and mask a Ristretto255 deck. Player clients verify shuffle proofs; onchain code validates commitments and card openings and enforces betting and pot settlement. At least one honest uniform shuffle is needed. The n−1 board-recovery threshold also means an n−1 coalition can learn future board cards early. A chain commitment alone does not reconstruct an unretained shuffle transcript.
  • Perps: Solana controls vaults and settlement, while delegated trading state executes in MagicBlock Ephemeral Rollups. Market oracle attestations, collateral quotes, validator availability and keepers remain dependencies. Perps is not a VRF game, and its rapid ticks are not all separate base-layer transactions. A winning close creates a FIFO USDC claim; payment depends on pool funds and settlement.

Avoid common evidence mismatches

6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P is the Pump.fun token-launch program, as its official IDL confirms. It is not a SoltoshiDICE game program. Its upgrade authority and SOL balance must not be attributed to the SDICE bank. Likewise, the SDICE mint address identifies a token, not executable game logic.

Mainnet program IDs are the five above. 5zuL38K9PmCfETiTYjQc9jgyEQ9cy2fnLi2Hd5gHTsab is a historical isolated devnet deployment referenced by guarded compatibility code and launch records. A string in a JavaScript bundle is not evidence that it is the active mainnet program. Check the current deployment manifest, mainnet genesis and instruction program ID.

Wallet-added assertion programs are separate from game programs. L2TExMFKdjpN9kozasaurPirfHy9P8sbXoAN1qA3S95 is not one of the five game programs above. Its authority status cannot establish that the SDICE game code is immutable. Check the ProgramData account belonging to the actual game instruction.

A frequently signing sponsor or keeper pays fees or submits allowed transitions. The signer list alone does not establish custody of all game funds or permission to select results. Inspect signer requirements, PDA ownership, the approved action and program checks. Availability still depends on these services.

A bank vault is a program-controlled token account, not a developer’s personal holding. Its token balance is not the same as its upgrade authority’s wallet balance. Classifying a vault as permanently burned, immutable or risk-free is also incorrect while the controlling program can be upgraded.

Perps burn and buyback claims require the correct settlement context. In the default SDICE venue, ordinary loss settlement allocates 2% to SDICE burning and 1% to SOL fees. A community venue splits the burn allocation into 1% of its token and 1% of SDICE. While FIFO claims are queued, burn and staker distribution are suspended: 99% funds the pool and 1% funds SOL fees. Inspect actual SPL Token/Token-2022 burn instructions and swaps in the settlement transactions; a pool counter or a scan of a few mint-address transactions is not complete burn proof.

Current trust boundaries and disclosure

The programs were still upgradeable at the recorded observation. Four game programs use 5SD2yUKBHkUhpC7rHzEqLgYKHrkNoyYymNkDXmFaoJ1Y; Perps uses GqJwW3CF9XfopAmCP9zNKN1BvVo3aSPQHmfHdrGUeTzA. Revocation must be confirmed by the ProgramData account’s authority becoming null. A plan or social post is not that evidence. After any upgrade, recheck the binary hash and IDL.

Verified source and public metadata are not an independent security audit. Oracle and validator assumptions, private-player key handling, poker collusion/transcript limits, service availability, pool solvency and FIFO payout delays remain relevant even after upgrade authority is revoked. This page supplies evidence for independent assessment; it does not prescribe a rating.

By the SoltoshiDICE project · Reviewed October 18, 2026

SOLTOSHIDICE

See you on the block.

Open the game ↗