Network Difficulty
5318183
Hash Rate
5.000 MH/s
Avg Block Time
19.0615s
Total Supply
16768881
Mempool
Fee per KB
0
Block Size Limit
0.00 kB
← Back to Explorer

Transaction Details

SMART CONTRACT

Transaction Information

Root Hash
Built Height
7584909
Block
Timestamp
1788788716767
Timestamp (UTC)
2026-09-07 13:45:16
Block Age
48m 50s ago
Fee
0.10651
TX Size
8.523 kB
Version
1
Confirmations
159
Signature Type
DERO_HOMOMORPHIC

DERO Asset

2
Ring Size
0.10651
Fees
0.00000
Deposited
Sender
dero1qyyhxwh7fdurghek2xsm7t6lrns7x20gcdraq4d0wnq7z50wzx8qcqq9vvptz

Ring Members (2)

Smart Contract Details

SC Balance
0.00000 DERO

Smart Contract Arguments

Name Type Value
SC_ACTION uint64 1
SC_CODE string "/* SapRoulette.dvm — P2 house-banked roulette (family B), single-zero wheel. Reuses the SapHouseDice operator-bankroll tier (CASINO_SPEC §18.3): - operator sets `floor`, funds real DERO via FundBank, withdraws profit but never below floor. - player picks a bet TYPE + amount; one RANDOM(37) spin (0..36) resolves atomically vs the bank. - house edge = single zero (0) pays nothing on all outside bets. Rake routed to collector every spin. Bet types: 0 Red (18 red) even money win 2*stake 1 Black (18 black) even money win 2*stake 2 Odd even money win 2*stake 3 Even even money win 2*stake 4 Low (1-18) even money win 2*stake 5 High (19-36) even money win 2*stake 6/7/8 Column 1/2/3 2:1 win 3*stake 9/10/11 Dozen 1/2/3 2:1 win 3*stake 12 Straight (num 0..36) 35:1 win 36*stake Zero (0): loses outside; straight bet on 0 wins. Line numbers are strictly ascending per the repo's check_dvm.py. */ Function Initialize(collector String, floor String) Uint64 5 version("1.0.0") 10 IF STRLEN(ADDRESS_RAW(collector)) == 33 THEN GOTO 40 20 RETURN 1 40 IF ATOI(floor) >= 1 THEN GOTO 70 50 RETURN 1 70 STORE("fee_bps", 10) 80 STORE("collector", ADDRESS_RAW(collector)) 90 STORE("owner", SIGNER()) 100 STORE("floor", ATOI(floor)) 110 STORE("pool", 0) 120 STORE("collected", 0) 130 STORE("wins", 0) 140 RETURN 0 End Function Function FundBank() Uint64 5 version("1.0.0") 10 dim v as Uint64 20 IF LOAD("owner") == SIGNER() THEN GOTO 50 30 RETURN 1 50 LET v = DEROVALUE() 60 IF v > 0 THEN GOTO 90 70 RETURN 1 90 STORE("pool", LOAD("pool") + v) 100 RETURN 0 End Function /* Spin resolves one bet atomically vs the bank. */ Function Spin(btype Uint64, num Uint64, bet Uint64) Uint64 5 version("1.0.0") 10 dim v, roll, rake, stake, mult, payout as Uint64 20 LET v = DEROVALUE() 30 IF v == bet THEN GOTO 60 40 RETURN 1 60 IF bet >= 1 THEN GOTO 90 70 RETURN 1 90 IF btype <= 12 THEN GOTO 120 100 RETURN 1 120 IF btype == 12 THEN GOTO 150 /* straight: num is meaningful */ 125 IF num == 0 THEN GOTO 150 /* outside bets: num must be 0 */ 130 RETURN 1 /* outside bet with num != 0 rejected */ 150 IF LOAD("pool") >= bet THEN GOTO 180 160 RETURN 1 180 LET roll = RANDOM(37) 190 IF btype <= 5 THEN GOTO 240 200 IF btype <= 11 THEN GOTO 260 210 LET mult = 36 220 GOTO 270 240 LET mult = 2 250 GOTO 270 260 LET mult = 3 270 LET rake = bet * LOAD("fee_bps") / 10000 280 IF rake < bet THEN GOTO 310 290 LET rake = bet / 2 310 LET stake = bet - rake 320 STORE("pool", LOAD("pool") + bet) 325 STORE("pool", LOAD("pool") - rake) 330 SEND_DERO_TO_ADDRESS(LOAD("collector"), rake) 340 STORE("collected", LOAD("collected") + rake) 350 IF btype == 12 THEN GOTO 1100 /* straight-number path */ 360 IF roll == 0 THEN GOTO 1800 /* zero loses outside */ 370 IF btype == 2 THEN GOTO 560 /* Odd */ 380 IF btype == 3 THEN GOTO 580 /* Even */ 390 IF btype == 4 THEN GOTO 600 /* Low */ 400 IF btype == 5 THEN GOTO 620 /* High */ 410 IF btype == 0 THEN GOTO 640 /* Red membership */ 420 IF btype == 1 THEN GOTO 760 /* Black membership */ 430 GOTO 880 /* Column/Dozen */ /* ---- even/odd/low/high ---- */ 560 IF roll % 2 == 1 THEN GOTO 1650 /* odd win */ 570 GOTO 1800 580 IF roll % 2 == 0 THEN GOTO 1650 /* even win */ 590 GOTO 1800 600 IF roll <= 18 THEN GOTO 1650 610 GOTO 1800 620 IF roll >= 19 THEN GOTO 1650 630 GOTO 1800 /* ---- red membership (type 0): win if roll in red set ---- */ 640 IF roll == 1 THEN GOTO 1650 641 IF roll == 3 THEN GOTO 1650 642 IF roll == 5 THEN GOTO 1650 643 IF roll == 7 THEN GOTO 1650 644 IF roll == 9 THEN GOTO 1650 645 IF roll == 12 THEN GOTO 1650 646 IF roll == 14 THEN GOTO 1650 647 IF roll == 16 THEN GOTO 1650 648 IF roll == 18 THEN GOTO 1650 649 IF roll == 19 THEN GOTO 1650 650 IF roll == 21 THEN GOTO 1650 651 IF roll == 23 THEN GOTO 1650 652 IF roll == 25 THEN GOTO 1650 653 IF roll == 27 THEN GOTO 1650 654 IF roll == 30 THEN GOTO 1650 655 IF roll == 32 THEN GOTO 1650 656 IF roll == 34 THEN GOTO 1650 657 IF roll == 36 THEN GOTO 1650 658 GOTO 1800 /* ---- black membership (type 1) ---- */ 760 IF roll == 2 THEN GOTO 1650 761 IF roll == 4 THEN GOTO 1650 762 IF roll == 6 THEN GOTO 1650 763 IF roll == 8 THEN GOTO 1650 764 IF roll == 10 THEN GOTO 1650 765 IF roll == 11 THEN GOTO 1650 766 IF roll == 13 THEN GOTO 1650 767 IF roll == 15 THEN GOTO 1650 768 IF roll == 17 THEN GOTO 1650 769 IF roll == 20 THEN GOTO 1650 770 IF roll == 22 THEN GOTO 1650 771 IF roll == 24 THEN GOTO 1650 772 IF roll == 26 THEN GOTO 1650 773 IF roll == 28 THEN GOTO 1650 774 IF roll == 29 THEN GOTO 1650 775 IF roll == 31 THEN GOTO 1650 776 IF roll == 33 THEN GOTO 1650 777 IF roll == 35 THEN GOTO 1650 778 GOTO 1800 /* ---- column (6,7,8) & dozen (9,10,11): explicit per-type dispatch ---- */ 880 IF btype == 6 THEN GOTO 1000 /* col1: roll%3==1 */ 890 IF btype == 7 THEN GOTO 1020 /* col2: roll%3==2 */ 900 IF btype == 8 THEN GOTO 1040 /* col3: roll%3==0 */ 910 IF btype == 9 THEN GOTO 1060 /* dozen1: 1..12 */ 920 IF btype == 10 THEN GOTO 1080 /* dozen2: 13..24 */ 930 GOTO 1090 /* dozen3: 25..36 */ 1000 IF roll % 3 == 1 THEN GOTO 1650 1010 GOTO 1800 1020 IF roll % 3 == 2 THEN GOTO 1650 1030 GOTO 1800 1040 IF roll % 3 == 0 THEN GOTO 1650 1050 GOTO 1800 1060 IF roll <= 12 THEN GOTO 1650 1070 GOTO 1800 1080 IF roll <= 24 THEN GOTO 1650 1090 IF roll >= 25 THEN GOTO 1650 1095 GOTO 1800 /* ---- straight number (type 12) ---- */ 1100 IF num <= 36 THEN GOTO 1130 1110 RETURN 1 1130 IF roll == num THEN GOTO 1650 1140 GOTO 1800 /* ---- WIN: house pays stake*mult, pool absorbs loss ---- */ 1650 LET payout = stake * mult 1660 IF LOAD("pool") >= payout THEN GOTO 1680 1670 RETURN 1 1680 STORE("pool", LOAD("pool") - payout) 1690 SEND_DERO_TO_ADDRESS(SIGNER(), payout) 1700 RETURN 0 /* ---- LOSS: house keeps stake, record win ---- */ 1800 STORE("wins", LOAD("wins") + bet) 1810 RETURN 0 End Function Function WithdrawProfit(amt Uint64) Uint64 5 version("1.0.0") 10 IF LOAD("owner") == SIGNER() THEN GOTO 40 20 RETURN 1 40 IF LOAD("pool") >= LOAD("floor") THEN GOTO 70 50 RETURN 1 70 IF LOAD("pool") - LOAD("floor") >= amt THEN GOTO 100 80 RETURN 1 100 IF amt >= 1 THEN GOTO 130 110 RETURN 1 130 STORE("pool", LOAD("pool") - amt) 140 SEND_DERO_TO_ADDRESS(SIGNER(), amt) 150 RETURN 0 End Function "
collector string "dero1qyyhxwh7fdurghek2xsm7t6lrns7x20gcdraq4d0wnq7z50wzx8qcqq9vvptz"
entrypoint string "Initialize"
floor string "0"

Prove Transaction

Prove that you sent DERO in this transaction. Obtain proof using the dero-wallet-cli command or from your wallet statement.

Note: The proof is sent to the server for verification calculations. Payload proofs are user-provided display proofs; for the strongest verification, confirm with the receiving wallet.

Raw Transaction Data