tx · DDvS8M4E879kMFRKsuKngHG2f7MvRzNqCVFo2BfgSdWD

3N4NS7d4Jo9a6F14LiFUKKYVdUkkf2eP4Zx:  -0.02100000 Waves

2023.02.10 10:52 [2443254] smart account 3N4NS7d4Jo9a6F14LiFUKKYVdUkkf2eP4Zx > SELF 0.00000000 Waves

{ "type": 13, "id": "DDvS8M4E879kMFRKsuKngHG2f7MvRzNqCVFo2BfgSdWD", "fee": 2100000, "feeAssetId": null, "timestamp": 1676015646309, "version": 2, "chainId": 84, "sender": "3N4NS7d4Jo9a6F14LiFUKKYVdUkkf2eP4Zx", "senderPublicKey": "NaY7sqttWGpnVrcb6uE8xPp2VnMjT7fhv3q1TKGL9ar", "proofs": [ "aCNq1riKLbDiBbGRpSGLXnWZMyGcETLmtrKhTGsvjkcNPbkuyWwcmA8cnQZuW5Eeas27etW6s9xF5EdC7ouk6jQ", "2XUMw1hXxScusyw85f8dV2MMnqoktrinjp4pFqcsGhcqgGh65Xioo1hreuRbXpEePzBbckvHLau7aR4zirfBm2kc", "53EPQrBvibqe1SPDZEB5g47zi8SEkpsaRAbVcxmkzHj8YWm9XMs6jdE1d8SxpufDD8THJ4qJrngPrwQZSu6zEGvr" ], "script": "base64:AAIEAAAAAAAAACsIAhIQCg4ICAgICAgICAgICAgICBIDCgEIEgwKCgECAQIBAgECAQISABIAAAAAKgAAAAADU0VQAgAAAAJfXwAAAAAZSWR4Q29udHJvbENmZ05ldXRyaW5vRGFwcAAAAAAAAAAAAQAAAAAYSWR4Q29udHJvbENmZ0F1Y3Rpb25EYXBwAAAAAAAAAAACAAAAABRJZHhDb250cm9sQ2ZnUnBkRGFwcAAAAAAAAAAAAwAAAAAVSWR4Q29udHJvbENmZ01hdGhEYXBwAAAAAAAAAAAEAAAAABxJZHhDb250cm9sQ2ZnTGlxdWlkYXRpb25EYXBwAAAAAAAAAAAFAAAAABVJZHhDb250cm9sQ2ZnUmVzdERhcHAAAAAAAAAAAAYAAAAAHUlkeENvbnRyb2xDZmdOb2RlUmVnaXN0cnlEYXBwAAAAAAAAAAAHAAAAABxJZHhDb250cm9sQ2ZnTnNidFN0YWtpbmdEYXBwAAAAAAAAAAAIAAAAABlJZHhDb250cm9sQ2ZnTWVkaWF0b3JEYXBwAAAAAAAAAAAJAAAAABxJZHhDb250cm9sQ2ZnU3VyZlN0YWtpbmdEYXBwAAAAAAAAAAAKAAAAACBJZHhDb250cm9sQ2ZnR25zYnRDb250cm9sbGVyRGFwcAAAAAAAAAAACwAAAAAXSWR4Q29udHJvbENmZ1Jlc3RWMkRhcHAAAAAAAAAAAAwAAAAAG0lkeENvbnRyb2xDZmdHb3Zlcm5hbmNlRGFwcAAAAAAAAAAADQAAAAAcSWR4Q29udHJvbENmZ1BlZ1Byb3ZpZGVyRGFwcAAAAAAAAAAADgEAAAAQa2V5Q29udHJvbENvbmZpZwAAAAACAAAAESVzX19jb250cm9sQ29uZmlnAQAAAA5kYXRhQ29udHJvbENmZwAAAA4AAAAQbmV1dHJpbm9Db250cmFjdAAAAA9hdWN0aW9uQ29udHJhY3QAAAALcnBkQ29udHJhY3QAAAAMbWF0aENvbnRyYWN0AAAAE2xpcXVpZGF0aW9uQ29udHJhY3QAAAAMcmVzdENvbnRyYWN0AAAAFG5vZGVSZWdpc3RyeUNvbnRyYWN0AAAAE25zYnRTdGFraW5nQ29udHJhY3QAAAAQbWVkaWF0b3JDb250cmFjdAAAABNzdXJmU3Rha2luZ0NvbnRyYWN0AAAA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dCBkZWZpbmVkBQAAAANuaWwCAAAAAAEAAAAYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAAAAAgAAAApjb250cm9sQ2ZnAAAAA2lkeAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEJgAAAAEJAAGRAAAAAgUAAAAKY29udHJvbENmZwUAAAADaWR4CQABLAAAAAICAAAALUNvbnRyb2wgY2ZnIGRvZXNuJ3QgY29udGFpbiBhZGRyZXNzIGF0IGluZGV4IAkAAaQAAAABBQAAAANpZHgAAAAACmNvbnRyb2xDZmcJAAS1AAAAAgkBAAAAD2dldFN0cmluZ09yRmFpbAAAAAIFAAAABHRoaXMJAQAAABBrZXlDb250cm9sQ29uZmlnAAAAAAUAAAADU0VQAAAAABJnb3Zlcm5hbmNlQ29udHJhY3QJAQAAABhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwAAAACBQAAAApjb250cm9sQ2ZnBQAAABtJZHhDb250cm9sQ2ZnR292ZXJuYW5jZURhcHAAAAAAFW5ldXRyaW5vTG9ja2VkQmFsYW5jZQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAA9uZXV0cmlub0FkZHJlc3MCAAAAFWJhbGFuY2VfbG9ja19uZXV0cmlubwAAAAAAAAAAAAAAAAASd2F2ZXNMb2NrZWRCYWxhbmNlCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAAD25ldXRyaW5vQWRkcmVzcwIAAAASYmFsYW5jZV9sb2NrX3dhdmVzAAAAAAAAAAAAAAAAAAdyZXNlcnZlCQAAZQAAAAIICQAD7wAAAAEFAAAAD25ldXRyaW5vQWRkcmVzcwAAAAdyZWd1bGFyBQAAABJ3YXZlc0xvY2tlZEJhbGFuY2UAAAAADm5ldXRyaW5vU3VwcGx5CQAAZQAAAAIJAABlAAAAAgkAAGQAAAACBQAAABVuZXV0cmlub0xvY2tlZEJhbGFuY2UICQEAAAAFdmFsdWUAAAABCQAD7AAAAAEFAAAADW5ldXRyaW5vQXNzZXQAAAAIcXVhbnRpdHkJAAPwAAAAAgUAAAAPbmV1dHJpbm9BZGRyZXNzBQAAAA1uZXV0cmlub0Fzc2V0CQAD8AAAAAIFAAAAEmxpcXVpZGF0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AAAAD21heFBlcmNlbnRCb3VuZAUAAAADcDQxCQAAZgAAAAIFAAAAA3A0MQUAAAAPbWluUGVyY2VudEJvdW5kBwkABEwAAAACAAAAAAAAAAABBQAAAAZhcnJheTEFAAAABmFycmF5MQQAAAAGYXJyYXkzAwMJAABmAAAAAgUAAAAPbWF4UGVyY2VudEJvdW5kBQAAAANwNDIJAABmAAAAAgUAAAADcDQyBQAAAA9taW5QZXJjZW50Qm91bmQHCQAETAAAAAIAAAAAAAAAAAIFAAAABmFycmF5MgUAAAAGYXJyYXkyAwMJAABmAAAAAgUAAAAPbWF4UGVyY2VudEJvdW5kBQAAAANwNDMJAABmAAAAAgUAAAADcDQzBQAAAA9taW5QZXJjZW50Qm91bmQHCQAETAAAAAIAAAAAAAAAAAMFAAAABmFycmF5MwUAAAAGYXJyYXkzAQAAABJmb3JtYXR0aW5nUHJpY2VNc2cAAAABAAAABXByaWNlCQABmwAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAATV0FWRVNORVVUUklOT1BSRUZJWAIAAAABXwkAAaQAAAABBQAAAAZoZWlnaHQCAAAAAV8JAAGkAAAAAQUAAAAFcHJpY2UAAAAFAAAAAWkBAAAADWNvbnN0cnVjdG9yVjEAAAAOAAAAEG5ldXRyaW5vQ29udHJhY3QAAAAPYXVjdGlvbkNvbnRyYWN0AAAAC3JwZENvbnRyYWN0AAAADG1hdGhDb250cmFjdAAAABNsaXF1aWRhdGlvbkNvbnRyYWN0AAAADHJlc3RDb250cmFjdAAAABRub2RlUmVnaXN0cnlDb250cmFjdAAAABNuc2J0U3Rha2luZ0NvbnRyYWN0AAAAEG1lZGlhdG9yQ29udHJhY3QAAAATc3VyZlN0YWtpbmdDb250cmFjdAAAABdnbnNidENvbnRyb2xsZXJDb250cmFjdAAAAA5yZXN0VjJDb250cmFjdAAAABJnb3Zlcm5hbmNlQ29udHJhY3QAAAAMZG9yYUNvbnRyYWN0AwkBAAAAAiE9AAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAAR0aGlzCQAAAgAAAAECAAAAEnBlcm1pc3Npb25zIGRlbmllZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAQa2V5Q29udHJvbENvbmZpZwAAAAAJAQAAAA5kYXRhQ29udHJvbENmZwAAAA4FAAAAEG5ldXRyaW5vQ29udHJhY3QFAAAAD2F1Y3Rpb25Db250cmFjdAUAAAALcnBkQ29udHJhY3QFAAAADG1hdGhDb250cmFjdAUAAAATbGlxdWlkYXRpb25Db250cmFjdAUAAAAMcmVzdENvbnRyYWN0BQAAABRub2RlUmVnaXN0cnlDb250cmFjdAUAAAATbnNidFN0YWtpbmdDb250cmFjdAUAAAAQbWVkaWF0b3JDb250cmFjdAUAAAATc3VyZlN0YWtpbmdDb250cmFjdAUAAAAXZ25zYnRDb250cm9sbGVyQ29udHJhY3QFAAAADnJlc3RWMkNvbnRyYWN0BQAAABJnb3Zlcm5hbmNlQ29udHJhY3QFAAAADGRvcmFDb250cmFjdAUAAAADbmlsAAAAAWkBAAAAFWNhbGxFbWVyZ2VuY3lTaHV0ZG93bgAAAAEAAAAGcmVhc29uBAAAABpBdXRvRW1lcmdlbmN5T3JhY2xlQWRkcmVzcwIAAAAjM010SnlrTjdrRTE2WTNvaDZmb28yQlp2SFk3aENwbk1zVnUEAAAADWNhbGxlckFkZHJlc3MJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyAwMJAQAAAAIhPQAAAAIFAAAAGkF1dG9FbWVyZ2VuY3lPcmFjbGVBZGRyZXNzBQAAAA1jYWxsZXJBZGRyZXNzCQEAAAACIT0AAAACCQAEJQAAAAEFAAAAEmdvdmVybmFuY2VDb250cmFjdAUAAAANY2FsbGVyQWRkcmVzcwcJAAACAAAAAQIAAAA9Y2FsbGVyIG11c3QgYmUgb25lIGFuIGVtZXJnZW5jeSBvcmFjbGUgb3IgR292ZXJuYW5jZSBjb250cmFjdAkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgIAAAAKaXNfYmxvY2tlZAYJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAARaXNfYmxvY2tlZF9jYWxsZXIFAAAADWNhbGxlckFkZHJlc3MJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAARaXNfYmxvY2tlZF9yZWFzb24FAAAABnJlYXNvbgUAAAADbmls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", "height": 2443254, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8MMAPLgc1dx9wweySh4pAuwYek7XLArWYsFvws4y56t8 Next: AphZ2C6CffKoiMCNuHknyRgdEQnVcgvTaif8ukqbuAfS Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-func a (b,c) = fraction(fraction(b, c, 1000000), 1000000, 100000000)
4+let a = "__"
5+
6+let b = 1
7+
8+let c = 2
9+
10+let d = 3
11+
12+let e = 4
13+
14+let f = 5
15+
16+let g = 6
17+
18+let h = 7
19+
20+let i = 8
21+
22+let j = 9
23+
24+let k = 10
25+
26+let l = 11
27+
28+let m = 12
29+
30+let n = 13
31+
32+let o = 14
33+
34+func p () = "%s__controlConfig"
535
636
7-func d (e,f) = valueOrElse(getInteger(addressFromStringValue(e), f), 0)
37+func q (r,s,t,u,v,w,x,y,z,A,B,C,D,E) = makeString(["%s%s%s%s%s%s%s%s%s%s%s%s%s%s", r, s, t, u, v, w, x, y, z, A, B, C, D, E], a)
838
939
10-func g (e,f) = valueOrElse(getString(e, f), "")
40+func F (G,H) = fraction(fraction(G, H, 1000000), 1000000, 100000000)
1141
1242
13-func h (i) = split(i, ",")
43+func I (J,K) = valueOrElse(getInteger(addressFromStringValue(J), K), 0)
1444
1545
16-let c = valueOrElse(getInteger(this, "price"), 0)
46+func L (J,K) = valueOrElse(getString(J, K), "")
1747
18-let j = valueOrElse(getInteger(this, "price_index"), 0)
1948
20-let k = valueOrElse(getBoolean(this, "is_blocked"), false)
49+func M (N) = split(N, ",")
2150
22-let l = 25
2351
24-let m = valueOrElse(getString(this, "oracles"), "")
52+let H = valueOrElse(getInteger(this, "price"), 0)
2553
26-let n = h(m)
54+let O = valueOrElse(getInteger(this, "price_index"), 0)
2755
28-let o = Address(base58'3Mzbx34Ex5rRbn39vUHx9kiwh3nneF8S5we')
56+let P = valueOrElse(getBoolean(this, "is_blocked"), false)
2957
30-let p = Address(base58'3N5nmMvMH8o3RPEyCKCaoWahBTYTexnZy62')
58+let Q = 1000
3159
32-let q = base58'25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT'
60+let R = valueOrElse(getString(this, "oracles"), "")
3361
34-let r = valueOrElse(getInteger(o, "balance_lock_neutrino"), 0)
62+let S = M(R)
3563
36-let s = valueOrElse(getInteger(o, "balance_lock_waves"), 0)
64+let T = Address(base58'3N9be2mwrA52WJho6DiesZkk4351GvpnWuj')
3765
38-let t = (wavesBalance(o).regular - s)
66+let U = Address(base58'3N24ZPUAMhFm76N3vbNiiDtFqfUnmBHTc5N')
3967
40-let u = (((r + value(assetInfo(q)).quantity) - assetBalance(o, q)) - assetBalance(p, q))
68+let V = base58'HezsdQuRDtzksAYUy97gfhKy7Z1NW2uXYSHA3bgqenNZ'
4169
42-let v = (u - a(t, c))
70+let W = this
4371
44-func w (x) = {
45- let y = 90
46- let z = 110
47- let A = x[0]
48- let B = if ((0 >= x[0]))
72+func X (J,K) = valueOrErrorMessage(getString(J, K), makeString(["mandatory ", toString(J), ".", K, " is not defined"], ""))
73+
74+
75+func Y (Z,aa) = valueOrErrorMessage(addressFromString(Z[aa]), ("Control cfg doesn't contain address at index " + toString(aa)))
76+
77+
78+let Z = split(X(this, p()), a)
79+
80+let D = Y(Z, n)
81+
82+let ab = valueOrElse(getInteger(T, "balance_lock_neutrino"), 0)
83+
84+let ac = valueOrElse(getInteger(T, "balance_lock_waves"), 0)
85+
86+let ad = (wavesBalance(T).regular - ac)
87+
88+let ae = (((ab + value(assetInfo(V)).quantity) - assetBalance(T, V)) - assetBalance(U, V))
89+
90+let af = (ae - F(ad, H))
91+
92+func ag (ah) = {
93+ let ai = 90
94+ let aj = 110
95+ let ak = ah[0]
96+ let al = if ((0 >= ah[0]))
4997 then [0]
5098 else {
51- let C = ((x[1] * 100) / A)
52- let D = ((x[2] * 100) / A)
53- let E = ((x[3] * 100) / A)
54- let F = ((x[4] * 100) / A)
55- let G = if (if ((z > C))
56- then (C > y)
99+ let am = ((ah[1] * 100) / ak)
100+ let an = ((ah[2] * 100) / ak)
101+ let ao = ((ah[3] * 100) / ak)
102+ let ap = ((ah[4] * 100) / ak)
103+ let aq = if (if ((aj > am))
104+ then (am > ai)
57105 else false)
58106 then [1, 0]
59107 else [0]
60- let H = if (if ((z > D))
61- then (D > y)
108+ let ar = if (if ((aj > an))
109+ then (an > ai)
62110 else false)
63- then 2 :: G
64- else G
65- let I = if (if ((z > E))
66- then (E > y)
111+ then 2 :: aq
112+ else aq
113+ let as = if (if ((aj > ao))
114+ then (ao > ai)
67115 else false)
68- then 3 :: H
69- else H
70- if (if ((z > F))
71- then (F > y)
116+ then 3 :: ar
117+ else ar
118+ if (if ((aj > ap))
119+ then (ap > ai)
72120 else false)
73- then 4 :: I
74- else I
121+ then 4 :: as
122+ else as
75123 }
76- let J = if ((size(B) >= 3))
77- then B
124+ let at = if ((size(al) >= 3))
125+ then al
78126 else {
79- let K = x[1]
80- if ((0 >= K))
127+ let au = ah[1]
128+ if ((0 >= au))
81129 then [1]
82130 else {
83- let L = ((x[0] * 100) / K)
84- let M = ((x[2] * 100) / K)
85- let N = ((x[3] * 100) / K)
86- let O = ((x[4] * 100) / K)
87- let G = if (if ((z > L))
88- then (L > y)
131+ let av = ((ah[0] * 100) / au)
132+ let aw = ((ah[2] * 100) / au)
133+ let ax = ((ah[3] * 100) / au)
134+ let ay = ((ah[4] * 100) / au)
135+ let aq = if (if ((aj > av))
136+ then (av > ai)
89137 else false)
90138 then [0, 1]
91139 else [1]
92- let H = if (if ((z > M))
93- then (M > y)
140+ let ar = if (if ((aj > aw))
141+ then (aw > ai)
94142 else false)
95- then 2 :: G
96- else G
97- let I = if (if ((z > N))
98- then (N > y)
143+ then 2 :: aq
144+ else aq
145+ let as = if (if ((aj > ax))
146+ then (ax > ai)
99147 else false)
100- then 3 :: H
101- else H
102- if (if ((z > O))
103- then (O > y)
148+ then 3 :: ar
149+ else ar
150+ if (if ((aj > ay))
151+ then (ay > ai)
104152 else false)
105- then 4 :: I
106- else I
153+ then 4 :: as
154+ else as
107155 }
108156 }
109- let P = if ((size(J) >= 3))
110- then J
157+ let az = if ((size(at) >= 3))
158+ then at
111159 else {
112- let Q = x[2]
113- if ((0 >= Q))
160+ let aA = ah[2]
161+ if ((0 >= aA))
114162 then [2]
115163 else {
116- let R = ((x[0] * 100) / Q)
117- let S = ((x[1] * 100) / Q)
118- let T = ((x[3] * 100) / Q)
119- let U = ((x[4] * 100) / Q)
120- let G = if (if ((z > R))
121- then (R > y)
164+ let aB = ((ah[0] * 100) / aA)
165+ let aC = ((ah[1] * 100) / aA)
166+ let aD = ((ah[3] * 100) / aA)
167+ let aE = ((ah[4] * 100) / aA)
168+ let aq = if (if ((aj > aB))
169+ then (aB > ai)
122170 else false)
123171 then [0, 2]
124172 else [2]
125- let H = if (if ((z > S))
126- then (S > y)
173+ let ar = if (if ((aj > aC))
174+ then (aC > ai)
127175 else false)
128- then 1 :: G
129- else G
130- let I = if (if ((z > T))
131- then (T > y)
176+ then 1 :: aq
177+ else aq
178+ let as = if (if ((aj > aD))
179+ then (aD > ai)
132180 else false)
133- then 3 :: H
134- else H
135- if (if ((z > U))
136- then (U > y)
181+ then 3 :: ar
182+ else ar
183+ if (if ((aj > aE))
184+ then (aE > ai)
137185 else false)
138- then 4 :: I
139- else I
186+ then 4 :: as
187+ else as
140188 }
141189 }
142- let V = if ((size(P) >= 3))
143- then P
190+ let aF = if ((size(az) >= 3))
191+ then az
144192 else {
145- let W = x[3]
146- if ((0 >= W))
193+ let aG = ah[3]
194+ if ((0 >= aG))
147195 then [3]
148196 else {
149- let X = ((x[0] * 100) / W)
150- let Y = ((x[1] * 100) / W)
151- let Z = ((x[2] * 100) / W)
152- let aa = ((x[4] * 100) / W)
153- let G = if (if ((z > X))
154- then (X > y)
197+ let aH = ((ah[0] * 100) / aG)
198+ let aI = ((ah[1] * 100) / aG)
199+ let aJ = ((ah[2] * 100) / aG)
200+ let aK = ((ah[4] * 100) / aG)
201+ let aq = if (if ((aj > aH))
202+ then (aH > ai)
155203 else false)
156204 then [0, 3]
157205 else [3]
158- let H = if (if ((z > Y))
159- then (Y > y)
206+ let ar = if (if ((aj > aI))
207+ then (aI > ai)
160208 else false)
161- then 1 :: G
162- else G
163- let I = if (if ((z > Z))
164- then (Z > y)
209+ then 1 :: aq
210+ else aq
211+ let as = if (if ((aj > aJ))
212+ then (aJ > ai)
165213 else false)
166- then 2 :: H
167- else H
168- if (if ((z > aa))
169- then (aa > y)
214+ then 2 :: ar
215+ else ar
216+ if (if ((aj > aK))
217+ then (aK > ai)
170218 else false)
171- then 4 :: I
172- else I
219+ then 4 :: as
220+ else as
173221 }
174222 }
175- if ((size(V) >= 3))
176- then V
223+ if ((size(aF) >= 3))
224+ then aF
177225 else {
178- let ab = x[4]
179- if ((0 >= ab))
226+ let aL = ah[4]
227+ if ((0 >= aL))
180228 then [4]
181229 else {
182- let ac = ((x[0] * 100) / ab)
183- let ad = ((x[1] * 100) / ab)
184- let ae = ((x[2] * 100) / ab)
185- let af = ((x[3] * 100) / ab)
186- let G = if (if ((z > ac))
187- then (ac > y)
230+ let aM = ((ah[0] * 100) / aL)
231+ let aN = ((ah[1] * 100) / aL)
232+ let aO = ((ah[2] * 100) / aL)
233+ let aP = ((ah[3] * 100) / aL)
234+ let aq = if (if ((aj > aM))
235+ then (aM > ai)
188236 else false)
189237 then [0, 4]
190238 else [4]
191- let H = if (if ((z > ad))
192- then (ad > y)
239+ let ar = if (if ((aj > aN))
240+ then (aN > ai)
193241 else false)
194- then 1 :: G
195- else G
196- let I = if (if ((z > ae))
197- then (ae > y)
242+ then 1 :: aq
243+ else aq
244+ let as = if (if ((aj > aO))
245+ then (aO > ai)
198246 else false)
199- then 2 :: H
200- else H
201- if (if ((z > af))
202- then (af > y)
247+ then 2 :: ar
248+ else ar
249+ if (if ((aj > aP))
250+ then (aP > ai)
203251 else false)
204- then 3 :: I
205- else I
252+ then 3 :: as
253+ else as
206254 }
207255 }
208256 }
209257
210258
211-func ag (c) = toBytes((((("WAVESNEUTRINOPREFIX" + "_") + toString(height)) + "_") + toString(c)))
259+func aQ (H) = toBytes((((("WAVESNEUTRINOPREFIX" + "_") + toString(height)) + "_") + toString(H)))
212260
213261
214-@Callable(ah)
215-func callEmergencyShutdown (ai) = {
216- let aj = "3N65UDbSkK72XdSgH3NhvJ8HaH57x8VmoW3"
217- let ak = toString(ah.caller)
218- if ((aj != ak))
219- then throw("caller must be one an emergency oracle")
220- else [BooleanEntry("is_blocked", true), StringEntry("is_blocked_caller", ak), StringEntry("is_blocked_reason", ai)]
262+@Callable(aR)
263+func constructorV1 (r,s,t,u,v,w,x,y,z,A,B,C,D,E) = if ((aR.caller != this))
264+ then throw("permissions denied")
265+ else [StringEntry(p(), q(r, s, t, u, v, w, x, y, z, A, B, C, D, E))]
266+
267+
268+
269+@Callable(aR)
270+func callEmergencyShutdown (aS) = {
271+ let aT = "3MtJykN7kE16Y3oh6foo2BZvHY7hCpnMsVu"
272+ let aU = toString(aR.caller)
273+ if (if ((aT != aU))
274+ then (toString(D) != aU)
275+ else false)
276+ then throw("caller must be one an emergency oracle or Governance contract")
277+ else [BooleanEntry("is_blocked", true), StringEntry("is_blocked_caller", aU), StringEntry("is_blocked_reason", aS)]
221278 }
222279
223280
224281
225-@Callable(ah)
226-func finalizeCurrentPrice (al,am,an,ao,ap,aq,ar,as,at,au) = if (k)
282+@Callable(aR)
283+func finalizeCurrentPrice (aV,aW,aX,aY,aZ,ba,bb,bc,bd,be) = if (P)
227284 then throw("contract is blocked by EMERGENCY SHUTDOWN actions untill reactivation by emergency oracles")
228285 else if ((valueOrElse(getInteger(this, ("price_" + toString(height))), 0) != 0))
229286 then throw("wait next block")
230- else if ((n[(height % 5)] != toBase58String(ah.callerPublicKey)))
231- then throw(((("Out of turn finalization: " + toString(height)) + " block should be finalize by ") + n[(height % 5)]))
287+ else if ((S[(height % 5)] != toBase58String(aR.callerPublicKey)))
288+ then throw(((("Out of turn finalization: " + toString(height)) + " block should be finalize by ") + S[(height % 5)]))
232289 else {
233- let x = [if (sigVerify_8Kb(ag(al), am, fromBase58String(n[0])))
234- then al
235- else 0, if (sigVerify_8Kb(ag(an), ao, fromBase58String(n[1])))
236- then an
237- else 0, if (sigVerify_8Kb(ag(ap), aq, fromBase58String(n[2])))
238- then ap
239- else 0, if (sigVerify_8Kb(ag(ar), as, fromBase58String(n[3])))
240- then ar
241- else 0, if (sigVerify_8Kb(ag(at), au, fromBase58String(n[4])))
242- then at
290+ let ah = [if (sigVerify_8Kb(aQ(aV), aW, fromBase58String(S[0])))
291+ then aV
292+ else 0, if (sigVerify_8Kb(aQ(aX), aY, fromBase58String(S[1])))
293+ then aX
294+ else 0, if (sigVerify_8Kb(aQ(aZ), ba, fromBase58String(S[2])))
295+ then aZ
296+ else 0, if (sigVerify_8Kb(aQ(bb), bc, fromBase58String(S[3])))
297+ then bb
298+ else 0, if (sigVerify_8Kb(aQ(bd), be, fromBase58String(S[4])))
299+ then bd
243300 else 0]
244- let av = if ((x[0] == 0))
301+ let bf = if ((ah[0] == 0))
245302 then 1
246- else (0 + (if ((x[1] == 0))
303+ else (0 + (if ((ah[1] == 0))
247304 then 1
248- else (0 + (if ((x[2] == 0))
305+ else (0 + (if ((ah[2] == 0))
249306 then 1
250- else (0 + (if ((x[3] == 0))
307+ else (0 + (if ((ah[3] == 0))
251308 then 1
252- else (0 + (if ((x[4] == 0))
309+ else (0 + (if ((ah[4] == 0))
253310 then 1
254311 else 0))))))))
255- if ((av >= 3))
312+ if ((bf >= 3))
256313 then throw("3 prices or more are equals to 0")
257314 else {
258- let aw = w(x)
259- let ax = size(aw)
260- if ((3 > ax))
315+ let bg = ag(ah)
316+ let bh = size(bg)
317+ if ((3 > bh))
261318 then throw(((((((((((((((((((((("Could not finalize price because of big variation: height=" + toString(height)) + "
262-") + n[0]) + "=") + toString(x[0])) + "
263-") + n[1]) + "=") + toString(x[1])) + "
264-") + n[2]) + "=") + toString(x[2])) + "
265-") + n[3]) + "=") + toString(x[3])) + "
266-") + n[4]) + "=") + toString(x[4])))
319+") + S[0]) + "=") + toString(ah[0])) + "
320+") + S[1]) + "=") + toString(ah[1])) + "
321+") + S[2]) + "=") + toString(ah[2])) + "
322+") + S[3]) + "=") + toString(ah[3])) + "
323+") + S[4]) + "=") + toString(ah[4])))
267324 else {
268- let ay = ((x[aw[0]] + x[aw[1]]) + x[aw[2]])
269- let az = if ((ax >= 4))
270- then (ay + x[aw[3]])
271- else ay
272- let aA = if ((ax >= 5))
273- then (az + x[aw[4]])
274- else az
275- if ((ax >= 6))
325+ let bi = ((ah[bg[0]] + ah[bg[1]]) + ah[bg[2]])
326+ let bj = if ((bh >= 4))
327+ then (bi + ah[bg[3]])
328+ else bi
329+ let bk = if ((bh >= 5))
330+ then (bj + ah[bg[4]])
331+ else bj
332+ if ((bh >= 6))
276333 then throw("Invalid pricesInRange creation")
277334 else {
278- let aB = (aA / ax)
279- if (if ((aB >= (c + ((c * l) / 100))))
335+ let bl = (bk / bh)
336+ if (if ((bl >= (H + ((H * Q) / 100))))
280337 then true
281- else ((c - ((c * l) / 100)) >= aB))
338+ else ((H - ((H * Q) / 100)) >= bl))
282339 then {
283- let ai = "automatic emergency shutdown because of large price variability"
284-[BooleanEntry("is_blocked", true), StringEntry("is_blocked_caller", toString(this)), StringEntry("is_blocked_reason", ai), IntegerEntry((("black_swarm_price" + "_") + toString(height)), aB)]
340+ let aS = "automatic emergency shutdown because of large price variability"
341+[BooleanEntry("is_blocked", true), StringEntry("is_blocked_caller", toString(this)), StringEntry("is_blocked_reason", aS), IntegerEntry((("black_swarm_price" + "_") + toString(height)), bl)]
285342 }
286343 else {
287- let aC = (j + 1)
288-[IntegerEntry("price", aB), IntegerEntry(("price_" + toString(height)), aB), IntegerEntry("price_index", aC), IntegerEntry(("price_index_" + toString(aC)), height), IntegerEntry(("deficit_" + toString(height)), v), IntegerEntry(("neutrinoSupply_" + toString(height)), u), IntegerEntry(("deficit_percent_" + toString(height)), if ((u != 0))
289- then ((v * 100) / u)
344+ let bm = (O + 1)
345+[IntegerEntry("price", bl), IntegerEntry(("price_" + toString(height)), bl), IntegerEntry("price_index", bm), IntegerEntry(("price_index_" + toString(bm)), height), IntegerEntry(("deficit_" + toString(height)), af), IntegerEntry(("neutrinoSupply_" + toString(height)), ae), IntegerEntry(("deficit_percent_" + toString(height)), if ((ae != 0))
346+ then ((af * 100) / ae)
290347 else 0)]
291348 }
292349 }
295352 }
296353
297354
298-@Verifier(aD)
299-func aE () = {
300- let aF = ["GXxmZaCigPgJsT6d1cLr8nUXA65nGX8V7FuAzzrY8wQE", "3xumx4hrPpeeoo79HLGbZCgfz95L39ZFdxxwWeSUC2Pu", "D4CqtK5fBsnzRo33ZMhrM7niLseDH2uRoK6weBq2JQ3A", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"]
301- let aG = ((((if (sigVerify(aD.bodyBytes, aD.proofs[0], fromBase58String(aF[0])))
355+
356+@Callable(aR)
357+func updateReservesAndNeutrinoSupply () = {
358+ func bn (K) = {
359+ let bo = getInteger(this, K)
360+ if ($isInstanceOf(bo, "Int"))
361+ then {
362+ let bp = bo
363+ bp
364+ }
365+ else 0
366+ }
367+
368+ let aa = bn("updateReservesAndNeutrinoSupplyIdx")
369+ let bq = (aa + 1)
370+[IntegerEntry("updateReservesAndNeutrinoSupplyIdx", bq), IntegerEntry("reserve", ad), IntegerEntry("neutrinoSupply", ae), IntegerEntry("reservesInUsdn", F(ad, H)), IntegerEntry("deficit", af)]
371+ }
372+
373+
374+
375+@Callable(aR)
376+func wavesBalancesVsPayment () = {
377+ let br = wavesBalance(this)
378+[IntegerEntry("wavesBalance_available", br.available), IntegerEntry("wavesBalance_regular", br.regular), IntegerEntry("wavesBalance_generating", br.generating), IntegerEntry("wavesBalance_effective", br.effective), IntegerEntry("waves_payment", value(aR.payments[0]).amount)]
379+ }
380+
381+
382+@Verifier(bs)
383+func bt () = {
384+ let bu = makeString(["ExtEEK19nmKj9mCpnWyvEEJFYATLMcVEMvohhUHkyHNm", "Ev5py5FfBQX9cZpYKnfQrTB49Byf8QmpZWeDVRim4yV7", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR"], a)
385+ let bv = split(valueOrElse(getString(W, "%s__multisig"), bu), a)
386+ let bw = ((((if (sigVerify(bs.bodyBytes, bs.proofs[0], fromBase58String(bv[0])))
302387 then 1
303- else 0) + (if (sigVerify(aD.bodyBytes, aD.proofs[1], fromBase58String(aF[1])))
388+ else 0) + (if (sigVerify(bs.bodyBytes, bs.proofs[1], fromBase58String(bv[1])))
304389 then 1
305- else 0)) + (if (sigVerify(aD.bodyBytes, aD.proofs[2], fromBase58String(aF[2])))
390+ else 0)) + (if (sigVerify(bs.bodyBytes, bs.proofs[2], fromBase58String(bv[2])))
306391 then 1
307- else 0)) + (if (sigVerify(aD.bodyBytes, aD.proofs[3], fromBase58String(aF[3])))
392+ else 0)) + (if (sigVerify(bs.bodyBytes, bs.proofs[3], fromBase58String(bv[3])))
308393 then 2
309394 else 0))
310- (aG >= 3)
395+ (bw >= 3)
311396 }
312397
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-func a (b,c) = fraction(fraction(b, c, 1000000), 1000000, 100000000)
4+let a = "__"
5+
6+let b = 1
7+
8+let c = 2
9+
10+let d = 3
11+
12+let e = 4
13+
14+let f = 5
15+
16+let g = 6
17+
18+let h = 7
19+
20+let i = 8
21+
22+let j = 9
23+
24+let k = 10
25+
26+let l = 11
27+
28+let m = 12
29+
30+let n = 13
31+
32+let o = 14
33+
34+func p () = "%s__controlConfig"
535
636
7-func d (e,f) = valueOrElse(getInteger(addressFromStringValue(e), f), 0)
37+func q (r,s,t,u,v,w,x,y,z,A,B,C,D,E) = makeString(["%s%s%s%s%s%s%s%s%s%s%s%s%s%s", r, s, t, u, v, w, x, y, z, A, B, C, D, E], a)
838
939
10-func g (e,f) = valueOrElse(getString(e, f), "")
40+func F (G,H) = fraction(fraction(G, H, 1000000), 1000000, 100000000)
1141
1242
13-func h (i) = split(i, ",")
43+func I (J,K) = valueOrElse(getInteger(addressFromStringValue(J), K), 0)
1444
1545
16-let c = valueOrElse(getInteger(this, "price"), 0)
46+func L (J,K) = valueOrElse(getString(J, K), "")
1747
18-let j = valueOrElse(getInteger(this, "price_index"), 0)
1948
20-let k = valueOrElse(getBoolean(this, "is_blocked"), false)
49+func M (N) = split(N, ",")
2150
22-let l = 25
2351
24-let m = valueOrElse(getString(this, "oracles"), "")
52+let H = valueOrElse(getInteger(this, "price"), 0)
2553
26-let n = h(m)
54+let O = valueOrElse(getInteger(this, "price_index"), 0)
2755
28-let o = Address(base58'3Mzbx34Ex5rRbn39vUHx9kiwh3nneF8S5we')
56+let P = valueOrElse(getBoolean(this, "is_blocked"), false)
2957
30-let p = Address(base58'3N5nmMvMH8o3RPEyCKCaoWahBTYTexnZy62')
58+let Q = 1000
3159
32-let q = base58'25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT'
60+let R = valueOrElse(getString(this, "oracles"), "")
3361
34-let r = valueOrElse(getInteger(o, "balance_lock_neutrino"), 0)
62+let S = M(R)
3563
36-let s = valueOrElse(getInteger(o, "balance_lock_waves"), 0)
64+let T = Address(base58'3N9be2mwrA52WJho6DiesZkk4351GvpnWuj')
3765
38-let t = (wavesBalance(o).regular - s)
66+let U = Address(base58'3N24ZPUAMhFm76N3vbNiiDtFqfUnmBHTc5N')
3967
40-let u = (((r + value(assetInfo(q)).quantity) - assetBalance(o, q)) - assetBalance(p, q))
68+let V = base58'HezsdQuRDtzksAYUy97gfhKy7Z1NW2uXYSHA3bgqenNZ'
4169
42-let v = (u - a(t, c))
70+let W = this
4371
44-func w (x) = {
45- let y = 90
46- let z = 110
47- let A = x[0]
48- let B = if ((0 >= x[0]))
72+func X (J,K) = valueOrErrorMessage(getString(J, K), makeString(["mandatory ", toString(J), ".", K, " is not defined"], ""))
73+
74+
75+func Y (Z,aa) = valueOrErrorMessage(addressFromString(Z[aa]), ("Control cfg doesn't contain address at index " + toString(aa)))
76+
77+
78+let Z = split(X(this, p()), a)
79+
80+let D = Y(Z, n)
81+
82+let ab = valueOrElse(getInteger(T, "balance_lock_neutrino"), 0)
83+
84+let ac = valueOrElse(getInteger(T, "balance_lock_waves"), 0)
85+
86+let ad = (wavesBalance(T).regular - ac)
87+
88+let ae = (((ab + value(assetInfo(V)).quantity) - assetBalance(T, V)) - assetBalance(U, V))
89+
90+let af = (ae - F(ad, H))
91+
92+func ag (ah) = {
93+ let ai = 90
94+ let aj = 110
95+ let ak = ah[0]
96+ let al = if ((0 >= ah[0]))
4997 then [0]
5098 else {
51- let C = ((x[1] * 100) / A)
52- let D = ((x[2] * 100) / A)
53- let E = ((x[3] * 100) / A)
54- let F = ((x[4] * 100) / A)
55- let G = if (if ((z > C))
56- then (C > y)
99+ let am = ((ah[1] * 100) / ak)
100+ let an = ((ah[2] * 100) / ak)
101+ let ao = ((ah[3] * 100) / ak)
102+ let ap = ((ah[4] * 100) / ak)
103+ let aq = if (if ((aj > am))
104+ then (am > ai)
57105 else false)
58106 then [1, 0]
59107 else [0]
60- let H = if (if ((z > D))
61- then (D > y)
108+ let ar = if (if ((aj > an))
109+ then (an > ai)
62110 else false)
63- then 2 :: G
64- else G
65- let I = if (if ((z > E))
66- then (E > y)
111+ then 2 :: aq
112+ else aq
113+ let as = if (if ((aj > ao))
114+ then (ao > ai)
67115 else false)
68- then 3 :: H
69- else H
70- if (if ((z > F))
71- then (F > y)
116+ then 3 :: ar
117+ else ar
118+ if (if ((aj > ap))
119+ then (ap > ai)
72120 else false)
73- then 4 :: I
74- else I
121+ then 4 :: as
122+ else as
75123 }
76- let J = if ((size(B) >= 3))
77- then B
124+ let at = if ((size(al) >= 3))
125+ then al
78126 else {
79- let K = x[1]
80- if ((0 >= K))
127+ let au = ah[1]
128+ if ((0 >= au))
81129 then [1]
82130 else {
83- let L = ((x[0] * 100) / K)
84- let M = ((x[2] * 100) / K)
85- let N = ((x[3] * 100) / K)
86- let O = ((x[4] * 100) / K)
87- let G = if (if ((z > L))
88- then (L > y)
131+ let av = ((ah[0] * 100) / au)
132+ let aw = ((ah[2] * 100) / au)
133+ let ax = ((ah[3] * 100) / au)
134+ let ay = ((ah[4] * 100) / au)
135+ let aq = if (if ((aj > av))
136+ then (av > ai)
89137 else false)
90138 then [0, 1]
91139 else [1]
92- let H = if (if ((z > M))
93- then (M > y)
140+ let ar = if (if ((aj > aw))
141+ then (aw > ai)
94142 else false)
95- then 2 :: G
96- else G
97- let I = if (if ((z > N))
98- then (N > y)
143+ then 2 :: aq
144+ else aq
145+ let as = if (if ((aj > ax))
146+ then (ax > ai)
99147 else false)
100- then 3 :: H
101- else H
102- if (if ((z > O))
103- then (O > y)
148+ then 3 :: ar
149+ else ar
150+ if (if ((aj > ay))
151+ then (ay > ai)
104152 else false)
105- then 4 :: I
106- else I
153+ then 4 :: as
154+ else as
107155 }
108156 }
109- let P = if ((size(J) >= 3))
110- then J
157+ let az = if ((size(at) >= 3))
158+ then at
111159 else {
112- let Q = x[2]
113- if ((0 >= Q))
160+ let aA = ah[2]
161+ if ((0 >= aA))
114162 then [2]
115163 else {
116- let R = ((x[0] * 100) / Q)
117- let S = ((x[1] * 100) / Q)
118- let T = ((x[3] * 100) / Q)
119- let U = ((x[4] * 100) / Q)
120- let G = if (if ((z > R))
121- then (R > y)
164+ let aB = ((ah[0] * 100) / aA)
165+ let aC = ((ah[1] * 100) / aA)
166+ let aD = ((ah[3] * 100) / aA)
167+ let aE = ((ah[4] * 100) / aA)
168+ let aq = if (if ((aj > aB))
169+ then (aB > ai)
122170 else false)
123171 then [0, 2]
124172 else [2]
125- let H = if (if ((z > S))
126- then (S > y)
173+ let ar = if (if ((aj > aC))
174+ then (aC > ai)
127175 else false)
128- then 1 :: G
129- else G
130- let I = if (if ((z > T))
131- then (T > y)
176+ then 1 :: aq
177+ else aq
178+ let as = if (if ((aj > aD))
179+ then (aD > ai)
132180 else false)
133- then 3 :: H
134- else H
135- if (if ((z > U))
136- then (U > y)
181+ then 3 :: ar
182+ else ar
183+ if (if ((aj > aE))
184+ then (aE > ai)
137185 else false)
138- then 4 :: I
139- else I
186+ then 4 :: as
187+ else as
140188 }
141189 }
142- let V = if ((size(P) >= 3))
143- then P
190+ let aF = if ((size(az) >= 3))
191+ then az
144192 else {
145- let W = x[3]
146- if ((0 >= W))
193+ let aG = ah[3]
194+ if ((0 >= aG))
147195 then [3]
148196 else {
149- let X = ((x[0] * 100) / W)
150- let Y = ((x[1] * 100) / W)
151- let Z = ((x[2] * 100) / W)
152- let aa = ((x[4] * 100) / W)
153- let G = if (if ((z > X))
154- then (X > y)
197+ let aH = ((ah[0] * 100) / aG)
198+ let aI = ((ah[1] * 100) / aG)
199+ let aJ = ((ah[2] * 100) / aG)
200+ let aK = ((ah[4] * 100) / aG)
201+ let aq = if (if ((aj > aH))
202+ then (aH > ai)
155203 else false)
156204 then [0, 3]
157205 else [3]
158- let H = if (if ((z > Y))
159- then (Y > y)
206+ let ar = if (if ((aj > aI))
207+ then (aI > ai)
160208 else false)
161- then 1 :: G
162- else G
163- let I = if (if ((z > Z))
164- then (Z > y)
209+ then 1 :: aq
210+ else aq
211+ let as = if (if ((aj > aJ))
212+ then (aJ > ai)
165213 else false)
166- then 2 :: H
167- else H
168- if (if ((z > aa))
169- then (aa > y)
214+ then 2 :: ar
215+ else ar
216+ if (if ((aj > aK))
217+ then (aK > ai)
170218 else false)
171- then 4 :: I
172- else I
219+ then 4 :: as
220+ else as
173221 }
174222 }
175- if ((size(V) >= 3))
176- then V
223+ if ((size(aF) >= 3))
224+ then aF
177225 else {
178- let ab = x[4]
179- if ((0 >= ab))
226+ let aL = ah[4]
227+ if ((0 >= aL))
180228 then [4]
181229 else {
182- let ac = ((x[0] * 100) / ab)
183- let ad = ((x[1] * 100) / ab)
184- let ae = ((x[2] * 100) / ab)
185- let af = ((x[3] * 100) / ab)
186- let G = if (if ((z > ac))
187- then (ac > y)
230+ let aM = ((ah[0] * 100) / aL)
231+ let aN = ((ah[1] * 100) / aL)
232+ let aO = ((ah[2] * 100) / aL)
233+ let aP = ((ah[3] * 100) / aL)
234+ let aq = if (if ((aj > aM))
235+ then (aM > ai)
188236 else false)
189237 then [0, 4]
190238 else [4]
191- let H = if (if ((z > ad))
192- then (ad > y)
239+ let ar = if (if ((aj > aN))
240+ then (aN > ai)
193241 else false)
194- then 1 :: G
195- else G
196- let I = if (if ((z > ae))
197- then (ae > y)
242+ then 1 :: aq
243+ else aq
244+ let as = if (if ((aj > aO))
245+ then (aO > ai)
198246 else false)
199- then 2 :: H
200- else H
201- if (if ((z > af))
202- then (af > y)
247+ then 2 :: ar
248+ else ar
249+ if (if ((aj > aP))
250+ then (aP > ai)
203251 else false)
204- then 3 :: I
205- else I
252+ then 3 :: as
253+ else as
206254 }
207255 }
208256 }
209257
210258
211-func ag (c) = toBytes((((("WAVESNEUTRINOPREFIX" + "_") + toString(height)) + "_") + toString(c)))
259+func aQ (H) = toBytes((((("WAVESNEUTRINOPREFIX" + "_") + toString(height)) + "_") + toString(H)))
212260
213261
214-@Callable(ah)
215-func callEmergencyShutdown (ai) = {
216- let aj = "3N65UDbSkK72XdSgH3NhvJ8HaH57x8VmoW3"
217- let ak = toString(ah.caller)
218- if ((aj != ak))
219- then throw("caller must be one an emergency oracle")
220- else [BooleanEntry("is_blocked", true), StringEntry("is_blocked_caller", ak), StringEntry("is_blocked_reason", ai)]
262+@Callable(aR)
263+func constructorV1 (r,s,t,u,v,w,x,y,z,A,B,C,D,E) = if ((aR.caller != this))
264+ then throw("permissions denied")
265+ else [StringEntry(p(), q(r, s, t, u, v, w, x, y, z, A, B, C, D, E))]
266+
267+
268+
269+@Callable(aR)
270+func callEmergencyShutdown (aS) = {
271+ let aT = "3MtJykN7kE16Y3oh6foo2BZvHY7hCpnMsVu"
272+ let aU = toString(aR.caller)
273+ if (if ((aT != aU))
274+ then (toString(D) != aU)
275+ else false)
276+ then throw("caller must be one an emergency oracle or Governance contract")
277+ else [BooleanEntry("is_blocked", true), StringEntry("is_blocked_caller", aU), StringEntry("is_blocked_reason", aS)]
221278 }
222279
223280
224281
225-@Callable(ah)
226-func finalizeCurrentPrice (al,am,an,ao,ap,aq,ar,as,at,au) = if (k)
282+@Callable(aR)
283+func finalizeCurrentPrice (aV,aW,aX,aY,aZ,ba,bb,bc,bd,be) = if (P)
227284 then throw("contract is blocked by EMERGENCY SHUTDOWN actions untill reactivation by emergency oracles")
228285 else if ((valueOrElse(getInteger(this, ("price_" + toString(height))), 0) != 0))
229286 then throw("wait next block")
230- else if ((n[(height % 5)] != toBase58String(ah.callerPublicKey)))
231- then throw(((("Out of turn finalization: " + toString(height)) + " block should be finalize by ") + n[(height % 5)]))
287+ else if ((S[(height % 5)] != toBase58String(aR.callerPublicKey)))
288+ then throw(((("Out of turn finalization: " + toString(height)) + " block should be finalize by ") + S[(height % 5)]))
232289 else {
233- let x = [if (sigVerify_8Kb(ag(al), am, fromBase58String(n[0])))
234- then al
235- else 0, if (sigVerify_8Kb(ag(an), ao, fromBase58String(n[1])))
236- then an
237- else 0, if (sigVerify_8Kb(ag(ap), aq, fromBase58String(n[2])))
238- then ap
239- else 0, if (sigVerify_8Kb(ag(ar), as, fromBase58String(n[3])))
240- then ar
241- else 0, if (sigVerify_8Kb(ag(at), au, fromBase58String(n[4])))
242- then at
290+ let ah = [if (sigVerify_8Kb(aQ(aV), aW, fromBase58String(S[0])))
291+ then aV
292+ else 0, if (sigVerify_8Kb(aQ(aX), aY, fromBase58String(S[1])))
293+ then aX
294+ else 0, if (sigVerify_8Kb(aQ(aZ), ba, fromBase58String(S[2])))
295+ then aZ
296+ else 0, if (sigVerify_8Kb(aQ(bb), bc, fromBase58String(S[3])))
297+ then bb
298+ else 0, if (sigVerify_8Kb(aQ(bd), be, fromBase58String(S[4])))
299+ then bd
243300 else 0]
244- let av = if ((x[0] == 0))
301+ let bf = if ((ah[0] == 0))
245302 then 1
246- else (0 + (if ((x[1] == 0))
303+ else (0 + (if ((ah[1] == 0))
247304 then 1
248- else (0 + (if ((x[2] == 0))
305+ else (0 + (if ((ah[2] == 0))
249306 then 1
250- else (0 + (if ((x[3] == 0))
307+ else (0 + (if ((ah[3] == 0))
251308 then 1
252- else (0 + (if ((x[4] == 0))
309+ else (0 + (if ((ah[4] == 0))
253310 then 1
254311 else 0))))))))
255- if ((av >= 3))
312+ if ((bf >= 3))
256313 then throw("3 prices or more are equals to 0")
257314 else {
258- let aw = w(x)
259- let ax = size(aw)
260- if ((3 > ax))
315+ let bg = ag(ah)
316+ let bh = size(bg)
317+ if ((3 > bh))
261318 then throw(((((((((((((((((((((("Could not finalize price because of big variation: height=" + toString(height)) + "
262-") + n[0]) + "=") + toString(x[0])) + "
263-") + n[1]) + "=") + toString(x[1])) + "
264-") + n[2]) + "=") + toString(x[2])) + "
265-") + n[3]) + "=") + toString(x[3])) + "
266-") + n[4]) + "=") + toString(x[4])))
319+") + S[0]) + "=") + toString(ah[0])) + "
320+") + S[1]) + "=") + toString(ah[1])) + "
321+") + S[2]) + "=") + toString(ah[2])) + "
322+") + S[3]) + "=") + toString(ah[3])) + "
323+") + S[4]) + "=") + toString(ah[4])))
267324 else {
268- let ay = ((x[aw[0]] + x[aw[1]]) + x[aw[2]])
269- let az = if ((ax >= 4))
270- then (ay + x[aw[3]])
271- else ay
272- let aA = if ((ax >= 5))
273- then (az + x[aw[4]])
274- else az
275- if ((ax >= 6))
325+ let bi = ((ah[bg[0]] + ah[bg[1]]) + ah[bg[2]])
326+ let bj = if ((bh >= 4))
327+ then (bi + ah[bg[3]])
328+ else bi
329+ let bk = if ((bh >= 5))
330+ then (bj + ah[bg[4]])
331+ else bj
332+ if ((bh >= 6))
276333 then throw("Invalid pricesInRange creation")
277334 else {
278- let aB = (aA / ax)
279- if (if ((aB >= (c + ((c * l) / 100))))
335+ let bl = (bk / bh)
336+ if (if ((bl >= (H + ((H * Q) / 100))))
280337 then true
281- else ((c - ((c * l) / 100)) >= aB))
338+ else ((H - ((H * Q) / 100)) >= bl))
282339 then {
283- let ai = "automatic emergency shutdown because of large price variability"
284-[BooleanEntry("is_blocked", true), StringEntry("is_blocked_caller", toString(this)), StringEntry("is_blocked_reason", ai), IntegerEntry((("black_swarm_price" + "_") + toString(height)), aB)]
340+ let aS = "automatic emergency shutdown because of large price variability"
341+[BooleanEntry("is_blocked", true), StringEntry("is_blocked_caller", toString(this)), StringEntry("is_blocked_reason", aS), IntegerEntry((("black_swarm_price" + "_") + toString(height)), bl)]
285342 }
286343 else {
287- let aC = (j + 1)
288-[IntegerEntry("price", aB), IntegerEntry(("price_" + toString(height)), aB), IntegerEntry("price_index", aC), IntegerEntry(("price_index_" + toString(aC)), height), IntegerEntry(("deficit_" + toString(height)), v), IntegerEntry(("neutrinoSupply_" + toString(height)), u), IntegerEntry(("deficit_percent_" + toString(height)), if ((u != 0))
289- then ((v * 100) / u)
344+ let bm = (O + 1)
345+[IntegerEntry("price", bl), IntegerEntry(("price_" + toString(height)), bl), IntegerEntry("price_index", bm), IntegerEntry(("price_index_" + toString(bm)), height), IntegerEntry(("deficit_" + toString(height)), af), IntegerEntry(("neutrinoSupply_" + toString(height)), ae), IntegerEntry(("deficit_percent_" + toString(height)), if ((ae != 0))
346+ then ((af * 100) / ae)
290347 else 0)]
291348 }
292349 }
293350 }
294351 }
295352 }
296353
297354
298-@Verifier(aD)
299-func aE () = {
300- let aF = ["GXxmZaCigPgJsT6d1cLr8nUXA65nGX8V7FuAzzrY8wQE", "3xumx4hrPpeeoo79HLGbZCgfz95L39ZFdxxwWeSUC2Pu", "D4CqtK5fBsnzRo33ZMhrM7niLseDH2uRoK6weBq2JQ3A", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"]
301- let aG = ((((if (sigVerify(aD.bodyBytes, aD.proofs[0], fromBase58String(aF[0])))
355+
356+@Callable(aR)
357+func updateReservesAndNeutrinoSupply () = {
358+ func bn (K) = {
359+ let bo = getInteger(this, K)
360+ if ($isInstanceOf(bo, "Int"))
361+ then {
362+ let bp = bo
363+ bp
364+ }
365+ else 0
366+ }
367+
368+ let aa = bn("updateReservesAndNeutrinoSupplyIdx")
369+ let bq = (aa + 1)
370+[IntegerEntry("updateReservesAndNeutrinoSupplyIdx", bq), IntegerEntry("reserve", ad), IntegerEntry("neutrinoSupply", ae), IntegerEntry("reservesInUsdn", F(ad, H)), IntegerEntry("deficit", af)]
371+ }
372+
373+
374+
375+@Callable(aR)
376+func wavesBalancesVsPayment () = {
377+ let br = wavesBalance(this)
378+[IntegerEntry("wavesBalance_available", br.available), IntegerEntry("wavesBalance_regular", br.regular), IntegerEntry("wavesBalance_generating", br.generating), IntegerEntry("wavesBalance_effective", br.effective), IntegerEntry("waves_payment", value(aR.payments[0]).amount)]
379+ }
380+
381+
382+@Verifier(bs)
383+func bt () = {
384+ let bu = makeString(["ExtEEK19nmKj9mCpnWyvEEJFYATLMcVEMvohhUHkyHNm", "Ev5py5FfBQX9cZpYKnfQrTB49Byf8QmpZWeDVRim4yV7", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR"], a)
385+ let bv = split(valueOrElse(getString(W, "%s__multisig"), bu), a)
386+ let bw = ((((if (sigVerify(bs.bodyBytes, bs.proofs[0], fromBase58String(bv[0])))
302387 then 1
303- else 0) + (if (sigVerify(aD.bodyBytes, aD.proofs[1], fromBase58String(aF[1])))
388+ else 0) + (if (sigVerify(bs.bodyBytes, bs.proofs[1], fromBase58String(bv[1])))
304389 then 1
305- else 0)) + (if (sigVerify(aD.bodyBytes, aD.proofs[2], fromBase58String(aF[2])))
390+ else 0)) + (if (sigVerify(bs.bodyBytes, bs.proofs[2], fromBase58String(bv[2])))
306391 then 1
307- else 0)) + (if (sigVerify(aD.bodyBytes, aD.proofs[3], fromBase58String(aF[3])))
392+ else 0)) + (if (sigVerify(bs.bodyBytes, bs.proofs[3], fromBase58String(bv[3])))
308393 then 2
309394 else 0))
310- (aG >= 3)
395+ (bw >= 3)
311396 }
312397

github/deemru/w8io/026f985 
165.18 ms