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:
OldNewDifferences
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "_"
55
6-let b = "auction"
6+let b = "goalP1"
77
8-let c = "sell"
8+let c = "goalP2"
99
10-let d = "trusted"
10+let d = "deflection"
1111
12-let e = "price"
12+let e = "vertex1"
1313
14-func f (g,h) = ((g + a) + toBase58String(h))
14+let f = "vertex2"
1515
16+let g = "vertex3"
1617
17-func i (h) = ((e + a) + toBase58String(h))
18+let h = "maxBet"
1819
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)
11224 }
11325
11426
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)
11831 }
11932
12033
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])))
12438 }
12539
12640
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])))
14052 }
14153
14254
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)
17160 }
17261
17362
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)
18668 }
18769
18870
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)
19275 }
19376
19477
195-func ag (T) = isDefined(getString(this, j(T)))
78+func G (H,I) = ((H._1 * I._2) - (H._2 * I._1))
19679
19780
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+ }
19986
20087
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+ }
202105
203106
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+ }
205126
206127
207-func al (am) = (am == this)
128+func al (r,am) = ((((r._1 * am._1) + (r._2 * am._2)) + am._3) == 0)
208129
209130
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+ }
213148
214149
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+ }
216162
217163
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
219179
220180
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")
222186
223187
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)]
231190
232191
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
238192
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+ })
267226 }
268227
269228
270229
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.")
418237 }
419238
420239
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "_"
55
6-let b = "auction"
6+let b = "goalP1"
77
8-let c = "sell"
8+let c = "goalP2"
99
10-let d = "trusted"
10+let d = "deflection"
1111
12-let e = "price"
12+let e = "vertex1"
1313
14-func f (g,h) = ((g + a) + toBase58String(h))
14+let f = "vertex2"
1515
16+let g = "vertex3"
1617
17-func i (h) = ((e + a) + toBase58String(h))
18+let h = "maxBet"
1819
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)
11224 }
11325
11426
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)
11831 }
11932
12033
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])))
12438 }
12539
12640
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])))
14052 }
14153
14254
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)
17160 }
17261
17362
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)
18668 }
18769
18870
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)
19275 }
19376
19477
195-func ag (T) = isDefined(getString(this, j(T)))
78+func G (H,I) = ((H._1 * I._2) - (H._2 * I._1))
19679
19780
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+ }
19986
20087
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+ }
202105
203106
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+ }
205126
206127
207-func al (am) = (am == this)
128+func al (r,am) = ((((r._1 * am._1) + (r._2 * am._2)) + am._3) == 0)
208129
209130
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+ }
213148
214149
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+ }
216162
217163
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
219179
220180
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")
222186
223187
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)]
231190
232191
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
238192
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+ })
267226 }
268227
269228
270229
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.")
418237 }
419238
420239

github/deemru/w8io/169f3d6 
56.13 ms