tx · Ejw7W21E9NU5XokDxmpQBb7Jtu2ra88PRkbruA7Ks9vS

3ND7yDVQ9mhN6sjYrMgFLGuD69FLbT2CczD:  -0.10000100 Waves

2022.01.29 05:09 [1899611] smart account 3ND7yDVQ9mhN6sjYrMgFLGuD69FLbT2CczD > SELF 0.00000000 Waves

{ "type": 13, "id": "Ejw7W21E9NU5XokDxmpQBb7Jtu2ra88PRkbruA7Ks9vS", "fee": 10000100, "feeAssetId": null, "timestamp": 1643422154186, "version": 2, "chainId": 84, "sender": "3ND7yDVQ9mhN6sjYrMgFLGuD69FLbT2CczD", "senderPublicKey": "HFLErkwGstH8qMPmKAdBGswMbfh5QrBKB1HTFckcXi9z", "proofs": [ "4FhPBPPPdrDdgTUyfSfiApyM12TzWcGsEj9GKQmcUFGzqVU57VGGKPqHG7y1UmmDbWTPTAQMq5mf8ffm717dz1mp" ], "script": "base64:AAIEAAAAAAAAACUIAhIFCgMBCAgSABIAEgUKAwEICBIECgIBARIHCgUBCAgICBIAAAAAJgAAAAATZ2FtZU1hc3RlclB1YmxpY0tleQEAAAAggroKuBlUJmLS1KsU2JkwkzBNQtAByx9SNkXA/4MrklkAAAAACVJTQVBVQkxJQwkAAlsAAAABAgAAAZNiYXNlNjQ6TUlJQkl6QU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FSQUFNSUlCQ3dLQ0FRSUErQ3Biek1CS3BxKzdWYXJTREhMVzB3UVNvaDJMVGJnbDFyQWhmcnVaR0NqdDZNTzRvMXYxaUxxS3lOSDNGSnN2d2xMVXFtcUU3RTJXbDdMYklQQTI2UHhPMlhDRGZ2ajBPV3A3Y0VKa1VCRWl5UFlDbitpdVBYVVB3dWRvRmdNNFdIZjBJUGJESjJPNk9nelFsQkJtTnU2T3dyN25hSVRpSnJQQXZha1BnQWRtVVB2NHJPemN1NkJSMFQ4R3dzendwcnZ3V1psS0Y2QWQwMG9tTEZEbXg2Nkh2QkU1MXNSQmlYSVJiSm5qRGhsb3BpemU0TG9SMUZJclFhQXUxc2ZzNWJFSExBMzNqdkt5Ym5lK0lEYXdDc2lJTlpZZFBaVjFXV2NVUkMrWEFGZkJpWUN3NFBZeWd1eGFCUkhvdHpMYzJkT3NCVjFIRE5JakxLVm9Sa255dDUwQ0F3RUFBUT09AAAAAAlnYW1lVG9rZW4BAAAAIK5gG7nVQrpvLZOnYFVOI3kG7J/W0G+EQyJ8FisXZ2EDAAAAAAxjYXJkUG9zaXRpb24AAAAAAAAAAAMAAAAAFnNldHVwR2FtZXNDb3VudGVyTGFiZWwCAAAAE0dfU0VUVVBHQU1FU0NPVU5URVIAAAAAFXVzZWRHYW1lc0NvdW50ZXJMYWJlbAIAAAASR19VU0VER0FNRVNDT1VOVEVSAAAAABBkZWFsZXJRdWV1ZUxhYmVsAgAAAA1HX0RFQUxFUlFVRVVFAAAAAA9nYW1lTWF4QmV0TGFiZWwCAAAACEdfTUFYQkVUAQAAAAtnYW1lc01heEJldAAAAAAJAAQaAAAAAgUAAAAEdGhpcwUAAAAPZ2FtZU1heEJldExhYmVsAQAAABRnYW1lc1NldHVwR2V0Q291bnRlcgAAAAAJAAQaAAAAAgUAAAAEdGhpcwUAAAAWc2V0dXBHYW1lc0NvdW50ZXJMYWJlbAEAAAATZ2FtZXNVc2VkR2V0Q291bnRlcgAAAAAJAAQaAAAAAgUAAAAEdGhpcwUAAAAVdXNlZEdhbWVzQ291bnRlckxhYmVsAQAAAA5nZXREZWFsZXJRdWV1ZQAAAAAJAAQdAAAAAgUAAAAEdGhpcwUAAAAQZGVhbGVyUXVldWVMYWJlbAEAAAAPY2hlY2tQZXJtaXNzaW9uAAAAAQAAAA9jYWxsZXJQdWJsaWNLZXkJAQAAAAIhPQAAAAIFAAAAD2NhbGxlclB1YmxpY0tleQUAAAATZ2FtZU1hc3RlclB1YmxpY0tleQEAAAAVZ2V0R2FtZUJldEFtb3VudExhYmVsAAAAAQAAAApnYW1lTnVtYmVyCQABLAAAAAIJAAEsAAAAAgIAAAACR18JAAGkAAAAAQUAAAAKZ2FtZU51bWJlcgIAAAAKX0JFVEFNT1VOVAEAAAAVZ2V0R2FtZVRpZUFtb3VudExhYmVsAAAAAQAAAApnYW1lTnVtYmVyCQABLAAAAAIJAAEsAAAAAgIAAAACR18JAAGkAAAAAQUAAAAKZ2FtZU51bWJlcgIAAAAKX1RJRUFNT1VOVAEAAAAVZ2V0R2FtZUZlZUFtb3VudExhYmVsAAAAAQAAAApnYW1lTnVtYmVyCQABLAAAAAIJAAEsAAAAAgIAAAACR18JAAGkAAAAAQUAAAAKZ2FtZU51bWJlcgIAAAAKX0ZFRUFNT1VOVAEAAAASZ2V0R2FtZVBsYXllckxhYmVsAAAAAQAAAApnYW1lTnVtYmVyCQABLAAAAAIJAAEsAAAAAgIAAAACR18JAAGkAAAAAQUAAAAKZ2FtZU51bWJlcgIAAAAHX1BMQVlFUgEAAAAWZ2V0R2FtZUJldFBheW91dExhYmVsMQAAAAEAAAAKZ2FtZU51bWJlcgkAASwAAAACCQABLAAAAAICAAAAAkdfCQABpAAAAAEFAAAACmdhbWVOdW1iZXICAAAAC19CRVQxUEFZT1VUAQAAABZnZXRHYW1lQmV0UGF5b3V0TGFiZWwyAAAAAQAAAApnYW1lTnVtYmVyCQABLAAAAAIJAAEsAAAAAgIAAAACR18JAAGkAAAAAQUAAAAKZ2FtZU51bWJlcgIAAAALX0JFVDJQQVlPVVQBAAAAGGdldEdhbWVUaWVCZXRQYXlvdXRMYWJlbAAAAAEAAAAKZ2FtZU51bWJlcgkAASwAAAACCQABLAAAAAICAAAAAkdfCQABpAAAAAEFAAAACmdhbWVOdW1iZXICAAAACl9USUVQQVlPVVQBAAAAG2dldEdhbWVTdXJyZW5kZXJQYXlvdXRMYWJlbAAAAAEAAAAKZ2FtZU51bWJlcgkAASwAAAACCQABLAAAAAICAAAAAkdfCQABpAAAAAEFAAAACmdhbWVOdW1iZXICAAAAEF9TVVJSRU5ERVJQQVlPVVQBAAAAEWdldEdhbWVTdGF0ZUxhYmVsAAAAAQAAAApnYW1lTnVtYmVyCQABLAAAAAIJAAEsAAAAAgIAAAACR18JAAGkAAAAAQUAAAAKZ2FtZU51bWJlcgIAAAAGX1NUQVRFAQAAABpnZXRHYW1lU2h1ZmZlbE9mZmVzZXRMYWJlbAAAAAEAAAAKZ2FtZU51bWJlcgkAASwAAAACCQABLAAAAAICAAAAAkdfCQABpAAAAAEFAAAACmdhbWVOdW1iZXICAAAAB19PRkZTRVQBAAAAGmdldEdhbWVDYXJkc1NpZ25hdHVyZUxhYmVsAAAAAgAAAApnYW1lTnVtYmVyAAAABGNhcmQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAAkdfCQABpAAAAAEFAAAACmdhbWVOdW1iZXICAAAAD19DQVJEU0lHTkFUVVJFXwkAAaQAAAABBQAAAARjYXJkAQAAABlnZXRQbGF5ZXJDdXJyZW50R2FtZUxhYmVsAAAAAQAAAAdhZGRyZXNzCQABLAAAAAIJAAEsAAAAAgIAAAACUF8FAAAAB2FkZHJlc3MCAAAADF9DVVJSRU5UR0FNRQEAAAAUZ2V0UGxheWVyQ3VycmVudEdhbWUAAAABAAAAB2FkZHJlc3MJAAQaAAAAAgUAAAAEdGhpcwkBAAAAGWdldFBsYXllckN1cnJlbnRHYW1lTGFiZWwAAAABBQAAAAdhZGRyZXNzAQAAABBnZXRHYW1lQmV0QW1vdW50AAAAAQAAAApnYW1lTnVtYmVyCQAEGgAAAAIFAAAABHRoaXMJAQAAABVnZXRHYW1lQmV0QW1vdW50TGFiZWwAAAABBQAAAApnYW1lTnVtYmVyAQAAABBnZXRHYW1lVGllQW1vdW50AAAAAQAAAApnYW1lTnVtYmVyCQAEGgAAAAIFAAAABHRoaXMJAQAAABVnZXRHYW1lVGllQW1vdW50TGFiZWwAAAABBQAAAApnYW1lTnVtYmVyAQAAABBnZXRHYW1lRmVlQW1vdW50AAAAAQAAAApnYW1lTnVtYmVyCQAEGgAAAAIFAAAABHRoaXMJAQAAABVnZXRHYW1lRmVlQW1vdW50TGFiZWwAAAABBQAAAApnYW1lTnVtYmVyAQAAAAxnZXRHYW1lU3RhdGUAAAABAAAACmdhbWVOdW1iZXIJAAQaAAAAAgUAAAAEdGhpcwkBAAAAEWdldEdhbWVTdGF0ZUxhYmVsAAAAAQUAAAAKZ2FtZU51bWJlcgEAAAANZ2V0R2FtZVBsYXllcgAAAAEAAAAKZ2FtZU51bWJlcgkABB0AAAACBQAAAAR0aGlzCQEAAAASZ2V0R2FtZVBsYXllckxhYmVsAAAAAQUAAAAKZ2FtZU51bWJlcgEAAAAVZ2V0R2FtZUNhcmRzU2lnbmF0dXJlAAAAAgAAAApnYW1lTnVtYmVyAAAABGNhcmQJAAQdAAAAAgUAAAAEdGhpcwkBAAAAGmdldEdhbWVDYXJkc1NpZ25hdHVyZUxhYmVsAAAAAgUAAAAKZ2FtZU51bWJlcgUAAAAEY2FyZAEAAAARZ2V0R2FtZUNhcmRzTGFiZWwAAAACAAAACmdhbWVOdW1iZXIAAAAEY2FyZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAACR18JAAGkAAAAAQUAAAAKZ2FtZU51bWJlcgIAAAAGX0NBUkRfCQABpAAAAAEFAAAABGNhcmQBAAAADGdldEdhbWVTZXR1cAAAAAYAAAAKZ2FtZU51bWJlcgAAAApyYW5kb21pemVyAAAABmNhcmRzMAAAAAZjYXJkczEAAAAGY2FyZHMyAAAABmNhcmRzMwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAWc2V0dXBHYW1lc0NvdW50ZXJMYWJlbAUAAAAKZ2FtZU51bWJlcgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAEWdldEdhbWVTdGF0ZUxhYmVsAAAAAQUAAAAKZ2FtZU51bWJlcgAAAAAAAAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAGmdldEdhbWVTaHVmZmVsT2ZmZXNldExhYmVsAAAAAQUAAAAKZ2FtZU51bWJlcgUAAAAKcmFuZG9taXplcgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAaZ2V0R2FtZUNhcmRzU2lnbmF0dXJlTGFiZWwAAAACBQAAAApnYW1lTnVtYmVyAAAAAAAAAAAABQAAAAZjYXJkczAJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAGmdldEdhbWVDYXJkc1NpZ25hdHVyZUxhYmVsAAAAAgUAAAAKZ2FtZU51bWJlcgAAAAAAAAAAAQUAAAAGY2FyZHMxCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABpnZXRHYW1lQ2FyZHNTaWduYXR1cmVMYWJlbAAAAAIFAAAACmdhbWVOdW1iZXIAAAAAAAAAAAIFAAAABmNhcmRzMgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAaZ2V0R2FtZUNhcmRzU2lnbmF0dXJlTGFiZWwAAAACBQAAAApnYW1lTnVtYmVyAAAAAAAAAAADBQAAAAZjYXJkczMFAAAAA25pbAEAAAASY3JlYXRlR2FtZU1ldGFkYXRhAAAABAAAAAdhZGRyZXNzAAAACWJldEFtb3VudAAAAAl0aWVBbW91bnQAAAAJZmVlQW1vdW50BAAAAA1nYW1lVG9SZXNlcnZlCQAAZAAAAAIJAQAAAAV2YWx1ZQAAAAEJAQAAABNnYW1lc1VzZWRHZXRDb3VudGVyAAAAAAAAAAAAAAAAAQQAAAALZGVhbGVyUXVldWUJAQAAAAV2YWx1ZQAAAAEJAQAAAA5nZXREZWFsZXJRdWV1ZQAAAAAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAFXVzZWRHYW1lc0NvdW50ZXJMYWJlbAUAAAANZ2FtZVRvUmVzZXJ2ZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAGWdldFBsYXllckN1cnJlbnRHYW1lTGFiZWwAAAABBQAAAAdhZGRyZXNzBQAAAA1nYW1lVG9SZXNlcnZlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAARZ2V0R2FtZVN0YXRlTGFiZWwAAAABBQAA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", "height": 1899611, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: 6QJgzdfQSj8qxte6tgJS89aWDyjrFKihtuyTw8ewUubo Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 4 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let gameMasterPublicKey = base58'9oJY9kQY93dJqttXUYjgQksfgHPLxsFoFX2TxCqYVhEx'
5+
6+let RSAPUBLIC = fromBase64String("base64:MIIBIzANBgkqhkiG9w0BAQEFAAOCARAAMIIBCwKCAQIA+CpbzMBKpq+7VarSDHLW0wQSoh2LTbgl1rAhfruZGCjt6MO4o1v1iLqKyNH3FJsvwlLUqmqE7E2Wl7LbIPA26PxO2XCDfvj0OWp7cEJkUBEiyPYCn+iuPXUPwudoFgM4WHf0IPbDJ2O6OgzQlBBmNu6Owr7naITiJrPAvakPgAdmUPv4rOzcu6BR0T8GwszwprvwWZlKF6Ad00omLFDmx66HvBE51sRBiXIRbJnjDhlopize4LoR1FIrQaAu1sfs5bEHLA33jvKybne+IDawCsiINZYdPZV1WWcURC+XAFfBiYCw4PYyguxaBRHotzLc2dOsBV1HDNIjLKVoRknyt50CAwEAAQ==")
7+
8+let gameToken = base58'CjgwQi4TUfkHaLgTigyd3xuEpT3GU1ihtHxK2uy5VG4S'
9+
10+let cardPosition = 3
11+
12+let setupGamesCounterLabel = "G_SETUPGAMESCOUNTER"
13+
14+let usedGamesCounterLabel = "G_USEDGAMESCOUNTER"
15+
16+let dealerQueueLabel = "G_DEALERQUEUE"
17+
18+let gameMaxBetLabel = "G_MAXBET"
19+
20+func gamesMaxBet () = getInteger(this, gameMaxBetLabel)
21+
22+
23+func gamesSetupGetCounter () = getInteger(this, setupGamesCounterLabel)
24+
25+
26+func gamesUsedGetCounter () = getInteger(this, usedGamesCounterLabel)
27+
28+
29+func getDealerQueue () = getString(this, dealerQueueLabel)
30+
31+
32+func checkPermission (callerPublicKey) = (callerPublicKey != gameMasterPublicKey)
33+
34+
35+func getGameBetAmountLabel (gameNumber) = (("G_" + toString(gameNumber)) + "_BETAMOUNT")
36+
37+
38+func getGameTieAmountLabel (gameNumber) = (("G_" + toString(gameNumber)) + "_TIEAMOUNT")
39+
40+
41+func getGameFeeAmountLabel (gameNumber) = (("G_" + toString(gameNumber)) + "_FEEAMOUNT")
42+
43+
44+func getGamePlayerLabel (gameNumber) = (("G_" + toString(gameNumber)) + "_PLAYER")
45+
46+
47+func getGameBetPayoutLabel1 (gameNumber) = (("G_" + toString(gameNumber)) + "_BET1PAYOUT")
48+
49+
50+func getGameBetPayoutLabel2 (gameNumber) = (("G_" + toString(gameNumber)) + "_BET2PAYOUT")
51+
52+
53+func getGameTieBetPayoutLabel (gameNumber) = (("G_" + toString(gameNumber)) + "_TIEPAYOUT")
54+
55+
56+func getGameSurrenderPayoutLabel (gameNumber) = (("G_" + toString(gameNumber)) + "_SURRENDERPAYOUT")
57+
58+
59+func getGameStateLabel (gameNumber) = (("G_" + toString(gameNumber)) + "_STATE")
60+
61+
62+func getGameShuffelOffesetLabel (gameNumber) = (("G_" + toString(gameNumber)) + "_OFFSET")
63+
64+
65+func getGameCardsSignatureLabel (gameNumber,card) = ((("G_" + toString(gameNumber)) + "_CARDSIGNATURE_") + toString(card))
66+
67+
68+func getPlayerCurrentGameLabel (address) = (("P_" + address) + "_CURRENTGAME")
69+
70+
71+func getPlayerCurrentGame (address) = getInteger(this, getPlayerCurrentGameLabel(address))
72+
73+
74+func getGameBetAmount (gameNumber) = getInteger(this, getGameBetAmountLabel(gameNumber))
75+
76+
77+func getGameTieAmount (gameNumber) = getInteger(this, getGameTieAmountLabel(gameNumber))
78+
79+
80+func getGameFeeAmount (gameNumber) = getInteger(this, getGameFeeAmountLabel(gameNumber))
81+
82+
83+func getGameState (gameNumber) = getInteger(this, getGameStateLabel(gameNumber))
84+
85+
86+func getGamePlayer (gameNumber) = getString(this, getGamePlayerLabel(gameNumber))
87+
88+
89+func getGameCardsSignature (gameNumber,card) = getString(this, getGameCardsSignatureLabel(gameNumber, card))
90+
91+
92+func getGameCardsLabel (gameNumber,card) = ((("G_" + toString(gameNumber)) + "_CARD_") + toString(card))
93+
94+
95+func getGameSetup (gameNumber,randomizer,cards0,cards1,cards2,cards3) = [IntegerEntry(setupGamesCounterLabel, gameNumber), IntegerEntry(getGameStateLabel(gameNumber), 0), IntegerEntry(getGameShuffelOffesetLabel(gameNumber), randomizer), StringEntry(getGameCardsSignatureLabel(gameNumber, 0), cards0), StringEntry(getGameCardsSignatureLabel(gameNumber, 1), cards1), StringEntry(getGameCardsSignatureLabel(gameNumber, 2), cards2), StringEntry(getGameCardsSignatureLabel(gameNumber, 3), cards3)]
96+
97+
98+func createGameMetadata (address,betAmount,tieAmount,feeAmount) = {
99+ let gameToReserve = (value(gamesUsedGetCounter()) + 1)
100+ let dealerQueue = value(getDealerQueue())
101+[IntegerEntry(usedGamesCounterLabel, gameToReserve), IntegerEntry(getPlayerCurrentGameLabel(address), gameToReserve), IntegerEntry(getGameStateLabel(gameToReserve), 1), IntegerEntry(getGameBetAmountLabel(gameToReserve), betAmount), IntegerEntry(getGameTieAmountLabel(gameToReserve), tieAmount), IntegerEntry(getGameFeeAmountLabel(gameToReserve), feeAmount), StringEntry(dealerQueueLabel, ((value(getDealerQueue()) + ",") + toString(gameToReserve))), StringEntry(getGamePlayerLabel(gameToReserve), address)]
102+ }
103+
104+
105+func getCardValue (stringCard) = parseIntValue(split(stringCard, "/")[0])
106+
107+
108+func getPayments (i) = if ((i.feeAssetId != gameToken))
109+ then throw(("Fee must be in " + toBase58String(gameToken)))
110+ else if ((size(i.payments) == 0))
111+ then throw("Payment must be attached")
112+ else if ((size(i.payments) == 1))
113+ then {
114+ let pmt = i.payments[0]
115+ pmt.amount
116+ }
117+ else throw("There should be only one payment")
118+
119+
120+func verifyCard (card,gameNumber,cardNumber) = rsaVerify_16Kb(SHA256, toBytes(card), fromBase64String(split(value(getGameCardsSignature(gameNumber, cardNumber)), " ")[0]), RSAPUBLIC)
121+
122+
123+@Callable(i)
124+func revealRound2 (currentGame,card2,card3) = if (checkPermission(i.callerPublicKey))
125+ then throw("revealRound2_FORBBIDEN")
126+ else {
127+ let dealerQueue = value(getDealerQueue())
128+ let nextGameToProcess = split(dealerQueue, ",")[1]
129+ if ((nextGameToProcess == toString(currentGame)))
130+ then if (if (if ((value(getGameState(currentGame)) == 3))
131+ then verifyCard(card2, currentGame, 2)
132+ else false)
133+ then verifyCard(card3, currentGame, 3)
134+ else false)
135+ then {
136+ let cardPlayer = getCardValue(split(card2, "+")[cardPosition])
137+ let cardCasino = getCardValue(split(card3, "+")[cardPosition])
138+ if ((cardPlayer >= cardCasino))
139+ then {
140+ let normalBet = value(getGameBetAmount(currentGame))
141+ let fees = value(getGameFeeAmount(currentGame))
142+ let address = value(addressFromString(value(getGamePlayer(currentGame))))
143+ let payout = ((normalBet + fees) * 3)
144+[StringEntry(getGameCardsLabel(currentGame, 2), card2), StringEntry(getGameCardsLabel(currentGame, 3), card3), IntegerEntry(getGameStateLabel(currentGame), 6), StringEntry(dealerQueueLabel, takeRight(dealerQueue, (size(dealerQueue) - (1 + size(toString(currentGame)))))), IntegerEntry(getGameBetPayoutLabel2(currentGame), payout), ScriptTransfer(address, payout, unit)]
145+ }
146+ else [StringEntry(getGameCardsLabel(currentGame, 2), card2), StringEntry(getGameCardsLabel(currentGame, 3), card3), IntegerEntry(getGameStateLabel(currentGame), 6), StringEntry(dealerQueueLabel, takeRight(dealerQueue, (size(dealerQueue) - (1 + size(toString(currentGame))))))]
147+ }
148+ else throw("One of the cards failed to be verified or game is not in state 3.")
149+ else throw(("The next game to process is " + nextGameToProcess))
150+ }
151+
152+
153+
154+@Callable(i)
155+func war () = {
156+ let address = toBase58String(i.caller.bytes)
157+ let currentGame = value(getPlayerCurrentGame(address))
158+ if ((value(getGameState(currentGame)) != 2))
159+ then throw("Game is not in correct state.")
160+ else {
161+ let normalBet = value(getGameBetAmount(currentGame))
162+ let p = getPayments(i)
163+ if ((p != normalBet))
164+ then throw((("Payment must me same as the original bet (" + toString(normalBet)) + ")"))
165+ else [IntegerEntry(getGameStateLabel(currentGame), 3), StringEntry(dealerQueueLabel, ((value(getDealerQueue()) + ",") + toString(currentGame)))]
166+ }
167+ }
168+
169+
170+
171+@Callable(i)
172+func surrender () = {
173+ let address = toBase58String(i.caller.bytes)
174+ let currentGame = value(getPlayerCurrentGame(address))
175+ if ((value(getGameState(currentGame)) != 2))
176+ then throw("Game is not in correct state.")
177+ else {
178+ let normalBet = value(getGameBetAmount(currentGame))
179+ let fees = value(getGameFeeAmount(currentGame))
180+ let dealerQueue = value(getDealerQueue())
181+ let payout = (((normalBet + fees) / 2) + fees)
182+[IntegerEntry(getGameStateLabel(currentGame), 5), IntegerEntry(getGameSurrenderPayoutLabel(currentGame), payout), ScriptTransfer(i.caller, payout, unit)]
183+ }
184+ }
185+
186+
187+
188+@Callable(i)
189+func revealRound1 (currentGame,card0,card1) = if (checkPermission(i.callerPublicKey))
190+ then throw("revealRound1_FORBBIDEN")
191+ else {
192+ let dealerQueue = value(getDealerQueue())
193+ let nextGameToProcess = split(dealerQueue, ",")[1]
194+ if ((nextGameToProcess == toString(currentGame)))
195+ then if (if (if ((value(getGameState(currentGame)) == 1))
196+ then verifyCard(card0, currentGame, 0)
197+ else false)
198+ then verifyCard(card1, currentGame, 1)
199+ else false)
200+ then {
201+ let cardPlayer = getCardValue(split(card0, "+")[cardPosition])
202+ let cardCasino = getCardValue(split(card1, "+")[cardPosition])
203+ if ((cardPlayer == cardCasino))
204+ then {
205+ let tieBet = value(getGameTieAmount(currentGame))
206+ let address = value(addressFromString(value(getGamePlayer(currentGame))))
207+ let payout = ((tieBet * 10) + tieBet)
208+ if ((tieBet != 0))
209+ then [StringEntry(getGameCardsLabel(currentGame, 0), card0), StringEntry(getGameCardsLabel(currentGame, 1), card1), IntegerEntry(getGameStateLabel(currentGame), 2), StringEntry(dealerQueueLabel, takeRight(dealerQueue, (size(dealerQueue) - (1 + size(toString(currentGame)))))), IntegerEntry(getGameTieBetPayoutLabel(currentGame), payout), ScriptTransfer(address, payout, unit)]
210+ else [StringEntry(getGameCardsLabel(currentGame, 0), card0), StringEntry(getGameCardsLabel(currentGame, 1), card1), IntegerEntry(getGameStateLabel(currentGame), 2), StringEntry(dealerQueueLabel, takeRight(dealerQueue, (size(dealerQueue) - (1 + size(toString(currentGame))))))]
211+ }
212+ else if ((cardPlayer > cardCasino))
213+ then {
214+ let normalBet = value(getGameBetAmount(currentGame))
215+ let fees = value(getGameFeeAmount(currentGame))
216+ let address = value(addressFromString(value(getGamePlayer(currentGame))))
217+ let payout = ((normalBet + fees) * 2)
218+[StringEntry(getGameCardsLabel(currentGame, 0), card0), StringEntry(getGameCardsLabel(currentGame, 1), card1), IntegerEntry(getGameStateLabel(currentGame), 4), StringEntry(dealerQueueLabel, takeRight(dealerQueue, (size(dealerQueue) - (1 + size(toString(currentGame)))))), IntegerEntry(getGameBetPayoutLabel1(currentGame), payout), ScriptTransfer(address, payout, unit)]
219+ }
220+ else [StringEntry(getGameCardsLabel(currentGame, 0), card0), StringEntry(getGameCardsLabel(currentGame, 1), card1), IntegerEntry(getGameStateLabel(currentGame), 4), StringEntry(dealerQueueLabel, takeRight(dealerQueue, (size(dealerQueue) - (1 + size(toString(currentGame))))))]
221+ }
222+ else throw("One of the cards failed to be verified or game is not in state 1.")
223+ else throw(("The next game to process is " + nextGameToProcess))
224+ }
225+
226+
227+
228+@Callable(i)
229+func bet (normalBet,tieBet) = {
230+ let callerAddress = toBase58String(i.caller.bytes)
231+ let p = getPayments(i)
232+ let address = toBase58String(i.caller.bytes)
233+ if ((p != (normalBet + tieBet)))
234+ then throw("Normal bet + tie bet should be equal to the payment")
235+ else if ((p > value(gamesMaxBet())))
236+ then throw((("Payment cannot be higher than " + toString(value(gamesMaxBet()))) + ""))
237+ else if ((0 >= normalBet))
238+ then throw("Normal bet has to be greater than 0")
239+ else if ((0 > tieBet))
240+ then throw("Tie bet cannot be lower than 0")
241+ else if ((value(gamesUsedGetCounter()) >= value(gamesSetupGetCounter())))
242+ then throw("No available set up games to use.")
243+ else match getPlayerCurrentGame(address) {
244+ case CURRENTGAME: Int =>
245+ if ((4 > value(getGameState(CURRENTGAME))))
246+ then throw((("Game " + toString(CURRENTGAME)) + " is still in progress."))
247+ else createGameMetadata(address, normalBet, tieBet, i.fee)
248+ case _: Unit =>
249+ createGameMetadata(address, normalBet, tieBet, i.fee)
250+ case _ =>
251+ throw("Match error")
252+ }
253+ }
254+
255+
256+
257+@Callable(i)
258+func setupGame (gameNumber,card0,card1,card2,card3) = if (checkPermission(i.callerPublicKey))
259+ then throw("setupGame_FORBBIDEN")
260+ else match gamesSetupGetCounter() {
261+ case SETUPGAMESCOUNTER: Int =>
262+ let randomizer = (toInt(sha256((take(lastBlock.generationSignature, 16) + take(i.transactionId, 16)))) % 2)
263+ let currentGame = (SETUPGAMESCOUNTER + 1)
264+ if ((gameNumber != currentGame))
265+ then throw("Wrong game number.")
266+ else if (((randomizer % 2) == 1))
267+ then getGameSetup(currentGame, randomizer, card3, card2, card1, card0)
268+ else getGameSetup(currentGame, randomizer, card0, card1, card2, card3)
269+ case _ =>
270+ throw("InitGame Required")
271+ }
272+
273+
274+
275+@Callable(i)
276+func initGame () = if (checkPermission(i.callerPublicKey))
277+ then throw("initGame_FORBBIDEN")
278+ else match gamesSetupGetCounter() {
279+ case GAMESCOUNTER: Int =>
280+ throw("INIT_ALREADY_DONE")
281+ case _ =>
282+[IntegerEntry(setupGamesCounterLabel, 0), IntegerEntry(usedGamesCounterLabel, 0), IntegerEntry(gameMaxBetLabel, 500000000), StringEntry(dealerQueueLabel, "")]
283+ }
284+
285+
286+@Verifier(tx)
287+func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
288+

github/deemru/w8io/03bedc9 
25.98 ms