tx · 81B5Xp6rmdAGLFDbLzdQM4TMh7QUF7soNMuNdWV3tFaB 3MpuwYJBgXCP76gsc7rLb3JVqfKEGKqMjx4: -0.10100000 Waves 2022.05.11 20:46 [2047316] smart account 3MpuwYJBgXCP76gsc7rLb3JVqfKEGKqMjx4 > SELF 0.00000000 Waves
{ "type": 13, "id": "81B5Xp6rmdAGLFDbLzdQM4TMh7QUF7soNMuNdWV3tFaB", "fee": 10100000, "feeAssetId": null, "timestamp": 1652291216791, "version": 2, "chainId": 84, "sender": "3MpuwYJBgXCP76gsc7rLb3JVqfKEGKqMjx4", "senderPublicKey": "23FsU9RCqbsgVNU2yemQbXvWjoLbRvrgtPrb2aatusFX", "proofs": [ "3K33cygnyGCgRwacWVYHQHefPTzpWJMqVEFw5dgSknfWn3LbmCsnogCJqKYLH1rd7qzURAsZkg1kuy3KFrfoArXB" ], "script": "base64:AAIFAAAAAAAAAB0IAhIAEgASBAoCCAESAwoBCBIECgIIARIECgIICAAAACwAAAAABXdoZWVsCQAETAAAAAIAAAAAAAAAAAUJAARMAAAAAgAAAAAAAAAAGAkABEwAAAACAAAAAAAAAAAQCQAETAAAAAIAAAAAAAAAACEJAARMAAAAAgAAAAAAAAAAAQkABEwAAAACAAAAAAAAAAAUCQAETAAAAAIAAAAAAAAAAA4JAARMAAAAAgAAAAAAAAAAHwkABEwAAAACAAAAAAAAAAAJCQAETAAAAAIAAAAAAAAAABYJAARMAAAAAgAAAAAAAAAAEgkABEwAAAACAAAAAAAAAAAdCQAETAAAAAIAAAAAAAAAAAcJAARMAAAAAgAAAAAAAAAAHAkABEwAAAACAAAAAAAAAAAMCQAETAAAAAIAAAAAAAAAACMJAARMAAAAAgAAAAAAAAAAAwkABEwAAAACAAAAAAAAAAAaCQAETAAAAAIAAAAAAAAAAAAJAARMAAAAAgAAAAAAAAAAIAkABEwAAAACAAAAAAAAAAAPCQAETAAAAAIAAAAAAAAAABMJAARMAAAAAgAAAAAAAAAABAkABEwAAAACAAAAAAAAAAAVCQAETAAAAAIAAAAAAAAAAAIJAARMAAAAAgAAAAAAAAAAGQkABEwAAAACAAAAAAAAAAARCQAETAAAAAIAAAAAAAAAACIJAARMAAAAAgAAAAAAAAAABgkABEwAAAACAAAAAAAAAAAbCQAETAAAAAIAAAAAAAAAAA0JAARMAAAAAgAAAAAAAAAAJAkABEwAAAACAAAAAAAAAAALCQAETAAAAAIAAAAAAAAAAB4JAARMAAAAAgAAAAAAAAAACAkABEwAAAACAAAAAAAAAAAXCQAETAAAAAIAAAAAAAAAAAoFAAAAA25pbAAAAAAFYmxhY2sJAARMAAAAAgAAAAAAAAAAAgkABEwAAAACAAAAAAAAAAAECQAETAAAAAIAAAAAAAAAAAYJAARMAAAAAgAAAAAAAAAACAkABEwAAAACAAAAAAAAAAAKCQAETAAAAAIAAAAAAAAAAAsJAARMAAAAAgAAAAAAAAAADQkABEwAAAACAAAAAAAAAAAPCQAETAAAAAIAAAAAAAAAABEJAARMAAAAAgAAAAAAAAAAFAkABEwAAAACAAAAAAAAAAAWCQAETAAAAAIAAAAAAAAAABgJAARMAAAAAgAAAAAAAAAAGgkABEwAAAACAAAAAAAAAAAcCQAETAAAAAIAAAAAAAAAAB0JAARMAAAAAgAAAAAAAAAAHwkABEwAAAACAAAAAAAAAAAhCQAETAAAAAIAAAAAAAAAACMFAAAAA25pbAAAAAADcmVkCQAETAAAAAIAAAAAAAAAAAEJAARMAAAAAgAAAAAAAAAAAwkABEwAAAACAAAAAAAAAAAFCQAETAAAAAIAAAAAAAAAAAcJAARMAAAAAgAAAAAAAAAACQkABEwAAAACAAAAAAAAAAAMCQAETAAAAAIAAAAAAAAAAA4JAARMAAAAAgAAAAAAAAAAEAkABEwAAAACAAAAAAAAAAASCQAETAAAAAIAAAAAAAAAABMJAARMAAAAAgAAAAAAAAAAFQkABEwAAAACAAAAAAAAAAAXCQAETAAAAAIAAAAAAAAAABkJAARMAAAAAgAAAAAAAAAAGwkABEwAAAACAAAAAAAAAAAeCQAETAAAAAIAAAAAAAAAACAJAARMAAAAAgAAAAAAAAAAIgkABEwAAAACAAAAAAAAAAAkBQAAAANuaWwAAAAABGNvbDEJAARMAAAAAgAAAAAAAAAAAQkABEwAAAACAAAAAAAAAAAECQAETAAAAAIAAAAAAAAAAAcJAARMAAAAAgAAAAAAAAAACgkABEwAAAACAAAAAAAAAAANCQAETAAAAAIAAAAAAAAAABAJAARMAAAAAgAAAAAAAAAAEwkABEwAAAACAAAAAAAAAAAWCQAETAAAAAIAAAAAAAAAABkJAARMAAAAAgAAAAAAAAAAHAkABEwAAAACAAAAAAAAAAAfCQAETAAAAAIAAAAAAAAAACIFAAAAA25pbAAAAAAEY29sMgkABEwAAAACAAAAAAAAAAACCQAETAAAAAIAAAAAAAAAAAUJAARMAAAAAgAAAAAAAAAACAkABEwAAAACAAAAAAAAAAALCQAETAAAAAIAAAAAAAAAAA4JAARMAAAAAgAAAAAAAAAAEQkABEwAAAACAAAAAAAAAAAUCQAETAAAAAIAAAAAAAAAABcJAARMAAAAAgAAAAAAAAAAGgkABEwAAAACAAAAAAAAAAAdCQAETAAAAAIAAAAAAAAAACAJAARMAAAAAgAAAAAAAAAAIwUAAAADbmlsAAAAAARjb2wzCQAETAAAAAIAAAAAAAAAAAMJAARMAAAAAgAAAAAAAAAABgkABEwAAAACAAAAAAAAAAAJCQAETAAAAAIAAAAAAAAAAAwJAARMAAAAAgAAAAAAAAAADwkABEwAAAACAAAAAAAAAAASCQAETAAAAAIAAAAAAAAAABUJAARMAAAAAgAAAAAAAAAAGAkABEwAAAACAAAAAAAAAAAbCQAETAAAAAIAAAAAAAAAAB4JAARMAAAAAgAAAAAAAAAAIQkABEwAAAACAAAAAAAAAAAkBQAAAANuaWwAAAAAE2dhbWVNYXN0ZXJQdWJsaWNLZXkJAAJZAAAAAQIAAAAsOHoyWDJ5TDc3ellVVmZMN3Z4Y2dvWHBHUlZtRlV3Qk5YZ3I2V3p6QlZWYjQAAAAAEGdhbWVDb3VudGVyTGFiZWwCAAAADkdfR0FNRVNDT1VOVEVSAAAAABJnYW1lVG90YWxCZXRzTGFiZWwCAAAAC0dfVE9UQUxCRVRTAAAAABZnYW1lUHJvY2Vzc2VkQmV0c0xhYmVsAgAAAA9HX1BST0NFU1NFREJFVFMAAAAAD2dhbWVNaW5CZXRMYWJlbAIAAAAIR19NSU5CRVQAAAAAD2dhbWVNYXhCZXRMYWJlbAIAAAAIR19NQVhCRVQAAAAAEmdhbWVSU0FQdWJsaWNMYWJlbAIAAAALR19SU0FQVUJMSUMAAAAAGGdhbWVNYXN0ZXJQdWJsaWNLZXlMYWJlbAIAAAAXR19HQU1FTUFTVEVSX1BVQkxJQ19LRVkAAAAADmdhbWVUb2tlbkxhYmVsAgAAAAlHX1RPS0VOSUQBAAAAD2dhbWVzR2V0Q291bnRlcgAAAAAJAAQaAAAAAgUAAAAEdGhpcwUAAAAQZ2FtZUNvdW50ZXJMYWJlbAEAAAAOZ2FtZXNUb3RhbEJldHMAAAAACQAEGgAAAAIFAAAABHRoaXMFAAAAEmdhbWVUb3RhbEJldHNMYWJlbAEAAAASZ2FtZXNQcm9jZXNzZWRCZXRzAAAAAAkABBoAAAACBQAAAAR0aGlzBQAAABZnYW1lUHJvY2Vzc2VkQmV0c0xhYmVsAQAAAAtnYW1lc01pbkJldAAAAAAJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMFAAAAD2dhbWVNaW5CZXRMYWJlbAEAAAALZ2FtZXNNYXhCZXQAAAAACQEAAAAR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aXRHYW1lX0ZPUkJCSURFTgQAAAAHJG1hdGNoMAkBAAAAD2dhbWVzR2V0Q291bnRlcgAAAAADCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAAMR0FNRVNDT1VOVEVSBQAAAAckbWF0Y2gwCQAAAgAAAAECAAAAEUlOSVRfQUxSRUFEWV9ET05FCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABBnYW1lQ291bnRlckxhYmVsAAAAAAAAAAAACQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABJnYW1lVG90YWxCZXRzTGFiZWwAAAAAAAAAAAAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAFmdhbWVQcm9jZXNzZWRCZXRzTGFiZWwAAAAAAAAAAAAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAD2dhbWVNaW5CZXRMYWJlbAAAAAAABfXhAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAPZ2FtZU1heEJldExhYmVsAAAAAACVAvkACQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAEmdhbWVSU0FQdWJsaWNMYWJlbAIAAAGTYmFzZTY0Ok1JSUJJekFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUkFBTUlJQkN3S0NBUUlBK0NwYnpNQktwcSs3VmFyU0RITFcwd1FTb2gyTFRiZ2wxckFoZnJ1WkdDanQ2TU80bzF2MWlMcUt5TkgzRkpzdndsTFVxbXFFN0UyV2w3TGJJUEEyNlB4TzJYQ0RmdmowT1dwN2NFSmtVQkVpeVBZQ24raXVQWFVQd3Vkb0ZnTTRXSGYwSVBiREoyTzZPZ3pRbEJCbU51Nk93cjduYUlUaUpyUEF2YWtQZ0FkbVVQdjRyT3pjdTZCUjBUOEd3c3p3cHJ2d1dabEtGNkFkMDBvbUxGRG14NjZIdkJFNTFzUkJpWElSYkpuakRobG9waXplNExvUjFGSXJRYUF1MXNmczViRUhMQTMzanZLeWJuZStJRGF3Q3NpSU5aWWRQWlYxV1djVVJDK1hBRmZCaVlDdzRQWXlndXhhQlJIb3R6TGMyZE9zQlYxSEROSWpMS1ZvUmtueXQ1MENBd0VBQVE9PQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAA5nYW1lVG9rZW5MYWJlbAIAAAAABQAAAANuaWwAAAABaQEAAAAJc3RhcnRHYW1lAAAAAgAAAApyYW5kb21IYXNoAAAADGJsb2NrSW5Sb3VuZAMJAQAAAA9jaGVja1Blcm1pc3Npb24AAAABCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkJAAACAAAAAQIAAAATc3RhcnRHYW1lX0ZPUkJCSURFTgQAAAAHJG1hdGNoMAkBAAAAD2dhbWVzR2V0Q291bnRlcgAAAAADCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAAMR0FNRVNDT1VOVEVSBQAAAAckbWF0Y2gwBAAAAA5uZXdHYW1lQ291bnRlcgkAAGQAAAACBQAAAAxHQU1FU0NPVU5URVIAAAAAAAAAAAEDCQAAZgAAAAIFAAAADEdBTUVTQ09VTlRFUgAAAAAAAAAAAAQAAAAHJG1hdGNoMQkBAAAADGdhbWVHZXRTdGF0ZQAAAAEFAAAADEdBTUVTQ09VTlRFUgMJAAABAAAAAgUAAAAHJG1hdGNoMQIAAAADSW50BAAAAAlnYW1lU3RhdGUFAAAAByRtYXRjaDEDCQAAAAAAAAIFAAAACWdhbWVTdGF0ZQAAAAAAAAAAAAkAAAIAAAABAgAAAB9MYXN0IGdhbWUgaGFzIG5vdCBmaW5pc2hlZCB5ZXQuCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABBnYW1lQ291bnRlckxhYmVsBQAAAA5uZXdHYW1lQ291bnRlcgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAFGdhbWVTdGFydEhlaWdodExhYmVsAAAAAQUAAAAObmV3R2FtZUNvdW50ZXIIBQAAAAlsYXN0QmxvY2sAAAAGaGVpZ2h0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAASZ2FtZUVuZEhlaWdodExhYmVsAAAAAQUAAAAObmV3R2FtZUNvdW50ZXIJAABkAAAAAgUAAAAGaGVpZ2h0BQAAAAxibG9ja0luUm91bmQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAA5nYW1lU3Rh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b3dlciBvciBlcXVhbCB0aGFuIG1pbiBiZXQgKAkAAaQAAAABBQAAAAxtaW5pbXVtVmFsdWUCAAAAASkJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAD2dhbWVNYXhCZXRMYWJlbAUAAAAMbWF4aW11bVZhbHVlBQAAAANuaWwDCQAAAAAAAAIFAAAADXBhcmFtZXRlck5hbWUCAAAACWNoYW5nZU1pbgQAAAAMbWF4aW11bVZhbHVlCQEAAAALZ2FtZXNNYXhCZXQAAAAABAAAAAxtaW5pbXVtVmFsdWUJAQAAAA1wYXJzZUludFZhbHVlAAAAAQUAAAAOcGFyYW1ldGVyVmFsdWUDCQAAZgAAAAIAAAAAAAAAAAAFAAAADG1pbmltdW1WYWx1ZQkAAAIAAAABAgAAABx2YWx1ZSBjYW5ub3QgYmUgbG93ZXIgdGhhbiAwAwkAAGcAAAACBQAAAAxtaW5pbXVtVmFsdWUFAAAADG1heGltdW1WYWx1ZQkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAvdmFsdWUgY2Fubm90IGJlIGdyZWF0ZXIgb3IgZXF1YWwgdGhhbiBtaW4gYmV0ICgJAAGkAAAAAQUAAAAMbWF4aW11bVZhbHVlAgAAAAEpCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA9nYW1lTWluQmV0TGFiZWwFAAAADG1pbmltdW1WYWx1ZQUAAAADbmlsAwkAAAAAAAACBQAAAA1wYXJhbWV0ZXJOYW1lAgAAAAljaGFuZ2VSU0EEAAAAByRtYXRjaDAJAQAAAA9nYW1lc0dldENvdW50ZXIAAAAAAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAADEdBTUVTQ09VTlRFUgUAAAAHJG1hdGNoMAQAAAAHJG1hdGNoMQkBAAAADGdhbWVHZXRTdGF0ZQAAAAEFAAAADEdBTUVTQ09VTlRFUgMJAAABAAAAAgUAAAAHJG1hdGNoMQIAAAADSW50BAAAAAVzdGF0ZQUAAAAHJG1hdGNoMQMJAQAAAAIhPQAAAAIFAAAABXN0YXRlAAAAAAAAAAABCQAAAgAAAAECAAAAGEdhbWUgaGFzIHRvIGJlIGZpbmlzaGVkLgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAABJnYW1lUlNBUHVibGljTGFiZWwFAAAADnBhcmFtZXRlclZhbHVlBQAAAANuaWwJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAASZ2FtZVJTQVB1YmxpY0xhYmVsBQAAAA5wYXJhbWV0ZXJWYWx1ZQUAAAADbmlsCQAAAgAAAAECAAAAHUdhbWUgbmVlZHMgdG8gYmUgaW5pdGlhbGl6ZWQuCQAAAgAAAAECAAAASVNldHRpbmcgbm90IGZvdW5kLiBBbGxvd2VkOiBjaGFuZ2VNYXgsIGNoYW5nZU1pbiwgY2hhbmdlUlNBLCBjaGFuZ2VQdWJLZXkAAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAACQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tledmSsrM=", "height": 2047316, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
Old | New | Differences | |
---|---|---|---|
1 | - | # no script | |
1 | + | {-# STDLIB_VERSION 5 #-} | |
2 | + | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | + | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let a = [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] | |
5 | + | ||
6 | + | let b = [2, 4, 6, 8, 10, 11, 13, 15, 17, 20, 22, 24, 26, 28, 29, 31, 33, 35] | |
7 | + | ||
8 | + | let c = [1, 3, 5, 7, 9, 12, 14, 16, 18, 19, 21, 23, 25, 27, 30, 32, 34, 36] | |
9 | + | ||
10 | + | let d = [1, 4, 7, 10, 13, 16, 19, 22, 25, 28, 31, 34] | |
11 | + | ||
12 | + | let e = [2, 5, 8, 11, 14, 17, 20, 23, 26, 29, 32, 35] | |
13 | + | ||
14 | + | let f = [3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36] | |
15 | + | ||
16 | + | let g = fromBase58String("8z2X2yL77zYUVfL7vxcgoXpGRVmFUwBNXgr6WzzBVVb4") | |
17 | + | ||
18 | + | let h = "G_GAMESCOUNTER" | |
19 | + | ||
20 | + | let i = "G_TOTALBETS" | |
21 | + | ||
22 | + | let j = "G_PROCESSEDBETS" | |
23 | + | ||
24 | + | let k = "G_MINBET" | |
25 | + | ||
26 | + | let l = "G_MAXBET" | |
27 | + | ||
28 | + | let m = "G_RSAPUBLIC" | |
29 | + | ||
30 | + | let n = "G_GAMEMASTER_PUBLIC_KEY" | |
31 | + | ||
32 | + | let o = "G_TOKENID" | |
33 | + | ||
34 | + | func p () = getInteger(this, h) | |
35 | + | ||
36 | + | ||
37 | + | func q () = getInteger(this, i) | |
38 | + | ||
39 | + | ||
40 | + | func r () = getInteger(this, j) | |
41 | + | ||
42 | + | ||
43 | + | func s () = getIntegerValue(this, k) | |
44 | + | ||
45 | + | ||
46 | + | func t () = getIntegerValue(this, l) | |
47 | + | ||
48 | + | ||
49 | + | func u () = getStringValue(this, m) | |
50 | + | ||
51 | + | ||
52 | + | func v () = fromBase64String(u()) | |
53 | + | ||
54 | + | ||
55 | + | func w () = { | |
56 | + | let x = getString(this, o) | |
57 | + | if ($isInstanceOf(x, "String")) | |
58 | + | then { | |
59 | + | let y = x | |
60 | + | if ((y == "")) | |
61 | + | then unit | |
62 | + | else fromBase58String(y) | |
63 | + | } | |
64 | + | else unit | |
65 | + | } | |
66 | + | ||
67 | + | ||
68 | + | func z (A) = (("B_" + toString(A)) + "_BetDetails") | |
69 | + | ||
70 | + | ||
71 | + | func B (A) = (("B_" + toString(A)) + "_WinState") | |
72 | + | ||
73 | + | ||
74 | + | func C (A) = (("B_" + toString(A)) + "_WinAmount") | |
75 | + | ||
76 | + | ||
77 | + | func D (A) = (("B_" + toString(A)) + "_Game") | |
78 | + | ||
79 | + | ||
80 | + | func E (A) = (("B_" + toString(A)) + "_Payout") | |
81 | + | ||
82 | + | ||
83 | + | func F (A) = getStringValue(this, z(A)) | |
84 | + | ||
85 | + | ||
86 | + | func G (A) = getIntegerValue(this, D(A)) | |
87 | + | ||
88 | + | ||
89 | + | func H (I) = (("G_" + toString(I)) + "_State") | |
90 | + | ||
91 | + | ||
92 | + | func J (I) = (("G_" + toString(I)) + "_StartHeight") | |
93 | + | ||
94 | + | ||
95 | + | func K (I) = (("G_" + toString(I)) + "_EndHeight") | |
96 | + | ||
97 | + | ||
98 | + | func L (I) = (("G_" + toString(I)) + "_SumSha") | |
99 | + | ||
100 | + | ||
101 | + | func M (I) = (("G_" + toString(I)) + "_Result") | |
102 | + | ||
103 | + | ||
104 | + | func N (I) = (("G_" + toString(I)) + "_RandomHash") | |
105 | + | ||
106 | + | ||
107 | + | func O (I) = getInteger(this, H(I)) | |
108 | + | ||
109 | + | ||
110 | + | func P (I) = getInteger(this, K(I)) | |
111 | + | ||
112 | + | ||
113 | + | func Q (I) = getString(this, L(I)) | |
114 | + | ||
115 | + | ||
116 | + | func R (I) = getIntegerValue(this, M(I)) | |
117 | + | ||
118 | + | ||
119 | + | func S (T) = (T != g) | |
120 | + | ||
121 | + | ||
122 | + | func U (V) = (V == unit) | |
123 | + | ||
124 | + | ||
125 | + | func W (X) = if ((X == 1)) | |
126 | + | then 36 | |
127 | + | else if ((X == 2)) | |
128 | + | then 18 | |
129 | + | else if ((X == 3)) | |
130 | + | then 12 | |
131 | + | else if ((X == 4)) | |
132 | + | then 9 | |
133 | + | else if ((X == 5)) | |
134 | + | then 7 | |
135 | + | else if ((X == 6)) | |
136 | + | then 6 | |
137 | + | else 0 | |
138 | + | ||
139 | + | ||
140 | + | func Y (Z,aa) = { | |
141 | + | let ab = split(Z, "-") | |
142 | + | let ac = value(parseInt(ab[1])) | |
143 | + | let ad = ab[2] | |
144 | + | if ((ad == "numbers")) | |
145 | + | then { | |
146 | + | let ae = removeByIndex(removeByIndex(removeByIndex(ab, 0), 0), 0) | |
147 | + | if (containsElement(ae, toString(aa))) | |
148 | + | then (ac * W(size(ae))) | |
149 | + | else 0 | |
150 | + | } | |
151 | + | else if ((ad == "color")) | |
152 | + | then if ((ab[3] == "red")) | |
153 | + | then if (containsElement(c, aa)) | |
154 | + | then (ac * 2) | |
155 | + | else 0 | |
156 | + | else if (containsElement(b, aa)) | |
157 | + | then (ac * 2) | |
158 | + | else 0 | |
159 | + | else if ((ad == "column")) | |
160 | + | then if ((ab[3] == "1")) | |
161 | + | then if (containsElement(d, aa)) | |
162 | + | then (ac * 3) | |
163 | + | else 0 | |
164 | + | else if ((ab[3] == "2")) | |
165 | + | then if (containsElement(e, aa)) | |
166 | + | then (ac * 3) | |
167 | + | else 0 | |
168 | + | else if ((ab[3] == "3")) | |
169 | + | then if (containsElement(f, aa)) | |
170 | + | then (ac * 3) | |
171 | + | else 0 | |
172 | + | else 0 | |
173 | + | else if ((ad == "dozen")) | |
174 | + | then if ((ab[3] == "1")) | |
175 | + | then if (if ((aa >= 1)) | |
176 | + | then (12 >= aa) | |
177 | + | else false) | |
178 | + | then (ac * 3) | |
179 | + | else 0 | |
180 | + | else if ((ab[3] == "2")) | |
181 | + | then if (if ((aa >= 13)) | |
182 | + | then (24 >= aa) | |
183 | + | else false) | |
184 | + | then (ac * 3) | |
185 | + | else 0 | |
186 | + | else if ((ab[3] == "3")) | |
187 | + | then if (if ((aa >= 25)) | |
188 | + | then (36 >= aa) | |
189 | + | else false) | |
190 | + | then (ac * 3) | |
191 | + | else 0 | |
192 | + | else 0 | |
193 | + | else if ((ad == "oddeven")) | |
194 | + | then if ((aa == 0)) | |
195 | + | then 0 | |
196 | + | else if ((ab[3] == "even")) | |
197 | + | then if (if (((aa % 2) == 0)) | |
198 | + | then (aa != 0) | |
199 | + | else false) | |
200 | + | then (ac * 2) | |
201 | + | else 0 | |
202 | + | else if (((aa % 2) == 1)) | |
203 | + | then (ac * 2) | |
204 | + | else 0 | |
205 | + | else if ((ad == "lowhigh")) | |
206 | + | then if ((aa == 0)) | |
207 | + | then 0 | |
208 | + | else if ((ab[3] == "low")) | |
209 | + | then if (if ((aa >= 1)) | |
210 | + | then (18 >= aa) | |
211 | + | else false) | |
212 | + | then (ac * 2) | |
213 | + | else 0 | |
214 | + | else if (if ((aa >= 19)) | |
215 | + | then (36 >= aa) | |
216 | + | else false) | |
217 | + | then (ac * 2) | |
218 | + | else 0 | |
219 | + | else 0 | |
220 | + | } | |
221 | + | ||
222 | + | ||
223 | + | @Callable(af) | |
224 | + | func processNextBet () = if (S(af.callerPublicKey)) | |
225 | + | then throw("processNextBet_FORBBIDEN") | |
226 | + | else { | |
227 | + | let x = q() | |
228 | + | if ($isInstanceOf(x, "Int")) | |
229 | + | then { | |
230 | + | let ag = x | |
231 | + | let ah = r() | |
232 | + | if ($isInstanceOf(ah, "Int")) | |
233 | + | then { | |
234 | + | let ai = ah | |
235 | + | let aj = (ai + 1) | |
236 | + | if ((aj > ag)) | |
237 | + | then throw("Next bet has not been placed.") | |
238 | + | else { | |
239 | + | let I = G(aj) | |
240 | + | let ak = O(I) | |
241 | + | if ($isInstanceOf(ak, "Int")) | |
242 | + | then { | |
243 | + | let al = ak | |
244 | + | if ((al == 1)) | |
245 | + | then { | |
246 | + | let aa = R(I) | |
247 | + | let am = F(aj) | |
248 | + | let an = split(am, "-")[0] | |
249 | + | let ao = value(addressFromString(an)) | |
250 | + | let ap = Y(am, aa) | |
251 | + | [ScriptTransfer(ao, ap, w()), IntegerEntry(j, (ai + 1)), IntegerEntry(E(aj), ap)] | |
252 | + | } | |
253 | + | else throw("Game has not finished.") | |
254 | + | } | |
255 | + | else throw("Game does not exist or has already ended.") | |
256 | + | } | |
257 | + | } | |
258 | + | else throw("Game has not been initialized, next bets not found") | |
259 | + | } | |
260 | + | else throw("Game has not been initialized, total bets not found") | |
261 | + | } | |
262 | + | ||
263 | + | ||
264 | + | ||
265 | + | @Callable(af) | |
266 | + | func initGame () = if (S(af.callerPublicKey)) | |
267 | + | then throw("initGame_FORBBIDEN") | |
268 | + | else { | |
269 | + | let x = p() | |
270 | + | if ($isInstanceOf(x, "Int")) | |
271 | + | then { | |
272 | + | let aq = x | |
273 | + | throw("INIT_ALREADY_DONE") | |
274 | + | } | |
275 | + | else [IntegerEntry(h, 0), IntegerEntry(i, 0), IntegerEntry(j, 0), IntegerEntry(k, 100000000), IntegerEntry(l, 2500000000), StringEntry(m, "base64:MIIBIzANBgkqhkiG9w0BAQEFAAOCARAAMIIBCwKCAQIA+CpbzMBKpq+7VarSDHLW0wQSoh2LTbgl1rAhfruZGCjt6MO4o1v1iLqKyNH3FJsvwlLUqmqE7E2Wl7LbIPA26PxO2XCDfvj0OWp7cEJkUBEiyPYCn+iuPXUPwudoFgM4WHf0IPbDJ2O6OgzQlBBmNu6Owr7naITiJrPAvakPgAdmUPv4rOzcu6BR0T8GwszwprvwWZlKF6Ad00omLFDmx66HvBE51sRBiXIRbJnjDhlopize4LoR1FIrQaAu1sfs5bEHLA33jvKybne+IDawCsiINZYdPZV1WWcURC+XAFfBiYCw4PYyguxaBRHotzLc2dOsBV1HDNIjLKVoRknyt50CAwEAAQ=="), StringEntry(o, "")] | |
276 | + | } | |
277 | + | ||
278 | + | ||
279 | + | ||
280 | + | @Callable(af) | |
281 | + | func startGame (ar,as) = if (S(af.callerPublicKey)) | |
282 | + | then throw("startGame_FORBBIDEN") | |
283 | + | else { | |
284 | + | let x = p() | |
285 | + | if ($isInstanceOf(x, "Int")) | |
286 | + | then { | |
287 | + | let aq = x | |
288 | + | let at = (aq + 1) | |
289 | + | if ((aq > 0)) | |
290 | + | then { | |
291 | + | let ah = O(aq) | |
292 | + | if ($isInstanceOf(ah, "Int")) | |
293 | + | then { | |
294 | + | let au = ah | |
295 | + | if ((au == 0)) | |
296 | + | then throw("Last game has not finished yet.") | |
297 | + | else [IntegerEntry(h, at), IntegerEntry(J(at), lastBlock.height), IntegerEntry(K(at), (height + as)), IntegerEntry(H(at), 0), StringEntry(L(at), toBase58String(sha256(fromBase64String(ar))))] | |
298 | + | } | |
299 | + | else throw("Game state not found.") | |
300 | + | } | |
301 | + | else [IntegerEntry(h, at), IntegerEntry(J(at), lastBlock.height), IntegerEntry(K(at), (height + as)), IntegerEntry(H(at), 0), StringEntry(L(at), toBase58String(sha256(fromBase64String(ar))))] | |
302 | + | } | |
303 | + | else throw("INIT_NEEDED") | |
304 | + | } | |
305 | + | ||
306 | + | ||
307 | + | ||
308 | + | @Callable(af) | |
309 | + | func placeBet (Z) = { | |
310 | + | let av = w() | |
311 | + | if ((af.feeAssetId != av)) | |
312 | + | then throw("Fee is not in correct assetId") | |
313 | + | else { | |
314 | + | let ab = split(Z, "-") | |
315 | + | let ad = ab[0] | |
316 | + | if (if (if (if (if (if ((ad != "numbers")) | |
317 | + | then (ad != "column") | |
318 | + | else false) | |
319 | + | then (ad != "color") | |
320 | + | else false) | |
321 | + | then (ad != "dozen") | |
322 | + | else false) | |
323 | + | then (ad != "oddeven") | |
324 | + | else false) | |
325 | + | then (ad != "lowhigh") | |
326 | + | else false) | |
327 | + | then throw("Bet type is not valid.") | |
328 | + | else { | |
329 | + | let x = p() | |
330 | + | if ($isInstanceOf(x, "Int")) | |
331 | + | then { | |
332 | + | let aq = x | |
333 | + | let ah = O(aq) | |
334 | + | if ($isInstanceOf(ah, "Int")) | |
335 | + | then { | |
336 | + | let al = ah | |
337 | + | if ((al == 1)) | |
338 | + | then throw("Game is finished and next game has not started.") | |
339 | + | else if ((size(af.payments) != 1)) | |
340 | + | then throw("Payment not attached or there is more then one payment") | |
341 | + | else { | |
342 | + | let aw = af.payments[0] | |
343 | + | let ax = (aw.amount + af.fee) | |
344 | + | if (if (if ((value(t()) >= ax)) | |
345 | + | then (ax >= value(s())) | |
346 | + | else false) | |
347 | + | then (af.payments[0].assetId == av) | |
348 | + | else false) | |
349 | + | then { | |
350 | + | let ak = P(aq) | |
351 | + | if ($isInstanceOf(ak, "Int")) | |
352 | + | then { | |
353 | + | let ay = ak | |
354 | + | if ((ay > height)) | |
355 | + | then { | |
356 | + | let az = q() | |
357 | + | if ($isInstanceOf(az, "Int")) | |
358 | + | then { | |
359 | + | let ag = az | |
360 | + | let aA = (ag + 1) | |
361 | + | if ((av == unit)) | |
362 | + | then [IntegerEntry(i, (ag + 1)), StringEntry(z(aA), ((((toBase58String(af.caller.bytes) + "-") + toString(ax)) + "-") + Z)), IntegerEntry(D(aA), aq)] | |
363 | + | else [IntegerEntry(i, (ag + 1)), StringEntry(z(aA), ((((toBase58String(af.caller.bytes) + "-") + toString(ax)) + "-") + Z)), IntegerEntry(D(aA), aq)] | |
364 | + | } | |
365 | + | else throw("Game has not been initalized.") | |
366 | + | } | |
367 | + | else throw("Game has already exceeded betting round") | |
368 | + | } | |
369 | + | else throw("End height has not been defined.") | |
370 | + | } | |
371 | + | else throw((((((("Bet (" + toString(ax)) + ") is greater than maximum bet (") + toString(t())) + "), lower than minimum (") + toString(s())) + ") or payment is not in correct assetId.")) | |
372 | + | } | |
373 | + | } | |
374 | + | else throw("Game does not exist or has already ended.") | |
375 | + | } | |
376 | + | else throw("Game needs to be initialized.") | |
377 | + | } | |
378 | + | } | |
379 | + | } | |
380 | + | ||
381 | + | ||
382 | + | ||
383 | + | @Callable(af) | |
384 | + | func endGame (aB,I) = if (S(af.callerPublicKey)) | |
385 | + | then throw("endGame_FORBBIDEN") | |
386 | + | else { | |
387 | + | let x = O(I) | |
388 | + | if ($isInstanceOf(x, "Int")) | |
389 | + | then { | |
390 | + | let al = x | |
391 | + | if ((al == 1)) | |
392 | + | then throw("Game is finished") | |
393 | + | else { | |
394 | + | let ah = P(I) | |
395 | + | if ($isInstanceOf(ah, "Int")) | |
396 | + | then { | |
397 | + | let aC = ah | |
398 | + | if ((aC > height)) | |
399 | + | then throw(("Not enough blocks have past since game has started, game ends at block " + toString(aC))) | |
400 | + | else { | |
401 | + | let ak = Q(I) | |
402 | + | if ($isInstanceOf(ak, "String")) | |
403 | + | then { | |
404 | + | let aD = ak | |
405 | + | let aE = fromBase64String(aB) | |
406 | + | let aF = rsaVerify(SHA256, fromBase58String(aD), aE, v()) | |
407 | + | let az = blockInfoByHeight(aC) | |
408 | + | if ($isInstanceOf(az, "BlockInfo")) | |
409 | + | then { | |
410 | + | let aG = az | |
411 | + | let ar = sha256((take(aE, 32) + take(aG.generationSignature, 32))) | |
412 | + | if (!(aF)) | |
413 | + | then throw("INVALID_RSA_SIGN") | |
414 | + | else { | |
415 | + | let aH = a[((toInt(ar) + value(I)) % 37)] | |
416 | + | [IntegerEntry(H(I), 1), IntegerEntry(M(I), aH), StringEntry(N(I), toBase64String(ar))] | |
417 | + | } | |
418 | + | } | |
419 | + | else throw("Last block does not exist.") | |
420 | + | } | |
421 | + | else throw("SHA does not exist") | |
422 | + | } | |
423 | + | } | |
424 | + | else throw("Cannot get game height.") | |
425 | + | } | |
426 | + | } | |
427 | + | else throw("Game does not exist or has already ended") | |
428 | + | } | |
429 | + | ||
430 | + | ||
431 | + | ||
432 | + | @Callable(af) | |
433 | + | func setParameter (aI,aJ) = if (S(af.callerPublicKey)) | |
434 | + | then throw("setParameter_FORBBIDEN") | |
435 | + | else if ((aI == "changeMax")) | |
436 | + | then { | |
437 | + | let aK = parseIntValue(aJ) | |
438 | + | let aL = s() | |
439 | + | if ((0 > aK)) | |
440 | + | then throw("value cannot be lower than 0") | |
441 | + | else if ((aL >= aK)) | |
442 | + | then throw((("value cannot be lower or equal than min bet (" + toString(aL)) + ")")) | |
443 | + | else [IntegerEntry(l, aK)] | |
444 | + | } | |
445 | + | else if ((aI == "changeMin")) | |
446 | + | then { | |
447 | + | let aK = t() | |
448 | + | let aL = parseIntValue(aJ) | |
449 | + | if ((0 > aL)) | |
450 | + | then throw("value cannot be lower than 0") | |
451 | + | else if ((aL >= aK)) | |
452 | + | then throw((("value cannot be greater or equal than min bet (" + toString(aK)) + ")")) | |
453 | + | else [IntegerEntry(k, aL)] | |
454 | + | } | |
455 | + | else if ((aI == "changeRSA")) | |
456 | + | then { | |
457 | + | let x = p() | |
458 | + | if ($isInstanceOf(x, "Int")) | |
459 | + | then { | |
460 | + | let aq = x | |
461 | + | let ah = O(aq) | |
462 | + | if ($isInstanceOf(ah, "Int")) | |
463 | + | then { | |
464 | + | let al = ah | |
465 | + | if ((al != 1)) | |
466 | + | then throw("Game has to be finished.") | |
467 | + | else [StringEntry(m, aJ)] | |
468 | + | } | |
469 | + | else [StringEntry(m, aJ)] | |
470 | + | } | |
471 | + | else throw("Game needs to be initialized.") | |
472 | + | } | |
473 | + | else throw("Setting not found. Allowed: changeMax, changeMin, changeRSA, changePubKey") | |
474 | + | ||
475 | + | ||
476 | + | @Verifier(aM) | |
477 | + | func aN () = sigVerify(aM.bodyBytes, aM.proofs[0], aM.senderPublicKey) | |
478 | + |
github/deemru/w8io/026f985 31.47 ms ◑