tx · HEsR72CviSvcYguNyHC5pmEQm43Np25oq7uAAKrLhSFF

3Mwk2jkuxWiUuKABJned21T3JNdGP9VJu73:  -0.01000000 Waves

2022.03.02 13:31 [1946236] smart account 3Mwk2jkuxWiUuKABJned21T3JNdGP9VJu73 > SELF 0.00000000 Waves

{ "type": 13, "id": "HEsR72CviSvcYguNyHC5pmEQm43Np25oq7uAAKrLhSFF", "fee": 1000000, "feeAssetId": null, "timestamp": 1646217184595, "version": 1, "sender": "3Mwk2jkuxWiUuKABJned21T3JNdGP9VJu73", "senderPublicKey": "BMpjZk3ABPf31GwNW1aeHs8WBH2gKZJd5U1Qh4DVYLNx", "proofs": [ "2io9yKXdWnU9v4qWPxyHGuEuPSKKH7faN752BLqApw1rttnXSXu43DuLkTkzNBkfbSC4zoE5PhLzwKxgoMz24UGf" ], "script": "base64:AAIEAAAAAAAAABUIAhIDCgEIEgwKCgECAQIBAgECAQIAAAAUAQAAABZjb252ZXJ0V2F2ZXNUb05ldXRyaW5vAAAAAgAAAAZhbW91bnQAAAAFcHJpY2UJAABrAAAAAwkAAGsAAAADBQAAAAZhbW91bnQFAAAABXByaWNlAAAAAAAAD0JAAAAAAAAAD0JAAAAAAAAF9eEAAQAAABhnZXROdW1iZXJCeUFkZHJlc3NBbmRLZXkAAAACAAAAB2FkZHJlc3MAAAADa2V5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAAB2FkZHJlc3MFAAAAA2tleQAAAAAAAAAAAAEAAAAYZ2V0U3RyaW5nQnlBZGRyZXNzQW5kS2V5AAAAAgAAAAdhZGRyZXNzAAAAA2tleQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAAAdhZGRyZXNzBQAAAANrZXkCAAAAAAEAAAAWY29udmVydEpzb25BcnJheVRvTGlzdAAAAAEAAAAJanNvbkFycmF5CQAEtQAAAAIFAAAACWpzb25BcnJheQIAAAABLAAAAAAFcHJpY2UJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwIAAAAFcHJpY2UAAAAAAAAAAAAAAAAACnByaWNlSW5kZXgJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwIAAAALcHJpY2VfaW5kZXgAAAAAAAAAAAAAAAAACWlzQmxvY2tlZAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBsAAAACBQAAAAR0aGlzAgAAAAppc19ibG9ja2VkBwAAAAAScGVyY2VudFByaWNlT2Zmc2V0AAAAAAAAAAAZAAAAAA1wdWJLZXlPcmFjbGVzCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAABHRoaXMCAAAAB29yYWNsZXMCAAAAAAAAAAARcHViS2V5T3JhY2xlc0xpc3QJAQAAABZjb252ZXJ0SnNvbkFycmF5VG9MaXN0AAAAAQUAAAANcHViS2V5T3JhY2xlcwAAAAAPbmV1dHJpbm9BZGRyZXNzCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFUD4Bf1K1kaSy7jbhCWWe+nRKeLrcDidqtAAAAABJsaXF1aWRhdGlvbkFkZHJlc3MJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVRcL1nyj3CXJ7lTX+HDad8M+GZNd8YB5B4AAAAADW5ldXRyaW5vQXNzZXQBAAAAIEY6winV7pm7JJvMRhTuUQvGGI4AMjXbApvIAePKXPz/AAAAABVuZXV0cmlub0xvY2tlZEJhbGFuY2UJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAPbmV1dHJpbm9BZGRyZXNzAgAAABViYWxhbmNlX2xvY2tfbmV1dHJpbm8AAAAAAAAAAAAAAAAAEndhdmVzTG9ja2VkQmFsYW5jZQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAA9uZXV0cmlub0FkZHJlc3MCAAAAEmJhbGFuY2VfbG9ja193YXZlcwAAAAAAAAAAAAAAAAAHcmVzZXJ2ZQkAAGUAAAACCAkAA+8AAAABBQAAAA9uZXV0cmlub0FkZHJlc3MAAAAHcmVndWxhcgUAAAASd2F2ZXNMb2NrZWRCYWxhbmNlAAAAAA5uZXV0cmlub1N1cHBseQkAAGUAAAACCQAAZQAAAAIJAABkAAAAAgUAAAAVbmV1dHJpbm9Mb2NrZWRCYWxhbmNlCAkBAAAABXZhbHVlAAAAAQkAA+wAAAABBQAAAA1uZXV0cmlub0Fzc2V0AAAACHF1YW50aXR5CQAD8AAAAAIFAAAAD25ldXRyaW5vQWRkcmVzcwUAAAANbmV1dHJpbm9Bc3NldAkAA/AAAAACBQAAABJsaXF1aWRhdGlvbkFkZHJlc3MFAAAADW5ldXRyaW5vQXNzZXQAAAAAB2RlZmljaXQJAABlAAAAAgUAAAAObmV1dHJpbm9TdXBwbHkJAQAAABZjb252ZXJ0V2F2ZXNUb05ldXRyaW5vAAAAAgUAAAAHcmVzZXJ2ZQUAAAAFcHJpY2UBAAAAEWZpbmRQcmljZXNJblJhbmdlAAAAAQAAAAZwcmljZXMEAAAAD21pblBlcmNlbnRCb3VuZAAAAAAAAAAAWgQAAAAPbWF4UGVyY2VudEJvdW5kAAAAAAAAAABuBAAAAAJwMAkAAZEAAAACBQAAAAZwcmljZXMAAAAAAAAAAAAEAAAABmNoZWNrMAMJAABn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CQAAZgAAAAIFAAAAA3A0MwUAAAAPbWluUGVyY2VudEJvdW5kBwkABEwAAAACAAAAAAAAAAADBQAAAAZhcnJheTMFAAAABmFycmF5MwEAAAASZm9ybWF0dGluZ1ByaWNlTXNnAAAAAQAAAAVwcmljZQkAAZsAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAE1dBVkVTTkVVVFJJTk9QUkVGSVgCAAAAAV8JAAGkAAAAAQUAAAAGaGVpZ2h0AgAAAAFfCQABpAAAAAEFAAAABXByaWNlAAAAAgAAAAFpAQAAABVjYWxsRW1lcmdlbmN5U2h1dGRvd24AAAABAAAABnJlYXNvbgQAAAAaQXV0b0VtZXJnZW5jeU9yYWNsZUFkZHJlc3MCAAAAIzNOODVRYkxMUGpibXJ3aHhVbTdQUXJYVFRhNWRyNTRoVXVWBAAAAA1jYWxsZXJBZGRyZXNzCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgMJAQAAAAIhPQAAAAIFAAAAGkF1dG9FbWVyZ2VuY3lPcmFjbGVBZGRyZXNzBQAAAA1jYWxsZXJBZGRyZXNzCQAAAgAAAAECAAAAJmNhbGxlciBtdXN0IGJlIG9uZSBhbiBlbWVyZ2VuY3kgb3JhY2xlCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACAgAAAAppc19ibG9ja2VkBgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACAgAAABFpc19ibG9ja2VkX2NhbGxlcgUAAAANY2FsbGVyQWRkcmVzcwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACAgAAABFpc19ibG9ja2VkX3JlYXNvbgUAAAAGcmVhc29uBQAAAANuaWwAAAABaQEAAAAUZmluYWxpemVDdXJyZW50UHJpY2UAAAAKAAAABnByaWNlMQAAAAVzaWduMQAAAAZwcmljZTIAAAAFc2lnbjIAAAAGcHJpY2UzAAAABXNpZ24zAAAABnByaWNlNAAAAAVzaWduNAAAAAZwcmljZTUAAAAFc2lnbjUDBQAAAAlpc0Jsb2NrZWQJAAACAAAAAQIAAABaY29udHJhY3QgaXMgYmxvY2tlZCBieSBFTUVSR0VOQ1kgU0hVVERPV04gYWN0aW9ucyB1bnRpbGwg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", "chainId": 84, "height": 1946236, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 4 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+func convertWavesToNeutrino (amount,price) = fraction(fraction(amount, price, 1000000), 1000000, 100000000)
5+
6+
7+func getNumberByAddressAndKey (address,key) = valueOrElse(getInteger(addressFromStringValue(address), key), 0)
8+
9+
10+func getStringByAddressAndKey (address,key) = valueOrElse(getString(address, key), "")
11+
12+
13+func convertJsonArrayToList (jsonArray) = split(jsonArray, ",")
14+
15+
16+let price = valueOrElse(getInteger(this, "price"), 0)
17+
18+let priceIndex = valueOrElse(getInteger(this, "price_index"), 0)
19+
20+let isBlocked = valueOrElse(getBoolean(this, "is_blocked"), false)
21+
22+let percentPriceOffset = 25
23+
24+let pubKeyOracles = valueOrElse(getString(this, "oracles"), "")
25+
26+let pubKeyOraclesList = convertJsonArrayToList(pubKeyOracles)
27+
28+let neutrinoAddress = Address(base58'3MqL3hQMRXBNPhp8MNFfzxiXm4bp45zEixU')
29+
30+let liquidationAddress = Address(base58'3MxKWfbh4a5ore8gcV2RAXZVyRbQL7T2Hch')
31+
32+let neutrinoAsset = base58'5j9WJD1zS5JfUyXPStUuxnVWotrdRzgMg9a21HH7jEdL'
33+
34+let neutrinoLockedBalance = valueOrElse(getInteger(neutrinoAddress, "balance_lock_neutrino"), 0)
35+
36+let wavesLockedBalance = valueOrElse(getInteger(neutrinoAddress, "balance_lock_waves"), 0)
37+
38+let reserve = (wavesBalance(neutrinoAddress).regular - wavesLockedBalance)
39+
40+let neutrinoSupply = (((neutrinoLockedBalance + value(assetInfo(neutrinoAsset)).quantity) - assetBalance(neutrinoAddress, neutrinoAsset)) - assetBalance(liquidationAddress, neutrinoAsset))
41+
42+let deficit = (neutrinoSupply - convertWavesToNeutrino(reserve, price))
43+
44+func findPricesInRange (prices) = {
45+ let minPercentBound = 90
46+ let maxPercentBound = 110
47+ let p0 = prices[0]
48+ let check0 = if ((0 >= prices[0]))
49+ then [0]
50+ else {
51+ let p01 = ((prices[1] * 100) / p0)
52+ let p02 = ((prices[2] * 100) / p0)
53+ let p03 = ((prices[3] * 100) / p0)
54+ let p04 = ((prices[4] * 100) / p0)
55+ let array1 = if (if ((maxPercentBound > p01))
56+ then (p01 > minPercentBound)
57+ else false)
58+ then [1, 0]
59+ else [0]
60+ let array2 = if (if ((maxPercentBound > p02))
61+ then (p02 > minPercentBound)
62+ else false)
63+ then 2 :: array1
64+ else array1
65+ let array3 = if (if ((maxPercentBound > p03))
66+ then (p03 > minPercentBound)
67+ else false)
68+ then 3 :: array2
69+ else array2
70+ if (if ((maxPercentBound > p04))
71+ then (p04 > minPercentBound)
72+ else false)
73+ then 4 :: array3
74+ else array3
75+ }
76+ let check1 = if ((size(check0) >= 3))
77+ then check0
78+ else {
79+ let p1 = prices[1]
80+ if ((0 >= p1))
81+ then [1]
82+ else {
83+ let p10 = ((prices[0] * 100) / p1)
84+ let p12 = ((prices[2] * 100) / p1)
85+ let p13 = ((prices[3] * 100) / p1)
86+ let p14 = ((prices[4] * 100) / p1)
87+ let array1 = if (if ((maxPercentBound > p10))
88+ then (p10 > minPercentBound)
89+ else false)
90+ then [0, 1]
91+ else [1]
92+ let array2 = if (if ((maxPercentBound > p12))
93+ then (p12 > minPercentBound)
94+ else false)
95+ then 2 :: array1
96+ else array1
97+ let array3 = if (if ((maxPercentBound > p13))
98+ then (p13 > minPercentBound)
99+ else false)
100+ then 3 :: array2
101+ else array2
102+ if (if ((maxPercentBound > p14))
103+ then (p14 > minPercentBound)
104+ else false)
105+ then 4 :: array3
106+ else array3
107+ }
108+ }
109+ let check2 = if ((size(check1) >= 3))
110+ then check1
111+ else {
112+ let p2 = prices[2]
113+ if ((0 >= p2))
114+ then [2]
115+ else {
116+ let p20 = ((prices[0] * 100) / p2)
117+ let p21 = ((prices[1] * 100) / p2)
118+ let p23 = ((prices[3] * 100) / p2)
119+ let p24 = ((prices[4] * 100) / p2)
120+ let array1 = if (if ((maxPercentBound > p20))
121+ then (p20 > minPercentBound)
122+ else false)
123+ then [0, 2]
124+ else [2]
125+ let array2 = if (if ((maxPercentBound > p21))
126+ then (p21 > minPercentBound)
127+ else false)
128+ then 1 :: array1
129+ else array1
130+ let array3 = if (if ((maxPercentBound > p23))
131+ then (p23 > minPercentBound)
132+ else false)
133+ then 3 :: array2
134+ else array2
135+ if (if ((maxPercentBound > p24))
136+ then (p24 > minPercentBound)
137+ else false)
138+ then 4 :: array3
139+ else array3
140+ }
141+ }
142+ let check3 = if ((size(check2) >= 3))
143+ then check2
144+ else {
145+ let p3 = prices[3]
146+ if ((0 >= p3))
147+ then [3]
148+ else {
149+ let p30 = ((prices[0] * 100) / p3)
150+ let p31 = ((prices[1] * 100) / p3)
151+ let p32 = ((prices[2] * 100) / p3)
152+ let p34 = ((prices[4] * 100) / p3)
153+ let array1 = if (if ((maxPercentBound > p30))
154+ then (p30 > minPercentBound)
155+ else false)
156+ then [0, 3]
157+ else [3]
158+ let array2 = if (if ((maxPercentBound > p31))
159+ then (p31 > minPercentBound)
160+ else false)
161+ then 1 :: array1
162+ else array1
163+ let array3 = if (if ((maxPercentBound > p32))
164+ then (p32 > minPercentBound)
165+ else false)
166+ then 2 :: array2
167+ else array2
168+ if (if ((maxPercentBound > p34))
169+ then (p34 > minPercentBound)
170+ else false)
171+ then 4 :: array3
172+ else array3
173+ }
174+ }
175+ if ((size(check3) >= 3))
176+ then check3
177+ else {
178+ let p4 = prices[4]
179+ if ((0 >= p4))
180+ then [4]
181+ else {
182+ let p40 = ((prices[0] * 100) / p4)
183+ let p41 = ((prices[1] * 100) / p4)
184+ let p42 = ((prices[2] * 100) / p4)
185+ let p43 = ((prices[3] * 100) / p4)
186+ let array1 = if (if ((maxPercentBound > p40))
187+ then (p40 > minPercentBound)
188+ else false)
189+ then [0, 4]
190+ else [4]
191+ let array2 = if (if ((maxPercentBound > p41))
192+ then (p41 > minPercentBound)
193+ else false)
194+ then 1 :: array1
195+ else array1
196+ let array3 = if (if ((maxPercentBound > p42))
197+ then (p42 > minPercentBound)
198+ else false)
199+ then 2 :: array2
200+ else array2
201+ if (if ((maxPercentBound > p43))
202+ then (p43 > minPercentBound)
203+ else false)
204+ then 3 :: array3
205+ else array3
206+ }
207+ }
208+ }
209+
210+
211+func formattingPriceMsg (price) = toBytes((((("WAVESNEUTRINOPREFIX" + "_") + toString(height)) + "_") + toString(price)))
212+
213+
214+@Callable(i)
215+func callEmergencyShutdown (reason) = {
216+ let AutoEmergencyOracleAddress = "3N85QbLLPjbmrwhxUm7PQrXTTa5dr54hUuV"
217+ let callerAddress = toString(i.caller)
218+ if ((AutoEmergencyOracleAddress != callerAddress))
219+ then throw("caller must be one an emergency oracle")
220+ else [BooleanEntry("is_blocked", true), StringEntry("is_blocked_caller", callerAddress), StringEntry("is_blocked_reason", reason)]
221+ }
222+
223+
224+
225+@Callable(i)
226+func finalizeCurrentPrice (price1,sign1,price2,sign2,price3,sign3,price4,sign4,price5,sign5) = if (isBlocked)
227+ then throw("contract is blocked by EMERGENCY SHUTDOWN actions untill reactivation by emergency oracles")
228+ else if ((valueOrElse(getInteger(this, ("price_" + toString(height))), 0) != 0))
229+ then throw("wait next block")
230+ else if ((pubKeyOraclesList[(height % 5)] != toBase58String(i.callerPublicKey)))
231+ then throw(((("Out of turn finalization: " + toString(height)) + " block should be finalize by ") + pubKeyOraclesList[(height % 5)]))
232+ else {
233+ let prices = [if (sigVerify_8Kb(formattingPriceMsg(price1), sign1, fromBase58String(pubKeyOraclesList[0])))
234+ then price1
235+ else 0, if (sigVerify_8Kb(formattingPriceMsg(price2), sign2, fromBase58String(pubKeyOraclesList[1])))
236+ then price2
237+ else 0, if (sigVerify_8Kb(formattingPriceMsg(price3), sign3, fromBase58String(pubKeyOraclesList[2])))
238+ then price3
239+ else 0, if (sigVerify_8Kb(formattingPriceMsg(price4), sign4, fromBase58String(pubKeyOraclesList[3])))
240+ then price4
241+ else 0, if (sigVerify_8Kb(formattingPriceMsg(price5), sign5, fromBase58String(pubKeyOraclesList[4])))
242+ then price5
243+ else 0]
244+ let zeroPriceCount = if ((prices[0] == 0))
245+ then 1
246+ else (0 + (if ((prices[1] == 0))
247+ then 1
248+ else (0 + (if ((prices[2] == 0))
249+ then 1
250+ else (0 + (if ((prices[3] == 0))
251+ then 1
252+ else (0 + (if ((prices[4] == 0))
253+ then 1
254+ else 0))))))))
255+ if ((zeroPriceCount >= 3))
256+ then throw("3 prices or more are equals to 0")
257+ else {
258+ let pricesInRange = findPricesInRange(prices)
259+ let priceProvidingCount = size(pricesInRange)
260+ if ((3 > priceProvidingCount))
261+ then throw(((((((((((((((((((((("Could not finalize price because of big variation: height=" + toString(height)) + "
262+") + pubKeyOraclesList[0]) + "=") + toString(prices[0])) + "
263+") + pubKeyOraclesList[1]) + "=") + toString(prices[1])) + "
264+") + pubKeyOraclesList[2]) + "=") + toString(prices[2])) + "
265+") + pubKeyOraclesList[3]) + "=") + toString(prices[3])) + "
266+") + pubKeyOraclesList[4]) + "=") + toString(prices[4])))
267+ else {
268+ let sum1 = ((prices[pricesInRange[0]] + prices[pricesInRange[1]]) + prices[pricesInRange[2]])
269+ let sum2 = if ((priceProvidingCount >= 4))
270+ then (sum1 + prices[pricesInRange[3]])
271+ else sum1
272+ let priceSum = if ((priceProvidingCount >= 5))
273+ then (sum2 + prices[pricesInRange[4]])
274+ else sum2
275+ if ((priceProvidingCount >= 6))
276+ then throw("Invalid pricesInRange creation")
277+ else {
278+ let newPrice = (priceSum / priceProvidingCount)
279+ if (if ((newPrice >= (price + ((price * percentPriceOffset) / 100))))
280+ then true
281+ else ((price - ((price * percentPriceOffset) / 100)) >= newPrice))
282+ then {
283+ let reason = "automatic emergency shutdown because of large price variability"
284+[BooleanEntry("is_blocked", true), StringEntry("is_blocked_caller", toString(this)), StringEntry("is_blocked_reason", reason), IntegerEntry((("black_swarm_price" + "_") + toString(height)), newPrice)]
285+ }
286+ else {
287+ let newPriceIndex = (priceIndex + 1)
288+[IntegerEntry("price", newPrice), IntegerEntry(("price_" + toString(height)), newPrice), IntegerEntry("price_index", newPriceIndex), IntegerEntry(("price_index_" + toString(newPriceIndex)), height), IntegerEntry(("deficit_" + toString(height)), deficit), IntegerEntry(("neutrinoSupply_" + toString(height)), neutrinoSupply), IntegerEntry(("deficit_percent_" + toString(height)), if ((neutrinoSupply != 0))
289+ then ((deficit * 100) / neutrinoSupply)
290+ else 0)]
291+ }
292+ }
293+ }
294+ }
295+ }
296+
297+
298+@Verifier(tx)
299+func verify () = {
300+ let pubKeyAdminsList = ["9MP9jBpNCpXXadVxpQUMS6jF4t9YJEut2Tm4pthGog6c", "BZpYcdVKT3hRTzAsAUYUTjeUCsBvRVaV6PZSmoYQTS6H", "5FxLdUsJGgTkHZWYAPrGaxiiEY5S78njcwW2PDZbSqpG", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"]
301+ let count = ((((if (sigVerify(tx.bodyBytes, tx.proofs[0], fromBase58String(pubKeyAdminsList[0])))
302+ then 1
303+ else 0) + (if (sigVerify(tx.bodyBytes, tx.proofs[1], fromBase58String(pubKeyAdminsList[1])))
304+ then 1
305+ else 0)) + (if (sigVerify(tx.bodyBytes, tx.proofs[2], fromBase58String(pubKeyAdminsList[2])))
306+ then 1
307+ else 0)) + (if (sigVerify(tx.bodyBytes, tx.proofs[3], fromBase58String(pubKeyAdminsList[3])))
308+ then 2
309+ else 0))
310+ (count >= 3)
311+ }
312+

github/deemru/w8io/169f3d6 
25.95 ms