Transaction Details

Open on Dero Explorer
Internal ID:
2828983
Transaction Hash:
8289c6109f41cbe1f6d5f27a419db537bf3bf30a25eff285241a36e1ae3e48a4
Block:
Timestamp:
2022-07-16 05:08:59 UTC (3.2 years ago)
Type:
sc
Ring Size:
2
Payloads:
1
Caller:
dReam Tables (+11 more) (1385328)
SC Data:
[{"name":"SC_ACTION","datatype":"U","value":"1"},{"name":"SC_CODE","datatype":"S","value":"/*dReam Tables \n    Baccarat table# 2\n    In memory of table #1, you served us well.\n*/\n\nFunction InitializePrivate() Uint64\n10 IF SIGNER() == address_raw(\"dero1qy8jhspnvu8n5tuy0470ja0pnsz5jwjyhgfvqj93jaaxllx2ep3fsqgz0kggh\") THEN GOTO 30\n20 RETURN 1\n30 STORE(\"owner\", SIGNER())   \n40 STORE(\"TotalHandsPlayed:\", 0)\n50 STORE(\"tokenSCID\", HEXDECODE(\"ad2e7b37c380cc1aed3a6b27224ddfc92a2d15962ca1f4d35e530dba0f9575a9\"))  \n60 STORE(\"Player Wins:\", 0)\n70 STORE(\"Banker Wins:\", 0)\n80 STORE(\"Ties:\", 0)\n90 STORE(\"Open\", 1)\n100 STORE(\"Max Bet:\", 15000000)\n110 STORE(\"Min Bet:\", 100000)\n120 RETURN 0\nEnd Function\n\n\nFunction IssueChips() Uint64    /// Convert DERO to dReams (1 Dero = 333 dReams)\n10 IF IS_ADDRESS_VALID(SIGNER()) THEN GOTO 30\n20 RETURN 1\n30 SEND_ASSET_TO_ADDRESS(SIGNER(), DEROVALUE()*333, LOAD(\"tokenSCID\"))  \n40 RETURN 0\nEnd Function\n\n\nFunction ConvertChips() Uint64    /// Convert dReams to DERO (1 Dero = 333 dReams)\n10 IF IS_ADDRESS_VALID(SIGNER()) THEN GOTO 30\n20 RETURN 1\n30 SEND_DERO_TO_ADDRESS(SIGNER(),ASSETVALUE(LOAD(\"tokenSCID\"))/333)  \n40 RETURN 0\nEnd Function\n\n/// Game Functions\n\nFunction baccaratPlayerDeal() Uint64   /// Draws players first two cards\n10 DIM player_x, player_y, player_total, player_draw as Uint64\n20 LET player_x = 1+ RANDOM(13)\n30 LET player_y = 1+ RANDOM(13)\n35 LET player_total = player_x + player_y\n40 MAPSTORE(\"player_total\", player_total)\n\n50 MAPSTORE(\"player_x\", player_x)\n60 MAPSTORE(\"player_y\", player_y)\n\n70 IF MAPGET(\"player_x\") \u003e= 10 THEN GOTO 80 ELSE GOTO 110\n80 MAPSTORE(\"player_x\", 0)\n\n110 IF MAPGET(\"player_y\") \u003e= 10 THEN GOTO 120 ELSE GOTO 150\n120 MAPSTORE(\"player_y\", 0)\n\n150 MAPSTORE(\"player_total\", MAPGET(\"player_x\") + MAPGET(\"player_y\"))\n160 IF MAPGET(\"player_total\") \u003e= 10 THEN GOTO 170 ELSE GOTO 180\n170 MAPSTORE(\"player_total\", MAPGET(\"player_total\") - 10)\n180 RETURN 0\nEnd Function\n\n\nFunction baccaratBankerDeal() Uint64    /// Draws bankers first two cards\n10 DIM banker_x, banker_y, banker_total, banker_draw as Uint64\n20 LET banker_x = 1+ RANDOM(13)\n30 LET banker_y = 1+ RANDOM(13)\n40 LET banker_total = banker_x + banker_y\n50 MAPSTORE(\"banker_x\", banker_x)\n60 MAPSTORE(\"banker_y\", banker_y)\n\n70 IF MAPGET(\"banker_x\") \u003e= 10 THEN GOTO 80 ELSE GOTO 110\n80 MAPSTORE(\"banker_x\", 0)\n\n110 IF MAPGET(\"banker_y\") \u003e= 10 THEN GOTO 120 ELSE GOTO 150\n120 MAPSTORE(\"banker_y\", 0)\n\n150 MAPSTORE(\"banker_total\", MAPGET(\"banker_x\") + MAPGET(\"banker_y\"))\n160 IF MAPGET(\"banker_total\") \u003e= 10 THEN GOTO 170 ELSE GOTO 180\n170 MAPSTORE(\"banker_total\", MAPGET(\"banker_total\") - 10) \n180 RETURN 0 \nEnd Function\n\n\nFunction playerNaturalCheck() Uint64    /// If player has natural banker does not draw\n20 MAPGET(\"player_x\")\n30 MAPGET(\"player_y\")\n40 MAPSTORE(\"playerCheckTotal\", MAPGET(\"player_x\") + MAPGET(\"player_y\"))\n50 IF MAPGET(\"playerCheckTotal\") \u003e= 10 THEN GOTO 60 ELSE GOTO 70\n60 MAPSTORE(\"playerCheckTotal\", MAPGET(\"playerCheckTotal\") - 10)\n\n70 IF MAPGET(\"playerCheckTotal\") \u003e= 8 THEN GOTO 90\n80 RETURN 0\n\n90 RETURN 1\nEnd Function\n\n\nFunction bankerNaturalCheck() Uint64   /// If banker has natural player does not draw\n20 MAPGET(\"banker_x\")\n30 MAPGET(\"banker_y\")\n40 MAPSTORE(\"bankerCheckTotal\", MAPGET(\"banker_x\") + MAPGET(\"banker_y\"))\n50 IF MAPGET(\"bankerCheckTotal\") \u003e= 10 THEN GOTO 60 ELSE GOTO 70\n60 MAPSTORE(\"bankerCheckTotal\", MAPGET(\"bankerCheckTotal\") - 10)\n\n70 IF MAPGET(\"bankerCheckTotal\") \u003e= 8 THEN GOTO 90\n80 RETURN 0\n\n90 RETURN 1\nEnd Function\n\n\nFunction PlayBaccarat(betOn String) Uint64  /// Play a hand of baccarat, betOn is player or dealer or tie, NO combination bet\n4 IF LOAD(\"Open\") == 0 THEN GOTO 600\n5 IF ASSETVALUE(LOAD(\"tokenSCID\")) \u003e LOAD(\"Max Bet:\") THEN GOTO 600\n6 IF ASSETVALUE(LOAD(\"tokenSCID\")) \u003c LOAD(\"Min Bet:\") THEN GOTO 600\n10 MAPSTORE( \"betOn\", betOn)\n12 DIM player_z, banker_z as Uint64\n20 baccaratPlayerDeal() \n30 baccaratBankerDeal()\n40 IF bankerNaturalCheck() THEN GOTO 160\n\n/// Player draw starts \n50 IF MAPGET(\"player_total\") \u003c= 5 THEN GOTO 60 ELSE GOTO 160\n60 LET player_z = 1+ RANDOM(13)\n70 MAPSTORE(\"player_draw\", player_z)\n80 MAPSTORE(\"player_z\", player_z)\n90 IF MAPGET(\"player_z\") \u003e= 10 THEN GOTO 100 ELSE GOTO 120\n100 MAPSTORE(\"player_z\", 0)\n\n120 MAPSTORE(\"player_total\", MAPGET(\"player_total\") + MAPGET(\"player_z\"))\n130 IF MAPGET(\"player_total\") \u003e= 10 THEN GOTO 140 ELSE GOTO 160\n140 MAPSTORE(\"player_total\", MAPGET(\"player_total\") - 10)\n\n160 MAPSTORE(\"player_z\", player_z)\n180 IF playerNaturalCheck() THEN GOTO 400\n\n//// Banker draw starts\n200 IF MAPGET(\"player_total\") == 9 THEN GOTO 210 ELSE GOTO 220\n210 IF MAPGET(\"banker_total\") \u003c= 3 THEN GOTO 320 ELSE GOTO 400\n\n220 IF MAPGET(\"player_total\") == 8 THEN GOTO 230 ELSE GOTO 240\n230 IF MAPGET(\"banker_total\") \u003c= 2 THEN GOTO 320 ELSE GOTO 400\n\n240 IF MAPGET(\"player_total\") \u003e= 6 THEN GOTO 250 ELSE GOTO 260\n250 IF MAPGET(\"banker_total\") \u003c= 6 THEN GOTO 320 ELSE GOTO 400\n\n260 IF MAPGET(\"player_total\") \u003e= 4 THEN GOTO 270 ELSE GOTO 280\n270 IF MAPGET(\"banker_total\") \u003c= 5 THEN GOTO 320 ELSE GOTO 400\n\n280 IF MAPGET(\"player_total\") \u003e= 2 THEN GOTO 290 ELSE GOTO 300\n290 IF MAPGET(\"banker_total\") \u003c= 4 THEN GOTO 320 ELSE GOTO 400\n\n300 IF MAPGET(\"player_total\") \u003e= 0 THEN GOTO 310 ELSE GOTO 400\n310 IF MAPGET(\"banker_total\") \u003c= 3 THEN GOTO 320 ELSE GOTO 400\n\n320 LET banker_z = 1+ RANDOM(13)\n330 MAPSTORE(\"banker_draw\", banker_z)\n340 MAPSTORE(\"banker_z\", banker_z)\n350 IF MAPGET(\"banker_z\") \u003e= 10 THEN GOTO 360 ELSE GOTO 370\n360 MAPSTORE(\"banker_z\", 0)\n\n370 MAPSTORE(\"banker_total\", MAPGET(\"banker_total\") + MAPGET(\"banker_z\"))\n380 IF MAPGET(\"banker_total\") \u003e= 10 THEN GOTO 390 ELSE GOTO 400\n390 MAPSTORE(\"banker_total\", MAPGET(\"banker_total\") - 10)\n\n400 MAPSTORE(\"banker_z\", banker_z)\n410 MAPGET(\"player_total\")\n420 MAPGET(\"banker_total\")\n430 showHandResult()\n\n440 IF MAPGET(\"player_total\") == MAPGET(\"banker_total\") THEN GOTO 450 ELSE GOTO 500\n450 STORE(\"Ties:\", LOAD(\"Ties:\")+1)\n455 IF MAPGET(\"betOn\") == \"tie\" THEN GOTO 460 ELSE GOTO 480 \n460 SEND_ASSET_TO_ADDRESS(SIGNER(), ASSETVALUE(LOAD(\"tokenSCID\"))*9, LOAD(\"tokenSCID\"))           /// Tie pays out 8:1\n470 RETURN 0 \n/// Tie \n480 SEND_ASSET_TO_ADDRESS(SIGNER(), ASSETVALUE(LOAD(\"tokenSCID\"))*1, LOAD(\"tokenSCID\"))        /// If tie occurs banker and player push bet\n490 RETURN 0\n/// Player Win\n500 IF MAPGET(\"player_total\") \u003e MAPGET(\"banker_total\") THEN GOTO 510 ELSE GOTO 540\n510 STORE(\"Player Wins:\", LOAD(\"Player Wins:\")+1)\n515 IF MAPGET(\"betOn\") == \"player\" THEN GOTO 520 ELSE GOTO 530\n520 SEND_ASSET_TO_ADDRESS(SIGNER(), ASSETVALUE(LOAD(\"tokenSCID\"))*2, LOAD(\"tokenSCID\"))       /// Player pays out 1:1\n530 RETURN 0\n///Banker Win\n540 STORE(\"Banker Wins:\", LOAD(\"Banker Wins:\")+1)\n545 IF MAPGET(\"betOn\") == \"banker\" THEN GOTO 550 ELSE GOTO 560\n550 SEND_ASSET_TO_ADDRESS(SIGNER(), 1950*ASSETVALUE(LOAD(\"tokenSCID\"))/1000, LOAD(\"tokenSCID\"))    /// Banker bet pays out 95:100 house takes 5% commission \n560 RETURN 0\n\n600 RETURN 1\nEnd Function\n\n\nFunction showHandResult() Uint64   /// Displays last 21 hands then deletes oldest entry\n10 STORE(\"TotalHandsPlayed:\", LOAD(\"TotalHandsPlayed:\")+1)\n20 STORE(ITOA(LOAD(\"TotalHandsPlayed:\"))+\"-Hand#TXID:\", TXID())\n30 STORE(ITOA(LOAD(\"TotalHandsPlayed:\"))+\"-Player x:\", MAPGET(\"player_x\"))\n40 STORE(ITOA(LOAD(\"TotalHandsPlayed:\"))+\"-Player y:\", MAPGET(\"player_y\"))\n50 STORE(ITOA(LOAD(\"TotalHandsPlayed:\"))+\"-Player z:\", MAPGET(\"player_z\"))\n60 STORE(ITOA(LOAD(\"TotalHandsPlayed:\"))+\"============\", \"\")\n70 STORE(ITOA(LOAD(\"TotalHandsPlayed:\"))+\"-Player total:\", MAPGET(\"player_total\"))\n\n80 STORE(ITOA(LOAD(\"TotalHandsPlayed:\"))+\"-Banker x:\", MAPGET(\"banker_x\"))\n90 STORE(ITOA(LOAD(\"TotalHandsPlayed:\"))+\"-Banker y:\", MAPGET(\"banker_y\"))\n100 STORE(ITOA(LOAD(\"TotalHandsPlayed:\"))+\"-Banker z:\", MAPGET(\"banker_z\"))\n110 STORE(ITOA(LOAD(\"TotalHandsPlayed:\"))+\"-Banker total:\", MAPGET(\"banker_total\"))\n\n130 DELETE(ITOA(LOAD(\"TotalHandsPlayed:\")-21)+\"-Hand#TXID:\")\n140 DELETE(ITOA(LOAD(\"TotalHandsPlayed:\")-21)+\"-Player x:\")\n150 DELETE(ITOA(LOAD(\"TotalHandsPlayed:\")-21)+\"-Player y:\")\n160 DELETE(ITOA(LOAD(\"TotalHandsPlayed:\")-21)+\"-Player z:\")\n165 DELETE(ITOA(LOAD(\"TotalHandsPlayed:\")-21)+\"============\")\n170 DELETE(ITOA(LOAD(\"TotalHandsPlayed:\")-21)+\"-Player total:\")\n\n190 DELETE(ITOA(LOAD(\"TotalHandsPlayed:\")-21)+\"-Banker x:\")\n200 DELETE(ITOA(LOAD(\"TotalHandsPlayed:\")-21)+\"-Banker y:\")\n210 DELETE(ITOA(LOAD(\"TotalHandsPlayed:\")-21)+\"-Banker z:\")\n220 DELETE(ITOA(LOAD(\"TotalHandsPlayed:\")-21)+\"-Banker total:\")\n240 RETURN 0\nEnd Function\n\n\n///Owner Functions\n\nFunction Deposit() Uint64  \n10  IF LOAD(\"owner\") == SIGNER() THEN GOTO 30\n20 RETURN 1\n\n30 RETURN 0\nEnd Function\n\n\nFunction SetTableInfo(min Uint64, max Uint64, open Uint64, asset String) Uint64   /// Set limits, close table, change asset\n10  IF LOAD(\"owner\") == SIGNER() THEN GOTO 30\n20  RETURN 1\n30 STORE(\"Open\", open)\n40 STORE(\"Max Bet:\", max)\n50 STORE(\"Min Bet:\", min)\n60 STORE(\"tokenSCID\", asset)\n70  RETURN 0\nEnd Function\n\n\nFunction OwnerTokenWithdraw(amount Uint64, asset String) Uint64   \n10  IF LOAD(\"owner\") == SIGNER() THEN GOTO 30\n20  RETURN 1\n30  SEND_ASSET_TO_ADDRESS(SIGNER(), amount, asset)\n40  RETURN 0\nEnd Function\n\n\nFunction Withdraw(amount Uint64) Uint64   \n10  IF LOAD(\"owner\") == SIGNER() THEN GOTO 30\n20  RETURN 1\n30  SEND_DERO_TO_ADDRESS(SIGNER(),amount)\n40  RETURN 0\nEnd Function\n\n\nFunction TransferOwnership(newowner String) Uint64  \n10  IF LOAD(\"owner\") == SIGNER() THEN GOTO 30\n20  RETURN 1\n30  STORE(\"tmpowner\",ADDRESS_RAW(newowner))\n40  RETURN 0\nEnd Function\n\n\nFunction ClaimOwnership() Uint64  \n10  IF LOAD(\"tmpowner\") == SIGNER() THEN GOTO 30\n20  RETURN 1\n30  STORE(\"owner\",SIGNER()) \n40  RETURN 0\nEnd Function\n\n\nFunction UpdateCode(code String) Uint64 /// Update SC \n10  IF LOAD(\"owner\") == SIGNER() THEN GOTO 30\n20  RETURN 1\n30  UPDATE_SC_CODE(code)\n40  RETURN 0\nEnd Function\n"}]

Payload

Token (SCID):
DERO
Deposited:
none
Fees:
0.14721 DERO