tx · 8RSjeKLLywXTe515bVrvu7X5mQCHpByKueayvP9bFxhf 3MyDtNTkCNyRCw3o2qv5BPPS7vvUosiQe6F: -0.01400000 Waves 2020.03.26 19:54 [926659] smart account 3MyDtNTkCNyRCw3o2qv5BPPS7vvUosiQe6F > SELF 0.00000000 Waves
{ "type": 13, "id": "8RSjeKLLywXTe515bVrvu7X5mQCHpByKueayvP9bFxhf", "fee": 1400000, "feeAssetId": null, "timestamp": 1585241677584, "version": 1, "sender": "3MyDtNTkCNyRCw3o2qv5BPPS7vvUosiQe6F", "senderPublicKey": "3z5txV1G5GKezwMRCHZDkLThqb1Yggepxvi2wq6iP6oz", "proofs": [ "5rase6wwjYuWjyQ8KnGdjbtaF7fuMoh9kLuBSbKVUttCfoR5MvcEoEmSYYeKRCnNH8MZLGoT3KZYEskMVqiEdBCP" ], "script": "base64:AAIDAAAAAAAAABQIARIDCgEIEgUKAwgIARIECgIIAQAAABkBAAAADmdldE51bWJlckJ5S2V5AAAAAQAAAANrZXkEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAABAAAADmdldFN0cmluZ0J5S2V5AAAAAQAAAANrZXkEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWECAAAAAAAAAAAETk9ORQAAAAAAAAAAAAAAAAADTkVXAAAAAAAAAAABAAAAAAhSRUpFQ1RFRAAAAAAAAAAAAgAAAAAHU1VDQ0VTUwAAAAAAAAAAAwAAAAAETE9DSwAAAAAAAAAAAAAAAAAGVU5MT0NLAAAAAAAAAAABAAAAAApBc3NldElkS2V5AgAAAAhhc3NldF9pZAAAAAAJQWRtaW5zS2V5AgAAAAZhZG1pbnMAAAAAEUJmdENvZWZmaWNpZW50S2V5AgAAAA5iZnRDb2VmZmljaWVudAEAAAAOZ2V0UnFTdGF0dXNLZXkAAAABAAAACXJlcXVlc3RJZAkAASwAAAACAgAAAAdzdGF0dXNfBQAAAAlyZXF1ZXN0SWQBAAAADmdldFJxSGVpZ2h0S2V5AAAAAQAAAAlyZXF1ZXN0SWQJAAEsAAAAAgIAAAAHaGVpZ2h0XwUAAAAJcmVxdWVzdElkAQAAAAxnZXRScVR5cGVLZXkAAAABAAAACXJlcXVlc3RJZAkAASwAAAACAgAAAAV0eXBlXwUAAAAJcmVxdWVzdElkAQAAAA1nZXRScU93bmVyS2V5AAAAAQAAAAlyZXF1ZXN0SWQJAAEsAAAAAgIAAAAGb3duZXJfBQAAAAlyZXF1ZXN0SWQBAAAADmdldFJxVGFyZ2V0S2V5AAAAAQAAAAlyZXF1ZXN0SWQJAAEsAAAAAgIAAAAHdGFyZ2V0XwUAAAAJcmVxdWVzdElkAQAAAA5nZXRScUFtb3VudEtleQAAAAEAAAAJcmVxdWVzdElkCQABLAAAAAICAAAAB2Ftb3VudF8FAAAACXJlcXVlc3RJZAAAAAAGYWRtaW5zCQAEtQAAAAIJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEFAAAACUFkbWluc0tleQIAAAABLAAAAAAHYXNzZXRJZAkAAlkAAAABCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABBQAAAApBc3NldElkS2V5AAAAAA5iZnRDb2VmZmljaWVudAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQUAAAARQmZ0Q29lZmZpY2llbnRLZXkBAAAAC2dldFJxU3RhdHVzAAAAAQAAAAlyZXF1ZXN0SWQJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAAA5nZXRScVN0YXR1c0tleQAAAAEFAAAACXJlcXVlc3RJZAEAAAAJZ2V0UnFUeXBlAAAAAQAAAAlyZXF1ZXN0SWQJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAAAxnZXRScVR5cGVLZXkAAAABBQAAAAlyZXF1ZXN0SWQBAAAACmdldFJxT3duZXIAAAABAAAACXJlcXVlc3RJZAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAADWdldFJxT3duZXJLZXkAAAABBQAAAAlyZXF1ZXN0SWQBAAAAC2dldFJxVGFyZ2V0AAAAAQAAAAlyZXF1ZXN0SWQJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAAA5nZXRScVRhcmdldEtleQAAAAEFAAAACXJlcXVlc3RJZAEAAAALZ2V0UnFBbW91bnQAAAABAAAACXJlcXVlc3RJZAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAADmdldFJxQW1vdW50S2V5AAAAAQUAAAAJcmVxdWVzdElkAAAAAwAAAAFpAQAAABFjcmVhdGVMb2NrUmVxdWVzdAAAAAEAAAAJcmVjaXBpZW50BAAAAANwbXQJAQAAAAdleHRyYWN0AAAAAQgFAAAAAWkAAAAHcGF5bWVudAQAAAAJcmVxdWVzdElkCQACWAAAAAEJAAH1AAAAAQkAAMsAAAACCQAAywAAAAIJAADLAAAAAgkAAlkAAAABCQAEJQAAAAEFAAAABHRoaXMICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQJAAGbAAAA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", "chainId": 84, "height": 926659, "spentComplexity": 0 } View: original | compacted Prev: HHamjXGthfXmbd4g9usosegLtaR1rCDXzTmzTkj3GvK4 Next: none Diff:
Old | New | Differences | |
---|---|---|---|
23 | 23 | } | |
24 | 24 | ||
25 | 25 | ||
26 | - | func f (b) = { | |
27 | - | let c = getBoolean(this, b) | |
28 | - | if ($isInstanceOf(c, "Boolean")) | |
29 | - | then { | |
30 | - | let d = c | |
31 | - | d | |
32 | - | } | |
33 | - | else false | |
34 | - | } | |
26 | + | let f = 0 | |
27 | + | ||
28 | + | let g = 1 | |
29 | + | ||
30 | + | let h = 2 | |
31 | + | ||
32 | + | let i = 3 | |
33 | + | ||
34 | + | let j = 0 | |
35 | + | ||
36 | + | let k = 1 | |
37 | + | ||
38 | + | let l = "asset_id" | |
39 | + | ||
40 | + | let m = "admins" | |
41 | + | ||
42 | + | let n = "bftCoefficient" | |
43 | + | ||
44 | + | func o (p) = ("status_" + p) | |
35 | 45 | ||
36 | 46 | ||
37 | - | func g (h,b) = { | |
38 | - | let c = getInteger(addressFromStringValue(h), b) | |
39 | - | if ($isInstanceOf(c, "Int")) | |
40 | - | then { | |
41 | - | let d = c | |
42 | - | d | |
43 | - | } | |
44 | - | else 0 | |
45 | - | } | |
47 | + | func q (p) = ("height_" + p) | |
46 | 48 | ||
47 | 49 | ||
48 | - | func i (h,b) = { | |
49 | - | let c = getString(addressFromStringValue(h), b) | |
50 | - | if ($isInstanceOf(c, "String")) | |
51 | - | then { | |
52 | - | let d = c | |
53 | - | d | |
54 | - | } | |
55 | - | else "" | |
56 | - | } | |
50 | + | func r (p) = ("type_" + p) | |
57 | 51 | ||
58 | 52 | ||
59 | - | func j (h,b) = { | |
60 | - | let c = getBoolean(addressFromStringValue(h), b) | |
61 | - | if ($isInstanceOf(c, "Boolean")) | |
62 | - | then { | |
63 | - | let d = c | |
64 | - | d | |
65 | - | } | |
66 | - | else false | |
67 | - | } | |
53 | + | func s (p) = ("owner_" + p) | |
68 | 54 | ||
69 | 55 | ||
70 | - | let k = 30 | |
71 | - | ||
72 | - | let l = "_" | |
73 | - | ||
74 | - | let m = "+" | |
75 | - | ||
76 | - | let n = 100000000 | |
77 | - | ||
78 | - | let o = 100 | |
79 | - | ||
80 | - | let p = 20 | |
81 | - | ||
82 | - | let q = 90 | |
83 | - | ||
84 | - | let r = 10 | |
85 | - | ||
86 | - | let s = 10 | |
87 | - | ||
88 | - | let t = "waves" | |
89 | - | ||
90 | - | let u = "canceled" | |
91 | - | ||
92 | - | let v = "new" | |
93 | - | ||
94 | - | let w = "neutrino_asset_id" | |
95 | - | ||
96 | - | let x = "bond_asset_id" | |
97 | - | ||
98 | - | let y = "reserve_contract" | |
99 | - | ||
100 | - | let z = "auction_contract" | |
101 | - | ||
102 | - | let A = "liquidation_contract" | |
103 | - | ||
104 | - | let B = "rpd_contract" | |
105 | - | ||
106 | - | let C = "control_contract" | |
107 | - | ||
108 | - | let D = "balance_lock_interval" | |
109 | - | ||
110 | - | let E = "min_waves_swap_amount" | |
111 | - | ||
112 | - | let F = "min_neutrino_swap_amount" | |
113 | - | ||
114 | - | let G = "node_address" | |
115 | - | ||
116 | - | let H = "oracle_node_provider" | |
117 | - | ||
118 | - | let I = "leasing_interval" | |
119 | - | ||
120 | - | let J = "rpd_balance" | |
121 | - | ||
122 | - | func K (L) = ((J + "_") + toBase58String(L)) | |
56 | + | func t (p) = ("target_" + p) | |
123 | 57 | ||
124 | 58 | ||
125 | - | let M = "total_orderbook" | |
126 | - | ||
127 | - | let N = "total_liquidation_orderbook" | |
128 | - | ||
129 | - | let O = "price" | |
130 | - | ||
131 | - | let P = "price_index" | |
132 | - | ||
133 | - | let Q = "is_blocked" | |
134 | - | ||
135 | - | let R = "leasing_expire_block" | |
136 | - | ||
137 | - | let S = "leasing_index" | |
138 | - | ||
139 | - | let T = "leasing_amount" | |
140 | - | ||
141 | - | func U (V) = ((O + "_") + toString(V)) | |
59 | + | func u (p) = ("amount_" + p) | |
142 | 60 | ||
143 | 61 | ||
144 | - | func W (X) = ((P + "_") + toString(X)) | |
62 | + | let v = split(e(m), ",") | |
63 | + | ||
64 | + | let w = fromBase58String(e(l)) | |
65 | + | ||
66 | + | let x = a(n) | |
67 | + | ||
68 | + | func y (p) = a(o(p)) | |
145 | 69 | ||
146 | 70 | ||
147 | - | let Y = "rpd_sync_index" | |
148 | - | ||
149 | - | let Z = "balance_lock_" | |
150 | - | ||
151 | - | let aa = (Z + "waves") | |
152 | - | ||
153 | - | let ab = (Z + "neutrino") | |
154 | - | ||
155 | - | func ac (ad,L) = ((((J + "_") + toBase58String(L)) + "_") + toString(ad)) | |
71 | + | func z (p) = a(r(p)) | |
156 | 72 | ||
157 | 73 | ||
158 | - | func | |
74 | + | func A (p) = e(s(p)) | |
159 | 75 | ||
160 | 76 | ||
161 | - | func | |
77 | + | func B (p) = e(t(p)) | |
162 | 78 | ||
163 | 79 | ||
164 | - | func | |
80 | + | func C (p) = a(u(p)) | |
165 | 81 | ||
166 | 82 | ||
167 | - | func aj (ah) = ("balance_unlock_block_" + ah) | |
168 | - | ||
169 | - | ||
170 | - | func ak (ad) = (("rpd_profit" + "_") + toString(ad)) | |
171 | - | ||
172 | - | ||
173 | - | func al (af) = (("lease_tx_status" + "_") + af) | |
174 | - | ||
175 | - | ||
176 | - | func am (af) = ((T + "_") + af) | |
177 | - | ||
178 | - | ||
179 | - | func an (af) = (("lease_tx" + "_") + af) | |
180 | - | ||
181 | - | ||
182 | - | func ao (af) = (("leasing_expire_send" + "_") + af) | |
183 | - | ||
184 | - | ||
185 | - | func ap (aq,ar) = ((((aq * 100) / ar) * n) / o) | |
186 | - | ||
187 | - | ||
188 | - | func as (aq,ar) = ((((aq * ar) / 100) * o) / n) | |
189 | - | ||
190 | - | ||
191 | - | func at (aq) = (aq / o) | |
192 | - | ||
193 | - | ||
194 | - | func au (aq) = (aq * o) | |
195 | - | ||
196 | - | ||
197 | - | func av (aq,ar) = at(as(aq, ar)) | |
198 | - | ||
199 | - | ||
200 | - | let aw = a(ab) | |
201 | - | ||
202 | - | let ax = a(aa) | |
203 | - | ||
204 | - | let ay = e(A) | |
205 | - | ||
206 | - | let az = e(w) | |
207 | - | ||
208 | - | let aA = fromBase58String(az) | |
209 | - | ||
210 | - | let aB = e(y) | |
211 | - | ||
212 | - | let aC = e(z) | |
213 | - | ||
214 | - | let aD = e(B) | |
215 | - | ||
216 | - | let aE = e(C) | |
217 | - | ||
218 | - | let aF = g(aE, O) | |
219 | - | ||
220 | - | let aG = g(aE, P) | |
221 | - | ||
222 | - | let aH = j(aE, Q) | |
223 | - | ||
224 | - | let aI = a(S) | |
225 | - | ||
226 | - | let aJ = a(I) | |
227 | - | ||
228 | - | let aK = a(R) | |
229 | - | ||
230 | - | let aL = a(T) | |
231 | - | ||
232 | - | let aM = e(G) | |
233 | - | ||
234 | - | let aN = e(H) | |
235 | - | ||
236 | - | let aO = a(Y) | |
237 | - | ||
238 | - | let aP = a(D) | |
239 | - | ||
240 | - | let aQ = a(E) | |
241 | - | ||
242 | - | let aR = a(F) | |
243 | - | ||
244 | - | let aS = (wavesBalance(this) - ax) | |
245 | - | ||
246 | - | let aT = (aS - aL) | |
247 | - | ||
248 | - | let aU = fromBase58String(e(x)) | |
249 | - | ||
250 | - | let aV = (extract(assetInfo(aU)).quantity - assetBalance(this, aU)) | |
251 | - | ||
252 | - | let aW = ((extract(assetInfo(aA)).quantity - assetBalance(this, aA)) + aw) | |
253 | - | ||
254 | - | let aX = (as(aS, aF) - aW) | |
255 | - | ||
256 | - | let aY = (aW - as(aS, aF)) | |
257 | - | ||
258 | - | func aZ (L) = g(aD, K(L)) | |
259 | - | ||
260 | - | ||
261 | - | let ba = g(aC, N) | |
262 | - | ||
263 | - | let bb = g(aC, M) | |
264 | - | ||
265 | - | func bc (V) = g(aE, U(V)) | |
266 | - | ||
267 | - | ||
268 | - | func bd (X) = g(aE, W(X)) | |
269 | - | ||
270 | - | ||
271 | - | func be (af) = a(ae(af)) | |
272 | - | ||
273 | - | ||
274 | - | func bf (ah) = a(ag(ah)) | |
275 | - | ||
276 | - | ||
277 | - | func bg (ah) = a(ai(ah)) | |
278 | - | ||
279 | - | ||
280 | - | func bh (ah) = a(aj(ah)) | |
281 | - | ||
282 | - | ||
283 | - | func bi (ad) = a(ak(ad)) | |
284 | - | ||
285 | - | ||
286 | - | func bj (af) = e(al(af)) | |
287 | - | ||
288 | - | ||
289 | - | func bk (af) = a(am(af)) | |
290 | - | ||
291 | - | ||
292 | - | func bl (af) = e(an(af)) | |
293 | - | ||
294 | - | ||
295 | - | func bm (af) = a(ao(af)) | |
296 | - | ||
297 | - | ||
298 | - | @Callable(bn) | |
299 | - | func swapWavesToNeutrino () = { | |
300 | - | let bo = extract(bn.payment) | |
301 | - | let bp = toString(bn.caller) | |
302 | - | if ((aQ > bo.amount)) | |
303 | - | then throw((("an amount is less than min available amount: " + toString(aQ)) + " wavelets")) | |
304 | - | else if (isDefined(bo.assetId)) | |
305 | - | then throw("can use waves only") | |
306 | - | else if (aH) | |
307 | - | then throw("contract is blocked by EMERGENCY SHUTDOWN actions untill reactivation by emergency oracles") | |
308 | - | else if ((bh(bp) > height)) | |
309 | - | then throw((("await " + toString((bh(bp) - height))) + " blocks")) | |
310 | - | else if (if ((bg(bp) != 0)) | |
311 | - | then true | |
312 | - | else (bf(bp) != 0)) | |
313 | - | then throw("please withdraw locked funds first") | |
314 | - | else WriteSet([DataEntry(ag(bp), bo.amount), DataEntry(aj(bp), (height + aP)), DataEntry(aa, (ax + bo.amount))]) | |
83 | + | @Callable(D) | |
84 | + | func createLockRequest (E) = { | |
85 | + | let F = extract(D.payment) | |
86 | + | let p = toBase58String(keccak256((((fromBase58String(toString(this)) + D.caller.bytes) + D.transactionId) + toBytes(E)))) | |
87 | + | if ((F.assetId != w)) | |
88 | + | then throw("can use waves only") | |
89 | + | else if ((A(p) != "")) | |
90 | + | then throw("request exists") | |
91 | + | else WriteSet([DataEntry(o(p), g), DataEntry(r(p), j), DataEntry(s(p), toString(D.caller)), DataEntry(q(p), height), DataEntry(t(p), E), DataEntry(u(p), F.amount)]) | |
315 | 92 | } | |
316 | 93 | ||
317 | 94 | ||
318 | 95 | ||
319 | - | @Callable(bn) | |
320 | - | func swapNeutrinoToWaves () = { | |
321 | - | let bo = extract(bn.payment) | |
322 | - | let bp = toString(bn.caller) | |
323 | - | if ((aR > bo.amount)) | |
324 | - | then throw((("an amount is less than min available amount: " + toString(aR)) + " neutrino cents")) | |
325 | - | else if (aH) | |
326 | - | then throw("contract is blocked by EMERGENCY SHUTDOWN actions untill reactivation by emergency oracles") | |
327 | - | else if ((bo.assetId != aA)) | |
328 | - | then throw("can use appropriate neutrino tokens only") | |
329 | - | else if ((bh(bp) > height)) | |
330 | - | then throw((("await " + toString((bh(bp) - height))) + " blocks")) | |
331 | - | else if (if ((bg(bp) != 0)) | |
332 | - | then true | |
333 | - | else (bf(bp) != 0)) | |
334 | - | then throw("please withdraw locked funds first") | |
335 | - | else WriteSet([DataEntry(ai(bp), bo.amount), DataEntry(ag(bp), (height + aP)), DataEntry(ab, (aw + bo.amount))]) | |
96 | + | @Callable(D) | |
97 | + | func changeStatus (G,H,I) = { | |
98 | + | let J = split(H, ",") | |
99 | + | let K = ((G + "_") + toString(I)) | |
100 | + | let L = (((((if (sigVerify(toBytes(K), fromBase58String(J[0]), fromBase58String(v[0]))) | |
101 | + | then 1 | |
102 | + | else 0) + (if (sigVerify(toBytes(K), fromBase58String(J[1]), fromBase58String(v[1]))) | |
103 | + | then 1 | |
104 | + | else 0)) + (if (sigVerify(toBytes(K), fromBase58String(J[2]), fromBase58String(v[2]))) | |
105 | + | then 1 | |
106 | + | else 0)) + (if (sigVerify(toBytes(K), fromBase58String(J[3]), fromBase58String(v[3]))) | |
107 | + | then 1 | |
108 | + | else 0)) + (if (sigVerify(toBytes(K), fromBase58String(J[4]), fromBase58String(v[4]))) | |
109 | + | then 1 | |
110 | + | else 0)) | |
111 | + | if ((x > L)) | |
112 | + | then throw("count is less 3") | |
113 | + | else if ((A(G) == "")) | |
114 | + | then throw("request is not exists") | |
115 | + | else if ((y(G) != g)) | |
116 | + | then throw("request is not exists") | |
117 | + | else if (if ((I != i)) | |
118 | + | then (I != h) | |
119 | + | else false) | |
120 | + | then throw("invalid status") | |
121 | + | else { | |
122 | + | let M = addressFromStringValue(A(G)) | |
123 | + | let N = z(G) | |
124 | + | let O = C(G) | |
125 | + | ScriptResult(WriteSet([DataEntry(o(G), I)]), TransferSet([ScriptTransfer(M, if (if (if ((I == h)) | |
126 | + | then (N == j) | |
127 | + | else false) | |
128 | + | then true | |
129 | + | else if ((I == i)) | |
130 | + | then (N == k) | |
131 | + | else false) | |
132 | + | then O | |
133 | + | else 0, w)])) | |
134 | + | } | |
336 | 135 | } | |
337 | 136 | ||
338 | 137 | ||
339 | 138 | ||
340 | - | @Callable(bn) | |
341 | - | func withdraw (bp,X) = { | |
342 | - | let bq = bh(bp) | |
343 | - | let br = bf(bp) | |
344 | - | let bs = bg(bp) | |
345 | - | let bt = bd(X) | |
346 | - | let bu = bd((X + 1)) | |
347 | - | let bv = bc(bt) | |
348 | - | let bw = as(br, bv) | |
349 | - | let bx = ap(bs, bv) | |
350 | - | if (aH) | |
351 | - | then throw("contract is blocked by EMERGENCY SHUTDOWN actions untill reactivation by emergency oracles") | |
352 | - | else if ((bq > height)) | |
353 | - | then throw((("please wait for: " + toString(bq)) + " block height to withdraw WAVES funds")) | |
354 | - | else if (if (if ((X > aG)) | |
355 | - | then true | |
356 | - | else (bt > bq)) | |
357 | - | then true | |
358 | - | else if ((bu != 0)) | |
359 | - | then (bq >= bu) | |
360 | - | else false) | |
361 | - | then throw("invalid price history index") | |
362 | - | else if (if ((0 >= bw)) | |
363 | - | then (0 >= bx) | |
364 | - | else false) | |
365 | - | then throw("balance equals zero") | |
366 | - | else ScriptResult(WriteSet([DataEntry(ag(bp), 0), DataEntry(ai(bp), 0), DataEntry(aa, (ax - br)), DataEntry(ab, (aw - bs))]), TransferSet([ScriptTransfer(addressFromStringValue(bp), bx, unit), ScriptTransfer(addressFromStringValue(bp), bw, aA)])) | |
139 | + | @Callable(D) | |
140 | + | func createUnlockRequest (P,O) = { | |
141 | + | let p = toBase58String(keccak256(((((fromBase58String(toString(this)) + D.caller.bytes) + D.transactionId) + toBytes(P)) + toBytes(O)))) | |
142 | + | if ((A(p) != "")) | |
143 | + | then throw("request exists") | |
144 | + | else WriteSet([DataEntry(o(p), g), DataEntry(r(p), k), DataEntry(s(p), toString(D.caller)), DataEntry(q(p), height), DataEntry(t(p), P), DataEntry(u(p), O)]) | |
367 | 145 | } | |
368 | 146 | ||
369 | - | ||
370 | - | ||
371 | - | @Callable(bn) | |
372 | - | func transferToAuction () = { | |
373 | - | let by = ((at(aY) - assetBalance(addressFromStringValue(aC), aU)) - ba) | |
374 | - | let bz = ((at(aX) - assetBalance(addressFromStringValue(aC), aA)) - bb) | |
375 | - | if (aH) | |
376 | - | then throw("contract is blocked by EMERGENCY SHUTDOWN actions untill reactivation by emergency oracles") | |
377 | - | else if ((by >= ((at(aW) * s) / 100))) | |
378 | - | then TransferSet([ScriptTransfer(addressFromStringValue(aC), by, aU)]) | |
379 | - | else if ((bz > 0)) | |
380 | - | then TransferSet([ScriptTransfer(addressFromStringValue(ay), au(bz), aA)]) | |
381 | - | else throw(((((("bond were generated or do not need it. Deficit:" + toString(by)) + "|") + toString(((aW * s) / 100))) + ". Surplus:") + toString(bz))) | |
382 | - | } | |
383 | - | ||
384 | - | ||
385 | - | ||
386 | - | @Callable(bn) | |
387 | - | func transfer (bp) = { | |
388 | - | let bo = extract(bn.payment) | |
389 | - | TransferSet([ScriptTransfer(addressFromStringValue(bp), bo.amount, bo.assetId)]) | |
390 | - | } | |
391 | - | ||
392 | - | ||
393 | - | ||
394 | - | @Callable(bn) | |
395 | - | func nodeReward () = { | |
396 | - | let bo = value(bn.payment) | |
397 | - | if ((bn.caller != addressFromStringValue(aM))) | |
398 | - | then throw("only node account is able to transfer staking rewards from main account") | |
399 | - | else if (isDefined(bo.assetId)) | |
400 | - | then throw("waves tokens only allowed") | |
401 | - | else { | |
402 | - | let aq = as(bo.amount, aF) | |
403 | - | let bA = (aO + 1) | |
404 | - | ScriptResult(WriteSet([DataEntry(Y, bA), DataEntry(ak(aO), aq), DataEntry(ac(aO, aA), aZ(aA))]), TransferSet([ScriptTransfer(addressFromStringValue(aD), aq, aA)])) | |
405 | - | } | |
406 | - | } | |
407 | - | ||
408 | - | ||
409 | - | @Verifier(bB) | |
410 | - | func bC () = { | |
411 | - | let bD = toBase58String(bB.id) | |
412 | - | let c = bB | |
413 | - | if (if ($isInstanceOf(c, "LeaseCancelTransaction")) | |
414 | - | then true | |
415 | - | else $isInstanceOf(c, "LeaseTransaction")) | |
416 | - | then { | |
417 | - | let bE = c | |
418 | - | if (sigVerify(bB.bodyBytes, bB.proofs[0], bB.senderPublicKey)) | |
419 | - | then (addressFromString(aN) == addressFromPublicKey(bB.senderPublicKey)) | |
420 | - | else false | |
421 | - | } | |
422 | - | else sigVerify(bB.bodyBytes, bB.proofs[0], bB.senderPublicKey) | |
423 | - | } | |
424 | 147 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 3 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | func a (b) = { | |
5 | 5 | let c = getInteger(this, b) | |
6 | 6 | if ($isInstanceOf(c, "Int")) | |
7 | 7 | then { | |
8 | 8 | let d = c | |
9 | 9 | d | |
10 | 10 | } | |
11 | 11 | else 0 | |
12 | 12 | } | |
13 | 13 | ||
14 | 14 | ||
15 | 15 | func e (b) = { | |
16 | 16 | let c = getString(this, b) | |
17 | 17 | if ($isInstanceOf(c, "String")) | |
18 | 18 | then { | |
19 | 19 | let d = c | |
20 | 20 | d | |
21 | 21 | } | |
22 | 22 | else "" | |
23 | 23 | } | |
24 | 24 | ||
25 | 25 | ||
26 | - | func f (b) = { | |
27 | - | let c = getBoolean(this, b) | |
28 | - | if ($isInstanceOf(c, "Boolean")) | |
29 | - | then { | |
30 | - | let d = c | |
31 | - | d | |
32 | - | } | |
33 | - | else false | |
34 | - | } | |
26 | + | let f = 0 | |
27 | + | ||
28 | + | let g = 1 | |
29 | + | ||
30 | + | let h = 2 | |
31 | + | ||
32 | + | let i = 3 | |
33 | + | ||
34 | + | let j = 0 | |
35 | + | ||
36 | + | let k = 1 | |
37 | + | ||
38 | + | let l = "asset_id" | |
39 | + | ||
40 | + | let m = "admins" | |
41 | + | ||
42 | + | let n = "bftCoefficient" | |
43 | + | ||
44 | + | func o (p) = ("status_" + p) | |
35 | 45 | ||
36 | 46 | ||
37 | - | func g (h,b) = { | |
38 | - | let c = getInteger(addressFromStringValue(h), b) | |
39 | - | if ($isInstanceOf(c, "Int")) | |
40 | - | then { | |
41 | - | let d = c | |
42 | - | d | |
43 | - | } | |
44 | - | else 0 | |
45 | - | } | |
47 | + | func q (p) = ("height_" + p) | |
46 | 48 | ||
47 | 49 | ||
48 | - | func i (h,b) = { | |
49 | - | let c = getString(addressFromStringValue(h), b) | |
50 | - | if ($isInstanceOf(c, "String")) | |
51 | - | then { | |
52 | - | let d = c | |
53 | - | d | |
54 | - | } | |
55 | - | else "" | |
56 | - | } | |
50 | + | func r (p) = ("type_" + p) | |
57 | 51 | ||
58 | 52 | ||
59 | - | func j (h,b) = { | |
60 | - | let c = getBoolean(addressFromStringValue(h), b) | |
61 | - | if ($isInstanceOf(c, "Boolean")) | |
62 | - | then { | |
63 | - | let d = c | |
64 | - | d | |
65 | - | } | |
66 | - | else false | |
67 | - | } | |
53 | + | func s (p) = ("owner_" + p) | |
68 | 54 | ||
69 | 55 | ||
70 | - | let k = 30 | |
71 | - | ||
72 | - | let l = "_" | |
73 | - | ||
74 | - | let m = "+" | |
75 | - | ||
76 | - | let n = 100000000 | |
77 | - | ||
78 | - | let o = 100 | |
79 | - | ||
80 | - | let p = 20 | |
81 | - | ||
82 | - | let q = 90 | |
83 | - | ||
84 | - | let r = 10 | |
85 | - | ||
86 | - | let s = 10 | |
87 | - | ||
88 | - | let t = "waves" | |
89 | - | ||
90 | - | let u = "canceled" | |
91 | - | ||
92 | - | let v = "new" | |
93 | - | ||
94 | - | let w = "neutrino_asset_id" | |
95 | - | ||
96 | - | let x = "bond_asset_id" | |
97 | - | ||
98 | - | let y = "reserve_contract" | |
99 | - | ||
100 | - | let z = "auction_contract" | |
101 | - | ||
102 | - | let A = "liquidation_contract" | |
103 | - | ||
104 | - | let B = "rpd_contract" | |
105 | - | ||
106 | - | let C = "control_contract" | |
107 | - | ||
108 | - | let D = "balance_lock_interval" | |
109 | - | ||
110 | - | let E = "min_waves_swap_amount" | |
111 | - | ||
112 | - | let F = "min_neutrino_swap_amount" | |
113 | - | ||
114 | - | let G = "node_address" | |
115 | - | ||
116 | - | let H = "oracle_node_provider" | |
117 | - | ||
118 | - | let I = "leasing_interval" | |
119 | - | ||
120 | - | let J = "rpd_balance" | |
121 | - | ||
122 | - | func K (L) = ((J + "_") + toBase58String(L)) | |
56 | + | func t (p) = ("target_" + p) | |
123 | 57 | ||
124 | 58 | ||
125 | - | let M = "total_orderbook" | |
126 | - | ||
127 | - | let N = "total_liquidation_orderbook" | |
128 | - | ||
129 | - | let O = "price" | |
130 | - | ||
131 | - | let P = "price_index" | |
132 | - | ||
133 | - | let Q = "is_blocked" | |
134 | - | ||
135 | - | let R = "leasing_expire_block" | |
136 | - | ||
137 | - | let S = "leasing_index" | |
138 | - | ||
139 | - | let T = "leasing_amount" | |
140 | - | ||
141 | - | func U (V) = ((O + "_") + toString(V)) | |
59 | + | func u (p) = ("amount_" + p) | |
142 | 60 | ||
143 | 61 | ||
144 | - | func W (X) = ((P + "_") + toString(X)) | |
62 | + | let v = split(e(m), ",") | |
63 | + | ||
64 | + | let w = fromBase58String(e(l)) | |
65 | + | ||
66 | + | let x = a(n) | |
67 | + | ||
68 | + | func y (p) = a(o(p)) | |
145 | 69 | ||
146 | 70 | ||
147 | - | let Y = "rpd_sync_index" | |
148 | - | ||
149 | - | let Z = "balance_lock_" | |
150 | - | ||
151 | - | let aa = (Z + "waves") | |
152 | - | ||
153 | - | let ab = (Z + "neutrino") | |
154 | - | ||
155 | - | func ac (ad,L) = ((((J + "_") + toBase58String(L)) + "_") + toString(ad)) | |
71 | + | func z (p) = a(r(p)) | |
156 | 72 | ||
157 | 73 | ||
158 | - | func | |
74 | + | func A (p) = e(s(p)) | |
159 | 75 | ||
160 | 76 | ||
161 | - | func | |
77 | + | func B (p) = e(t(p)) | |
162 | 78 | ||
163 | 79 | ||
164 | - | func | |
80 | + | func C (p) = a(u(p)) | |
165 | 81 | ||
166 | 82 | ||
167 | - | func aj (ah) = ("balance_unlock_block_" + ah) | |
168 | - | ||
169 | - | ||
170 | - | func ak (ad) = (("rpd_profit" + "_") + toString(ad)) | |
171 | - | ||
172 | - | ||
173 | - | func al (af) = (("lease_tx_status" + "_") + af) | |
174 | - | ||
175 | - | ||
176 | - | func am (af) = ((T + "_") + af) | |
177 | - | ||
178 | - | ||
179 | - | func an (af) = (("lease_tx" + "_") + af) | |
180 | - | ||
181 | - | ||
182 | - | func ao (af) = (("leasing_expire_send" + "_") + af) | |
183 | - | ||
184 | - | ||
185 | - | func ap (aq,ar) = ((((aq * 100) / ar) * n) / o) | |
186 | - | ||
187 | - | ||
188 | - | func as (aq,ar) = ((((aq * ar) / 100) * o) / n) | |
189 | - | ||
190 | - | ||
191 | - | func at (aq) = (aq / o) | |
192 | - | ||
193 | - | ||
194 | - | func au (aq) = (aq * o) | |
195 | - | ||
196 | - | ||
197 | - | func av (aq,ar) = at(as(aq, ar)) | |
198 | - | ||
199 | - | ||
200 | - | let aw = a(ab) | |
201 | - | ||
202 | - | let ax = a(aa) | |
203 | - | ||
204 | - | let ay = e(A) | |
205 | - | ||
206 | - | let az = e(w) | |
207 | - | ||
208 | - | let aA = fromBase58String(az) | |
209 | - | ||
210 | - | let aB = e(y) | |
211 | - | ||
212 | - | let aC = e(z) | |
213 | - | ||
214 | - | let aD = e(B) | |
215 | - | ||
216 | - | let aE = e(C) | |
217 | - | ||
218 | - | let aF = g(aE, O) | |
219 | - | ||
220 | - | let aG = g(aE, P) | |
221 | - | ||
222 | - | let aH = j(aE, Q) | |
223 | - | ||
224 | - | let aI = a(S) | |
225 | - | ||
226 | - | let aJ = a(I) | |
227 | - | ||
228 | - | let aK = a(R) | |
229 | - | ||
230 | - | let aL = a(T) | |
231 | - | ||
232 | - | let aM = e(G) | |
233 | - | ||
234 | - | let aN = e(H) | |
235 | - | ||
236 | - | let aO = a(Y) | |
237 | - | ||
238 | - | let aP = a(D) | |
239 | - | ||
240 | - | let aQ = a(E) | |
241 | - | ||
242 | - | let aR = a(F) | |
243 | - | ||
244 | - | let aS = (wavesBalance(this) - ax) | |
245 | - | ||
246 | - | let aT = (aS - aL) | |
247 | - | ||
248 | - | let aU = fromBase58String(e(x)) | |
249 | - | ||
250 | - | let aV = (extract(assetInfo(aU)).quantity - assetBalance(this, aU)) | |
251 | - | ||
252 | - | let aW = ((extract(assetInfo(aA)).quantity - assetBalance(this, aA)) + aw) | |
253 | - | ||
254 | - | let aX = (as(aS, aF) - aW) | |
255 | - | ||
256 | - | let aY = (aW - as(aS, aF)) | |
257 | - | ||
258 | - | func aZ (L) = g(aD, K(L)) | |
259 | - | ||
260 | - | ||
261 | - | let ba = g(aC, N) | |
262 | - | ||
263 | - | let bb = g(aC, M) | |
264 | - | ||
265 | - | func bc (V) = g(aE, U(V)) | |
266 | - | ||
267 | - | ||
268 | - | func bd (X) = g(aE, W(X)) | |
269 | - | ||
270 | - | ||
271 | - | func be (af) = a(ae(af)) | |
272 | - | ||
273 | - | ||
274 | - | func bf (ah) = a(ag(ah)) | |
275 | - | ||
276 | - | ||
277 | - | func bg (ah) = a(ai(ah)) | |
278 | - | ||
279 | - | ||
280 | - | func bh (ah) = a(aj(ah)) | |
281 | - | ||
282 | - | ||
283 | - | func bi (ad) = a(ak(ad)) | |
284 | - | ||
285 | - | ||
286 | - | func bj (af) = e(al(af)) | |
287 | - | ||
288 | - | ||
289 | - | func bk (af) = a(am(af)) | |
290 | - | ||
291 | - | ||
292 | - | func bl (af) = e(an(af)) | |
293 | - | ||
294 | - | ||
295 | - | func bm (af) = a(ao(af)) | |
296 | - | ||
297 | - | ||
298 | - | @Callable(bn) | |
299 | - | func swapWavesToNeutrino () = { | |
300 | - | let bo = extract(bn.payment) | |
301 | - | let bp = toString(bn.caller) | |
302 | - | if ((aQ > bo.amount)) | |
303 | - | then throw((("an amount is less than min available amount: " + toString(aQ)) + " wavelets")) | |
304 | - | else if (isDefined(bo.assetId)) | |
305 | - | then throw("can use waves only") | |
306 | - | else if (aH) | |
307 | - | then throw("contract is blocked by EMERGENCY SHUTDOWN actions untill reactivation by emergency oracles") | |
308 | - | else if ((bh(bp) > height)) | |
309 | - | then throw((("await " + toString((bh(bp) - height))) + " blocks")) | |
310 | - | else if (if ((bg(bp) != 0)) | |
311 | - | then true | |
312 | - | else (bf(bp) != 0)) | |
313 | - | then throw("please withdraw locked funds first") | |
314 | - | else WriteSet([DataEntry(ag(bp), bo.amount), DataEntry(aj(bp), (height + aP)), DataEntry(aa, (ax + bo.amount))]) | |
83 | + | @Callable(D) | |
84 | + | func createLockRequest (E) = { | |
85 | + | let F = extract(D.payment) | |
86 | + | let p = toBase58String(keccak256((((fromBase58String(toString(this)) + D.caller.bytes) + D.transactionId) + toBytes(E)))) | |
87 | + | if ((F.assetId != w)) | |
88 | + | then throw("can use waves only") | |
89 | + | else if ((A(p) != "")) | |
90 | + | then throw("request exists") | |
91 | + | else WriteSet([DataEntry(o(p), g), DataEntry(r(p), j), DataEntry(s(p), toString(D.caller)), DataEntry(q(p), height), DataEntry(t(p), E), DataEntry(u(p), F.amount)]) | |
315 | 92 | } | |
316 | 93 | ||
317 | 94 | ||
318 | 95 | ||
319 | - | @Callable(bn) | |
320 | - | func swapNeutrinoToWaves () = { | |
321 | - | let bo = extract(bn.payment) | |
322 | - | let bp = toString(bn.caller) | |
323 | - | if ((aR > bo.amount)) | |
324 | - | then throw((("an amount is less than min available amount: " + toString(aR)) + " neutrino cents")) | |
325 | - | else if (aH) | |
326 | - | then throw("contract is blocked by EMERGENCY SHUTDOWN actions untill reactivation by emergency oracles") | |
327 | - | else if ((bo.assetId != aA)) | |
328 | - | then throw("can use appropriate neutrino tokens only") | |
329 | - | else if ((bh(bp) > height)) | |
330 | - | then throw((("await " + toString((bh(bp) - height))) + " blocks")) | |
331 | - | else if (if ((bg(bp) != 0)) | |
332 | - | then true | |
333 | - | else (bf(bp) != 0)) | |
334 | - | then throw("please withdraw locked funds first") | |
335 | - | else WriteSet([DataEntry(ai(bp), bo.amount), DataEntry(ag(bp), (height + aP)), DataEntry(ab, (aw + bo.amount))]) | |
96 | + | @Callable(D) | |
97 | + | func changeStatus (G,H,I) = { | |
98 | + | let J = split(H, ",") | |
99 | + | let K = ((G + "_") + toString(I)) | |
100 | + | let L = (((((if (sigVerify(toBytes(K), fromBase58String(J[0]), fromBase58String(v[0]))) | |
101 | + | then 1 | |
102 | + | else 0) + (if (sigVerify(toBytes(K), fromBase58String(J[1]), fromBase58String(v[1]))) | |
103 | + | then 1 | |
104 | + | else 0)) + (if (sigVerify(toBytes(K), fromBase58String(J[2]), fromBase58String(v[2]))) | |
105 | + | then 1 | |
106 | + | else 0)) + (if (sigVerify(toBytes(K), fromBase58String(J[3]), fromBase58String(v[3]))) | |
107 | + | then 1 | |
108 | + | else 0)) + (if (sigVerify(toBytes(K), fromBase58String(J[4]), fromBase58String(v[4]))) | |
109 | + | then 1 | |
110 | + | else 0)) | |
111 | + | if ((x > L)) | |
112 | + | then throw("count is less 3") | |
113 | + | else if ((A(G) == "")) | |
114 | + | then throw("request is not exists") | |
115 | + | else if ((y(G) != g)) | |
116 | + | then throw("request is not exists") | |
117 | + | else if (if ((I != i)) | |
118 | + | then (I != h) | |
119 | + | else false) | |
120 | + | then throw("invalid status") | |
121 | + | else { | |
122 | + | let M = addressFromStringValue(A(G)) | |
123 | + | let N = z(G) | |
124 | + | let O = C(G) | |
125 | + | ScriptResult(WriteSet([DataEntry(o(G), I)]), TransferSet([ScriptTransfer(M, if (if (if ((I == h)) | |
126 | + | then (N == j) | |
127 | + | else false) | |
128 | + | then true | |
129 | + | else if ((I == i)) | |
130 | + | then (N == k) | |
131 | + | else false) | |
132 | + | then O | |
133 | + | else 0, w)])) | |
134 | + | } | |
336 | 135 | } | |
337 | 136 | ||
338 | 137 | ||
339 | 138 | ||
340 | - | @Callable(bn) | |
341 | - | func withdraw (bp,X) = { | |
342 | - | let bq = bh(bp) | |
343 | - | let br = bf(bp) | |
344 | - | let bs = bg(bp) | |
345 | - | let bt = bd(X) | |
346 | - | let bu = bd((X + 1)) | |
347 | - | let bv = bc(bt) | |
348 | - | let bw = as(br, bv) | |
349 | - | let bx = ap(bs, bv) | |
350 | - | if (aH) | |
351 | - | then throw("contract is blocked by EMERGENCY SHUTDOWN actions untill reactivation by emergency oracles") | |
352 | - | else if ((bq > height)) | |
353 | - | then throw((("please wait for: " + toString(bq)) + " block height to withdraw WAVES funds")) | |
354 | - | else if (if (if ((X > aG)) | |
355 | - | then true | |
356 | - | else (bt > bq)) | |
357 | - | then true | |
358 | - | else if ((bu != 0)) | |
359 | - | then (bq >= bu) | |
360 | - | else false) | |
361 | - | then throw("invalid price history index") | |
362 | - | else if (if ((0 >= bw)) | |
363 | - | then (0 >= bx) | |
364 | - | else false) | |
365 | - | then throw("balance equals zero") | |
366 | - | else ScriptResult(WriteSet([DataEntry(ag(bp), 0), DataEntry(ai(bp), 0), DataEntry(aa, (ax - br)), DataEntry(ab, (aw - bs))]), TransferSet([ScriptTransfer(addressFromStringValue(bp), bx, unit), ScriptTransfer(addressFromStringValue(bp), bw, aA)])) | |
139 | + | @Callable(D) | |
140 | + | func createUnlockRequest (P,O) = { | |
141 | + | let p = toBase58String(keccak256(((((fromBase58String(toString(this)) + D.caller.bytes) + D.transactionId) + toBytes(P)) + toBytes(O)))) | |
142 | + | if ((A(p) != "")) | |
143 | + | then throw("request exists") | |
144 | + | else WriteSet([DataEntry(o(p), g), DataEntry(r(p), k), DataEntry(s(p), toString(D.caller)), DataEntry(q(p), height), DataEntry(t(p), P), DataEntry(u(p), O)]) | |
367 | 145 | } | |
368 | 146 | ||
369 | - | ||
370 | - | ||
371 | - | @Callable(bn) | |
372 | - | func transferToAuction () = { | |
373 | - | let by = ((at(aY) - assetBalance(addressFromStringValue(aC), aU)) - ba) | |
374 | - | let bz = ((at(aX) - assetBalance(addressFromStringValue(aC), aA)) - bb) | |
375 | - | if (aH) | |
376 | - | then throw("contract is blocked by EMERGENCY SHUTDOWN actions untill reactivation by emergency oracles") | |
377 | - | else if ((by >= ((at(aW) * s) / 100))) | |
378 | - | then TransferSet([ScriptTransfer(addressFromStringValue(aC), by, aU)]) | |
379 | - | else if ((bz > 0)) | |
380 | - | then TransferSet([ScriptTransfer(addressFromStringValue(ay), au(bz), aA)]) | |
381 | - | else throw(((((("bond were generated or do not need it. Deficit:" + toString(by)) + "|") + toString(((aW * s) / 100))) + ". Surplus:") + toString(bz))) | |
382 | - | } | |
383 | - | ||
384 | - | ||
385 | - | ||
386 | - | @Callable(bn) | |
387 | - | func transfer (bp) = { | |
388 | - | let bo = extract(bn.payment) | |
389 | - | TransferSet([ScriptTransfer(addressFromStringValue(bp), bo.amount, bo.assetId)]) | |
390 | - | } | |
391 | - | ||
392 | - | ||
393 | - | ||
394 | - | @Callable(bn) | |
395 | - | func nodeReward () = { | |
396 | - | let bo = value(bn.payment) | |
397 | - | if ((bn.caller != addressFromStringValue(aM))) | |
398 | - | then throw("only node account is able to transfer staking rewards from main account") | |
399 | - | else if (isDefined(bo.assetId)) | |
400 | - | then throw("waves tokens only allowed") | |
401 | - | else { | |
402 | - | let aq = as(bo.amount, aF) | |
403 | - | let bA = (aO + 1) | |
404 | - | ScriptResult(WriteSet([DataEntry(Y, bA), DataEntry(ak(aO), aq), DataEntry(ac(aO, aA), aZ(aA))]), TransferSet([ScriptTransfer(addressFromStringValue(aD), aq, aA)])) | |
405 | - | } | |
406 | - | } | |
407 | - | ||
408 | - | ||
409 | - | @Verifier(bB) | |
410 | - | func bC () = { | |
411 | - | let bD = toBase58String(bB.id) | |
412 | - | let c = bB | |
413 | - | if (if ($isInstanceOf(c, "LeaseCancelTransaction")) | |
414 | - | then true | |
415 | - | else $isInstanceOf(c, "LeaseTransaction")) | |
416 | - | then { | |
417 | - | let bE = c | |
418 | - | if (sigVerify(bB.bodyBytes, bB.proofs[0], bB.senderPublicKey)) | |
419 | - | then (addressFromString(aN) == addressFromPublicKey(bB.senderPublicKey)) | |
420 | - | else false | |
421 | - | } | |
422 | - | else sigVerify(bB.bodyBytes, bB.proofs[0], bB.senderPublicKey) | |
423 | - | } | |
424 | 147 |
github/deemru/w8io/873ac7e 786.46 ms ◑![]()