tx · FRKTuuhc2kBiHxtqFrQUXhPxDgFnPDx7PyDbw4hsWChi

3My9cBgDYLyeT1YF8ip9XxqwWvJMjj8WdeM:  -0.01400000 Waves

2019.08.14 09:21 [630371] smart account 3My9cBgDYLyeT1YF8ip9XxqwWvJMjj8WdeM > SELF 0.00000000 Waves

{ "type": 13, "id": "FRKTuuhc2kBiHxtqFrQUXhPxDgFnPDx7PyDbw4hsWChi", "fee": 1400000, "feeAssetId": null, "timestamp": 1565763637995, "version": 1, "sender": "3My9cBgDYLyeT1YF8ip9XxqwWvJMjj8WdeM", "senderPublicKey": "bqA3HaxNcnpEYdb6HPwTmHwT37CvHkYMre23mRonqjs", "proofs": [ "4bZ7d7XQ5z4uavb6wF2SYeLsezK8VWpEEPdfssow4CKffBZxgQ2H5DhoNbGNP4MxYiRD9An19dWaeU1PRJVfcMcz" ], "script": "base64:AAIDAAAAAAAAAAAAAAA+AAAAAAljb3B5cmlnaHQCAAAAHkNvcHlyaWdodCAoYykgMjAxOSBNYURhTWEgTGFicwAAAAAHY3JlYXRvcgIAAAAjQGRhaWRhbG9zIC0gdHdpdHRlci5jb20vdHdfZGFpZGFsb3MAAAAABHRlYW0CAAAAKk1hRGFNYSBMYWJzIGh0dHBzOi8vZ2l0bGFiLmNvbS9tYWRhbWFsYWJzLwAAAAAHbGljZW5zZQIAAAALTUlUIExpY2Vuc2UAAAAAC2xpY2Vuc2VMaW5rAgAAAD90bGRybGVnYWwuY29tL2xpY2Vuc2UvbWl0LWxpY2Vuc2UgLCBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQAAAAAD3NlcnZlclB1YmxpY0tleQEAAAAgnOXNcf3eEU6iBT3lrgsiDk6+e51O99qVhJ9qumndnT0AAAAAD3dhbGxldFB1YmxpY0tleQEAAAAgjn2bVZshOLJ2tKyHmnsNODTqNa4L3sjANfQnGFjxTC0AAAAAA2ZlZQAAAAAAAAehIAAAAAAIT05FV0FWRVMAAAAAAAX14QAAAAAADnBlcmlvZEdhbWVQbGF5AAAAAAAAAAACAAAAAAV3aGVlbAkABEwAAAACAgAAAAE1CQAETAAAAAICAAAAAjI0CQAETAAAAAICAAAAAjE2CQAETAAAAAICAAAAAjMzCQAETAAAAAICAAAAATEJAARMAAAAAgIAAAACMjAJAARMAAAAAgIAAAACMTQJAARMAAAAAgIAAAACMzEJAARMAAAAAgIAAAABOQkABEwAAAACAgAAAAIyMgkABEwAAAACAgAAAAIxOAkABEwAAAACAgAAAAIyOQkABEwAAAACAgAAAAE3CQAETAAAAAICAAAAAjI4CQAETAAAAAICAAAAAjEyCQAETAAAAAICAAAAAjM1CQAETAAAAAICAAAAATMJAARMAAAAAgIAAAACMjYJAARMAAAAAgIAAAABMAkABEwAAAACAgAAAAIzMgkABEwAAAACAgAAAAIxNQkABEwAAAACAgAAAAIxOQkABEwAAAACAgAAAAE0CQAETAAAAAICAAAAAjIxCQAETAAAAAICAAAAATIJAARMAAAAAgIAAAACMjUJAARMAAAAAgIAAAACMTcJAARMAAAAAgIAAAACMzQJAARMAAAAAgIAAAABNgkABEwAAAACAgAAAAIyNwkABEwAAAACAgAAAAIxMwkABEwAAAACAgAAAAIzNgkABEwAAAACAgAAAAIxMQkABEwAAAACAgAAAAIzMAkABEwAAAACAgAAAAE4CQAETAAAAAICAAAAAjIzCQAETAAAAAICAAAAAjEwBQAAAANuaWwAAAAACVJTQVBVQkxJQwkAAlsAAAABAgAAAZNiYXNlNjQ6TUlJQkpUQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FSSUFNSUlCRFFLQ0FRRUF0T2JmaXdXeUJGcFNOSlpta3hsd0h5NXZUK0piK1Z2NmY3TGxoS0U5d05jQzBRcDByZHlNd3hMcGR3ZnVMc0tiUmRCRWJEaHBiM2R6MUpQSmlhdGxoS1ZLVXNvUTI1VVF1OWh2Mm9YeXlFekp4ODZDR1FxNUhPcjNZR0dTZEpSMExLcTFQaGJZck5tdVM2alBEWW9ieHNzWHljL3R4c2lwU0d3ek1nVkhjcXQ5T1NpR1F5U1o4LzltdHY0MkVlZnpGRTk1d3V1eTQyS0pLRzdoMERUTWZGU0xUcHFoUy9NYnA4RUtQdVZiMWh1V3NNS1ZMOVF0T1BZRVhhOVFQWmEyV0JQWDVZOUJJMU1jUlEvV2Y4V3dxUXRBUnBCZlNWcGtLUFMxQW1odDJmRU94U1NZUnFHNklVc2ZLOHhPOWh4dCszKy9PcC8rSUZKVEdjR0Y4QnJ6V1FJR0NQdzkvdTI3AAAAABFnYW1lc0xhYmVsQ291bnRlcgIAAAAOWF9HQU1FU0NPVU5URVIAAAAAFWdhbWVzTGFiZWxCZXRzQ291bnRlcgIAAAANWF9CRVRTQ09VTlRFUgAAAAAWZ2FtZXNMYWJlbEJldHNGZWVNb3ZlZAIAAAAOWF9CRVRTRkVFTU9WRUQAAAAAGGdhbWVzTGFiZWxUb3RhbEFtb3VudFdpbgIAAAAQWF9UT1RBTEFNT1VOVFdJTgAAAAAYZ2FtZXNMYWJlbFRvdGFsQW1vdW50QmV0AgAAABBYX1RPVEFMQU1PVU5UQkVUAAAAABlnYW1lc0xhYmVsVG90YWxBZGRyZXNzQmV0AgAAABFYX1RPVEFMQUREUkVTU0JFVAEAAAAPZ2FtZXNHZXRDb3VudGVyAAAAAAkABBoAAAACBQAAAAR0aGlzBQAAABFnYW1lc0xhYmVsQ291bnRlcgEAAAATZ2FtZXNHZXRCZXRzQ291bnRlcgAAAAAJAAQaAAAAAgUAAAAEdGhpcwUAAAAVZ2FtZXNMYWJlbEJldHNDb3VudGVyAQAAABRnYW1lc0dldEJldHNGZWVNb3ZlZAAAAAAJAAQaAAAAAgUAAAAEdGhpcwUAAAAWZ2FtZXNMYWJlbEJldHNGZWVNb3ZlZAEAAAAWZ2FtZXNHZXRUb3RhbEFtb3VudFdpbgAAAAAJAAQaAAAAAgUAAAAEdGhpcwUAAAAYZ2FtZXNMYWJlbFRvdGFsQW1vdW50V2luAQAAABZnYW1lc0dldFRvdGFsQW1vdW50QmV0AAAAAAkABBoAAAACBQAAAAR0aGlzBQAAABhnYW1lc0xhYmVsVG90YWxBbW91bnRCZXQBAAAAF2dhbWVzR2V0VG90YWxBZGRyZXNzQmV0AAAAAAkABBoAAAACBQAAAAR0aGlzBQAAABlnYW1lc0xhYmVsVG90YWxBZGRyZXNzQmV0AQAAABBudW1iZXJMYWJlbENvdW50AAAAAQAAAAZudW1iZXIJAAEsAAAAAgIAAAACTl8FAAAABm51bWJlcgEAAAAObnVtYmVyR2V0Q291bnQAAAABAAAABm51bWJlcgkABBoAAAACBQAAAAR0aGlzCQEAAAAQbnVtYmVyTGFiZWxDb3VudAAAAAEFAAAABm51bWJlcgEAAAAPZ2FtZUxhYmVsU3RhdHVzAAAAAQAAAAxHQU1FU0NPVU5URVIJAAEsAAAAAgkAASwAAAACAgAAAAJHXwkAAaQAAAABBQAAAAxHQU1FU0NPVU5URVICAAAAB19TVEFUVVMBAAAAD2dhbWVMYWJlbE51bWJlcgAAAAEAAAAMR0FNRVNDT1VOVEVSCQABLAAAAAIJAAEsAAAAAgIAAAACR18JAAGkAAAAAQUAAAAMR0FNRVNDT1VOVEVSAgAAAAdfTlVNQkVSAQAAAAxnYW1lTGFiZWxNYXgAAAABAAAADEdBTUVTQ09VTlRFUgkAASwAAAACCQABLAAAAAICAAAAAkdfCQABpAAAAAEFAAAADEdBTUVTQ09VTlRFUgIAAAAEX01BWAEAAAANZ2FtZUxhYmVsQmV0cwAAAAEAAAAMR0FNRVNDT1VOVEVSCQABLAAAAAIJAAEsAAAAAgIAAAACR18JAAGkAAAAAQUAAAAMR0FN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QVgFAAAABndpbm1heAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAEmFkZHJlc3NMYWJlbEFtb3VudAAAAAEFAAAAB2FkZHJlc3MJAABkAAAAAgUAAAANQUREUkVTU0FNT1VOVAUAAAAGYW1vdW50CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAQYWRkcmVzc0xhYmVsQmV0cwAAAAEFAAAAB2FkZHJlc3MJAABkAAAAAgUAAAALQUREUkVTU0JFVFMAAAAAAAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAAFWdhbWVzTGFiZWxCZXRzQ291bnRlcgkAAGQAAAACCQEAAAAFdmFsdWUAAAABCQEAAAATZ2FtZXNHZXRCZXRzQ291bnRlcgAAAAAAAAAAAAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAAGGdhbWVzTGFiZWxUb3RhbEFtb3VudEJldAkAAGQAAAACCQEAAAAFdmFsdWUAAAABCQEAAAAWZ2FtZXNHZXRUb3RhbEFtb3VudEJldAAAAAAFAAAABmFtb3VudAUAAAADbmlsBAAAAA9UT1RBTEFERFJFU1NCRVQJAABkAAAAAgkBAAAABXZhbHVlAAAAAQkBAAAAF2dhbWVzR2V0VG90YWxBZGRyZXNzQmV0AAAAAAAAAAAAAAAAAQQAAAAJZGF0YUZpbmFsAwkAAAAAAAACBQAAAA1BRERSRVNTQU1PVU5UAAAAAAAAAAAACQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAATcG9pbnRlckFkZHJlc3NMYWJlbAAAAAEJAAGkAAAAAQUAAAAPVE9UQUxBRERSRVNTQkVUBQAAAAdhZGRyZXNzCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAABlnYW1lc0xhYmVsVG90YWxBZGRyZXNzQmV0BQAAAA9UT1RBTEFERFJFU1NCRVQFAAAABGRhdGEFAAAABGRhdGEJAQAAAAhXcml0ZVNldAAAAAEFAAAACWRhdGFGaW5hbAkAAAIAAAABAgAAAA5HQU1FX05PVF9GT1VORAkAAAIAAAABAgAAAA5HQU1FX05PVF9GT1VORAkAAAIAAAABAgAAAA5HQU1FX05PVF9GT1VORAkA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AApDVVJSU1RBVFVTCQEAAAAFdmFsdWUAAAABCQEAAAANZ2FtZUdldFN0YXR1cwAAAAEFAAAADEdBTUVTQ09VTlRFUgMJAQAAAAIhPQAAAAIFAAAACkNVUlJTVEFUVVMCAAAABFNIT1cJAAACAAAAAQIAAAAXQ1VSUl9TVEFUVVNfSVNfTk9UX1NIT1cEAAAABEJFVFMJAQAAAAV2YWx1ZQAAAAEJAQAAAAtnYW1lR2V0QmV0cwAAAAEFAAAADEdBTUVTQ09VTlRFUgQAAAAGUEFTU0VECQEAAAAFdmFsdWUAAAABCQEAAAANZ2FtZUdldFBhc3NlZAAAAAEFAAAADEdBTUVTQ09VTlRFUgMJAQAAAAIhPQAAAAIFAAAABEJFVFMFAAAABlBBU1NFRAkAAAIAAAABAgAAAA9XQUlUX0FMTF9QQVNTRUQJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQUAAAAPd2FsbGV0UHVibGljS2V5BQAAAAZhbW91bnQFAAAABHVuaXQFAAAAA25pbAkAAAIAAAABAgAAAAtJTklUX05FRURFRAAAAAFpAQAAAA9iZXRzRmVlVG9TZXJ2ZXIAAAAAAwkBAAAAD2NoZWNrUGVybWlzc2lvbgAAAAEIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQkAAAIAAAABAgAAABliZXRzRmVlVG9TZXJ2ZXJfRk9SQkJJREVOBAAAAAckbWF0Y2gwCQEAAAAPZ2FtZXNHZXRDb3VudGVyAAAAAAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAxHQU1FU0NPVU5URVIFAAAAByRtYXRjaDADCQAAAAAAAAIFAAAADEdBTUVTQ09VTlRFUgAAAAAAAAAAAAkAAAIAAAABAgAAAAtOT19CRVRTX0ZFRQQAAAAKQ1VSUlNUQVRVUwkBAAAABXZhbHVlAAAAAQkBAAAADWdhbWVHZXRTdGF0dXMAAAABBQAAAAxHQU1FU0NPVU5URVIDCQEAAAACIT0AAAACBQAAAApDVVJSU1RBVFVTAgAAAARTSE9XCQAAAgAAAAECAAAAF0NVUlJfU1RBVFVTX0lTX05PVF9TSE9XBAAAAARCRVRTCQEAAAAFdmFsdWUAAAABCQEAAAALZ2FtZUdldEJldHMAAAABBQAAAAxHQU1FU0NPVU5URVIEAAAABlBBU1NFRAkBAAAABXZhbHVlAAAAAQkBAAAADWdhbWVHZXRQYXNzZWQAAAABBQAAAAxHQU1FU0NPVU5URVIDCQEAAAACIT0AAAACBQAAAARCRVRTBQAAAAZQQVNTRUQJAAACAAAAAQIAAAAPV0FJVF9BTExfUEFTU0VEBAAAAAtCRVRTQ09VTlRFUgkBAAAABXZhbHVlAAAAAQkBAAAAE2dhbWVzR2V0QmV0c0NvdW50ZXIAAAAABAAAAAlCRVRTTU9WRUQJAQAAAAV2YWx1ZQAAAAEJAQAAABRnYW1lc0dldEJldHNGZWVNb3ZlZAAAAAAJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAABZnYW1lc0xhYmVsQmV0c0ZlZU1vdmVkBQAAAAtCRVRTQ09VTlRFUgUAAAADbmlsCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEFAAAAD3NlcnZlclB1YmxpY0tleQkAAGgAAAACCQAAZQAAAAIFAAAAC0JFVFNDT1VOVEVSBQAAAAlCRVRTTU9WRUQFAAAAA2ZlZQUAAAAEdW5pdAUAAAADbmlsCQAAAgAAAAECAAAAC0lOSVRfTkVFREVEAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAQAAAAHJG1hdGNoMAUAAAACdHgDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAE1RyYW5zZmVyVHJhbnNhY3Rpb24EAAAAAlRUBQAAAAckbWF0Y2gwAwkAAAAAAAACCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABCAUAAAACVFQAAAAPc2VuZGVyUHVibGljS2V5CAUAAAACVFQAAAAGc2VuZGVyCQAB9AAAAAMIBQAAAAJUVAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAlRUAAAABnByb29mcwAAAAAAAAAAAAgFAAAAAlRUAAAAD3NlbmRlclB1YmxpY0tleQcDAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAA9EYXRhVHJhbnNhY3Rpb24GCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAFFNldFNjcmlwdFRyYW5zYWN0aW9uBAAAAAJTUwUAAAAHJG1hdGNoMAMJAAAAAAAAAgkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQgFAAAAAlNTAAAAD3NlbmRlclB1YmxpY0tleQgFAAAAAlNTAAAABnNlbmRlcgkAAfQAAAADCAUAAAACU1MAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJTUwAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJTUwAAAA9zZW5kZXJQdWJsaWNLZXkHB6Nh26w=", "chainId": 84, "height": 630371, "spentComplexity": 0 } View: original | compacted Prev: BBE5YBpt4k3iJa85swbJejghwLnZacRPeYgMzhzEJ6cc Next: Af13vZim1r4BbE6ig3vMgMaeBjvCiUaejLejWqTt5QJP Diff:
OldNewDifferences
44 let copyright = "Copyright (c) 2019 MaDaMa Labs"
55
66 let creator = "@daidalos - twitter.com/tw_daidalos"
7+
8+let team = "MaDaMa Labs https://gitlab.com/madamalabs/"
79
810 let license = "MIT License"
911
603605
604606
605607 @Verifier(tx)
606-func verify () = if ((addressFromPublicKey(tx.senderPublicKey) == tx.sender))
607- then sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
608- else false
608+func verify () = match tx {
609+ case TT: TransferTransaction =>
610+ if ((addressFromPublicKey(TT.senderPublicKey) == TT.sender))
611+ then sigVerify(TT.bodyBytes, TT.proofs[0], TT.senderPublicKey)
612+ else false
613+ case SS: DataTransaction|SetScriptTransaction =>
614+ if ((addressFromPublicKey(SS.senderPublicKey) == SS.sender))
615+ then sigVerify(SS.bodyBytes, SS.proofs[0], SS.senderPublicKey)
616+ else false
617+ case _ =>
618+ false
619+}
609620
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let copyright = "Copyright (c) 2019 MaDaMa Labs"
55
66 let creator = "@daidalos - twitter.com/tw_daidalos"
7+
8+let team = "MaDaMa Labs https://gitlab.com/madamalabs/"
79
810 let license = "MIT License"
911
1012 let licenseLink = "tldrlegal.com/license/mit-license , opensource.org/licenses/MIT"
1113
1214 let serverPublicKey = base58'BZTqgdB7p2YguZGnmQ8hJheuVF6zErGrr9S9ekEDxgzY'
1315
1416 let walletPublicKey = base58'AbDyruBD8QqodWvMWRxAx8FhwRuf4cMFZu6SA1G4YwWU'
1517
1618 let fee = 500000
1719
1820 let ONEWAVES = 100000000
1921
2022 let periodGamePlay = 2
2123
2224 let wheel = ["5", "24", "16", "33", "1", "20", "14", "31", "9", "22", "18", "29", "7", "28", "12", "35", "3", "26", "0", "32", "15", "19", "4", "21", "2", "25", "17", "34", "6", "27", "13", "36", "11", "30", "8", "23", "10"]
2325
2426 let RSAPUBLIC = fromBase64String("base64:MIIBJTANBgkqhkiG9w0BAQEFAAOCARIAMIIBDQKCAQEAtObfiwWyBFpSNJZmkxlwHy5vT+Jb+Vv6f7LlhKE9wNcC0Qp0rdyMwxLpdwfuLsKbRdBEbDhpb3dz1JPJiatlhKVKUsoQ25UQu9hv2oXyyEzJx86CGQq5HOr3YGGSdJR0LKq1PhbYrNmuS6jPDYobxssXyc/txsipSGwzMgVHcqt9OSiGQySZ8/9mtv42EefzFE95wuuy42KJKG7h0DTMfFSLTpqhS/Mbp8EKPuVb1huWsMKVL9QtOPYEXa9QPZa2WBPX5Y9BI1McRQ/Wf8WwqQtARpBfSVpkKPS1Amht2fEOxSSYRqG6IUsfK8xO9hxt+3+/Op/+IFJTGcGF8BrzWQIGCPw9/u27")
2527
2628 let gamesLabelCounter = "X_GAMESCOUNTER"
2729
2830 let gamesLabelBetsCounter = "X_BETSCOUNTER"
2931
3032 let gamesLabelBetsFeeMoved = "X_BETSFEEMOVED"
3133
3234 let gamesLabelTotalAmountWin = "X_TOTALAMOUNTWIN"
3335
3436 let gamesLabelTotalAmountBet = "X_TOTALAMOUNTBET"
3537
3638 let gamesLabelTotalAddressBet = "X_TOTALADDRESSBET"
3739
3840 func gamesGetCounter () = getInteger(this, gamesLabelCounter)
3941
4042
4143 func gamesGetBetsCounter () = getInteger(this, gamesLabelBetsCounter)
4244
4345
4446 func gamesGetBetsFeeMoved () = getInteger(this, gamesLabelBetsFeeMoved)
4547
4648
4749 func gamesGetTotalAmountWin () = getInteger(this, gamesLabelTotalAmountWin)
4850
4951
5052 func gamesGetTotalAmountBet () = getInteger(this, gamesLabelTotalAmountBet)
5153
5254
5355 func gamesGetTotalAddressBet () = getInteger(this, gamesLabelTotalAddressBet)
5456
5557
5658 func numberLabelCount (number) = ("N_" + number)
5759
5860
5961 func numberGetCount (number) = getInteger(this, numberLabelCount(number))
6062
6163
6264 func gameLabelStatus (GAMESCOUNTER) = (("G_" + toString(GAMESCOUNTER)) + "_STATUS")
6365
6466
6567 func gameLabelNumber (GAMESCOUNTER) = (("G_" + toString(GAMESCOUNTER)) + "_NUMBER")
6668
6769
6870 func gameLabelMax (GAMESCOUNTER) = (("G_" + toString(GAMESCOUNTER)) + "_MAX")
6971
7072
7173 func gameLabelBets (GAMESCOUNTER) = (("G_" + toString(GAMESCOUNTER)) + "_BETS")
7274
7375
7476 func gameLabelPassed (GAMESCOUNTER) = (("G_" + toString(GAMESCOUNTER)) + "_PASSED")
7577
7678
7779 func gameLabelHeight (GAMESCOUNTER) = (("G_" + toString(GAMESCOUNTER)) + "_HEIGHT")
7880
7981
8082 func gameLabelSumSha (GAMESCOUNTER) = (("G_" + toString(GAMESCOUNTER)) + "_SUMSHA")
8183
8284
8385 func gameLabelCmbMax (GAMESCOUNTER,CMB) = ((("G_" + toString(GAMESCOUNTER)) + "_C") + CMB)
8486
8587
8688 func gameGetStatus (GAMESCOUNTER) = getString(this, gameLabelStatus(GAMESCOUNTER))
8789
8890
8991 func gameGetNumber (GAMESCOUNTER) = getInteger(this, gameLabelNumber(GAMESCOUNTER))
9092
9193
9294 func gameGetMax (GAMESCOUNTER) = getInteger(this, gameLabelMax(GAMESCOUNTER))
9395
9496
9597 func gameGetBets (GAMESCOUNTER) = getInteger(this, gameLabelBets(GAMESCOUNTER))
9698
9799
98100 func gameGetPassed (GAMESCOUNTER) = getInteger(this, gameLabelPassed(GAMESCOUNTER))
99101
100102
101103 func gameGetHeight (GAMESCOUNTER) = getInteger(this, gameLabelHeight(GAMESCOUNTER))
102104
103105
104106 func gameGetSumSha (GAMESCOUNTER) = getString(this, gameLabelSumSha(GAMESCOUNTER))
105107
106108
107109 func gameGetCmbMax (GAMESCOUNTER,CMB) = getInteger(this, gameLabelCmbMax(GAMESCOUNTER, CMB))
108110
109111
110112 func betLabelStatus (idBet) = (("B_" + idBet) + "_STATUS")
111113
112114
113115 func betLabelInfo (idBet) = (("B_" + idBet) + "_INFO")
114116
115117
116118 func betGetStatus (idBet) = getString(this, betLabelStatus(idBet))
117119
118120
119121 func betGetInfo (idBet) = getString(this, betLabelInfo(idBet))
120122
121123
122124 func addressLabelWon (addr) = (("A_" + addr) + "_WON")
123125
124126
125127 func addressLabelAmount (addr) = (("A_" + addr) + "_AMOUNT")
126128
127129
128130 func addressLabelBets (addr) = (("A_" + addr) + "_BETS")
129131
130132
131133 func addressLabelHit (addr) = (("A_" + addr) + "_HIT")
132134
133135
134136 func addressGetWon (addr) = getInteger(this, addressLabelWon(addr))
135137
136138
137139 func addressGetAmount (addr) = getInteger(this, addressLabelAmount(addr))
138140
139141
140142 func addressGetBets (addr) = getInteger(this, addressLabelBets(addr))
141143
142144
143145 func addressGetHit (addr) = getInteger(this, addressLabelHit(addr))
144146
145147
146148 func pointerAddressLabel (id) = ("P_" + id)
147149
148150
149151 func checkPermission (callerPublicKey) = (callerPublicKey != serverPublicKey)
150152
151153
152154 func gameNewMax (win) = match gamesGetCounter() {
153155 case GAMESCOUNTER: Int =>
154156 match gameGetMax(GAMESCOUNTER) {
155157 case CURRMAX: Int =>
156158 let temp = (CURRMAX - win)
157159 if ((0 > temp))
158160 then throw("BET_IS_BLOCK")
159161 else temp
160162 case _ =>
161163 throw("GAME_NOT_FOUND")
162164 }
163165 case _ =>
164166 throw("INIT_NEEDED")
165167 }
166168
167169
168170 func gameNewSumSha (txId) = match gamesGetCounter() {
169171 case GAMESCOUNTER: Int =>
170172 match gameGetSumSha(GAMESCOUNTER) {
171173 case SUMSHA: String =>
172174 toBase58String(sha256((fromBase58String(SUMSHA) + txId)))
173175 case _ =>
174176 throw("GAME_NOT_FOUND")
175177 }
176178 case _ =>
177179 throw("INIT_NEEDED")
178180 }
179181
180182
181183 func checkIdBet (idBet) = match betGetInfo(idBet) {
182184 case temp: String =>
183185 throw("PLAYER_ALREADY_DEFINED")
184186 case _ =>
185187 1
186188 }
187189
188190
189191 func checkBet (bet) = if (if (if (if (if (if ((bet == 10000000))
190192 then true
191193 else (bet == 20000000))
192194 then true
193195 else (bet == 50000000))
194196 then true
195197 else (bet == 100000000))
196198 then true
197199 else (bet == 200000000))
198200 then true
199201 else (bet == 500000000))
200202 then 1
201203 else throw("BET_NOT_FOUND")
202204
203205
204206 func getCmb (cmb) = match getInteger(this, ("C" + cmb)) {
205207 case temp: Int =>
206208 temp
207209 case _ =>
208210 throw("CMB_NOT_FOUND")
209211 }
210212
211213
212214 func allowCmbMax (gamecounter,cmb,win) = match gameGetCmbMax(gamecounter, cmb) {
213215 case temp: Int =>
214216 if (((temp + win) > 20000000000))
215217 then throw("CMB_MAX_WIN")
216218 else 1
217219 case _ =>
218220 1
219221 }
220222
221223
222224 @Callable(i)
223225 func bet (id,cmb) = match gamesGetCounter() {
224226 case GAMESCOUNTER: Int =>
225227 if ((id != GAMESCOUNTER))
226228 then throw("GAME_ID_WRONG")
227229 else match gameGetStatus(GAMESCOUNTER) {
228230 case CURRSTATUS: String =>
229231 if ((CURRSTATUS != "PLAY"))
230232 then throw("CURR_STATUS_IS_NOT_PLAY")
231233 else match gameGetHeight(GAMESCOUNTER) {
232234 case GAMEHEIGHT: Int =>
233235 if (if ((GAMEHEIGHT != 0))
234236 then (height > (GAMEHEIGHT + periodGamePlay))
235237 else false)
236238 then throw("GAME_IS_END")
237239 else match gameGetBets(GAMESCOUNTER) {
238240 case BETS: Int =>
239241 let idBet = ((toString(GAMESCOUNTER) + "_") + toString((BETS + 1)))
240242 let payment = value(i.payment)
241243 match payment.assetId {
242244 case assetId: ByteVector =>
243245 throw("ONLY_WAVES_ACCEPTED")
244246 case _ =>
245247 let amount = (payment.amount - fee)
246248 let win = (((checkIdBet(idBet) * checkBet(amount)) * getCmb(cmb)) * amount)
247249 let winmax = (win * allowCmbMax(GAMESCOUNTER, cmb, win))
248250 let address = toBase58String(i.caller.bytes)
249251 let info = ((((((address + "||") + cmb) + "||") + toString(amount)) + "||") + toString(winmax))
250252 let ADDRESSAMOUNT = match addressGetAmount(address) {
251253 case temp: Int =>
252254 temp
253255 case _ =>
254256 0
255257 }
256258 let ADDRESSBETS = match addressGetBets(address) {
257259 case temp: Int =>
258260 temp
259261 case _ =>
260262 0
261263 }
262264 let CMBMAX = match gameGetCmbMax(GAMESCOUNTER, cmb) {
263265 case temp: Int =>
264266 temp
265267 case _ =>
266268 0
267269 }
268270 let data = [DataEntry(betLabelInfo(idBet), info), DataEntry(betLabelStatus(idBet), "ACCEPT"), DataEntry(gameLabelBets(GAMESCOUNTER), (BETS + 1)), DataEntry(gameLabelHeight(GAMESCOUNTER), if ((GAMEHEIGHT == 0))
269271 then height
270272 else GAMEHEIGHT), DataEntry(gameLabelMax(GAMESCOUNTER), gameNewMax(winmax)), DataEntry(gameLabelSumSha(GAMESCOUNTER), gameNewSumSha(i.transactionId)), DataEntry(gameLabelCmbMax(GAMESCOUNTER, cmb), (CMBMAX + winmax)), DataEntry(addressLabelAmount(address), (ADDRESSAMOUNT + amount)), DataEntry(addressLabelBets(address), (ADDRESSBETS + 1)), DataEntry(gamesLabelBetsCounter, (value(gamesGetBetsCounter()) + 1)), DataEntry(gamesLabelTotalAmountBet, (value(gamesGetTotalAmountBet()) + amount))]
271273 let TOTALADDRESSBET = (value(gamesGetTotalAddressBet()) + 1)
272274 let dataFinal = if ((ADDRESSAMOUNT == 0))
273275 then [DataEntry(pointerAddressLabel(toString(TOTALADDRESSBET)), address), DataEntry(gamesLabelTotalAddressBet, TOTALADDRESSBET)] :: data
274276 else data
275277 WriteSet(dataFinal)
276278 }
277279 case _ =>
278280 throw("GAME_NOT_FOUND")
279281 }
280282 case _ =>
281283 throw("GAME_NOT_FOUND")
282284 }
283285 case _ =>
284286 throw("GAME_NOT_FOUND")
285287 }
286288 case _ =>
287289 throw("INIT_NEEDED")
288290 }
289291
290292
291293
292294 @Callable(i)
293295 func getWin (BET) = if (checkPermission(i.callerPublicKey))
294296 then throw("getWin_FORBBIDEN")
295297 else match gamesGetCounter() {
296298 case GAMESCOUNTER: Int =>
297299 match gameGetStatus(GAMESCOUNTER) {
298300 case CURRSTATUS: String =>
299301 if ((CURRSTATUS != "SHOW"))
300302 then throw("CURR_STATUS_IS_NOT_SHOW")
301303 else match gameGetNumber(GAMESCOUNTER) {
302304 case NUMBER: Int =>
303305 let idBet = ((toString(GAMESCOUNTER) + "_") + toString(BET))
304306 let numberString = (("_" + toString(NUMBER)) + "_")
305307 let red = "|_1_3_5_7_9_12_14_16_18_19_21_23_25_27_30_32_34_36_|"
306308 let black = "|_2_4_6_8_10_11_13_15_17_20_22_24_26_28_29_31_33_35_|"
307309 let indexRed = match indexOf(red, numberString) {
308310 case temp: Int =>
309311 (temp > 0)
310312 case _ =>
311313 false
312314 }
313315 let indexBlack = match indexOf(black, numberString) {
314316 case temp: Int =>
315317 (temp > 0)
316318 case _ =>
317319 false
318320 }
319321 let cmbRB = ("_" + (if (indexRed)
320322 then "RED"
321323 else if (indexBlack)
322324 then "BLACK"
323325 else "NDF"))
324326 let cmbEO = ("_" + (if (if ((0 >= NUMBER))
325327 then true
326328 else (NUMBER > 36))
327329 then "NDF"
328330 else if (((NUMBER % 2) == 0))
329331 then "EVEN"
330332 else "ODD"))
331333 let cmbLH = ("_" + (if (if ((NUMBER >= 1))
332334 then (18 >= NUMBER)
333335 else false)
334336 then "LOW"
335337 else if (if ((NUMBER >= 19))
336338 then (36 >= NUMBER)
337339 else false)
338340 then "HIGH"
339341 else "NDF"))
340342 let cmbDZ = ("_" + (if (if ((NUMBER >= 1))
341343 then (12 >= NUMBER)
342344 else false)
343345 then "DOZER1"
344346 else if (if ((NUMBER >= 13))
345347 then (24 >= NUMBER)
346348 else false)
347349 then "DOZER2"
348350 else if (if ((NUMBER >= 25))
349351 then (36 >= NUMBER)
350352 else false)
351353 then "DOZER3"
352354 else "NDF"))
353355 let cmbCL = ("_" + (if (if ((0 >= NUMBER))
354356 then true
355357 else (NUMBER > 36))
356358 then "NDF"
357359 else if (((NUMBER % 3) == 1))
358360 then "COLUMN1"
359361 else if (((NUMBER % 3) == 2))
360362 then "COLUMN2"
361363 else "COLUMN3"))
362364 let STATUS = match betGetStatus(idBet) {
363365 case temp: String =>
364366 temp
365367 case _ =>
366368 throw("BET_STATUS_NOT_FOUND")
367369 }
368370 let INFO = match betGetInfo(idBet) {
369371 case temp: String =>
370372 temp
371373 case _ =>
372374 throw("BET_INFO_NOT_FOUND")
373375 }
374376 let INFOS = split(INFO, "||")
375377 let ADDRESSSTRING = INFOS[0]
376378 let ADDRESS = value(addressFromString(ADDRESSSTRING))
377379 let CMB = INFOS[1]
378380 let AMOUNT = value(parseInt(INFOS[2]))
379381 let WIN = value(parseInt(INFOS[3]))
380382 let ADDRESSWON = match addressGetWon(ADDRESSSTRING) {
381383 case temp: Int =>
382384 temp
383385 case _ =>
384386 0
385387 }
386388 let ADDRESSHIT = match addressGetHit(ADDRESSSTRING) {
387389 case temp: Int =>
388390 temp
389391 case _ =>
390392 0
391393 }
392394 let DATAPASSED = DataEntry(gameLabelPassed(GAMESCOUNTER), (value(gameGetPassed(GAMESCOUNTER)) + 1))
393395 if (if (if (if (if ((STATUS == "ACCEPT"))
394396 then (CMB != "")
395397 else false)
396398 then (WIN > 0)
397399 else false)
398400 then (AMOUNT > 0)
399401 else false)
400402 then isDefined(ADDRESS)
401403 else false)
402404 then {
403405 let cmbIN = match indexOf((("|" + CMB) + "|"), numberString) {
404406 case temp: Int =>
405407 (temp > 0)
406408 case _ =>
407409 false
408410 }
409411 if (if (if (if (if (if (cmbIN)
410412 then true
411413 else (CMB == cmbRB))
412414 then true
413415 else (CMB == cmbEO))
414416 then true
415417 else (CMB == cmbLH))
416418 then true
417419 else (CMB == cmbDZ))
418420 then true
419421 else (CMB == cmbCL))
420422 then ScriptResult(WriteSet([DATAPASSED, DataEntry(betLabelStatus(idBet), "WON"), DataEntry(addressLabelWon(ADDRESSSTRING), ((ADDRESSWON + WIN) + AMOUNT)), DataEntry(addressLabelHit(ADDRESSSTRING), (ADDRESSHIT + 1)), DataEntry(gamesLabelTotalAmountWin, ((value(gamesGetTotalAmountWin()) + WIN) + AMOUNT))]), TransferSet([ScriptTransfer(ADDRESS, (WIN + AMOUNT), unit)]))
421423 else WriteSet([DATAPASSED, DataEntry(betLabelStatus(idBet), "LOST")])
422424 }
423425 else throw("GET_WIN_ALREADY_CALLED")
424426 case _ =>
425427 throw("GAME_NOT_FOUND")
426428 }
427429 case _ =>
428430 throw("GAME_NOT_FOUND")
429431 }
430432 case _ =>
431433 throw("INIT_NEEDED")
432434 }
433435
434436
435437
436438 @Callable(i)
437439 func addCmb (cmb,val) = if (checkPermission(i.callerPublicKey))
438440 then throw("addCmb_FORBBIDEN")
439441 else match gamesGetCounter() {
440442 case GAMESCOUNTER: Int =>
441443 if ((GAMESCOUNTER != 0))
442444 then throw("INIT_ALREADY_DONE")
443445 else if (if (if (if (if (if (if ((val == 1))
444446 then true
445447 else (val == 2))
446448 then true
447449 else (val == 5))
448450 then true
449451 else (val == 8))
450452 then true
451453 else (val == 11))
452454 then true
453455 else (val == 17))
454456 then true
455457 else (val == 35))
456458 then WriteSet([DataEntry(("C" + cmb), val)])
457459 else throw("AMOUNT_NOT_FOUND")
458460 case _ =>
459461 throw("INIT_NEEDED")
460462 }
461463
462464
463465
464466 @Callable(i)
465467 func initGame () = if (checkPermission(i.callerPublicKey))
466468 then throw("initGame_FORBBIDEN")
467469 else match gamesGetCounter() {
468470 case GAMESCOUNTER: Int =>
469471 throw("INIT_ALREADY_DONE")
470472 case _ =>
471473 WriteSet([DataEntry(gamesLabelCounter, 0), DataEntry(gamesLabelBetsCounter, 0), DataEntry(gamesLabelBetsFeeMoved, 0), DataEntry(gamesLabelTotalAmountWin, 0), DataEntry(gamesLabelTotalAmountBet, 0), DataEntry(gamesLabelTotalAddressBet, 0)])
472474 }
473475
474476
475477
476478 @Callable(i)
477479 func newGame () = if (checkPermission(i.callerPublicKey))
478480 then throw("newGame_FORBBIDEN")
479481 else match gamesGetCounter() {
480482 case GAMESCOUNTER: Int =>
481483 let newGameCounter = (GAMESCOUNTER + 1)
482484 let BETSCOUNTER = value(gamesGetBetsCounter())
483485 let BETSMOVED = value(gamesGetBetsFeeMoved())
484486 let gameMax = (wavesBalance(this) - ((BETSCOUNTER - BETSMOVED) * fee))
485487 let halfGameMax = if (((gameMax % 2) == 1))
486488 then ((gameMax - 1) / 2)
487489 else (gameMax / 2)
488490 let sendData = WriteSet([DataEntry(gamesLabelCounter, newGameCounter), DataEntry(gameLabelStatus(newGameCounter), "PLAY"), DataEntry(gameLabelMax(newGameCounter), halfGameMax), DataEntry(gameLabelBets(newGameCounter), 0), DataEntry(gameLabelPassed(newGameCounter), 0), DataEntry(gameLabelHeight(newGameCounter), 0), DataEntry(gameLabelSumSha(newGameCounter), toBase58String(sha256(i.transactionId)))])
489491 if ((ONEWAVES > halfGameMax))
490492 then throw("BALANCE_IS_LOW")
491493 else if ((GAMESCOUNTER == 0))
492494 then sendData
493495 else {
494496 let CURRSTATUS = value(gameGetStatus(GAMESCOUNTER))
495497 if ((CURRSTATUS != "SHOW"))
496498 then throw("CURR_STATUS_IS_NOT_SHOW")
497499 else {
498500 let BETS = value(gameGetBets(GAMESCOUNTER))
499501 let PASSED = value(gameGetPassed(GAMESCOUNTER))
500502 if ((BETS != PASSED))
501503 then throw("WAIT_ALL_PASSED")
502504 else sendData
503505 }
504506 }
505507 case _ =>
506508 throw("INIT_NEEDED")
507509 }
508510
509511
510512
511513 @Callable(i)
512514 func showGame (rsaSign) = if (checkPermission(i.callerPublicKey))
513515 then throw("showGame_FORBBIDEN")
514516 else match gamesGetCounter() {
515517 case GAMESCOUNTER: Int =>
516518 match gameGetSumSha(GAMESCOUNTER) {
517519 case SUMSHA: String =>
518520 let rsaSigValid = rsaVerify(SHA256, fromBase58String(SUMSHA), rsaSign, RSAPUBLIC)
519521 if (!(rsaSigValid))
520522 then throw("INVALID_RSA_SIGN")
521523 else {
522524 let index = (toInt(sha256(rsaSign)) % 37)
523525 let numberString = wheel[index]
524526 let number = value(parseInt(numberString))
525527 let numberCount = match numberGetCount(numberString) {
526528 case temp: Int =>
527529 temp
528530 case _ =>
529531 0
530532 }
531533 let CURRSTATUS = value(gameGetStatus(GAMESCOUNTER))
532534 if ((CURRSTATUS != "PLAY"))
533535 then throw("CURR_STATUS_IS_NOT_PLAY")
534536 else {
535537 let GAMEHEIGHT = value(gameGetHeight(GAMESCOUNTER))
536538 if (if ((GAMEHEIGHT == 0))
537539 then true
538540 else ((GAMEHEIGHT + periodGamePlay) >= height))
539541 then throw("GAME_IS_NOT_END")
540542 else WriteSet([DataEntry(gameLabelStatus(GAMESCOUNTER), "SHOW"), DataEntry(gameLabelNumber(GAMESCOUNTER), number), DataEntry(numberLabelCount(numberString), (numberCount + 1))])
541543 }
542544 }
543545 case _ =>
544546 throw("GAME_NOT_FOUND")
545547 }
546548 case _ =>
547549 throw("INIT_NEEDED")
548550 }
549551
550552
551553
552554 @Callable(i)
553555 func amountToWallet (amount) = if (checkPermission(i.callerPublicKey))
554556 then throw("amountToWallet_FORBBIDEN")
555557 else match gamesGetCounter() {
556558 case GAMESCOUNTER: Int =>
557559 if ((GAMESCOUNTER == 0))
558560 then TransferSet([ScriptTransfer(addressFromPublicKey(serverPublicKey), amount, unit)])
559561 else {
560562 let CURRSTATUS = value(gameGetStatus(GAMESCOUNTER))
561563 if ((CURRSTATUS != "SHOW"))
562564 then throw("CURR_STATUS_IS_NOT_SHOW")
563565 else {
564566 let BETS = value(gameGetBets(GAMESCOUNTER))
565567 let PASSED = value(gameGetPassed(GAMESCOUNTER))
566568 if ((BETS != PASSED))
567569 then throw("WAIT_ALL_PASSED")
568570 else TransferSet([ScriptTransfer(addressFromPublicKey(walletPublicKey), amount, unit)])
569571 }
570572 }
571573 case _ =>
572574 throw("INIT_NEEDED")
573575 }
574576
575577
576578
577579 @Callable(i)
578580 func betsFeeToServer () = if (checkPermission(i.callerPublicKey))
579581 then throw("betsFeeToServer_FORBBIDEN")
580582 else match gamesGetCounter() {
581583 case GAMESCOUNTER: Int =>
582584 if ((GAMESCOUNTER == 0))
583585 then throw("NO_BETS_FEE")
584586 else {
585587 let CURRSTATUS = value(gameGetStatus(GAMESCOUNTER))
586588 if ((CURRSTATUS != "SHOW"))
587589 then throw("CURR_STATUS_IS_NOT_SHOW")
588590 else {
589591 let BETS = value(gameGetBets(GAMESCOUNTER))
590592 let PASSED = value(gameGetPassed(GAMESCOUNTER))
591593 if ((BETS != PASSED))
592594 then throw("WAIT_ALL_PASSED")
593595 else {
594596 let BETSCOUNTER = value(gamesGetBetsCounter())
595597 let BETSMOVED = value(gamesGetBetsFeeMoved())
596598 ScriptResult(WriteSet([DataEntry(gamesLabelBetsFeeMoved, BETSCOUNTER)]), TransferSet([ScriptTransfer(addressFromPublicKey(serverPublicKey), ((BETSCOUNTER - BETSMOVED) * fee), unit)]))
597599 }
598600 }
599601 }
600602 case _ =>
601603 throw("INIT_NEEDED")
602604 }
603605
604606
605607 @Verifier(tx)
606-func verify () = if ((addressFromPublicKey(tx.senderPublicKey) == tx.sender))
607- then sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
608- else false
608+func verify () = match tx {
609+ case TT: TransferTransaction =>
610+ if ((addressFromPublicKey(TT.senderPublicKey) == TT.sender))
611+ then sigVerify(TT.bodyBytes, TT.proofs[0], TT.senderPublicKey)
612+ else false
613+ case SS: DataTransaction|SetScriptTransaction =>
614+ if ((addressFromPublicKey(SS.senderPublicKey) == SS.sender))
615+ then sigVerify(SS.bodyBytes, SS.proofs[0], SS.senderPublicKey)
616+ else false
617+ case _ =>
618+ false
619+}
609620

github/deemru/w8io/6500d08 
140.79 ms