tx · 9tTeEjZKwdLMcf5MqFQ4ypKk6pAo1jcxvxoMP1EAAUiZ

3NCCNgEjGtWKLt78jWc9DiA3Jd2jmfg7BZX:  -0.10000000 Waves

2022.01.13 18:45 [1877384] smart account 3NCCNgEjGtWKLt78jWc9DiA3Jd2jmfg7BZX > SELF 0.00000000 Waves

{ "type": 13, "id": "9tTeEjZKwdLMcf5MqFQ4ypKk6pAo1jcxvxoMP1EAAUiZ", "fee": 10000000, "feeAssetId": null, "timestamp": 1642088756113, "version": 2, "chainId": 84, "sender": "3NCCNgEjGtWKLt78jWc9DiA3Jd2jmfg7BZX", "senderPublicKey": "AcdhXSF5aWK6Lmdtv3cyCZ7vehbxsNNGagWCd2FpZo1M", "proofs": [ "n8tpyCHDXKBfwhQ7tupGYcLfga1BmHvLwyjorB5pKjqxjya7squNZEQ2bosNWtXuygA9NyDqzajiVdztdZerR8T" ], "script": "base64:AAIFAAAAAAAAABQIAhIFCgMIAQESABIHCgUBCAgICAAAAA8AAAAAE2dhbWVNYXN0ZXJQdWJsaWNLZXkBAAAAIF1t2Oq4Jp6DRGnJV2x+n66xACBB37xnTL7cQnLLqBNvAAAAAAlSU0FQVUJMSUMJAAJbAAAAAQIAAAGTYmFzZTY0Ok1JSUJJekFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUkFBTUlJQkN3S0NBUUlBK0NwYnpNQktwcSs3VmFyU0RITFcwd1FTb2gyTFRiZ2wxckFoZnJ1WkdDanQ2TU80bzF2MWlMcUt5TkgzRkpzdndsTFVxbXFFN0UyV2w3TGJJUEEyNlB4TzJYQ0RmdmowT1dwN2NFSmtVQkVpeVBZQ24raXVQWFVQd3Vkb0ZnTTRXSGYwSVBiREoyTzZPZ3pRbEJCbU51Nk93cjduYUlUaUpyUEF2YWtQZ0FkbVVQdjRyT3pjdTZCUjBUOEd3c3p3cHJ2d1dabEtGNkFkMDBvbUxGRG14NjZIdkJFNTFzUkJpWElSYkpuakRobG9waXplNExvUjFGSXJRYUF1MXNmczViRUhMQTMzanZLeWJuZStJRGF3Q3NpSU5aWWRQWlYxV1djVVJDK1hBRmZCaVlDdzRQWXlndXhhQlJIb3R6TGMyZE9zQlYxSEROSWpMS1ZvUmtueXQ1MENBd0VBQVE9PQAAAAAWc2V0dXBHYW1lc0NvdW50ZXJMYWJlbAIAAAATR19TRVRVUEdBTUVTQ09VTlRFUgAAAAAVdXNlZEdhbWVzQ291bnRlckxhYmVsAgAAABJHX1VTRURHQU1FU0NPVU5URVIAAAAAEGRlYWxlclF1ZXVlTGFiZWwCAAAADUdfREVBTEVSUVVFVUUAAAAAD2dhbWVNYXhCZXRMYWJlbAIAAAAIR19NQVhCRVQBAAAAFGdhbWVzU2V0dXBHZXRDb3VudGVyAAAAAAkABBoAAAACBQAAAAR0aGlzBQAAABZzZXR1cEdhbWVzQ291bnRlckxhYmVsAQAAABNnYW1lc1VzZWRHZXRDb3VudGVyAAAAAAkABBoAAAACBQAAAAR0aGlzBQAAABV1c2VkR2FtZXNDb3VudGVyTGFiZWwBAAAAD2NoZWNrUGVybWlzc2lvbgAAAAEAAAAPY2FsbGVyUHVibGljS2V5CQEAAAACIT0AAAACBQAAAA9jYWxsZXJQdWJsaWNLZXkFAAAAE2dhbWVNYXN0ZXJQdWJsaWNLZXkBAAAAGmdldEdhbWVDYXJkc1NpZ25hdHVyZUxhYmVsAAAAAgAAAApnYW1lTnVtYmVyAAAABGNhcmQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAAkdfCQABpAAAAAEFAAAACmdhbWVOdW1iZXICAAAAD19DQVJEU0lHTkFUVVJFXwkAAaQAAAABBQAAAARjYXJkAQAAABVnZXRHYW1lQ2FyZHNTaWduYXR1cmUAAAACAAAACmdhbWVOdW1iZXIAAAAEY2FyZAkABB0AAAACBQAAAAR0aGlzCQEAAAAaZ2V0R2FtZUNhcmRzU2lnbmF0dXJlTGFiZWwAAAACBQAAAApnYW1lTnVtYmVyBQAAAARjYXJkAQAAABFnZXRHYW1lQ2FyZHNMYWJlbAAAAAIAAAAKZ2FtZU51bWJlcgAAAARjYXJkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAJHXwkAAaQAAAABBQAAAApnYW1lTnVtYmVyAgAAAAZfQ0FSRF8JAAGkAAAAAQUAAAAEY2FyZAEAAAARZ2V0R2FtZVN0YXRlTGFiZWwAAAABAAAACmdhbWVOdW1iZXIJAAEsAAAAAgkAASwAAAACAgAAAAJHXwkAAaQAAAABBQAAAApnYW1lTnVtYmVyAgAAAAZfU1RBVEUBAAAAGmdldEdhbWVTaHVmZmVsT2ZmZXNldExhYmVsAAAAAQAAAApnYW1lTnVtYmVyCQABLAAAAAIJAAEsAAAAAgIAAAACR18JAAGkAAAAAQUAAAAKZ2FtZU51bWJlcgIAAAAHX09GRlNFVAEAAAAMZ2V0R2FtZVNldHVwAAAAAwAAAApnYW1lTnVtYmVyAAAACnJhbmRvbWl6ZXIAAAAGY2FyZHMwCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABZzZXR1cEdhbWVzQ291bnRlckxhYmVsBQAAAApnYW1lTnVtYmVyCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAARZ2V0R2FtZVN0YXRlTGFiZWwAAAABBQAAAApnYW1lTnVtYmVyAAAAAAAAAAAACQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAa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", "height": 1877384, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: j4JvrbH7eAoRKn1vA2ULCLpFMGd9YBumDoVHTnKJmeN Next: 9zgD8NoTc6ZJ1zbBFLpqNarUF5BXD7PenxGTucHDMARM Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let gameMasterPublicKey = base58'T6KCB5F31CtyYUmUoR4QEe16AkJboVcubXTyRZZECS9'
4+let gameMasterPublicKey = base58'7Hi4o6vBstRs79NMVMjEove52dmP87RAcvNDAXN8C4Wi'
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 setupGamesCounterLabel = "G_SETUPGAMESCOUNTER"
99
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let gameMasterPublicKey = base58'T6KCB5F31CtyYUmUoR4QEe16AkJboVcubXTyRZZECS9'
4+let gameMasterPublicKey = base58'7Hi4o6vBstRs79NMVMjEove52dmP87RAcvNDAXN8C4Wi'
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 setupGamesCounterLabel = "G_SETUPGAMESCOUNTER"
99
1010 let usedGamesCounterLabel = "G_USEDGAMESCOUNTER"
1111
1212 let dealerQueueLabel = "G_DEALERQUEUE"
1313
1414 let gameMaxBetLabel = "G_MAXBET"
1515
1616 func gamesSetupGetCounter () = getInteger(this, setupGamesCounterLabel)
1717
1818
1919 func gamesUsedGetCounter () = getInteger(this, usedGamesCounterLabel)
2020
2121
2222 func checkPermission (callerPublicKey) = (callerPublicKey != gameMasterPublicKey)
2323
2424
2525 func getGameCardsSignatureLabel (gameNumber,card) = ((("G_" + toString(gameNumber)) + "_CARDSIGNATURE_") + toString(card))
2626
2727
2828 func getGameCardsSignature (gameNumber,card) = getString(this, getGameCardsSignatureLabel(gameNumber, card))
2929
3030
3131 func getGameCardsLabel (gameNumber,card) = ((("G_" + toString(gameNumber)) + "_CARD_") + toString(card))
3232
3333
3434 func getGameStateLabel (gameNumber) = (("G_" + toString(gameNumber)) + "_STATE")
3535
3636
3737 func getGameShuffelOffesetLabel (gameNumber) = (("G_" + toString(gameNumber)) + "_OFFSET")
3838
3939
4040 func getGameSetup (gameNumber,randomizer,cards0) = [IntegerEntry(setupGamesCounterLabel, gameNumber), IntegerEntry(getGameStateLabel(gameNumber), 0), IntegerEntry(getGameShuffelOffesetLabel(gameNumber), randomizer), StringEntry(getGameCardsSignatureLabel(gameNumber, 0), cards0)]
4141
4242
4343 @Callable(i)
4444 func verifyCard (card,gameNumber,cardNumber) = {
4545 let t = rsaVerify_16Kb(SHA256, toBytes(card), fromBase64String(split(value(getGameCardsSignature(gameNumber, cardNumber)), " ")[0]), RSAPUBLIC)
4646 throw(toString(t))
4747 }
4848
4949
5050
5151 @Callable(i)
5252 func initGame () = if (checkPermission(i.callerPublicKey))
5353 then throw("initGame_FORBBIDEN")
5454 else match gamesSetupGetCounter() {
5555 case GAMESCOUNTER: Int =>
5656 throw("INIT_ALREADY_DONE")
5757 case _ =>
5858 [IntegerEntry(setupGamesCounterLabel, 0), IntegerEntry(usedGamesCounterLabel, 0), IntegerEntry(gameMaxBetLabel, 100000000), StringEntry(dealerQueueLabel, "")]
5959 }
6060
6161
6262
6363 @Callable(i)
6464 func setupGame (gameNumber,cards0,cards1,cards2,cards3) = if (checkPermission(i.callerPublicKey))
6565 then throw("setupGame_FORBIDEN")
6666 else match gamesSetupGetCounter() {
6767 case SETUPGAMESCOUNTER: Int =>
6868 let randomizer = (toInt(sha256((take(lastBlock.generationSignature, 16) + take(i.transactionId, 16)))) % 2)
6969 let currentGame = (SETUPGAMESCOUNTER + 1)
7070 if ((gameNumber != currentGame))
7171 then throw("Wrong game number.")
7272 else getGameSetup(currentGame, randomizer, cards0)
7373 case _ =>
7474 throw("InitGame Required")
7575 }
7676
7777
7878 @Verifier(tx)
7979 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
8080

github/deemru/w8io/169f3d6 
43.81 ms