tx · BJryVDx5GgP89YYv4j7RCpZwaZpNWS7J4J1H39jg6Nf4 3N4boZRUJ2LxY5jLyp6hmxGktqnawQidu6H: -0.01000000 Waves 2023.01.10 16:25 [2398898] smart account 3N4boZRUJ2LxY5jLyp6hmxGktqnawQidu6H > SELF 0.00000000 Waves
{ "type": 13, "id": "BJryVDx5GgP89YYv4j7RCpZwaZpNWS7J4J1H39jg6Nf4", "fee": 1000000, "feeAssetId": null, "timestamp": 1673357166880, "version": 2, "chainId": 84, "sender": "3N4boZRUJ2LxY5jLyp6hmxGktqnawQidu6H", "senderPublicKey": "BDeCphaaC4MZvfmbJqQZ78EvuEBZTJ1VEW7fbxue8BUu", "proofs": [ "3dgeyFDpzDVk1N9Wd5rtFUU58CL3rr4sLCw1NL7jjLzWLWJicSUUxHHyYLT6bGDoYJLXbcEy1x82kYEHs9fEow3u" ], "script": "base64:BgIVCAISCQoHCAgBCAgIARIECgIBARIAGgAJc2VwYXJhdG9yAgFfAAdrR29hbFAxAgZnb2FsUDEAB2tHb2FsUDICBmdvYWxQMgALa0RlZmxlY3Rpb24CCmRlZmxlY3Rpb24ACGtWZXJ0ZXgxAgd2ZXJ0ZXgxAAhrVmVydGV4MgIHdmVydGV4MgAIa1ZlcnRleDMCB3ZlcnRleDMAB2tNYXhCZXQCBm1heEJldAEJcmFuZG9taXplAgVieXRlcwVyYW5nZQQEaGFzaAkA9wMBBQVieXRlcwQFaW5kZXgJALEJAQUEaGFzaAkAagIFBWluZGV4BQVyYW5nZQEIZ2V0UG9pbnQBBWJ5dGVzBAF4CQEJcmFuZG9taXplAgkAyQECBQVieXRlcwkAaQIJAMgBAQUFYnl0ZXMAAgBkBAF5CQEJcmFuZG9taXplAgkAzAECBQVieXRlcwkAaQIJAMgBAQUFYnl0ZXMAAgBkCQCUCgIFAXgFAXkBEWdldEdvYWxMaW5lUG9pbnRzAAQCcDEJALUJAgkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwUHa0dvYWxQMQUJc2VwYXJhdG9yBAJwMgkAtQkCCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzBQdrR29hbFAyBQlzZXBhcmF0b3IJAJQKAgkAlAoCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCcDEAAAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAnAxAAEJAJQKAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAnAyAAAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJwMgABAQ1nZXREZWZsZWN0aW9uAAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwULa0RlZmxlY3Rpb24BCWdldE1heEJldAAJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFB2tNYXhCZXQBEGdldFBvbHlnb25Qb2ludHMABAJwMQkAtQkCCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzBQhrVmVydGV4MQUJc2VwYXJhdG9yBAJwMgkAtQkCCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzBQhrVmVydGV4MgUJc2VwYXJhdG9yBAJwMwkAtQkCCQERQGV4dHJOYXRpdmUoMTA1MykC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aW5lAgJwMQRsaW5lCQAAAgkAZAIJAGQCCQBoAggFAnAxAl8xCAUEbGluZQJfMQkAaAIIBQJwMQJfMggFBGxpbmUCXzIIBQRsaW5lAl8zAAABE2lzUG9pbnRJbkRlZmxlY3Rpb24CAnAxBGxpbmUECyR0MDU5NTQ2MDU2BQRsaW5lBAJhMQgFCyR0MDU5NTQ2MDU2Al8xBAJiMQgFCyR0MDU5NTQ2MDU2Al8yBAJjMQgFCyR0MDU5NTQ2MDU2Al8zBAskdDA2MDU5NjE5NAkBDGdldE9ydGhvTGluZQIFAnAxCQCUCgIFAmExBQJiMQQFYU5vcm0IBQskdDA2MDU5NjE5NAJfMQQFYk5vcm0IBQskdDA2MDU5NjE5NAJfMgQFY05vcm0IBQskdDA2MDU5NjE5NAJfMwQBZAkBCm11bFZlY3RvcnMCCQCUCgIFAmExBQJiMQkAlAoCBQVhTm9ybQUFYk5vcm0EAmR4CQEKbXVsVmVjdG9ycwIJAJQKAgkBAS0BBQJjMQUCYjEJAJQKAgkBAS0BBQVjTm9ybQUFYk5vcm0EAmR5CQEKbXVsVmVjdG9ycwIJAJQKAgUCYTEJAQEtAQUCYzEJAJQKAgUFYU5vcm0JAQEtAQUFY05vcm0EBHhSZXMJAGsDAAEFAmR4BQFkBAR5UmVzCQBrAwABBQJkeQUBZAQHbGluZUxlbgkBDWdldExpbmVMZW5ndGgCBQJwMQkAlAoCBQR4UmVzBQR5UmVzCQBnAgkBDWdldERlZmxlY3Rpb24ABQdsaW5lTGVuARBpc1BvaW50SW5Qb2x5Z29uBAJwMQd2ZXJ0ZXgxB3ZlcnRleDIHdmVydGV4MwQIc2VnbWVudDEJAJQKAgUHdmVydGV4MQUHdmVydGV4MgQIc2VnbWVudDIJAJQKAgUHdmVydGV4MgUHdmVydGV4MwQIc2VnbWVudDMJAJQKAgUHdmVydGV4MwUHdmVydGV4MQMDAwkAAAIFAnAxBQd2ZXJ0ZXgxBgkAAAIFAnAxBQd2ZXJ0ZXgyBgkAAAIFAnAxBQd2ZXJ0ZXgzBgkBCGlzSW5zaWRlBAUCcDEFCHNlZ21lbnQxBQhzZWdtZW50MgUIc2VnbWVudDMBFGNhbGNSZXdhcmRNdWx0aXBsaWVyAwZpbkxpbmUJaW5Qb2x5Z29uDGluRGVmbGVjdGlvbgMDBQZpbkxpbmUFCWluUG9seWdvbgcACgMDBQxpbkRlZmxlY3Rpb24FCWluUG9seWdvbgcACAMFBmluTGluZQAGAwUJaW5Qb2x5Z29uAAQDBQxpbkRlZmxlY3Rpb24AAgABAQ92YWxpZGF0ZVBheW1lbnQCDHBheW1lbnRBc3NldA1wYXltZW50QW1vdW50AwMJAAACBQxwYXltZW50QXNzZXQFBHVuaXQJAGcCCQEJZ2V0TWF4QmV0AAUNcGF5bWVudEFtb3VudAcFBHVuaXQJAAIBAhFJbmNvcnJlY3QgcGF5bWVudAMBaQEQc2V0TG90dGVyeVBhcmFtcwcGZ29hbFAxBmdvYWxQMgpkZWZsZWN0aW9uB3ZlcnRleDEHdmVydGV4Mgd2ZXJ0ZXgzBm1heEJldAkAzAgCCQELU3RyaW5nRW50cnkCBQdrR29hbFAxBQZnb2FsUDEJAMwIAgkBC1N0cmluZ0VudHJ5AgUHa0dvYWxQMgUGZ29hbFAyCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQtrRGVmbGVjdGlvbgUKZGVmbGVjdGlvbgkAzAgCCQELU3RyaW5nRW50cnkCBQhrVmVydGV4MQUHdmVydGV4MQkAzAgCCQELU3RyaW5nRW50cnkCBQhrVmVydGV4MgUHdmVydGV4MgkAzAgCCQELU3RyaW5nRW50cnkCBQhrVmVydGV4MwUHdmVydGV4MwkAzAgCCQEMSW50ZWdlckVudHJ5AgUHa01heEJldAUGbWF4QmV0BQNuaWwBaQEIdHJ5VG9XaW4CA3AxeANwMXkECyR0MDg5MTA5MDI4CQCUCgIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAkBBXZhbHVlAQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQEDHBheW1lbnRBc3NldAgFCyR0MDg5MTA5MDI4Al8xBA1wYXltZW50QW1vdW50CAULJHQwODkxMDkwMjgCXzIJAQt2YWx1ZU9yRWxzZQIJAQ92YWxpZGF0ZVBheW1lbnQCBQxwYXltZW50QXNzZXQFDXBheW1lbnRBbW91bnQEAnAxCQCUCgIFA3AxeAUDcDF5BAskdDA5MjU4OTM3OQkBEWdldEdvYWxMaW5lUG9pbnRzAAQCcDIIBQskdDA5MjU4OTM3OQJfMQQCcDMIBQskdDA5MjU4OTM3OQJfMgQLJHQwOTM4NDk0ODMJARBnZXRQb2x5Z29uUG9pbnRzAAQCcDQIBQskdDA5Mzg0OTQ4MwJfMQQCcDUIBQskdDA5Mzg0OTQ4MwJfMgQCcDYIBQskdDA5Mzg0OTQ4MwJfMwQLJHQwOTQ4ODk1ODAJAQdnZXRMaW5lAgUCcDIFAnAzBAJhMQgFCyR0MDk0ODg5NTgwAl8xBAJiMQgFCyR0MDk0ODg5NTgwAl8yBAJjMQgFCyR0MDk0ODg5NTgwAl8zBAZpbkxpbmUJAQ1pc1BvaW50SW5MaW5lAgUCcDEJAJUKAwUCYTEFAmIxBQJjMQQJaW5Qb2x5Z29uCQEQaXNQb2ludEluUG9seWdvbgQFAnAxBQJwNAUCcDUFAnA2BAxpbkRlZmxlY3Rpb24JARNpc1BvaW50SW5EZWZsZWN0aW9uAgUCcDEJAJUKAwUCYTEFAmIxBQJjMQMDAwUGaW5MaW5lBgUMaW5EZWZsZWN0aW9uBgUJaW5Qb2x5Z29uBAptdWx0aXBsaWVyCQEUY2FsY1Jld2FyZE11bHRpcGxpZXIDBQZpbkxpbmUFCWluUG9seWdvbgUMaW5EZWZsZWN0aW9uBAZyZXdhcmQJAGgCBQ1wYXltZW50QW1vdW50BQptdWx0aXBsaWVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCAgptdWx0aXBsaWVyBQptdWx0aXBsaWVyCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpDG9yaWdpbkNhbGxlcgUGcmV3YXJkBQR1bml0BQNuaWwFA25pbAFpAQlzdGFydEdhbWUABAJwMQkBCGdldFBvaW50AQgFAWkNdHJhbnNhY3Rpb25JZAQDcmVzCQD8BwQFBHRoaXMCCHRyeVRvV2luCQDMCAIIBQJwMQJfMQkAzAgCCAUCcDECXzIFA25pbAkAzAgCCQCRAwIIBQFpCHBheW1lbnRzAAAFA25pbAMJAAACBQNyZXMFA3JlcwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAHyEf6w=", "height": 2398898, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7mficiXwiKk9tvrfwUvsw7cA26M9V6o6SfMNmVzeBZY5 Next: BaKhAD5RipGUyouCee65jYzkxiULD75dML129Q86xZzk Diff:
Old | New | Differences | |
---|---|---|---|
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = "_" | |
5 | 5 | ||
6 | - | let b = " | |
6 | + | let b = "goalP1" | |
7 | 7 | ||
8 | - | let c = " | |
8 | + | let c = "goalP2" | |
9 | 9 | ||
10 | - | let d = " | |
10 | + | let d = "deflection" | |
11 | 11 | ||
12 | - | let e = " | |
12 | + | let e = "vertex1" | |
13 | 13 | ||
14 | - | ||
14 | + | let f = "vertex2" | |
15 | 15 | ||
16 | + | let g = "vertex3" | |
16 | 17 | ||
17 | - | ||
18 | + | let h = "maxBet" | |
18 | 19 | ||
19 | - | ||
20 | - | func j (h) = ((c + a) + toBase58String(h)) | |
21 | - | ||
22 | - | ||
23 | - | func k (h) = ((b + a) + toBase58String(h)) | |
24 | - | ||
25 | - | ||
26 | - | func l (m) = ((d + a) + toString(m)) | |
27 | - | ||
28 | - | ||
29 | - | func n (o,p) = (o ++ [p]) | |
30 | - | ||
31 | - | ||
32 | - | func q (r) = { | |
33 | - | let s = size(r) | |
34 | - | if ((s == 0)) | |
35 | - | then throw("Empty params") | |
36 | - | else if ((s == 1)) | |
37 | - | then makeString({ | |
38 | - | let t = r | |
39 | - | let u = size(t) | |
40 | - | let v = nil | |
41 | - | func w (x,y) = if ((y >= u)) | |
42 | - | then x | |
43 | - | else n(x, t[y]) | |
44 | - | ||
45 | - | func z (x,y) = if ((y >= u)) | |
46 | - | then x | |
47 | - | else throw("List size exceeds 1") | |
48 | - | ||
49 | - | z(w(v, 0), 1) | |
50 | - | }, a) | |
51 | - | else if ((s == 2)) | |
52 | - | then makeString({ | |
53 | - | let t = r | |
54 | - | let u = size(t) | |
55 | - | let v = nil | |
56 | - | func w (x,y) = if ((y >= u)) | |
57 | - | then x | |
58 | - | else n(x, t[y]) | |
59 | - | ||
60 | - | func z (x,y) = if ((y >= u)) | |
61 | - | then x | |
62 | - | else throw("List size exceeds 2") | |
63 | - | ||
64 | - | z(w(w(v, 0), 1), 2) | |
65 | - | }, a) | |
66 | - | else if ((s == 3)) | |
67 | - | then makeString({ | |
68 | - | let t = r | |
69 | - | let u = size(t) | |
70 | - | let v = nil | |
71 | - | func w (x,y) = if ((y >= u)) | |
72 | - | then x | |
73 | - | else n(x, t[y]) | |
74 | - | ||
75 | - | func z (x,y) = if ((y >= u)) | |
76 | - | then x | |
77 | - | else throw("List size exceeds 3") | |
78 | - | ||
79 | - | z(w(w(w(v, 0), 1), 2), 3) | |
80 | - | }, a) | |
81 | - | else if ((s == 4)) | |
82 | - | then makeString({ | |
83 | - | let t = r | |
84 | - | let u = size(t) | |
85 | - | let v = nil | |
86 | - | func w (x,y) = if ((y >= u)) | |
87 | - | then x | |
88 | - | else n(x, t[y]) | |
89 | - | ||
90 | - | func z (x,y) = if ((y >= u)) | |
91 | - | then x | |
92 | - | else throw("List size exceeds 4") | |
93 | - | ||
94 | - | z(w(w(w(w(v, 0), 1), 2), 3), 4) | |
95 | - | }, a) | |
96 | - | else if ((s == 5)) | |
97 | - | then makeString({ | |
98 | - | let t = r | |
99 | - | let u = size(t) | |
100 | - | let v = nil | |
101 | - | func w (x,y) = if ((y >= u)) | |
102 | - | then x | |
103 | - | else n(x, t[y]) | |
104 | - | ||
105 | - | func z (x,y) = if ((y >= u)) | |
106 | - | then x | |
107 | - | else throw("List size exceeds 5") | |
108 | - | ||
109 | - | z(w(w(w(w(w(v, 0), 1), 2), 3), 4), 5) | |
110 | - | }, a) | |
111 | - | else throw("Max number of parameters exceeded") | |
20 | + | func i (j,k) = { | |
21 | + | let l = sha256(j) | |
22 | + | let m = toInt(l) | |
23 | + | (m % k) | |
112 | 24 | } | |
113 | 25 | ||
114 | 26 | ||
115 | - | func A (B) = { | |
116 | - | let C = split(B, a) | |
117 | - | $Tuple5(addressFromStringValue(C[0]), parseIntValue(C[1]), parseIntValue(C[2]), parseIntValue(C[3]), parseIntValue(C[4])) | |
27 | + | func n (j) = { | |
28 | + | let o = i(take(j, (size(j) / 2)), 100) | |
29 | + | let p = i(takeRight(j, (size(j) / 2)), 100) | |
30 | + | $Tuple2(o, p) | |
118 | 31 | } | |
119 | 32 | ||
120 | 33 | ||
121 | - | func D (B) = { | |
122 | - | let C = split(B, a) | |
123 | - | $Tuple2(addressFromStringValue(C[0]), parseIntValue(C[1])) | |
34 | + | func q () = { | |
35 | + | let r = split(getStringValue(this, b), a) | |
36 | + | let s = split(getStringValue(this, c), a) | |
37 | + | $Tuple2($Tuple2(parseIntValue(r[0]), parseIntValue(r[1])), $Tuple2(parseIntValue(s[0]), parseIntValue(s[1]))) | |
124 | 38 | } | |
125 | 39 | ||
126 | 40 | ||
127 | - | func E (r) = { | |
128 | - | let F = r | |
129 | - | if ($isInstanceOf(F, "(Address, Int, String, String)")) | |
130 | - | then { | |
131 | - | let G = F | |
132 | - | q([toString(G._1), toString(G._2), G._3, G._4]) | |
133 | - | } | |
134 | - | else if ($isInstanceOf(F, "(Address, Int)")) | |
135 | - | then { | |
136 | - | let H = F | |
137 | - | q([toString(H._1), toString(H._2)]) | |
138 | - | } | |
139 | - | else throw("Wrong params tupple") | |
41 | + | func t () = getIntegerValue(this, d) | |
42 | + | ||
43 | + | ||
44 | + | func u () = getIntegerValue(this, h) | |
45 | + | ||
46 | + | ||
47 | + | func v () = { | |
48 | + | let r = split(getStringValue(this, e), a) | |
49 | + | let s = split(getStringValue(this, f), a) | |
50 | + | let w = split(getStringValue(this, g), a) | |
51 | + | $Tuple3($Tuple2(parseIntValue(r[0]), parseIntValue(r[1])), $Tuple2(parseIntValue(s[0]), parseIntValue(s[1])), $Tuple2(parseIntValue(w[0]), parseIntValue(w[1]))) | |
140 | 52 | } | |
141 | 53 | ||
142 | 54 | ||
143 | - | func I (J,h,K,L,M) = StringEntry(k(h), E($Tuple4(J, K, L, M))) | |
144 | - | ||
145 | - | ||
146 | - | func N (h,O,P) = StringEntry(j(h), E($Tuple2(O, P))) | |
147 | - | ||
148 | - | ||
149 | - | func Q (h) = value(getString(this, k(h))) | |
150 | - | ||
151 | - | ||
152 | - | func R (h) = value(getString(this, j(h))) | |
153 | - | ||
154 | - | ||
155 | - | func S (T,U) = { | |
156 | - | let B = Q(T) | |
157 | - | let V = A(B) | |
158 | - | let J = V._1 | |
159 | - | let W = V._2 | |
160 | - | let X = V._3 | |
161 | - | let Y = V._4 | |
162 | - | let Z = V._5 | |
163 | - | if ((U >= Z)) | |
164 | - | then $Tuple2(J, X) | |
165 | - | else { | |
166 | - | let aa = (W - X) | |
167 | - | let ab = (Z - Y) | |
168 | - | let ac = (U - Y) | |
169 | - | $Tuple2(J, (W - fraction(ac, aa, ab))) | |
170 | - | } | |
55 | + | func x (r,s) = { | |
56 | + | let y = (s._2 - r._2) | |
57 | + | let z = (r._1 - s._1) | |
58 | + | let A = ((r._2 * (s._1 + r._1)) - (r._1 * (r._2 + s._2))) | |
59 | + | $Tuple3(y, z, A) | |
171 | 60 | } | |
172 | 61 | ||
173 | 62 | ||
174 | - | func ad (T) = { | |
175 | - | let F = assetInfo(T) | |
176 | - | if ($isInstanceOf(F, "Asset")) | |
177 | - | then { | |
178 | - | let ae = F | |
179 | - | if (if ((ae.decimals == 0)) | |
180 | - | then (ae.quantity == 1) | |
181 | - | else false) | |
182 | - | then (ae.reissuable == false) | |
183 | - | else false | |
184 | - | } | |
185 | - | else false | |
63 | + | func B (r,C) = { | |
64 | + | let y = C._2 | |
65 | + | let z = -(C._1) | |
66 | + | let A = ((C._1 * r._2) - (C._2 * r._1)) | |
67 | + | $Tuple3(y, z, A) | |
186 | 68 | } | |
187 | 69 | ||
188 | 70 | ||
189 | - | func af (T) = { | |
190 | - | let m = value(assetInfo(T)).issuer | |
191 | - | valueOrElse(getBoolean(this, l(m)), false) | |
71 | + | func D (E,F) = { | |
72 | + | let o = (F._1 - E._1) | |
73 | + | let p = (F._2 - E._2) | |
74 | + | $Tuple2(o, p) | |
192 | 75 | } | |
193 | 76 | ||
194 | 77 | ||
195 | - | func | |
78 | + | func G (H,I) = ((H._1 * I._2) - (H._2 * I._1)) | |
196 | 79 | ||
197 | 80 | ||
198 | - | func ah (T) = isDefined(getString(this, k(T))) | |
81 | + | func J (r,s) = { | |
82 | + | let y = pow((s._1 - r._1), 0, 2, 0, 0, DOWN) | |
83 | + | let z = pow((s._2 - r._2), 0, 2, 0, 0, DOWN) | |
84 | + | sqrt((y + z), 0, 0, DOWN) | |
85 | + | } | |
199 | 86 | ||
200 | 87 | ||
201 | - | func ai (P) = (P > 0) | |
88 | + | func K (L,M) = { | |
89 | + | let N = D(M[0]._1, M[0]._2) | |
90 | + | let O = D(M[0]._1, M[1]._1) | |
91 | + | let P = D(M[0]._1, M[1]._2) | |
92 | + | let Q = D(M[1]._1, M[1]._2) | |
93 | + | let R = D(M[1]._1, M[0]._1) | |
94 | + | let S = D(M[1]._1, M[0]._2) | |
95 | + | let T = G(Q, R) | |
96 | + | let U = G(Q, S) | |
97 | + | let V = G(N, O) | |
98 | + | let W = G(N, P) | |
99 | + | if (if ((0 > (T * U))) | |
100 | + | then (0 > (V * W)) | |
101 | + | else false) | |
102 | + | then (L + 1) | |
103 | + | else L | |
104 | + | } | |
202 | 105 | ||
203 | 106 | ||
204 | - | func aj (K,ak) = (K > ak) | |
107 | + | func X (r,Y,Z,aa) = { | |
108 | + | let ab = $Tuple2(r, $Tuple2(r._1, 0)) | |
109 | + | let ac = [[ab, Y], [ab, Z], [ab, aa]] | |
110 | + | let ad = { | |
111 | + | let ae = ac | |
112 | + | let af = size(ae) | |
113 | + | let ag = 0 | |
114 | + | func ah (ai,aj) = if ((aj >= af)) | |
115 | + | then ai | |
116 | + | else K(ai, ae[aj]) | |
117 | + | ||
118 | + | func ak (ai,aj) = if ((aj >= af)) | |
119 | + | then ai | |
120 | + | else throw("List size exceeds 3") | |
121 | + | ||
122 | + | ak(ah(ah(ah(ag, 0), 1), 2), 3) | |
123 | + | } | |
124 | + | ((ad % 2) == 1) | |
125 | + | } | |
205 | 126 | ||
206 | 127 | ||
207 | - | func al (am) = (am == | |
128 | + | func al (r,am) = ((((r._1 * am._1) + (r._2 * am._2)) + am._3) == 0) | |
208 | 129 | ||
209 | 130 | ||
210 | - | func an (am,J) = if ((am == this)) | |
211 | - | then true | |
212 | - | else (am == J) | |
131 | + | func an (r,am) = { | |
132 | + | let ao = am | |
133 | + | let ap = ao._1 | |
134 | + | let aq = ao._2 | |
135 | + | let ar = ao._3 | |
136 | + | let as = B(r, $Tuple2(ap, aq)) | |
137 | + | let at = as._1 | |
138 | + | let au = as._2 | |
139 | + | let av = as._3 | |
140 | + | let aw = G($Tuple2(ap, aq), $Tuple2(at, au)) | |
141 | + | let ax = G($Tuple2(-(ar), aq), $Tuple2(-(av), au)) | |
142 | + | let ay = G($Tuple2(ap, -(ar)), $Tuple2(at, -(av))) | |
143 | + | let az = fraction(1, ax, aw) | |
144 | + | let aA = fraction(1, ay, aw) | |
145 | + | let aB = J(r, $Tuple2(az, aA)) | |
146 | + | (t() >= aB) | |
147 | + | } | |
213 | 148 | ||
214 | 149 | ||
215 | - | func ao (ap,M) = (ap > M) | |
150 | + | func aC (r,aD,aE,aF) = { | |
151 | + | let Y = $Tuple2(aD, aE) | |
152 | + | let Z = $Tuple2(aE, aF) | |
153 | + | let aa = $Tuple2(aF, aD) | |
154 | + | if (if (if ((r == aD)) | |
155 | + | then true | |
156 | + | else (r == aE)) | |
157 | + | then true | |
158 | + | else (r == aF)) | |
159 | + | then true | |
160 | + | else X(r, Y, Z, aa) | |
161 | + | } | |
216 | 162 | ||
217 | 163 | ||
218 | - | func aq (ar,as) = (ar >= as) | |
164 | + | func aG (aH,aI,aJ) = if (if (aH) | |
165 | + | then aI | |
166 | + | else false) | |
167 | + | then 10 | |
168 | + | else if (if (aJ) | |
169 | + | then aI | |
170 | + | else false) | |
171 | + | then 8 | |
172 | + | else if (aH) | |
173 | + | then 6 | |
174 | + | else if (aI) | |
175 | + | then 4 | |
176 | + | else if (aJ) | |
177 | + | then 2 | |
178 | + | else 1 | |
219 | 179 | ||
220 | 180 | ||
221 | - | func at (T) = (T == unit) | |
181 | + | func aK (aL,aM) = if (if ((aL == unit)) | |
182 | + | then (u() >= aM) | |
183 | + | else false) | |
184 | + | then unit | |
185 | + | else throw("Incorrect payment") | |
222 | 186 | ||
223 | 187 | ||
224 | - | func au (h) = if (!(ad(h))) | |
225 | - | then throw("Token is not Nft") | |
226 | - | else if (ag(h)) | |
227 | - | then throw("Sell already exists") | |
228 | - | else if (ah(h)) | |
229 | - | then throw("Auction already exists") | |
230 | - | else unit | |
188 | + | @Callable(aN) | |
189 | + | func setLotteryParams (aO,aP,aQ,aD,aE,aF,aR) = [StringEntry(b, aO), StringEntry(c, aP), IntegerEntry(d, aQ), StringEntry(e, aD), StringEntry(f, aE), StringEntry(g, aF), IntegerEntry(h, aR)] | |
231 | 190 | ||
232 | 191 | ||
233 | - | func av (aw,ax,P) = if (!(at(aw))) | |
234 | - | then throw("Payment must be at WAVES") | |
235 | - | else if (!(aq(ax, P))) | |
236 | - | then throw("Not enough funds") | |
237 | - | else unit | |
238 | 192 | ||
239 | - | ||
240 | - | func ay () = 0 | |
241 | - | ||
242 | - | ||
243 | - | func az () = 0 | |
244 | - | ||
245 | - | ||
246 | - | func aA (aB,ax,aC) = if (aB) | |
247 | - | then $Tuple2((aC - az()), (ax - aC)) | |
248 | - | else $Tuple2((aC - ay()), (ax - aC)) | |
249 | - | ||
250 | - | ||
251 | - | func aD (h) = if (ag(h)) | |
252 | - | then $Tuple2(c, R(h)) | |
253 | - | else if (ah(h)) | |
254 | - | then $Tuple2(b, Q(h)) | |
255 | - | else throw("Slot doesn`t exist") | |
256 | - | ||
257 | - | ||
258 | - | let aE = "buy" | |
259 | - | ||
260 | - | let aF = base58'EbLVSrAi6vS3AkLwBinzZCvAXP2yYiFJEzj1MBVHcwZ5' | |
261 | - | ||
262 | - | @Callable(aG) | |
263 | - | func createNft (aH,aI,aJ,aK,aL,aM,aN,aO,aP) = { | |
264 | - | let aQ = Issue(aH, aN, 1, 0, false) | |
265 | - | let aR = calculateAssetId(aQ) | |
266 | - | [aQ, ScriptTransfer(aG.caller, 1, aR), StringEntry(((toBase58String(aR) + a) + "Owner"), toString(aG.caller)), StringEntry(((toBase58String(aR) + a) + "nft_type"), aK), StringEntry(((toBase58String(aR) + a) + "nft_tags"), aL), StringEntry(((toBase58String(aR) + a) + "nft_dAppAddress"), aJ), IntegerEntry(((toBase58String(aR) + a) + "nft_selling_price"), aM), StringEntry(((toBase58String(aR) + a) + "nft_onSell"), aO), StringEntry(((toBase58String(aR) + a) + "nft_data"), aP)] | |
193 | + | @Callable(aN) | |
194 | + | func tryToWin (aS,aT) = { | |
195 | + | let aU = $Tuple2(aN.payments[0].assetId, value(aN.payments[0].amount)) | |
196 | + | let aL = aU._1 | |
197 | + | let aM = aU._2 | |
198 | + | valueOrElse(aK(aL, aM), { | |
199 | + | let r = $Tuple2(aS, aT) | |
200 | + | let aV = q() | |
201 | + | let s = aV._1 | |
202 | + | let w = aV._2 | |
203 | + | let aW = v() | |
204 | + | let aX = aW._1 | |
205 | + | let aY = aW._2 | |
206 | + | let aZ = aW._3 | |
207 | + | let ba = x(s, w) | |
208 | + | let ap = ba._1 | |
209 | + | let aq = ba._2 | |
210 | + | let ar = ba._3 | |
211 | + | let aH = al(r, $Tuple3(ap, aq, ar)) | |
212 | + | let aI = aC(r, aX, aY, aZ) | |
213 | + | let aJ = an(r, $Tuple3(ap, aq, ar)) | |
214 | + | if (if (if (aH) | |
215 | + | then true | |
216 | + | else aJ) | |
217 | + | then true | |
218 | + | else aI) | |
219 | + | then { | |
220 | + | let bb = aG(aH, aI, aJ) | |
221 | + | let bc = (aM * bb) | |
222 | + | [IntegerEntry("multiplier", bb), ScriptTransfer(aN.originCaller, bc, unit)] | |
223 | + | } | |
224 | + | else nil | |
225 | + | }) | |
267 | 226 | } | |
268 | 227 | ||
269 | 228 | ||
270 | 229 | ||
271 | - | @Callable(aG) | |
272 | - | func issueNft (aS,aT) = { | |
273 | - | let aQ = Issue(aS, aT, 1, 0, false) | |
274 | - | let aR = calculateAssetId(aQ) | |
275 | - | [aQ, ScriptTransfer(aG.caller, 1, aR), StringEntry(((toBase58String(aR) + a) + "Owner"), toString(aG.caller))] | |
276 | - | } | |
277 | - | ||
278 | - | ||
279 | - | ||
280 | - | @Callable(aG) | |
281 | - | func buyNFT (aU) = { | |
282 | - | let T = fromBase58String(aU) | |
283 | - | let aV = value(aG.payments[0].amount) | |
284 | - | let aW = value(aG.payments[1].amount) | |
285 | - | let P = valueOrErrorMessage(getString(((e + a) + aU)), "There is no price for this NFT") | |
286 | - | let aX = valueOrErrorMessage(getStringValue(((aU + a) + "Owner")), "No owner") | |
287 | - | if ((aG.payments[0].assetId != unit)) | |
288 | - | then throw("Pay in waves") | |
289 | - | else if ((aG.payments[1].assetId != aF)) | |
290 | - | then throw("Pay in ASIMI") | |
291 | - | else if ((parseIntValue(P) > aV)) | |
292 | - | then throw("Invalid payment WAVES") | |
293 | - | else [ScriptTransfer(aG.caller, 1, T), ScriptTransfer(value(addressFromString(aX)), parseIntValue(P), unit), StringEntry(((toString(aG.caller) + a) + aE), ((aU + a) + toString(aV)))] | |
294 | - | } | |
295 | - | ||
296 | - | ||
297 | - | ||
298 | - | @Callable(aG) | |
299 | - | func sellNFT (P) = { | |
300 | - | let aY = $Tuple2(value(aG.payments[0].assetId), value(aG.payments[0].amount)) | |
301 | - | let aZ = aY._1 | |
302 | - | let ba = aY._2 | |
303 | - | if (!(ad(aZ))) | |
304 | - | then throw("Token is not NFT") | |
305 | - | else [StringEntry(((e + a) + toBase58String(value(aG.payments[0].assetId))), toString(P)), StringEntry(((toString(aG.caller) + a) + c), ((toBase58String(aZ) + a) + toString(ba)))] | |
306 | - | } | |
307 | - | ||
308 | - | ||
309 | - | ||
310 | - | @Callable(aG) | |
311 | - | func addSell (P) = { | |
312 | - | let h = value(aG.payments[0].assetId) | |
313 | - | valueOrElse(au(h), if (!(ai(P))) | |
314 | - | then throw("Price must be > 0") | |
315 | - | else [N(h, aG.caller, P)]) | |
316 | - | } | |
317 | - | ||
318 | - | ||
319 | - | ||
320 | - | @Callable(aG) | |
321 | - | func addAuction (K,L,M) = { | |
322 | - | let h = value(aG.payments[0].assetId) | |
323 | - | valueOrElse(au(h), [I(aG.caller, h, K, L, M), StringEntry(((toBase58String(h) + a) + "nft_owner"), toString(aG.caller))]) | |
324 | - | } | |
325 | - | ||
326 | - | ||
327 | - | ||
328 | - | @Callable(aG) | |
329 | - | func buyFromSlot (h) = { | |
330 | - | let bb = $Tuple2(aG.payments[0].assetId, value(aG.payments[0].amount)) | |
331 | - | let aw = bb._1 | |
332 | - | let ax = bb._2 | |
333 | - | let T = fromBase58String(h) | |
334 | - | let bc = aD(T) | |
335 | - | let bd = bc._1 | |
336 | - | let B = bc._2 | |
337 | - | let be = [ScriptTransfer(aG.caller, 1, T), DeleteEntry(f(bd, T))] | |
338 | - | if ((bd == c)) | |
339 | - | then { | |
340 | - | let bf = D(B) | |
341 | - | let J = bf._1 | |
342 | - | let bg = bf._2 | |
343 | - | valueOrElse(av(aw, ax, bg), { | |
344 | - | let bh = aA(af(T), ax, bg) | |
345 | - | let bi = bh._1 | |
346 | - | let bj = bh._2 | |
347 | - | let bk = (be ++ [ScriptTransfer(J, bi, unit)]) | |
348 | - | if ((bj > 0)) | |
349 | - | then (bk ++ [ScriptTransfer(aG.caller, bj, unit)]) | |
350 | - | else bk | |
351 | - | }) | |
352 | - | } | |
353 | - | else { | |
354 | - | let bl = S(T, height) | |
355 | - | let J = bl._1 | |
356 | - | let aC = bl._2 | |
357 | - | valueOrElse(av(aw, ax, aC), { | |
358 | - | let bm = aA(af(T), ax, aC) | |
359 | - | let bi = bm._1 | |
360 | - | let bj = bm._2 | |
361 | - | let bk = (be ++ [ScriptTransfer(J, bi, unit)]) | |
362 | - | if ((bj > 0)) | |
363 | - | then (bk ++ [ScriptTransfer(aG.caller, bj, unit)]) | |
364 | - | else bk | |
365 | - | }) | |
366 | - | } | |
367 | - | } | |
368 | - | ||
369 | - | ||
370 | - | ||
371 | - | @Callable(aG) | |
372 | - | func declineSlot (h) = { | |
373 | - | let T = fromBase58String(h) | |
374 | - | let bn = aD(T) | |
375 | - | let bd = bn._1 | |
376 | - | let B = bn._2 | |
377 | - | let be = [DeleteEntry(f(bd, T))] | |
378 | - | if ((bd == c)) | |
379 | - | then { | |
380 | - | let bo = D(B) | |
381 | - | let J = bo._1 | |
382 | - | let bg = bo._2 | |
383 | - | if (!(an(aG.caller, J))) | |
384 | - | then throw("Invalid caller") | |
385 | - | else (be ++ [ScriptTransfer(J, 1, T)]) | |
386 | - | } | |
387 | - | else { | |
388 | - | let bp = A(B) | |
389 | - | let J = bp._1 | |
390 | - | let W = bp._2 | |
391 | - | let X = bp._3 | |
392 | - | let Y = bp._4 | |
393 | - | let Z = bp._5 | |
394 | - | if (!(an(aG.caller, J))) | |
395 | - | then throw("Invalid caller") | |
396 | - | else if (!(ao(height, Z))) | |
397 | - | then throw("Wait for end of auction") | |
398 | - | else (be ++ [ScriptTransfer(J, 1, T)]) | |
399 | - | } | |
400 | - | } | |
401 | - | ||
402 | - | ||
403 | - | ||
404 | - | @Callable(aG) | |
405 | - | func setTrustedIssuer (bq) = if (!(al(aG.caller))) | |
406 | - | then throw("Only admin") | |
407 | - | else [BooleanEntry(l(addressFromStringValue(bq)), true)] | |
408 | - | ||
409 | - | ||
410 | - | ||
411 | - | @Callable(aG) | |
412 | - | func getPriceAtCurrentMoment (h,U) = { | |
413 | - | let T = fromBase58String(h) | |
414 | - | let br = S(T, U) | |
415 | - | let J = br._1 | |
416 | - | let P = br._2 | |
417 | - | [IntegerEntry(i(T), P)] | |
230 | + | @Callable(aN) | |
231 | + | func startGame () = { | |
232 | + | let r = n(aN.transactionId) | |
233 | + | let bd = invoke(this, "tryToWin", [r._1, r._2], [aN.payments[0]]) | |
234 | + | if ((bd == bd)) | |
235 | + | then nil | |
236 | + | else throw("Strict value is not equal to itself.") | |
418 | 237 | } | |
419 | 238 | ||
420 | 239 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = "_" | |
5 | 5 | ||
6 | - | let b = " | |
6 | + | let b = "goalP1" | |
7 | 7 | ||
8 | - | let c = " | |
8 | + | let c = "goalP2" | |
9 | 9 | ||
10 | - | let d = " | |
10 | + | let d = "deflection" | |
11 | 11 | ||
12 | - | let e = " | |
12 | + | let e = "vertex1" | |
13 | 13 | ||
14 | - | ||
14 | + | let f = "vertex2" | |
15 | 15 | ||
16 | + | let g = "vertex3" | |
16 | 17 | ||
17 | - | ||
18 | + | let h = "maxBet" | |
18 | 19 | ||
19 | - | ||
20 | - | func j (h) = ((c + a) + toBase58String(h)) | |
21 | - | ||
22 | - | ||
23 | - | func k (h) = ((b + a) + toBase58String(h)) | |
24 | - | ||
25 | - | ||
26 | - | func l (m) = ((d + a) + toString(m)) | |
27 | - | ||
28 | - | ||
29 | - | func n (o,p) = (o ++ [p]) | |
30 | - | ||
31 | - | ||
32 | - | func q (r) = { | |
33 | - | let s = size(r) | |
34 | - | if ((s == 0)) | |
35 | - | then throw("Empty params") | |
36 | - | else if ((s == 1)) | |
37 | - | then makeString({ | |
38 | - | let t = r | |
39 | - | let u = size(t) | |
40 | - | let v = nil | |
41 | - | func w (x,y) = if ((y >= u)) | |
42 | - | then x | |
43 | - | else n(x, t[y]) | |
44 | - | ||
45 | - | func z (x,y) = if ((y >= u)) | |
46 | - | then x | |
47 | - | else throw("List size exceeds 1") | |
48 | - | ||
49 | - | z(w(v, 0), 1) | |
50 | - | }, a) | |
51 | - | else if ((s == 2)) | |
52 | - | then makeString({ | |
53 | - | let t = r | |
54 | - | let u = size(t) | |
55 | - | let v = nil | |
56 | - | func w (x,y) = if ((y >= u)) | |
57 | - | then x | |
58 | - | else n(x, t[y]) | |
59 | - | ||
60 | - | func z (x,y) = if ((y >= u)) | |
61 | - | then x | |
62 | - | else throw("List size exceeds 2") | |
63 | - | ||
64 | - | z(w(w(v, 0), 1), 2) | |
65 | - | }, a) | |
66 | - | else if ((s == 3)) | |
67 | - | then makeString({ | |
68 | - | let t = r | |
69 | - | let u = size(t) | |
70 | - | let v = nil | |
71 | - | func w (x,y) = if ((y >= u)) | |
72 | - | then x | |
73 | - | else n(x, t[y]) | |
74 | - | ||
75 | - | func z (x,y) = if ((y >= u)) | |
76 | - | then x | |
77 | - | else throw("List size exceeds 3") | |
78 | - | ||
79 | - | z(w(w(w(v, 0), 1), 2), 3) | |
80 | - | }, a) | |
81 | - | else if ((s == 4)) | |
82 | - | then makeString({ | |
83 | - | let t = r | |
84 | - | let u = size(t) | |
85 | - | let v = nil | |
86 | - | func w (x,y) = if ((y >= u)) | |
87 | - | then x | |
88 | - | else n(x, t[y]) | |
89 | - | ||
90 | - | func z (x,y) = if ((y >= u)) | |
91 | - | then x | |
92 | - | else throw("List size exceeds 4") | |
93 | - | ||
94 | - | z(w(w(w(w(v, 0), 1), 2), 3), 4) | |
95 | - | }, a) | |
96 | - | else if ((s == 5)) | |
97 | - | then makeString({ | |
98 | - | let t = r | |
99 | - | let u = size(t) | |
100 | - | let v = nil | |
101 | - | func w (x,y) = if ((y >= u)) | |
102 | - | then x | |
103 | - | else n(x, t[y]) | |
104 | - | ||
105 | - | func z (x,y) = if ((y >= u)) | |
106 | - | then x | |
107 | - | else throw("List size exceeds 5") | |
108 | - | ||
109 | - | z(w(w(w(w(w(v, 0), 1), 2), 3), 4), 5) | |
110 | - | }, a) | |
111 | - | else throw("Max number of parameters exceeded") | |
20 | + | func i (j,k) = { | |
21 | + | let l = sha256(j) | |
22 | + | let m = toInt(l) | |
23 | + | (m % k) | |
112 | 24 | } | |
113 | 25 | ||
114 | 26 | ||
115 | - | func A (B) = { | |
116 | - | let C = split(B, a) | |
117 | - | $Tuple5(addressFromStringValue(C[0]), parseIntValue(C[1]), parseIntValue(C[2]), parseIntValue(C[3]), parseIntValue(C[4])) | |
27 | + | func n (j) = { | |
28 | + | let o = i(take(j, (size(j) / 2)), 100) | |
29 | + | let p = i(takeRight(j, (size(j) / 2)), 100) | |
30 | + | $Tuple2(o, p) | |
118 | 31 | } | |
119 | 32 | ||
120 | 33 | ||
121 | - | func D (B) = { | |
122 | - | let C = split(B, a) | |
123 | - | $Tuple2(addressFromStringValue(C[0]), parseIntValue(C[1])) | |
34 | + | func q () = { | |
35 | + | let r = split(getStringValue(this, b), a) | |
36 | + | let s = split(getStringValue(this, c), a) | |
37 | + | $Tuple2($Tuple2(parseIntValue(r[0]), parseIntValue(r[1])), $Tuple2(parseIntValue(s[0]), parseIntValue(s[1]))) | |
124 | 38 | } | |
125 | 39 | ||
126 | 40 | ||
127 | - | func E (r) = { | |
128 | - | let F = r | |
129 | - | if ($isInstanceOf(F, "(Address, Int, String, String)")) | |
130 | - | then { | |
131 | - | let G = F | |
132 | - | q([toString(G._1), toString(G._2), G._3, G._4]) | |
133 | - | } | |
134 | - | else if ($isInstanceOf(F, "(Address, Int)")) | |
135 | - | then { | |
136 | - | let H = F | |
137 | - | q([toString(H._1), toString(H._2)]) | |
138 | - | } | |
139 | - | else throw("Wrong params tupple") | |
41 | + | func t () = getIntegerValue(this, d) | |
42 | + | ||
43 | + | ||
44 | + | func u () = getIntegerValue(this, h) | |
45 | + | ||
46 | + | ||
47 | + | func v () = { | |
48 | + | let r = split(getStringValue(this, e), a) | |
49 | + | let s = split(getStringValue(this, f), a) | |
50 | + | let w = split(getStringValue(this, g), a) | |
51 | + | $Tuple3($Tuple2(parseIntValue(r[0]), parseIntValue(r[1])), $Tuple2(parseIntValue(s[0]), parseIntValue(s[1])), $Tuple2(parseIntValue(w[0]), parseIntValue(w[1]))) | |
140 | 52 | } | |
141 | 53 | ||
142 | 54 | ||
143 | - | func I (J,h,K,L,M) = StringEntry(k(h), E($Tuple4(J, K, L, M))) | |
144 | - | ||
145 | - | ||
146 | - | func N (h,O,P) = StringEntry(j(h), E($Tuple2(O, P))) | |
147 | - | ||
148 | - | ||
149 | - | func Q (h) = value(getString(this, k(h))) | |
150 | - | ||
151 | - | ||
152 | - | func R (h) = value(getString(this, j(h))) | |
153 | - | ||
154 | - | ||
155 | - | func S (T,U) = { | |
156 | - | let B = Q(T) | |
157 | - | let V = A(B) | |
158 | - | let J = V._1 | |
159 | - | let W = V._2 | |
160 | - | let X = V._3 | |
161 | - | let Y = V._4 | |
162 | - | let Z = V._5 | |
163 | - | if ((U >= Z)) | |
164 | - | then $Tuple2(J, X) | |
165 | - | else { | |
166 | - | let aa = (W - X) | |
167 | - | let ab = (Z - Y) | |
168 | - | let ac = (U - Y) | |
169 | - | $Tuple2(J, (W - fraction(ac, aa, ab))) | |
170 | - | } | |
55 | + | func x (r,s) = { | |
56 | + | let y = (s._2 - r._2) | |
57 | + | let z = (r._1 - s._1) | |
58 | + | let A = ((r._2 * (s._1 + r._1)) - (r._1 * (r._2 + s._2))) | |
59 | + | $Tuple3(y, z, A) | |
171 | 60 | } | |
172 | 61 | ||
173 | 62 | ||
174 | - | func ad (T) = { | |
175 | - | let F = assetInfo(T) | |
176 | - | if ($isInstanceOf(F, "Asset")) | |
177 | - | then { | |
178 | - | let ae = F | |
179 | - | if (if ((ae.decimals == 0)) | |
180 | - | then (ae.quantity == 1) | |
181 | - | else false) | |
182 | - | then (ae.reissuable == false) | |
183 | - | else false | |
184 | - | } | |
185 | - | else false | |
63 | + | func B (r,C) = { | |
64 | + | let y = C._2 | |
65 | + | let z = -(C._1) | |
66 | + | let A = ((C._1 * r._2) - (C._2 * r._1)) | |
67 | + | $Tuple3(y, z, A) | |
186 | 68 | } | |
187 | 69 | ||
188 | 70 | ||
189 | - | func af (T) = { | |
190 | - | let m = value(assetInfo(T)).issuer | |
191 | - | valueOrElse(getBoolean(this, l(m)), false) | |
71 | + | func D (E,F) = { | |
72 | + | let o = (F._1 - E._1) | |
73 | + | let p = (F._2 - E._2) | |
74 | + | $Tuple2(o, p) | |
192 | 75 | } | |
193 | 76 | ||
194 | 77 | ||
195 | - | func | |
78 | + | func G (H,I) = ((H._1 * I._2) - (H._2 * I._1)) | |
196 | 79 | ||
197 | 80 | ||
198 | - | func ah (T) = isDefined(getString(this, k(T))) | |
81 | + | func J (r,s) = { | |
82 | + | let y = pow((s._1 - r._1), 0, 2, 0, 0, DOWN) | |
83 | + | let z = pow((s._2 - r._2), 0, 2, 0, 0, DOWN) | |
84 | + | sqrt((y + z), 0, 0, DOWN) | |
85 | + | } | |
199 | 86 | ||
200 | 87 | ||
201 | - | func ai (P) = (P > 0) | |
88 | + | func K (L,M) = { | |
89 | + | let N = D(M[0]._1, M[0]._2) | |
90 | + | let O = D(M[0]._1, M[1]._1) | |
91 | + | let P = D(M[0]._1, M[1]._2) | |
92 | + | let Q = D(M[1]._1, M[1]._2) | |
93 | + | let R = D(M[1]._1, M[0]._1) | |
94 | + | let S = D(M[1]._1, M[0]._2) | |
95 | + | let T = G(Q, R) | |
96 | + | let U = G(Q, S) | |
97 | + | let V = G(N, O) | |
98 | + | let W = G(N, P) | |
99 | + | if (if ((0 > (T * U))) | |
100 | + | then (0 > (V * W)) | |
101 | + | else false) | |
102 | + | then (L + 1) | |
103 | + | else L | |
104 | + | } | |
202 | 105 | ||
203 | 106 | ||
204 | - | func aj (K,ak) = (K > ak) | |
107 | + | func X (r,Y,Z,aa) = { | |
108 | + | let ab = $Tuple2(r, $Tuple2(r._1, 0)) | |
109 | + | let ac = [[ab, Y], [ab, Z], [ab, aa]] | |
110 | + | let ad = { | |
111 | + | let ae = ac | |
112 | + | let af = size(ae) | |
113 | + | let ag = 0 | |
114 | + | func ah (ai,aj) = if ((aj >= af)) | |
115 | + | then ai | |
116 | + | else K(ai, ae[aj]) | |
117 | + | ||
118 | + | func ak (ai,aj) = if ((aj >= af)) | |
119 | + | then ai | |
120 | + | else throw("List size exceeds 3") | |
121 | + | ||
122 | + | ak(ah(ah(ah(ag, 0), 1), 2), 3) | |
123 | + | } | |
124 | + | ((ad % 2) == 1) | |
125 | + | } | |
205 | 126 | ||
206 | 127 | ||
207 | - | func al (am) = (am == | |
128 | + | func al (r,am) = ((((r._1 * am._1) + (r._2 * am._2)) + am._3) == 0) | |
208 | 129 | ||
209 | 130 | ||
210 | - | func an (am,J) = if ((am == this)) | |
211 | - | then true | |
212 | - | else (am == J) | |
131 | + | func an (r,am) = { | |
132 | + | let ao = am | |
133 | + | let ap = ao._1 | |
134 | + | let aq = ao._2 | |
135 | + | let ar = ao._3 | |
136 | + | let as = B(r, $Tuple2(ap, aq)) | |
137 | + | let at = as._1 | |
138 | + | let au = as._2 | |
139 | + | let av = as._3 | |
140 | + | let aw = G($Tuple2(ap, aq), $Tuple2(at, au)) | |
141 | + | let ax = G($Tuple2(-(ar), aq), $Tuple2(-(av), au)) | |
142 | + | let ay = G($Tuple2(ap, -(ar)), $Tuple2(at, -(av))) | |
143 | + | let az = fraction(1, ax, aw) | |
144 | + | let aA = fraction(1, ay, aw) | |
145 | + | let aB = J(r, $Tuple2(az, aA)) | |
146 | + | (t() >= aB) | |
147 | + | } | |
213 | 148 | ||
214 | 149 | ||
215 | - | func ao (ap,M) = (ap > M) | |
150 | + | func aC (r,aD,aE,aF) = { | |
151 | + | let Y = $Tuple2(aD, aE) | |
152 | + | let Z = $Tuple2(aE, aF) | |
153 | + | let aa = $Tuple2(aF, aD) | |
154 | + | if (if (if ((r == aD)) | |
155 | + | then true | |
156 | + | else (r == aE)) | |
157 | + | then true | |
158 | + | else (r == aF)) | |
159 | + | then true | |
160 | + | else X(r, Y, Z, aa) | |
161 | + | } | |
216 | 162 | ||
217 | 163 | ||
218 | - | func aq (ar,as) = (ar >= as) | |
164 | + | func aG (aH,aI,aJ) = if (if (aH) | |
165 | + | then aI | |
166 | + | else false) | |
167 | + | then 10 | |
168 | + | else if (if (aJ) | |
169 | + | then aI | |
170 | + | else false) | |
171 | + | then 8 | |
172 | + | else if (aH) | |
173 | + | then 6 | |
174 | + | else if (aI) | |
175 | + | then 4 | |
176 | + | else if (aJ) | |
177 | + | then 2 | |
178 | + | else 1 | |
219 | 179 | ||
220 | 180 | ||
221 | - | func at (T) = (T == unit) | |
181 | + | func aK (aL,aM) = if (if ((aL == unit)) | |
182 | + | then (u() >= aM) | |
183 | + | else false) | |
184 | + | then unit | |
185 | + | else throw("Incorrect payment") | |
222 | 186 | ||
223 | 187 | ||
224 | - | func au (h) = if (!(ad(h))) | |
225 | - | then throw("Token is not Nft") | |
226 | - | else if (ag(h)) | |
227 | - | then throw("Sell already exists") | |
228 | - | else if (ah(h)) | |
229 | - | then throw("Auction already exists") | |
230 | - | else unit | |
188 | + | @Callable(aN) | |
189 | + | func setLotteryParams (aO,aP,aQ,aD,aE,aF,aR) = [StringEntry(b, aO), StringEntry(c, aP), IntegerEntry(d, aQ), StringEntry(e, aD), StringEntry(f, aE), StringEntry(g, aF), IntegerEntry(h, aR)] | |
231 | 190 | ||
232 | 191 | ||
233 | - | func av (aw,ax,P) = if (!(at(aw))) | |
234 | - | then throw("Payment must be at WAVES") | |
235 | - | else if (!(aq(ax, P))) | |
236 | - | then throw("Not enough funds") | |
237 | - | else unit | |
238 | 192 | ||
239 | - | ||
240 | - | func ay () = 0 | |
241 | - | ||
242 | - | ||
243 | - | func az () = 0 | |
244 | - | ||
245 | - | ||
246 | - | func aA (aB,ax,aC) = if (aB) | |
247 | - | then $Tuple2((aC - az()), (ax - aC)) | |
248 | - | else $Tuple2((aC - ay()), (ax - aC)) | |
249 | - | ||
250 | - | ||
251 | - | func aD (h) = if (ag(h)) | |
252 | - | then $Tuple2(c, R(h)) | |
253 | - | else if (ah(h)) | |
254 | - | then $Tuple2(b, Q(h)) | |
255 | - | else throw("Slot doesn`t exist") | |
256 | - | ||
257 | - | ||
258 | - | let aE = "buy" | |
259 | - | ||
260 | - | let aF = base58'EbLVSrAi6vS3AkLwBinzZCvAXP2yYiFJEzj1MBVHcwZ5' | |
261 | - | ||
262 | - | @Callable(aG) | |
263 | - | func createNft (aH,aI,aJ,aK,aL,aM,aN,aO,aP) = { | |
264 | - | let aQ = Issue(aH, aN, 1, 0, false) | |
265 | - | let aR = calculateAssetId(aQ) | |
266 | - | [aQ, ScriptTransfer(aG.caller, 1, aR), StringEntry(((toBase58String(aR) + a) + "Owner"), toString(aG.caller)), StringEntry(((toBase58String(aR) + a) + "nft_type"), aK), StringEntry(((toBase58String(aR) + a) + "nft_tags"), aL), StringEntry(((toBase58String(aR) + a) + "nft_dAppAddress"), aJ), IntegerEntry(((toBase58String(aR) + a) + "nft_selling_price"), aM), StringEntry(((toBase58String(aR) + a) + "nft_onSell"), aO), StringEntry(((toBase58String(aR) + a) + "nft_data"), aP)] | |
193 | + | @Callable(aN) | |
194 | + | func tryToWin (aS,aT) = { | |
195 | + | let aU = $Tuple2(aN.payments[0].assetId, value(aN.payments[0].amount)) | |
196 | + | let aL = aU._1 | |
197 | + | let aM = aU._2 | |
198 | + | valueOrElse(aK(aL, aM), { | |
199 | + | let r = $Tuple2(aS, aT) | |
200 | + | let aV = q() | |
201 | + | let s = aV._1 | |
202 | + | let w = aV._2 | |
203 | + | let aW = v() | |
204 | + | let aX = aW._1 | |
205 | + | let aY = aW._2 | |
206 | + | let aZ = aW._3 | |
207 | + | let ba = x(s, w) | |
208 | + | let ap = ba._1 | |
209 | + | let aq = ba._2 | |
210 | + | let ar = ba._3 | |
211 | + | let aH = al(r, $Tuple3(ap, aq, ar)) | |
212 | + | let aI = aC(r, aX, aY, aZ) | |
213 | + | let aJ = an(r, $Tuple3(ap, aq, ar)) | |
214 | + | if (if (if (aH) | |
215 | + | then true | |
216 | + | else aJ) | |
217 | + | then true | |
218 | + | else aI) | |
219 | + | then { | |
220 | + | let bb = aG(aH, aI, aJ) | |
221 | + | let bc = (aM * bb) | |
222 | + | [IntegerEntry("multiplier", bb), ScriptTransfer(aN.originCaller, bc, unit)] | |
223 | + | } | |
224 | + | else nil | |
225 | + | }) | |
267 | 226 | } | |
268 | 227 | ||
269 | 228 | ||
270 | 229 | ||
271 | - | @Callable(aG) | |
272 | - | func issueNft (aS,aT) = { | |
273 | - | let aQ = Issue(aS, aT, 1, 0, false) | |
274 | - | let aR = calculateAssetId(aQ) | |
275 | - | [aQ, ScriptTransfer(aG.caller, 1, aR), StringEntry(((toBase58String(aR) + a) + "Owner"), toString(aG.caller))] | |
276 | - | } | |
277 | - | ||
278 | - | ||
279 | - | ||
280 | - | @Callable(aG) | |
281 | - | func buyNFT (aU) = { | |
282 | - | let T = fromBase58String(aU) | |
283 | - | let aV = value(aG.payments[0].amount) | |
284 | - | let aW = value(aG.payments[1].amount) | |
285 | - | let P = valueOrErrorMessage(getString(((e + a) + aU)), "There is no price for this NFT") | |
286 | - | let aX = valueOrErrorMessage(getStringValue(((aU + a) + "Owner")), "No owner") | |
287 | - | if ((aG.payments[0].assetId != unit)) | |
288 | - | then throw("Pay in waves") | |
289 | - | else if ((aG.payments[1].assetId != aF)) | |
290 | - | then throw("Pay in ASIMI") | |
291 | - | else if ((parseIntValue(P) > aV)) | |
292 | - | then throw("Invalid payment WAVES") | |
293 | - | else [ScriptTransfer(aG.caller, 1, T), ScriptTransfer(value(addressFromString(aX)), parseIntValue(P), unit), StringEntry(((toString(aG.caller) + a) + aE), ((aU + a) + toString(aV)))] | |
294 | - | } | |
295 | - | ||
296 | - | ||
297 | - | ||
298 | - | @Callable(aG) | |
299 | - | func sellNFT (P) = { | |
300 | - | let aY = $Tuple2(value(aG.payments[0].assetId), value(aG.payments[0].amount)) | |
301 | - | let aZ = aY._1 | |
302 | - | let ba = aY._2 | |
303 | - | if (!(ad(aZ))) | |
304 | - | then throw("Token is not NFT") | |
305 | - | else [StringEntry(((e + a) + toBase58String(value(aG.payments[0].assetId))), toString(P)), StringEntry(((toString(aG.caller) + a) + c), ((toBase58String(aZ) + a) + toString(ba)))] | |
306 | - | } | |
307 | - | ||
308 | - | ||
309 | - | ||
310 | - | @Callable(aG) | |
311 | - | func addSell (P) = { | |
312 | - | let h = value(aG.payments[0].assetId) | |
313 | - | valueOrElse(au(h), if (!(ai(P))) | |
314 | - | then throw("Price must be > 0") | |
315 | - | else [N(h, aG.caller, P)]) | |
316 | - | } | |
317 | - | ||
318 | - | ||
319 | - | ||
320 | - | @Callable(aG) | |
321 | - | func addAuction (K,L,M) = { | |
322 | - | let h = value(aG.payments[0].assetId) | |
323 | - | valueOrElse(au(h), [I(aG.caller, h, K, L, M), StringEntry(((toBase58String(h) + a) + "nft_owner"), toString(aG.caller))]) | |
324 | - | } | |
325 | - | ||
326 | - | ||
327 | - | ||
328 | - | @Callable(aG) | |
329 | - | func buyFromSlot (h) = { | |
330 | - | let bb = $Tuple2(aG.payments[0].assetId, value(aG.payments[0].amount)) | |
331 | - | let aw = bb._1 | |
332 | - | let ax = bb._2 | |
333 | - | let T = fromBase58String(h) | |
334 | - | let bc = aD(T) | |
335 | - | let bd = bc._1 | |
336 | - | let B = bc._2 | |
337 | - | let be = [ScriptTransfer(aG.caller, 1, T), DeleteEntry(f(bd, T))] | |
338 | - | if ((bd == c)) | |
339 | - | then { | |
340 | - | let bf = D(B) | |
341 | - | let J = bf._1 | |
342 | - | let bg = bf._2 | |
343 | - | valueOrElse(av(aw, ax, bg), { | |
344 | - | let bh = aA(af(T), ax, bg) | |
345 | - | let bi = bh._1 | |
346 | - | let bj = bh._2 | |
347 | - | let bk = (be ++ [ScriptTransfer(J, bi, unit)]) | |
348 | - | if ((bj > 0)) | |
349 | - | then (bk ++ [ScriptTransfer(aG.caller, bj, unit)]) | |
350 | - | else bk | |
351 | - | }) | |
352 | - | } | |
353 | - | else { | |
354 | - | let bl = S(T, height) | |
355 | - | let J = bl._1 | |
356 | - | let aC = bl._2 | |
357 | - | valueOrElse(av(aw, ax, aC), { | |
358 | - | let bm = aA(af(T), ax, aC) | |
359 | - | let bi = bm._1 | |
360 | - | let bj = bm._2 | |
361 | - | let bk = (be ++ [ScriptTransfer(J, bi, unit)]) | |
362 | - | if ((bj > 0)) | |
363 | - | then (bk ++ [ScriptTransfer(aG.caller, bj, unit)]) | |
364 | - | else bk | |
365 | - | }) | |
366 | - | } | |
367 | - | } | |
368 | - | ||
369 | - | ||
370 | - | ||
371 | - | @Callable(aG) | |
372 | - | func declineSlot (h) = { | |
373 | - | let T = fromBase58String(h) | |
374 | - | let bn = aD(T) | |
375 | - | let bd = bn._1 | |
376 | - | let B = bn._2 | |
377 | - | let be = [DeleteEntry(f(bd, T))] | |
378 | - | if ((bd == c)) | |
379 | - | then { | |
380 | - | let bo = D(B) | |
381 | - | let J = bo._1 | |
382 | - | let bg = bo._2 | |
383 | - | if (!(an(aG.caller, J))) | |
384 | - | then throw("Invalid caller") | |
385 | - | else (be ++ [ScriptTransfer(J, 1, T)]) | |
386 | - | } | |
387 | - | else { | |
388 | - | let bp = A(B) | |
389 | - | let J = bp._1 | |
390 | - | let W = bp._2 | |
391 | - | let X = bp._3 | |
392 | - | let Y = bp._4 | |
393 | - | let Z = bp._5 | |
394 | - | if (!(an(aG.caller, J))) | |
395 | - | then throw("Invalid caller") | |
396 | - | else if (!(ao(height, Z))) | |
397 | - | then throw("Wait for end of auction") | |
398 | - | else (be ++ [ScriptTransfer(J, 1, T)]) | |
399 | - | } | |
400 | - | } | |
401 | - | ||
402 | - | ||
403 | - | ||
404 | - | @Callable(aG) | |
405 | - | func setTrustedIssuer (bq) = if (!(al(aG.caller))) | |
406 | - | then throw("Only admin") | |
407 | - | else [BooleanEntry(l(addressFromStringValue(bq)), true)] | |
408 | - | ||
409 | - | ||
410 | - | ||
411 | - | @Callable(aG) | |
412 | - | func getPriceAtCurrentMoment (h,U) = { | |
413 | - | let T = fromBase58String(h) | |
414 | - | let br = S(T, U) | |
415 | - | let J = br._1 | |
416 | - | let P = br._2 | |
417 | - | [IntegerEntry(i(T), P)] | |
230 | + | @Callable(aN) | |
231 | + | func startGame () = { | |
232 | + | let r = n(aN.transactionId) | |
233 | + | let bd = invoke(this, "tryToWin", [r._1, r._2], [aN.payments[0]]) | |
234 | + | if ((bd == bd)) | |
235 | + | then nil | |
236 | + | else throw("Strict value is not equal to itself.") | |
418 | 237 | } | |
419 | 238 | ||
420 | 239 |
github/deemru/w8io/169f3d6 56.13 ms ◑![]()