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