tx · GyGuRSS26AAFC1ZzhktVJUkhRNdpd8P5ceqwzmAabYLg

3N6hQF6HBBQ5JCKB8Xs17Q61wkG3VrLvbGd:  -0.10001000 Waves

2022.01.16 02:11 [1880716] smart account 3N6hQF6HBBQ5JCKB8Xs17Q61wkG3VrLvbGd > SELF 0.00000000 Waves

{ "type": 13, "id": "GyGuRSS26AAFC1ZzhktVJUkhRNdpd8P5ceqwzmAabYLg", "fee": 10001000, "feeAssetId": null, "timestamp": 1642288315505, "version": 2, "chainId": 84, "sender": "3N6hQF6HBBQ5JCKB8Xs17Q61wkG3VrLvbGd", "senderPublicKey": "7Hi4o6vBstRs79NMVMjEove52dmP87RAcvNDAXN8C4Wi", "proofs": [ "5TpsvtjdGLayQbJMEakiez1UsP6iAd1jdifax8u2zFxUBQYKZwc8NFtXEdFNVYTsq9iGqZGsNGPh7hLyPLz8C78P" ], "script": "base64:AAIEAAAAAAAAACkIAhIFCgMBCAgSABIAEgUKAwEICBIECgIBARIHCgUBCAgICBIECgIBAQAAACMAAAAAE2dhbWVNYXN0ZXJQdWJsaWNLZXkBAAAAIIdjXkgFFtrkHsQ9EVCCVH0dcNZ4QrNMHlHueDDmJyUCAAAAAAlSU0FQVUJMSUMJAAJbAAAAAQIAAAGTYmFzZTY0Ok1JSUJJekFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUkFBTUlJQkN3S0NBUUlBK0NwYnpNQktwcSs3VmFyU0RITFcwd1FTb2gyTFRiZ2wxckFoZnJ1WkdDanQ2TU80bzF2MWlMcUt5TkgzRkpzdndsTFVxbXFFN0UyV2w3TGJJUEEyNlB4TzJYQ0RmdmowT1dwN2NFSmtVQkVpeVBZQ24raXVQWFVQd3Vkb0ZnTTRXSGYwSVBiREoyTzZPZ3pRbEJCbU51Nk93cjduYUlUaUpyUEF2YWtQZ0FkbVVQdjRyT3pjdTZCUjBUOEd3c3p3cHJ2d1dabEtGNkFkMDBvbUxGRG14NjZIdkJFNTFzUkJpWElSYkpuakRobG9waXplNExvUjFGSXJRYUF1MXNmczViRUhMQTMzanZLeWJuZStJRGF3Q3NpSU5aWWRQWlYxV1djVVJDK1hBRmZCaVlDdzRQWXlndXhhQlJIb3R6TGMyZE9zQlYxSEROSWpMS1ZvUmtueXQ1MENBd0VBQVE9PQAAAAAJZ2FtZVRva2VuAQAAACCKME2vRya1esEFRBLFLK0qVKxA+0PLG3pq12GK+jOuSAAAAAAMY2FyZFBvc2l0aW9uAAAAAAAAAAADAAAAABZzZXR1cEdhbWVzQ291bnRlckxhYmVsAgAAABNHX1NFVFVQR0FNRVNDT1VOVEVSAAAAABV1c2VkR2FtZXNDb3VudGVyTGFiZWwCAAAAEkdfVVNFREdBTUVTQ09VTlRFUgAAAAAQZGVhbGVyUXVldWVMYWJlbAIAAAANR19ERUFMRVJRVUVVRQAAAAAPZ2FtZU1heEJldExhYmVsAgAAAAhHX01BWEJFVAAAAAAPZ2FtZU1pbkJldExhYmVsAgAAAAhHX01JTkJFVAEAAAALZ2FtZXNNYXhCZXQAAAAACQAEGgAAAAIFAAAABHRoaXMFAAAAD2dhbWVNYXhCZXRMYWJlbAEAAAALZ2FtZXNNaW5CZXQAAAAACQAEGgAAAAIFAAAABHRoaXMFAAAAD2dhbWVNaW5CZXRMYWJlbAEAAAAUZ2FtZXNTZXR1cEdldENvdW50ZXIAAAAACQAEGgAAAAIFAAAABHRoaXMFAAAAFnNldHVwR2FtZXNDb3VudGVyTGFiZWwBAAAAE2dhbWVzVXNlZEdldENvdW50ZXIAAAAACQAEGgAAAAIFAAAABHRoaXMFAAAAFXVzZWRHYW1lc0NvdW50ZXJMYWJlbAEAAAAOZ2V0RGVhbGVyUXVldWUAAAAACQAEHQAAAAIFAAAABHRoaXMFAAAAEGRlYWxlclF1ZXVlTGFiZWwBAAAAD2NoZWNrUGVybWlzc2lvbgAAAAEAAAAPY2FsbGVyUHVibGljS2V5CQEAAAACIT0AAAACBQAAAA9jYWxsZXJQdWJsaWNLZXkFAAAAE2dhbWVNYXN0ZXJQdWJsaWNLZXkBAAAAFWdldEdhbWVCZXRBbW91bnRMYWJlbAAAAAEAAAAKZ2FtZU51bWJlcgkAASwAAAACCQABLAAAAAICAAAAAkdfCQABpAAAAAEFAAAACmdhbWVOdW1iZXICAAAACl9CRVRBTU9VTlQBAAAAFWdldEdhbWVUaWVBbW91bnRMYWJlbAAAAAEAAAAKZ2FtZU51bWJlcgkAASwAAAACCQABLAAAAAICAAAAAkdfCQABpAAAAAEFAAAACmdhbWVOdW1iZXICAAAACl9USUVBTU9VTlQBAAAAEmdldEdhbWVQbGF5ZXJMYWJlbAAAAAEAAAAKZ2FtZU51bWJlcgkAASwAAAACCQABLAAAAAICAAAAAkdfCQABpAAAAAEFAAAACmdhbWVOdW1iZXICAAAAB19QTEFZRVIBAAAAEmdldEdhbWVQYXlvdXRMYWJlbAAAAAEAAAAKZ2FtZU51bWJlcgkAASwAAAACCQABLAAAAAICAAAAAkdfCQABpAAAAAEFAAAACmdhbWVOdW1iZXICAAAAB19QQVlPVVQBAAAAEWdldEdhbWVTdGF0ZUxhYmVsAAAAAQAAAApnYW1lTnVtYmVyCQABLAAAAAIJAAEsAAAAAgIAAAACR18JAAGkAAAAAQUAAAAKZ2FtZU51bWJlcgIAAAAGX1NUQVRFAQAAABpnZXRHYW1lU2h1ZmZlbE9mZmVzZXRMYWJlbAAAAAEAAAAKZ2FtZU51bWJlcgkAASwAAAACCQABLAAAAAICAAAAAkdfCQABpAAAAAEFAAAACmdhbWVOdW1iZXICAAAAB19PRkZTRVQBAAAAGmdldEdhbWVDYXJkc1NpZ25hdHVyZUxhYmVsAAAAAgAAAApnYW1lTnVtYmVyAAAABGNhcmQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAAkdfCQABpAAAAAEFAAAACmdhbWVOdW1iZXICAAAAD19DQVJEU0lHTkFUVVJFXwkAAaQAAAABBQAAAARjYXJkAQAAABlnZXRQbGF5ZXJDdXJyZW50R2FtZUxhYmVsAAAAAQAAAAdhZGRyZXNzCQABLAAAAAIJAAEsAAAAAgIAAAACUF8FAAAAB2FkZHJlc3MCAAAADF9DVVJSRU5UR0FNRQEAAAAUZ2V0UGxheWVyQ3VycmVudEdhbWUAAAABAAAAB2FkZHJlc3MJAAQaAAAAAgUAAAAEdGhpcwkBAAAAGWdldFBsYXllckN1cnJlbnRHYW1lTGFiZWwAAAABBQAAAAdhZGRyZXNzAQAAABBnZXRHYW1lQmV0QW1vdW50AAAAAQAAAApnYW1lTnVtYmVyCQAEGgAAAAIFAAAABHRoaXMJAQAAABVnZXRHYW1lQmV0QW1vdW50TGFiZWwAAAABBQAAAApnYW1lTnVtYmVyAQAAABBnZXRHYW1lVGllQW1vdW50AAAAAQAAAApnYW1lTnVtYmVyCQAEGgAAAAIFAAAABHRoaXMJAQAAABVnZXRHYW1lVGllQW1vdW50TGFiZWwAAAABBQAAAApnYW1lTnVtYmVyAQAAAAxnZXRHYW1lU3RhdGUAAAABAAAACmdhbWVOdW1iZXIJAAQaAAAAAgUAAAAEdGhpcwkBAAAAEWdldEdhbWVTdGF0ZUxhYmVsAAAAAQUAAAAKZ2FtZU51bWJlcgEAAAANZ2V0R2FtZVBsYXllcgAAAAEAAAAKZ2FtZU51bWJlcgkABB0AAAACBQAAAAR0aGlzCQEAAAASZ2V0R2FtZVBsYXllckxhYmVsAAAAAQUAAAAKZ2FtZU51bWJlcgEAAAAVZ2V0R2FtZUNhcmRzU2lnbmF0dXJlAAAAAgAAAApnYW1lTnVtYmVyAAAABGNhcmQJAAQdAAAAAgUAAAAEdGhpcwkBAAAAGmdldEdhbWVDYXJkc1NpZ25hdHVyZUxhYmVsAAAAAgUAAAAKZ2FtZU51bWJlcgUAAAAEY2FyZAEAAAARZ2V0R2FtZUNhcmRzTGFiZWwAAAACAAAACmdhbWVOdW1iZXIAAAAEY2FyZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAACR18JAAGkAAAAAQUAAAAKZ2FtZU51bWJlcgIAAAAGX0NBUkRfCQABpAAAAAEFAAAABGNhcmQBAAAADGdldEdhbWVTZXR1cAAAAAYAAAAKZ2FtZU51bWJlcgAAAApyYW5kb21pemVyAAAABmNhcmRzMAAAAAZjYXJkczEAAAAGY2FyZHMyAAAABmNhcmRzMwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAWc2V0dXBHYW1lc0NvdW50ZXJMYWJlbAUAAAAKZ2FtZU51bWJlcgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAEWdldEdhbWVTdGF0ZUxhYmVsAAAAAQUAAAAKZ2FtZU51bWJlcgAAAAAAAAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAGmdldEdhbWVTaHVmZmVsT2ZmZXNldExhYmVsAAAAAQUAAAAKZ2FtZU51bWJlcgUAAAAKcmFuZG9taXplcgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAaZ2V0R2FtZUNhcmRzU2lnbmF0dXJlTGFiZWwAAAACBQAAAApnYW1lTnVtYmVyAAAAAAAAAAAABQAAAAZjYXJkczAJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAGmdldEdhbWVDYXJkc1NpZ25hdHVyZUxhYmVsAAAAAgUAAAAKZ2FtZU51bWJlcgAAAAAAAAAAAQUAAAAGY2FyZHMxCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABpnZXRHYW1lQ2FyZHNTaWduYXR1cmVMYWJlbAAAAAIFAAAACmdhbWVOdW1iZXIAAAAAAAAAAAIFAAAABmNhcmRzMgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAaZ2V0R2FtZUNhcmRzU2lnbmF0dXJlTGFiZWwAAAACBQAAAApnYW1lTnVtYmVyAAAAAAAAAAADBQAAAAZjYXJkczMFAAAAA25pbAEAAAASY3JlYXRlR2FtZU1ldGFkYXRhAAAAAwAAAAdhZGRyZXNzAAAACWJldEFtb3VudAAAAAl0aWVBbW91bnQEAAAADWdhbWVUb1Jlc2VydmUJAABkAAAAAgkBAAAABXZhbHVlAAAAAQkBAAAAE2dhbWVzVXNlZEdldENvdW50ZXIAAAAAAAAAAAAAAAABBAAAAAtkZWFsZXJRdWV1ZQkBAAAABXZhbHVlAAAAAQkBAAAADmdldERlYWxlclF1ZXVlAAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAVdXNlZEdhbWVzQ291bnRlckxhYmVsBQAAAA1nYW1lVG9SZXNlcnZlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAZZ2V0UGxheWVyQ3VycmVudEdhbWVMYWJlbAAAAAEFAAAAB2FkZHJlc3MFAAAADWdhbWVUb1Jlc2VydmUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABFnZXRHYW1lU3RhdGVMYWJlbAAAAAEFAAAADWdhbWVUb1Jlc2VydmUAAAAAAAAAAAEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABVnZXRHYW1lQmV0QW1vdW50TGFiZWwAAAABBQAAAA1nYW1lVG9SZXNlcnZlBQAAAAliZXRBbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABVnZXRHYW1lVGllQW1vdW50TGFiZWwAAAABBQAAAA1nYW1lVG9SZXNlcnZlBQAAAAl0aWVBbW91bnQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAQZGVhbGVyUXVldWVMYWJlbAkAASwAAAACCQABLAAAAAIJAQAAAAV2YWx1ZQAAAAEJAQAAAA5nZXREZWFsZXJRdWV1ZQAAAAACAAAAASwJAAGkAAAAAQUAAAANZ2FtZVRvUmVzZXJ2ZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAASZ2V0R2FtZVBsYXllckxhYmVsAAAAAQUAAAANZ2FtZVRvUmVzZXJ2ZQUAAAAHYWRkcmVzcwUAAAADbmlsAQAAAAxnZXRDYXJkVmFsdWUAAAABAAAA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", "height": 1880716, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BAXHWDU3MNCdZhADqs1QFrDNwjVEFerxDa9nnxLhKYqt Next: DDCa1dXQktwScsywHS9t1eA5XFR6xocgMnPnBicbNG6R Diff:
OldNewDifferences
33 {-# CONTENT_TYPE DAPP #-}
44 let gameMasterPublicKey = base58'A7VvRHtZro8bvGa9KAahiP9xovdKJ5hGsTjHLMa6nRPo'
55
6-let RSAPUBLIC = fromBase64String("base64:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxi5zy1H6T2pQx7qgMph9s7/Wg819sob9AvQsGsc3Dzz5ZjTkhvNLQPf1wtQ+jVCIT8SAjgPVWWP3YI8ozGzKW49SqLiaSqmU5Gn4pjR9NYIqsNDJmX+9GMpF1dermPV5HEYxBMQ2NAkMsWA1XIYc/aIa0f/wVgMe209MUM2oUwyEKA1qAEJmsQkXCjJOAAkUQHi6HTyuoQqjt5OZloS+ix2wNyyftBj3wpNgQ8w+JaI6htg7Nml7/NeoukuIdtUSz9nJi4asGco9jYr7q0tgVDQl6NlBHMN6CNJahpPZN/YNAb+CzAitZGlNcWIawLFec1fZOO8hbaHTuQ843j6jVQIDAQAB")
6+let RSAPUBLIC = fromBase64String("base64:MIIBIzANBgkqhkiG9w0BAQEFAAOCARAAMIIBCwKCAQIA+CpbzMBKpq+7VarSDHLW0wQSoh2LTbgl1rAhfruZGCjt6MO4o1v1iLqKyNH3FJsvwlLUqmqE7E2Wl7LbIPA26PxO2XCDfvj0OWp7cEJkUBEiyPYCn+iuPXUPwudoFgM4WHf0IPbDJ2O6OgzQlBBmNu6Owr7naITiJrPAvakPgAdmUPv4rOzcu6BR0T8GwszwprvwWZlKF6Ad00omLFDmx66HvBE51sRBiXIRbJnjDhlopize4LoR1FIrQaAu1sfs5bEHLA33jvKybne+IDawCsiINZYdPZV1WWcURC+XAFfBiYCw4PYyguxaBRHotzLc2dOsBV1HDNIjLKVoRknyt50CAwEAAQ==")
77
88 let gameToken = base58'AJRyxpsv9Z4v46eg9b5TpnVXn3DteJYPHRJSbMckYPWw'
99
106106
107107
108108 func verifyCard (card,gameNumber,cardNumber) = rsaVerify_16Kb(SHA256, toBytes(card), fromBase64String(split(value(getGameCardsSignature(gameNumber, cardNumber)), " ")[0]), RSAPUBLIC)
109-
110-
111-@Callable(i)
112-func changeStatus (gameNumber,status) = if (checkPermission(i.callerPublicKey))
113- then throw("changeStatus_FORBBIDEN")
114- else [IntegerEntry(getGameStateLabel(gameNumber), status)]
115-
116109
117110
118111 @Callable(i)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let gameMasterPublicKey = base58'A7VvRHtZro8bvGa9KAahiP9xovdKJ5hGsTjHLMa6nRPo'
55
6-let RSAPUBLIC = fromBase64String("base64:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxi5zy1H6T2pQx7qgMph9s7/Wg819sob9AvQsGsc3Dzz5ZjTkhvNLQPf1wtQ+jVCIT8SAjgPVWWP3YI8ozGzKW49SqLiaSqmU5Gn4pjR9NYIqsNDJmX+9GMpF1dermPV5HEYxBMQ2NAkMsWA1XIYc/aIa0f/wVgMe209MUM2oUwyEKA1qAEJmsQkXCjJOAAkUQHi6HTyuoQqjt5OZloS+ix2wNyyftBj3wpNgQ8w+JaI6htg7Nml7/NeoukuIdtUSz9nJi4asGco9jYr7q0tgVDQl6NlBHMN6CNJahpPZN/YNAb+CzAitZGlNcWIawLFec1fZOO8hbaHTuQ843j6jVQIDAQAB")
6+let RSAPUBLIC = fromBase64String("base64:MIIBIzANBgkqhkiG9w0BAQEFAAOCARAAMIIBCwKCAQIA+CpbzMBKpq+7VarSDHLW0wQSoh2LTbgl1rAhfruZGCjt6MO4o1v1iLqKyNH3FJsvwlLUqmqE7E2Wl7LbIPA26PxO2XCDfvj0OWp7cEJkUBEiyPYCn+iuPXUPwudoFgM4WHf0IPbDJ2O6OgzQlBBmNu6Owr7naITiJrPAvakPgAdmUPv4rOzcu6BR0T8GwszwprvwWZlKF6Ad00omLFDmx66HvBE51sRBiXIRbJnjDhlopize4LoR1FIrQaAu1sfs5bEHLA33jvKybne+IDawCsiINZYdPZV1WWcURC+XAFfBiYCw4PYyguxaBRHotzLc2dOsBV1HDNIjLKVoRknyt50CAwEAAQ==")
77
88 let gameToken = base58'AJRyxpsv9Z4v46eg9b5TpnVXn3DteJYPHRJSbMckYPWw'
99
1010 let cardPosition = 3
1111
1212 let setupGamesCounterLabel = "G_SETUPGAMESCOUNTER"
1313
1414 let usedGamesCounterLabel = "G_USEDGAMESCOUNTER"
1515
1616 let dealerQueueLabel = "G_DEALERQUEUE"
1717
1818 let gameMaxBetLabel = "G_MAXBET"
1919
2020 let gameMinBetLabel = "G_MINBET"
2121
2222 func gamesMaxBet () = getInteger(this, gameMaxBetLabel)
2323
2424
2525 func gamesMinBet () = getInteger(this, gameMinBetLabel)
2626
2727
2828 func gamesSetupGetCounter () = getInteger(this, setupGamesCounterLabel)
2929
3030
3131 func gamesUsedGetCounter () = getInteger(this, usedGamesCounterLabel)
3232
3333
3434 func getDealerQueue () = getString(this, dealerQueueLabel)
3535
3636
3737 func checkPermission (callerPublicKey) = (callerPublicKey != gameMasterPublicKey)
3838
3939
4040 func getGameBetAmountLabel (gameNumber) = (("G_" + toString(gameNumber)) + "_BETAMOUNT")
4141
4242
4343 func getGameTieAmountLabel (gameNumber) = (("G_" + toString(gameNumber)) + "_TIEAMOUNT")
4444
4545
4646 func getGamePlayerLabel (gameNumber) = (("G_" + toString(gameNumber)) + "_PLAYER")
4747
4848
4949 func getGamePayoutLabel (gameNumber) = (("G_" + toString(gameNumber)) + "_PAYOUT")
5050
5151
5252 func getGameStateLabel (gameNumber) = (("G_" + toString(gameNumber)) + "_STATE")
5353
5454
5555 func getGameShuffelOffesetLabel (gameNumber) = (("G_" + toString(gameNumber)) + "_OFFSET")
5656
5757
5858 func getGameCardsSignatureLabel (gameNumber,card) = ((("G_" + toString(gameNumber)) + "_CARDSIGNATURE_") + toString(card))
5959
6060
6161 func getPlayerCurrentGameLabel (address) = (("P_" + address) + "_CURRENTGAME")
6262
6363
6464 func getPlayerCurrentGame (address) = getInteger(this, getPlayerCurrentGameLabel(address))
6565
6666
6767 func getGameBetAmount (gameNumber) = getInteger(this, getGameBetAmountLabel(gameNumber))
6868
6969
7070 func getGameTieAmount (gameNumber) = getInteger(this, getGameTieAmountLabel(gameNumber))
7171
7272
7373 func getGameState (gameNumber) = getInteger(this, getGameStateLabel(gameNumber))
7474
7575
7676 func getGamePlayer (gameNumber) = getString(this, getGamePlayerLabel(gameNumber))
7777
7878
7979 func getGameCardsSignature (gameNumber,card) = getString(this, getGameCardsSignatureLabel(gameNumber, card))
8080
8181
8282 func getGameCardsLabel (gameNumber,card) = ((("G_" + toString(gameNumber)) + "_CARD_") + toString(card))
8383
8484
8585 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)]
8686
8787
8888 func createGameMetadata (address,betAmount,tieAmount) = {
8989 let gameToReserve = (value(gamesUsedGetCounter()) + 1)
9090 let dealerQueue = value(getDealerQueue())
9191 [IntegerEntry(usedGamesCounterLabel, gameToReserve), IntegerEntry(getPlayerCurrentGameLabel(address), gameToReserve), IntegerEntry(getGameStateLabel(gameToReserve), 1), IntegerEntry(getGameBetAmountLabel(gameToReserve), betAmount), IntegerEntry(getGameTieAmountLabel(gameToReserve), tieAmount), StringEntry(dealerQueueLabel, ((value(getDealerQueue()) + ",") + toString(gameToReserve))), StringEntry(getGamePlayerLabel(gameToReserve), address)]
9292 }
9393
9494
9595 func getCardValue (stringCard) = parseIntValue(take(stringCard, 2))
9696
9797
9898 func getPayments (i) = if ((size(i.payments) == 0))
9999 then throw("Payment must be attached")
100100 else if ((size(i.payments) == 1))
101101 then {
102102 let pmt = i.payments[0]
103103 pmt.amount
104104 }
105105 else throw("There should be only one payment")
106106
107107
108108 func verifyCard (card,gameNumber,cardNumber) = rsaVerify_16Kb(SHA256, toBytes(card), fromBase64String(split(value(getGameCardsSignature(gameNumber, cardNumber)), " ")[0]), RSAPUBLIC)
109-
110-
111-@Callable(i)
112-func changeStatus (gameNumber,status) = if (checkPermission(i.callerPublicKey))
113- then throw("changeStatus_FORBBIDEN")
114- else [IntegerEntry(getGameStateLabel(gameNumber), status)]
115-
116109
117110
118111 @Callable(i)
119112 func revealRound2 (currentGame,card2,card3) = if (checkPermission(i.callerPublicKey))
120113 then throw("revealRound2_FORBBIDEN")
121114 else {
122115 let dealerQueue = value(getDealerQueue())
123116 let nextGameToProcess = split(dealerQueue, ",")[1]
124117 if ((nextGameToProcess == toString(currentGame)))
125118 then if (if (if ((value(getGameState(currentGame)) == 3))
126119 then verifyCard(card2, currentGame, 2)
127120 else false)
128121 then verifyCard(card3, currentGame, 3)
129122 else false)
130123 then {
131124 let cardPlayer = getCardValue(split(card2, "+")[cardPosition])
132125 let cardCasino = getCardValue(split(card3, "+")[cardPosition])
133126 if ((cardPlayer >= cardCasino))
134127 then {
135128 let normalBet = value(getGameBetAmount(currentGame))
136129 let address = value(addressFromString(value(getGamePlayer(currentGame))))
137130 [StringEntry(getGameCardsLabel(currentGame, 2), card2), StringEntry(getGameCardsLabel(currentGame, 3), card3), IntegerEntry(getGameStateLabel(currentGame), 6), StringEntry(dealerQueueLabel, takeRight(dealerQueue, (size(dealerQueue) - (1 + size(toString(currentGame)))))), ScriptTransfer(address, ((normalBet * 2) + (normalBet - i.fee)), unit)]
138131 }
139132 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))))))]
140133 }
141134 else throw("One of the cards failed to be verified or game is not in state 1.")
142135 else throw(("The next game to process is " + nextGameToProcess))
143136 }
144137
145138
146139
147140 @Callable(i)
148141 func war () = {
149142 let address = toBase58String(i.caller.bytes)
150143 let currentGame = value(getPlayerCurrentGame(address))
151144 if ((value(getGameState(currentGame)) != 2))
152145 then throw("Game is not in correct state.")
153146 else {
154147 let betAmount = value(getGameBetAmount(currentGame))
155148 let p = getPayments(i)
156149 if (((p + i.fee) != betAmount))
157150 then throw((("Payment must me same as the original bet (" + toString(betAmount)) + ")"))
158151 else [IntegerEntry(getGameStateLabel(currentGame), 3), StringEntry(dealerQueueLabel, ((value(getDealerQueue()) + ",") + toString(currentGame)))]
159152 }
160153 }
161154
162155
163156
164157 @Callable(i)
165158 func surrender () = {
166159 let address = toBase58String(i.caller.bytes)
167160 let currentGame = value(getPlayerCurrentGame(address))
168161 if ((value(getGameState(currentGame)) != 2))
169162 then throw("Game is not in correct state.")
170163 else {
171164 let betAmount = value(getGameBetAmount(currentGame))
172165 let dealerQueue = value(getDealerQueue())
173166 [IntegerEntry(getGameStateLabel(currentGame), 5), ScriptTransfer(i.caller, (betAmount / 2), unit)]
174167 }
175168 }
176169
177170
178171
179172 @Callable(i)
180173 func revealRound1 (currentGame,card0,card1) = if (checkPermission(i.callerPublicKey))
181174 then throw("revealRound1_FORBBIDEN")
182175 else {
183176 let dealerQueue = value(getDealerQueue())
184177 let nextGameToProcess = split(dealerQueue, ",")[1]
185178 if ((nextGameToProcess == toString(currentGame)))
186179 then if (if (if ((value(getGameState(currentGame)) == 1))
187180 then verifyCard(card0, currentGame, 0)
188181 else false)
189182 then verifyCard(card1, currentGame, 1)
190183 else false)
191184 then {
192185 let cardPlayer = getCardValue(split(card0, "+")[cardPosition])
193186 let cardCasino = getCardValue(split(card1, "+")[cardPosition])
194187 if ((cardPlayer == cardCasino))
195188 then {
196189 let tieBet = value(getGameTieAmount(currentGame))
197190 let address = value(addressFromString(value(getGamePlayer(currentGame))))
198191 if ((tieBet != 0))
199192 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)))))), ScriptTransfer(address, ((tieBet * 10) + tieBet), unit)]
200193 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))))))]
201194 }
202195 else if ((cardPlayer > cardCasino))
203196 then {
204197 let normalBet = value(getGameBetAmount(currentGame))
205198 let address = value(addressFromString(value(getGamePlayer(currentGame))))
206199 [StringEntry(getGameCardsLabel(currentGame, 0), card0), StringEntry(getGameCardsLabel(currentGame, 1), card1), IntegerEntry(getGameStateLabel(currentGame), 4), StringEntry(dealerQueueLabel, takeRight(dealerQueue, (size(dealerQueue) - (1 + size(toString(currentGame)))))), ScriptTransfer(address, normalBet, unit)]
207200 }
208201 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))))))]
209202 }
210203 else throw("One of the cards failed to be verified or game is not in state 1.")
211204 else throw(("The next game to process is " + nextGameToProcess))
212205 }
213206
214207
215208
216209 @Callable(i)
217210 func bet (normalBet,tieBet) = {
218211 let callerAddress = toBase58String(i.caller.bytes)
219212 let p = getPayments(i)
220213 let betAmount = (normalBet + i.fee)
221214 let tieAmount = tieBet
222215 let address = toBase58String(i.caller.bytes)
223216 if ((p != (normalBet + tieBet)))
224217 then throw("normal bet + tie bet should be equal to the payment")
225218 else if (if ((value(gamesMinBet()) > p))
226219 then true
227220 else (p > value(gamesMaxBet())))
228221 then throw((((("Payment needs to be in the following interval [" + toString(value(gamesMinBet()))) + " ") + toString(value(gamesMaxBet()))) + "]"))
229222 else if ((value(gamesUsedGetCounter()) >= value(gamesSetupGetCounter())))
230223 then throw("No available set up games to use.")
231224 else match getPlayerCurrentGame(address) {
232225 case CURRENTGAME: Int =>
233226 if ((4 > value(getGameState(CURRENTGAME))))
234227 then throw((("Game " + toString(CURRENTGAME)) + " is still in progress."))
235228 else createGameMetadata(address, betAmount, tieAmount)
236229 case _: Unit =>
237230 createGameMetadata(address, betAmount, tieAmount)
238231 case _ =>
239232 throw("Match error")
240233 }
241234 }
242235
243236
244237
245238 @Callable(i)
246239 func setupGame (gameNumber,card0,card1,card2,card3) = if (checkPermission(i.callerPublicKey))
247240 then throw("setupGame_FORBBIDEN")
248241 else match gamesSetupGetCounter() {
249242 case SETUPGAMESCOUNTER: Int =>
250243 let randomizer = (toInt(sha256((take(lastBlock.generationSignature, 16) + take(i.transactionId, 16)))) % 2)
251244 let currentGame = (SETUPGAMESCOUNTER + 1)
252245 if ((gameNumber != currentGame))
253246 then throw("Wrong game number.")
254247 else if (((randomizer % 2) == 1))
255248 then getGameSetup(currentGame, randomizer, card3, card2, card1, card0)
256249 else getGameSetup(currentGame, randomizer, card0, card1, card2, card3)
257250 case _ =>
258251 throw("InitGame Required")
259252 }
260253
261254
262255
263256 @Callable(i)
264257 func initGame (maxBet,minBet) = if (checkPermission(i.callerPublicKey))
265258 then throw("initGame_FORBBIDEN")
266259 else match gamesSetupGetCounter() {
267260 case GAMESCOUNTER: Int =>
268261 throw("INIT_ALREADY_DONE")
269262 case _ =>
270263 [IntegerEntry(setupGamesCounterLabel, 0), IntegerEntry(usedGamesCounterLabel, 0), IntegerEntry(gameMaxBetLabel, maxBet), IntegerEntry(gameMinBetLabel, minBet), StringEntry(dealerQueueLabel, "")]
271264 }
272265
273266
274267 @Verifier(tx)
275268 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
276269

github/deemru/w8io/169f3d6 
57.79 ms