tx · 4p6RsG3oNFRWYcb3eV27oSmUWWeLoUz76KackkfUt4zr

3N319uQjr5c4jQfhsxenv82Ego6imqFRSdw:  -0.01000000 Waves

2019.08.16 18:21 [633806] smart account 3N319uQjr5c4jQfhsxenv82Ego6imqFRSdw > SELF 0.00000000 Waves

{ "type": 13, "id": "4p6RsG3oNFRWYcb3eV27oSmUWWeLoUz76KackkfUt4zr", "fee": 1000000, "feeAssetId": null, "timestamp": 1565968434904, "version": 1, "sender": "3N319uQjr5c4jQfhsxenv82Ego6imqFRSdw", "senderPublicKey": "7C3wsm76fd9VX8zMDZXuPdmZXxtMn2vah4cBjBZxsgdC", "proofs": [ "CoP1ePCK6PaNbiJeahGB1BRbEz8rcFqQW2uUSykpEToaVhcn6Vm9EwbDpF2uo9WcaSTuXRZq2cdgjevLM4epo3M" ], "script": "base64:AAIDAAAAAAAAAAAAAAA+AAAAAAljb3B5cmlnaHQCAAAAHkNvcHlyaWdodCAoYykgMjAxOSBNYURhTWEgTGFicwAAAAAHY3JlYXRvcgIAAAAjQGRhaWRhbG9zIC0gdHdpdHRlci5jb20vdHdfZGFpZGFsb3MAAAAABHRlYW0CAAAAKk1hRGFNYSBMYWJzIGh0dHBzOi8vZ2l0bGFiLmNvbS9tYWRhbWFsYWJzLwAAAAAHbGljZW5zZQIAAAALTUlUIExpY2Vuc2UAAAAAC2xpY2Vuc2VMaW5rAgAAAD90bGRybGVnYWwuY29tL2xpY2Vuc2UvbWl0LWxpY2Vuc2UgLCBvcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQAAAAAD3NlcnZlclB1YmxpY0tleQEAAAAg5HDECkj1gj3Biqn3r3iq6QgFB//805bcYc9SxLcrLT8AAAAAD3dhbGxldFB1YmxpY0tleQEAAAAgjn2bVZshOLJ2tKyHmnsNODTqNa4L3sjANfQnGFjxTC0AAAAAA2ZlZQAAAAAAAAehIAAAAAAIT05FV0FWRVMAAAAAAAX14QAAAAAADnBlcmlvZEdhbWVQbGF5AAAAAAAAAAACAAAAAAV3aGVlbAkABEwAAAACAgAAAAE1CQAETAAAAAICAAAAAjI0CQAETAAAAAICAAAAAjE2CQAETAAAAAICAAAAAjMzCQAETAAAAAICAAAAATEJAARMAAAAAgIAAAACMjAJAARMAAAAAgIAAAACMTQJAARMAAAAAgIAAAACMzEJAARMAAAAAgIAAAABOQkABEwAAAACAgAAAAIyMgkABEwAAAACAgAAAAIxOAkABEwAAAACAgAAAAIyOQkABEwAAAACAgAAAAE3CQAETAAAAAICAAAAAjI4CQAETAAAAAICAAAAAjEyCQAETAAAAAICAAAAAjM1CQAETAAAAAICAAAAATMJAARMAAAAAgIAAAACMjYJAARMAAAAAgIAAAABMAkABEwAAAACAgAAAAIzMgkABEwAAAACAgAAAAIxNQkABEwAAAACAgAAAAIxOQkABEwAAAACAgAAAAE0CQAETAAAAAICAAAAAjIxCQAETAAAAAICAAAAATIJAARMAAAAAgIAAAACMjUJAARMAAAAAgIAAAACMTcJAARMAAAAAgIAAAACMzQJAARMAAAAAgIAAAABNgkABEwAAAACAgAAAAIyNwkABEwAAAACAgAAAAIxMwkABEwAAAACAgAAAAIzNgkABEwAAAACAgAAAAIxMQkABEwAAAACAgAAAAIzMAkABEwAAAACAgAAAAE4CQAETAAAAAICAAAAAjIzCQAETAAAAAICAAAAAjEwBQAAAANuaWwAAAAACVJTQVBVQkxJQwkAAlsAAAABAgAAAZNiYXNlNjQ6TUlJQkpUQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FSSUFNSUlCRFFLQ0FRRUF0T2JmaXdXeUJGcFNOSlpta3hsd0h5NXZUK0piK1Z2NmY3TGxoS0U5d05jQzBRcDByZHlNd3hMcGR3ZnVMc0tiUmRCRWJEaHBiM2R6MUpQSmlhdGxoS1ZLVXNvUTI1VVF1OWh2Mm9YeXlFekp4ODZDR1FxNUhPcjNZR0dTZEpSMExLcTFQaGJZck5tdVM2alBEWW9ieHNzWHljL3R4c2lwU0d3ek1nVkhjcXQ5T1NpR1F5U1o4LzltdHY0MkVlZnpGRTk1d3V1eTQyS0pLRzdoMERUTWZGU0xUcHFoUy9NYnA4RUtQdVZiMWh1V3NNS1ZMOVF0T1BZRVhhOVFQWmEyV0JQWDVZOUJJMU1jUlEvV2Y4V3dxUXRBUnBCZlNWcGtLUFMxQW1odDJmRU94U1NZUnFHNklVc2ZLOHhPOWh4dCszKy9PcC8rSUZKVEdjR0Y4QnJ6V1FJR0NQdzkvdTI3AAAAABFnYW1lc0xhYmVsQ291bnRlcgIAAAAOWF9HQU1FU0NPVU5URVIAAAAAFWdhbWVzTGFiZWxCZXRzQ291bnRlcgIAAAANWF9CRVRTQ09VTlRFUgAAAAAWZ2FtZXNMYWJlbEJldHNGZWVNb3ZlZAIAAAAOWF9CRVRTRkVFTU9WRUQAAAAAGGdhbWVzTGFiZWxUb3RhbEFtb3VudFdpbgIAAAAQWF9UT1RBTEFNT1VOVFdJTgAAAAAYZ2FtZXNMYWJlbFRvdGFsQW1vdW50QmV0AgAAABBYX1RPVEFMQU1PVU5UQkVUAAAAABlnYW1lc0xhYmVsVG90YWxBZGRyZXNzQmV0AgAAABFYX1RPVEFMQUREUkVTU0JFVAEAAAAPZ2FtZXNHZXRDb3VudGVyAAAAAAkABBoAAAACBQAAAAR0aGlzBQAAABFnYW1lc0xhYmVsQ291bnRlcgEAAAATZ2FtZXNHZXRCZXRzQ291bnRlcgAAAAAJAAQaAAAAAgUAAAAEdGhpcwUAAAAVZ2FtZXNMYWJlbEJldHNDb3VudGVyAQAAABRnYW1lc0dldEJldHNGZWVNb3ZlZAAAAAAJAAQaAAAAAgUAAAAEdGhpcwUAAAAWZ2FtZXNMYWJlbEJldHNGZWVNb3ZlZAEAAAAWZ2FtZXNHZXRUb3RhbEFtb3VudFdpbgAAAAAJAAQaAAAAAgUAAAAEdGhpcwUAAAAYZ2FtZXNMYWJlbFRvdGFsQW1vdW50V2luAQAAABZnYW1lc0dldFRvdGFsQW1vdW50QmV0AAAAAAkABBoAAAACBQAAAAR0aGlzBQAAABhnYW1lc0xhYmVsVG90YWxBbW91bnRCZXQBAAAAF2dhbWVzR2V0VG90YWxBZGRyZXNzQmV0AAAAAAkABBoAAAACBQAAAAR0aGlzBQAAABlnYW1lc0xhYmVsVG90YWxBZGRyZXNzQmV0AQAAABBudW1iZXJMYWJlbENvdW50AAAAAQAAAAZudW1iZXIJAAEsAAAAAgIAAAACTl8FAAAABm51bWJlcgEAAAAObnVtYmVyR2V0Q291bnQAAAABAAAABm51bWJlcgkABBoAAAACBQAAAAR0aGlzCQEAAAAQbnVtYmVyTGFiZWxDb3VudAAAAAEFAAAABm51bWJlcgEAAAAPZ2FtZUxhYmVsU3RhdHVzAAAAAQAAAAxHQU1FU0NPVU5URVIJAAEsAAAAAgkAASwAAAACAgAAAAJHXwkAAaQAAAABBQAAAAxHQU1FU0NPVU5URVICAAAAB19TVEFUVVMBAAAAD2dhbWVMYWJlbE51bWJlcgAAAAEAAAAMR0FNRVNDT1VOVEVSCQABLAAAAAIJAAEsAAAAAgIAAAACR18JAAGkAAAAAQUAAAAMR0FNRVNDT1VOVEVSAgAAAAdfTlVNQkVSAQAAAAxnYW1lTGFiZWxNYXgAAAABAAAADEdBTUVTQ09VTlRFUgkAASwAAAACCQABLAAAAAICAAAAAkdfCQABpAAAAAEFAAAADEdBTUVTQ09VTlRFUgIAAAAEX01BWAEAAAANZ2FtZUxhYmVsQmV0cwAAAAEAAAAMR0FNRVNDT1VOVEVSCQABLAAAAAIJAAEsAAAAAgIAAAACR18JAAGkAAAAAQUAAAAMR0FN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QVgFAAAABndpbm1heAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAEmFkZHJlc3NMYWJlbEFtb3VudAAAAAEFAAAAB2FkZHJlc3MJAABkAAAAAgUAAAANQUREUkVTU0FNT1VOVAUAAAAGYW1vdW50CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAQYWRkcmVzc0xhYmVsQmV0cwAAAAEFAAAAB2FkZHJlc3MJAABkAAAAAgUAAAALQUREUkVTU0JFVFMAAAAAAAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAAFWdhbWVzTGFiZWxCZXRzQ291bnRlcgkAAGQAAAACCQEAAAAFdmFsdWUAAAABCQEAAAATZ2FtZXNHZXRCZXRzQ291bnRlcgAAAAAAAAAAAAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAAGGdhbWVzTGFiZWxUb3RhbEFtb3VudEJldAkAAGQAAAACCQEAAAAFdmFsdWUAAAABCQEAAAAWZ2FtZXNHZXRUb3RhbEFtb3VudEJldAAAAAAFAAAABmFtb3VudAUAAAADbmlsBAAAAA9UT1RBTEFERFJFU1NCRVQJAABkAAAAAgkBAAAABXZhbHVlAAAAAQkBAAAAF2dhbWVzR2V0VG90YWxBZGRyZXNzQmV0AAAAAAAAAAAAAAAAAQQAAAAJZGF0YUZpbmFsAwkAAAAAAAACBQAAAA1BRERSRVNTQU1PVU5UAAAAAAAAAAAACQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAATcG9pbnRlckFkZHJlc3NMYWJlbAAAAAEJAAGkAAAAAQUAAAAPVE9UQUxBRERSRVNTQkVUBQAAAAdhZGRyZXNzCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAABlnYW1lc0xhYmVsVG90YWxBZGRyZXNzQmV0BQAAAA9UT1RBTEFERFJFU1NCRVQFAAAABGRhdGEFAAAABGRhdGEJAQAAAAhXcml0ZVNldAAAAAEFAAAACWRhdGFGaW5hbAkAAAIAAAABAgAAAA5HQU1FX05PVF9GT1VORAkAAAIAAAABAgAAAA5HQU1FX05PVF9GT1VORAkAAAIAAAABAgAAAA5HQU1FX05PVF9GT1VORAkA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AApDVVJSU1RBVFVTCQEAAAAFdmFsdWUAAAABCQEAAAANZ2FtZUdldFN0YXR1cwAAAAEFAAAADEdBTUVTQ09VTlRFUgMJAQAAAAIhPQAAAAIFAAAACkNVUlJTVEFUVVMCAAAABFNIT1cJAAACAAAAAQIAAAAXQ1VSUl9TVEFUVVNfSVNfTk9UX1NIT1cEAAAABEJFVFMJAQAAAAV2YWx1ZQAAAAEJAQAAAAtnYW1lR2V0QmV0cwAAAAEFAAAADEdBTUVTQ09VTlRFUgQAAAAGUEFTU0VECQEAAAAFdmFsdWUAAAABCQEAAAANZ2FtZUdldFBhc3NlZAAAAAEFAAAADEdBTUVTQ09VTlRFUgMJAQAAAAIhPQAAAAIFAAAABEJFVFMFAAAABlBBU1NFRAkAAAIAAAABAgAAAA9XQUlUX0FMTF9QQVNTRUQJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQUAAAAPd2FsbGV0UHVibGljS2V5BQAAAAZhbW91bnQFAAAABHVuaXQFAAAAA25pbAkAAAIAAAABAgAAAAtJTklUX05FRURFRAAAAAFpAQAAAA9iZXRzRmVlVG9TZXJ2ZXIAAAAAAwkBAAAAD2NoZWNrUGVybWlzc2lvbgAAAAEIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQkAAAIAAAABAgAAABliZXRzRmVlVG9TZXJ2ZXJfRk9SQkJJREVOBAAAAAckbWF0Y2gwCQEAAAAPZ2FtZXNHZXRDb3VudGVyAAAAAAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAxHQU1FU0NPVU5URVIFAAAAByRtYXRjaDADCQAAAAAAAAIFAAAADEdBTUVTQ09VTlRFUgAAAAAAAAAAAAkAAAIAAAABAgAAAAtOT19CRVRTX0ZFRQQAAAAKQ1VSUlNUQVRVUwkBAAAABXZhbHVlAAAAAQkBAAAADWdhbWVHZXRTdGF0dXMAAAABBQAAAAxHQU1FU0NPVU5URVIDCQEAAAACIT0AAAACBQAAAApDVVJSU1RBVFVTAgAAAARTSE9XCQAAAgAAAAECAAAAF0NVUlJfU1RBVFVTX0lTX05PVF9TSE9XBAAAAARCRVRTCQEAAAAFdmFsdWUAAAABCQEAAAALZ2FtZUdldEJldHMAAAABBQAAAAxHQU1FU0NPVU5URVIEAAAABlBBU1NFRAkBAAAABXZhbHVlAAAAAQkBAAAADWdhbWVHZXRQYXNzZWQAAAABBQAAAAxHQU1FU0NPVU5URVIDCQEAAAACIT0AAAACBQAAAARCRVRTBQAAAAZQQVNTRUQJAAACAAAAAQIAAAAPV0FJVF9BTExfUEFTU0VEBAAAAAtCRVRTQ09VTlRFUgkBAAAABXZhbHVlAAAAAQkBAAAAE2dhbWVzR2V0QmV0c0NvdW50ZXIAAAAABAAAAAlCRVRTTU9WRUQJAQAAAAV2YWx1ZQAAAAEJAQAAABRnYW1lc0dldEJldHNGZWVNb3ZlZAAAAAAJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAABZnYW1lc0xhYmVsQmV0c0ZlZU1vdmVkBQAAAAtCRVRTQ09VTlRFUgUAAAADbmlsCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEFAAAAD3NlcnZlclB1YmxpY0tleQkAAGgAAAACCQAAZQAAAAIFAAAAC0JFVFNDT1VOVEVSBQAAAAlCRVRTTU9WRUQFAAAAA2ZlZQUAAAAEdW5pdAUAAAADbmlsCQAAAgAAAAECAAAAC0lOSVRfTkVFREVEAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAQAAAAHJG1hdGNoMAUAAAACdHgDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAE1RyYW5zZmVyVHJhbnNhY3Rpb24EAAAAAlRUBQAAAAckbWF0Y2gwAwkAAAAAAAACCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABCAUAAAACVFQAAAAPc2VuZGVyUHVibGljS2V5CAUAAAACVFQAAAAGc2VuZGVyCQAB9AAAAAMIBQAAAAJUVAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAlRUAAAABnByb29mcwAAAAAAAAAAAAgFAAAAAlRUAAAAD3NlbmRlclB1YmxpY0tleQcDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAFFNldFNjcmlwdFRyYW5zYWN0aW9uBAAAAAJTUwUAAAAHJG1hdGNoMAMJAAAAAAAAAgkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQgFAAAAAlNTAAAAD3NlbmRlclB1YmxpY0tleQgFAAAAAlNTAAAABnNlbmRlcgkAAfQAAAADCAUAAAACU1MAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJTUwAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJTUwAAAA9zZW5kZXJQdWJsaWNLZXkHB9tM0zM=", "chainId": 84, "height": 633806, "spentComplexity": 0 } View: original | compacted Prev: none Next: 47XzH2P9ZxgxGvrCSiLZhi6paTaPUPUt4UxMg6xLMyns Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 3 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let copyright = "Copyright (c) 2019 MaDaMa Labs"
5+
6+let creator = "@daidalos - twitter.com/tw_daidalos"
7+
8+let team = "MaDaMa Labs https://gitlab.com/madamalabs/"
9+
10+let license = "MIT License"
11+
12+let licenseLink = "tldrlegal.com/license/mit-license , opensource.org/licenses/MIT"
13+
14+let serverPublicKey = base58'GNjgmkxdKSYyyBja9QKCtzp9dEHzeLr7J3fmghogEXFc'
15+
16+let walletPublicKey = base58'AbDyruBD8QqodWvMWRxAx8FhwRuf4cMFZu6SA1G4YwWU'
17+
18+let fee = 500000
19+
20+let ONEWAVES = 100000000
21+
22+let periodGamePlay = 2
23+
24+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"]
25+
26+let RSAPUBLIC = fromBase64String("base64:MIIBJTANBgkqhkiG9w0BAQEFAAOCARIAMIIBDQKCAQEAtObfiwWyBFpSNJZmkxlwHy5vT+Jb+Vv6f7LlhKE9wNcC0Qp0rdyMwxLpdwfuLsKbRdBEbDhpb3dz1JPJiatlhKVKUsoQ25UQu9hv2oXyyEzJx86CGQq5HOr3YGGSdJR0LKq1PhbYrNmuS6jPDYobxssXyc/txsipSGwzMgVHcqt9OSiGQySZ8/9mtv42EefzFE95wuuy42KJKG7h0DTMfFSLTpqhS/Mbp8EKPuVb1huWsMKVL9QtOPYEXa9QPZa2WBPX5Y9BI1McRQ/Wf8WwqQtARpBfSVpkKPS1Amht2fEOxSSYRqG6IUsfK8xO9hxt+3+/Op/+IFJTGcGF8BrzWQIGCPw9/u27")
27+
28+let gamesLabelCounter = "X_GAMESCOUNTER"
29+
30+let gamesLabelBetsCounter = "X_BETSCOUNTER"
31+
32+let gamesLabelBetsFeeMoved = "X_BETSFEEMOVED"
33+
34+let gamesLabelTotalAmountWin = "X_TOTALAMOUNTWIN"
35+
36+let gamesLabelTotalAmountBet = "X_TOTALAMOUNTBET"
37+
38+let gamesLabelTotalAddressBet = "X_TOTALADDRESSBET"
39+
40+func gamesGetCounter () = getInteger(this, gamesLabelCounter)
41+
42+
43+func gamesGetBetsCounter () = getInteger(this, gamesLabelBetsCounter)
44+
45+
46+func gamesGetBetsFeeMoved () = getInteger(this, gamesLabelBetsFeeMoved)
47+
48+
49+func gamesGetTotalAmountWin () = getInteger(this, gamesLabelTotalAmountWin)
50+
51+
52+func gamesGetTotalAmountBet () = getInteger(this, gamesLabelTotalAmountBet)
53+
54+
55+func gamesGetTotalAddressBet () = getInteger(this, gamesLabelTotalAddressBet)
56+
57+
58+func numberLabelCount (number) = ("N_" + number)
59+
60+
61+func numberGetCount (number) = getInteger(this, numberLabelCount(number))
62+
63+
64+func gameLabelStatus (GAMESCOUNTER) = (("G_" + toString(GAMESCOUNTER)) + "_STATUS")
65+
66+
67+func gameLabelNumber (GAMESCOUNTER) = (("G_" + toString(GAMESCOUNTER)) + "_NUMBER")
68+
69+
70+func gameLabelMax (GAMESCOUNTER) = (("G_" + toString(GAMESCOUNTER)) + "_MAX")
71+
72+
73+func gameLabelBets (GAMESCOUNTER) = (("G_" + toString(GAMESCOUNTER)) + "_BETS")
74+
75+
76+func gameLabelPassed (GAMESCOUNTER) = (("G_" + toString(GAMESCOUNTER)) + "_PASSED")
77+
78+
79+func gameLabelHeight (GAMESCOUNTER) = (("G_" + toString(GAMESCOUNTER)) + "_HEIGHT")
80+
81+
82+func gameLabelSumSha (GAMESCOUNTER) = (("G_" + toString(GAMESCOUNTER)) + "_SUMSHA")
83+
84+
85+func gameLabelCmbMax (GAMESCOUNTER,CMB) = ((("G_" + toString(GAMESCOUNTER)) + "_C") + CMB)
86+
87+
88+func gameGetStatus (GAMESCOUNTER) = getString(this, gameLabelStatus(GAMESCOUNTER))
89+
90+
91+func gameGetNumber (GAMESCOUNTER) = getInteger(this, gameLabelNumber(GAMESCOUNTER))
92+
93+
94+func gameGetMax (GAMESCOUNTER) = getInteger(this, gameLabelMax(GAMESCOUNTER))
95+
96+
97+func gameGetBets (GAMESCOUNTER) = getInteger(this, gameLabelBets(GAMESCOUNTER))
98+
99+
100+func gameGetPassed (GAMESCOUNTER) = getInteger(this, gameLabelPassed(GAMESCOUNTER))
101+
102+
103+func gameGetHeight (GAMESCOUNTER) = getInteger(this, gameLabelHeight(GAMESCOUNTER))
104+
105+
106+func gameGetSumSha (GAMESCOUNTER) = getString(this, gameLabelSumSha(GAMESCOUNTER))
107+
108+
109+func gameGetCmbMax (GAMESCOUNTER,CMB) = getInteger(this, gameLabelCmbMax(GAMESCOUNTER, CMB))
110+
111+
112+func betLabelStatus (idBet) = (("B_" + idBet) + "_STATUS")
113+
114+
115+func betLabelInfo (idBet) = (("B_" + idBet) + "_INFO")
116+
117+
118+func betGetStatus (idBet) = getString(this, betLabelStatus(idBet))
119+
120+
121+func betGetInfo (idBet) = getString(this, betLabelInfo(idBet))
122+
123+
124+func addressLabelWon (addr) = (("A_" + addr) + "_WON")
125+
126+
127+func addressLabelAmount (addr) = (("A_" + addr) + "_AMOUNT")
128+
129+
130+func addressLabelBets (addr) = (("A_" + addr) + "_BETS")
131+
132+
133+func addressLabelHit (addr) = (("A_" + addr) + "_HIT")
134+
135+
136+func addressGetWon (addr) = getInteger(this, addressLabelWon(addr))
137+
138+
139+func addressGetAmount (addr) = getInteger(this, addressLabelAmount(addr))
140+
141+
142+func addressGetBets (addr) = getInteger(this, addressLabelBets(addr))
143+
144+
145+func addressGetHit (addr) = getInteger(this, addressLabelHit(addr))
146+
147+
148+func pointerAddressLabel (id) = ("P_" + id)
149+
150+
151+func checkPermission (callerPublicKey) = (callerPublicKey != serverPublicKey)
152+
153+
154+func gameNewMax (win) = match gamesGetCounter() {
155+ case GAMESCOUNTER: Int =>
156+ match gameGetMax(GAMESCOUNTER) {
157+ case CURRMAX: Int =>
158+ let temp = (CURRMAX - win)
159+ if ((0 > temp))
160+ then throw("BET_IS_BLOCK")
161+ else temp
162+ case _ =>
163+ throw("GAME_NOT_FOUND")
164+ }
165+ case _ =>
166+ throw("INIT_NEEDED")
167+}
168+
169+
170+func gameNewSumSha (txId) = match gamesGetCounter() {
171+ case GAMESCOUNTER: Int =>
172+ match gameGetSumSha(GAMESCOUNTER) {
173+ case SUMSHA: String =>
174+ toBase58String(sha256((fromBase58String(SUMSHA) + txId)))
175+ case _ =>
176+ throw("GAME_NOT_FOUND")
177+ }
178+ case _ =>
179+ throw("INIT_NEEDED")
180+}
181+
182+
183+func checkIdBet (idBet) = match betGetInfo(idBet) {
184+ case temp: String =>
185+ throw("PLAYER_ALREADY_DEFINED")
186+ case _ =>
187+ 1
188+}
189+
190+
191+func checkBet (bet) = if (if (if (if (if (if ((bet == 10000000))
192+ then true
193+ else (bet == 20000000))
194+ then true
195+ else (bet == 50000000))
196+ then true
197+ else (bet == 100000000))
198+ then true
199+ else (bet == 200000000))
200+ then true
201+ else (bet == 500000000))
202+ then 1
203+ else throw("BET_NOT_FOUND")
204+
205+
206+func getCmb (cmb) = match getInteger(this, ("C" + cmb)) {
207+ case temp: Int =>
208+ temp
209+ case _ =>
210+ throw("CMB_NOT_FOUND")
211+}
212+
213+
214+func allowCmbMax (gamecounter,cmb,win) = match gameGetCmbMax(gamecounter, cmb) {
215+ case temp: Int =>
216+ if (((temp + win) > 20000000000))
217+ then throw("CMB_MAX_WIN")
218+ else 1
219+ case _ =>
220+ 1
221+}
222+
223+
224+@Callable(i)
225+func bet (id,cmb) = match gamesGetCounter() {
226+ case GAMESCOUNTER: Int =>
227+ if ((id != GAMESCOUNTER))
228+ then throw("GAME_ID_WRONG")
229+ else match gameGetStatus(GAMESCOUNTER) {
230+ case CURRSTATUS: String =>
231+ if ((CURRSTATUS != "PLAY"))
232+ then throw("CURR_STATUS_IS_NOT_PLAY")
233+ else match gameGetHeight(GAMESCOUNTER) {
234+ case GAMEHEIGHT: Int =>
235+ if (if ((GAMEHEIGHT != 0))
236+ then (height > (GAMEHEIGHT + periodGamePlay))
237+ else false)
238+ then throw("GAME_IS_END")
239+ else match gameGetBets(GAMESCOUNTER) {
240+ case BETS: Int =>
241+ let idBet = ((toString(GAMESCOUNTER) + "_") + toString((BETS + 1)))
242+ let payment = value(i.payment)
243+ match payment.assetId {
244+ case assetId: ByteVector =>
245+ throw("ONLY_WAVES_ACCEPTED")
246+ case _ =>
247+ let amount = (payment.amount - fee)
248+ let win = (((checkIdBet(idBet) * checkBet(amount)) * getCmb(cmb)) * amount)
249+ let winmax = (win * allowCmbMax(GAMESCOUNTER, cmb, win))
250+ let address = toBase58String(i.caller.bytes)
251+ let info = ((((((address + "||") + cmb) + "||") + toString(amount)) + "||") + toString(winmax))
252+ let ADDRESSAMOUNT = match addressGetAmount(address) {
253+ case temp: Int =>
254+ temp
255+ case _ =>
256+ 0
257+ }
258+ let ADDRESSBETS = match addressGetBets(address) {
259+ case temp: Int =>
260+ temp
261+ case _ =>
262+ 0
263+ }
264+ let CMBMAX = match gameGetCmbMax(GAMESCOUNTER, cmb) {
265+ case temp: Int =>
266+ temp
267+ case _ =>
268+ 0
269+ }
270+ let data = [DataEntry(betLabelInfo(idBet), info), DataEntry(betLabelStatus(idBet), "ACCEPT"), DataEntry(gameLabelBets(GAMESCOUNTER), (BETS + 1)), DataEntry(gameLabelHeight(GAMESCOUNTER), if ((GAMEHEIGHT == 0))
271+ then height
272+ 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))]
273+ let TOTALADDRESSBET = (value(gamesGetTotalAddressBet()) + 1)
274+ let dataFinal = if ((ADDRESSAMOUNT == 0))
275+ then [DataEntry(pointerAddressLabel(toString(TOTALADDRESSBET)), address), DataEntry(gamesLabelTotalAddressBet, TOTALADDRESSBET)] :: data
276+ else data
277+ WriteSet(dataFinal)
278+ }
279+ case _ =>
280+ throw("GAME_NOT_FOUND")
281+ }
282+ case _ =>
283+ throw("GAME_NOT_FOUND")
284+ }
285+ case _ =>
286+ throw("GAME_NOT_FOUND")
287+ }
288+ case _ =>
289+ throw("INIT_NEEDED")
290+}
291+
292+
293+
294+@Callable(i)
295+func getWin (BET) = if (checkPermission(i.callerPublicKey))
296+ then throw("getWin_FORBBIDEN")
297+ else match gamesGetCounter() {
298+ case GAMESCOUNTER: Int =>
299+ match gameGetStatus(GAMESCOUNTER) {
300+ case CURRSTATUS: String =>
301+ if ((CURRSTATUS != "SHOW"))
302+ then throw("CURR_STATUS_IS_NOT_SHOW")
303+ else match gameGetNumber(GAMESCOUNTER) {
304+ case NUMBER: Int =>
305+ let idBet = ((toString(GAMESCOUNTER) + "_") + toString(BET))
306+ let numberString = (("_" + toString(NUMBER)) + "_")
307+ let red = "|_1_3_5_7_9_12_14_16_18_19_21_23_25_27_30_32_34_36_|"
308+ let black = "|_2_4_6_8_10_11_13_15_17_20_22_24_26_28_29_31_33_35_|"
309+ let indexRed = match indexOf(red, numberString) {
310+ case temp: Int =>
311+ (temp > 0)
312+ case _ =>
313+ false
314+ }
315+ let indexBlack = match indexOf(black, numberString) {
316+ case temp: Int =>
317+ (temp > 0)
318+ case _ =>
319+ false
320+ }
321+ let cmbRB = ("_" + (if (indexRed)
322+ then "RED"
323+ else if (indexBlack)
324+ then "BLACK"
325+ else "NDF"))
326+ let cmbEO = ("_" + (if (if ((0 >= NUMBER))
327+ then true
328+ else (NUMBER > 36))
329+ then "NDF"
330+ else if (((NUMBER % 2) == 0))
331+ then "EVEN"
332+ else "ODD"))
333+ let cmbLH = ("_" + (if (if ((NUMBER >= 1))
334+ then (18 >= NUMBER)
335+ else false)
336+ then "LOW"
337+ else if (if ((NUMBER >= 19))
338+ then (36 >= NUMBER)
339+ else false)
340+ then "HIGH"
341+ else "NDF"))
342+ let cmbDZ = ("_" + (if (if ((NUMBER >= 1))
343+ then (12 >= NUMBER)
344+ else false)
345+ then "DOZER1"
346+ else if (if ((NUMBER >= 13))
347+ then (24 >= NUMBER)
348+ else false)
349+ then "DOZER2"
350+ else if (if ((NUMBER >= 25))
351+ then (36 >= NUMBER)
352+ else false)
353+ then "DOZER3"
354+ else "NDF"))
355+ let cmbCL = ("_" + (if (if ((0 >= NUMBER))
356+ then true
357+ else (NUMBER > 36))
358+ then "NDF"
359+ else if (((NUMBER % 3) == 1))
360+ then "COLUMN1"
361+ else if (((NUMBER % 3) == 2))
362+ then "COLUMN2"
363+ else "COLUMN3"))
364+ let STATUS = match betGetStatus(idBet) {
365+ case temp: String =>
366+ temp
367+ case _ =>
368+ throw("BET_STATUS_NOT_FOUND")
369+ }
370+ let INFO = match betGetInfo(idBet) {
371+ case temp: String =>
372+ temp
373+ case _ =>
374+ throw("BET_INFO_NOT_FOUND")
375+ }
376+ let INFOS = split(INFO, "||")
377+ let ADDRESSSTRING = INFOS[0]
378+ let ADDRESS = value(addressFromString(ADDRESSSTRING))
379+ let CMB = INFOS[1]
380+ let AMOUNT = value(parseInt(INFOS[2]))
381+ let WIN = value(parseInt(INFOS[3]))
382+ let ADDRESSWON = match addressGetWon(ADDRESSSTRING) {
383+ case temp: Int =>
384+ temp
385+ case _ =>
386+ 0
387+ }
388+ let ADDRESSHIT = match addressGetHit(ADDRESSSTRING) {
389+ case temp: Int =>
390+ temp
391+ case _ =>
392+ 0
393+ }
394+ let DATAPASSED = DataEntry(gameLabelPassed(GAMESCOUNTER), (value(gameGetPassed(GAMESCOUNTER)) + 1))
395+ if (if (if (if (if ((STATUS == "ACCEPT"))
396+ then (CMB != "")
397+ else false)
398+ then (WIN > 0)
399+ else false)
400+ then (AMOUNT > 0)
401+ else false)
402+ then isDefined(ADDRESS)
403+ else false)
404+ then {
405+ let cmbIN = match indexOf((("|" + CMB) + "|"), numberString) {
406+ case temp: Int =>
407+ (temp > 0)
408+ case _ =>
409+ false
410+ }
411+ if (if (if (if (if (if (cmbIN)
412+ then true
413+ else (CMB == cmbRB))
414+ then true
415+ else (CMB == cmbEO))
416+ then true
417+ else (CMB == cmbLH))
418+ then true
419+ else (CMB == cmbDZ))
420+ then true
421+ else (CMB == cmbCL))
422+ 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)]))
423+ else WriteSet([DATAPASSED, DataEntry(betLabelStatus(idBet), "LOST")])
424+ }
425+ else throw("GET_WIN_ALREADY_CALLED")
426+ case _ =>
427+ throw("GAME_NOT_FOUND")
428+ }
429+ case _ =>
430+ throw("GAME_NOT_FOUND")
431+ }
432+ case _ =>
433+ throw("INIT_NEEDED")
434+ }
435+
436+
437+
438+@Callable(i)
439+func addCmb (cmb,val) = if (checkPermission(i.callerPublicKey))
440+ then throw("addCmb_FORBBIDEN")
441+ else match gamesGetCounter() {
442+ case GAMESCOUNTER: Int =>
443+ if ((GAMESCOUNTER != 0))
444+ then throw("INIT_ALREADY_DONE")
445+ else if (if (if (if (if (if (if ((val == 1))
446+ then true
447+ else (val == 2))
448+ then true
449+ else (val == 5))
450+ then true
451+ else (val == 8))
452+ then true
453+ else (val == 11))
454+ then true
455+ else (val == 17))
456+ then true
457+ else (val == 35))
458+ then WriteSet([DataEntry(("C" + cmb), val)])
459+ else throw("AMOUNT_NOT_FOUND")
460+ case _ =>
461+ throw("INIT_NEEDED")
462+ }
463+
464+
465+
466+@Callable(i)
467+func initGame () = if (checkPermission(i.callerPublicKey))
468+ then throw("initGame_FORBBIDEN")
469+ else match gamesGetCounter() {
470+ case GAMESCOUNTER: Int =>
471+ throw("INIT_ALREADY_DONE")
472+ case _ =>
473+ WriteSet([DataEntry(gamesLabelCounter, 0), DataEntry(gamesLabelBetsCounter, 0), DataEntry(gamesLabelBetsFeeMoved, 0), DataEntry(gamesLabelTotalAmountWin, 0), DataEntry(gamesLabelTotalAmountBet, 0), DataEntry(gamesLabelTotalAddressBet, 0)])
474+ }
475+
476+
477+
478+@Callable(i)
479+func newGame () = if (checkPermission(i.callerPublicKey))
480+ then throw("newGame_FORBBIDEN")
481+ else match gamesGetCounter() {
482+ case GAMESCOUNTER: Int =>
483+ let newGameCounter = (GAMESCOUNTER + 1)
484+ let BETSCOUNTER = value(gamesGetBetsCounter())
485+ let BETSMOVED = value(gamesGetBetsFeeMoved())
486+ let gameMax = (wavesBalance(this) - ((BETSCOUNTER - BETSMOVED) * fee))
487+ let halfGameMax = if (((gameMax % 2) == 1))
488+ then ((gameMax - 1) / 2)
489+ else (gameMax / 2)
490+ 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)))])
491+ if ((ONEWAVES > halfGameMax))
492+ then throw("BALANCE_IS_LOW")
493+ else if ((GAMESCOUNTER == 0))
494+ then sendData
495+ else {
496+ let CURRSTATUS = value(gameGetStatus(GAMESCOUNTER))
497+ if ((CURRSTATUS != "SHOW"))
498+ then throw("CURR_STATUS_IS_NOT_SHOW")
499+ else {
500+ let BETS = value(gameGetBets(GAMESCOUNTER))
501+ let PASSED = value(gameGetPassed(GAMESCOUNTER))
502+ if ((BETS != PASSED))
503+ then throw("WAIT_ALL_PASSED")
504+ else sendData
505+ }
506+ }
507+ case _ =>
508+ throw("INIT_NEEDED")
509+ }
510+
511+
512+
513+@Callable(i)
514+func showGame (rsaSign) = if (checkPermission(i.callerPublicKey))
515+ then throw("showGame_FORBBIDEN")
516+ else match gamesGetCounter() {
517+ case GAMESCOUNTER: Int =>
518+ match gameGetSumSha(GAMESCOUNTER) {
519+ case SUMSHA: String =>
520+ let rsaSigValid = rsaVerify(SHA256, fromBase58String(SUMSHA), rsaSign, RSAPUBLIC)
521+ if (!(rsaSigValid))
522+ then throw("INVALID_RSA_SIGN")
523+ else {
524+ let index = (toInt(sha256(rsaSign)) % 37)
525+ let numberString = wheel[index]
526+ let number = value(parseInt(numberString))
527+ let numberCount = match numberGetCount(numberString) {
528+ case temp: Int =>
529+ temp
530+ case _ =>
531+ 0
532+ }
533+ let CURRSTATUS = value(gameGetStatus(GAMESCOUNTER))
534+ if ((CURRSTATUS != "PLAY"))
535+ then throw("CURR_STATUS_IS_NOT_PLAY")
536+ else {
537+ let GAMEHEIGHT = value(gameGetHeight(GAMESCOUNTER))
538+ if (if ((GAMEHEIGHT == 0))
539+ then true
540+ else ((GAMEHEIGHT + periodGamePlay) >= height))
541+ then throw("GAME_IS_NOT_END")
542+ else WriteSet([DataEntry(gameLabelStatus(GAMESCOUNTER), "SHOW"), DataEntry(gameLabelNumber(GAMESCOUNTER), number), DataEntry(numberLabelCount(numberString), (numberCount + 1))])
543+ }
544+ }
545+ case _ =>
546+ throw("GAME_NOT_FOUND")
547+ }
548+ case _ =>
549+ throw("INIT_NEEDED")
550+ }
551+
552+
553+
554+@Callable(i)
555+func amountToWallet (amount) = if (checkPermission(i.callerPublicKey))
556+ then throw("amountToWallet_FORBBIDEN")
557+ else match gamesGetCounter() {
558+ case GAMESCOUNTER: Int =>
559+ if ((GAMESCOUNTER == 0))
560+ then TransferSet([ScriptTransfer(addressFromPublicKey(serverPublicKey), amount, unit)])
561+ else {
562+ let CURRSTATUS = value(gameGetStatus(GAMESCOUNTER))
563+ if ((CURRSTATUS != "SHOW"))
564+ then throw("CURR_STATUS_IS_NOT_SHOW")
565+ else {
566+ let BETS = value(gameGetBets(GAMESCOUNTER))
567+ let PASSED = value(gameGetPassed(GAMESCOUNTER))
568+ if ((BETS != PASSED))
569+ then throw("WAIT_ALL_PASSED")
570+ else TransferSet([ScriptTransfer(addressFromPublicKey(walletPublicKey), amount, unit)])
571+ }
572+ }
573+ case _ =>
574+ throw("INIT_NEEDED")
575+ }
576+
577+
578+
579+@Callable(i)
580+func betsFeeToServer () = if (checkPermission(i.callerPublicKey))
581+ then throw("betsFeeToServer_FORBBIDEN")
582+ else match gamesGetCounter() {
583+ case GAMESCOUNTER: Int =>
584+ if ((GAMESCOUNTER == 0))
585+ then throw("NO_BETS_FEE")
586+ else {
587+ let CURRSTATUS = value(gameGetStatus(GAMESCOUNTER))
588+ if ((CURRSTATUS != "SHOW"))
589+ then throw("CURR_STATUS_IS_NOT_SHOW")
590+ else {
591+ let BETS = value(gameGetBets(GAMESCOUNTER))
592+ let PASSED = value(gameGetPassed(GAMESCOUNTER))
593+ if ((BETS != PASSED))
594+ then throw("WAIT_ALL_PASSED")
595+ else {
596+ let BETSCOUNTER = value(gamesGetBetsCounter())
597+ let BETSMOVED = value(gamesGetBetsFeeMoved())
598+ ScriptResult(WriteSet([DataEntry(gamesLabelBetsFeeMoved, BETSCOUNTER)]), TransferSet([ScriptTransfer(addressFromPublicKey(serverPublicKey), ((BETSCOUNTER - BETSMOVED) * fee), unit)]))
599+ }
600+ }
601+ }
602+ case _ =>
603+ throw("INIT_NEEDED")
604+ }
605+
606+
607+@Verifier(tx)
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: 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+}
620+

github/deemru/w8io/026f985 
47.64 ms