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:
OldNewDifferences
2323 }
2424
2525
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)
3545
3646
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)
4648
4749
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)
5751
5852
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)
6854
6955
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)
12357
12458
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)
14260
14361
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))
14569
14670
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))
15672
15773
158-func ae (af) = (("cancel_lease_tx_reserve_fee" + "_") + af)
74+func A (p) = e(s(p))
15975
16076
161-func ag (ah) = ((aa + "_") + ah)
77+func B (p) = e(t(p))
16278
16379
164-func ai (ah) = ((ab + "_") + ah)
80+func C (p) = a(u(p))
16581
16682
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)])
31592 }
31693
31794
31895
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+ }
336135 }
337136
338137
339138
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)])
367145 }
368146
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- }
424147
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func a (b) = {
55 let c = getInteger(this, b)
66 if ($isInstanceOf(c, "Int"))
77 then {
88 let d = c
99 d
1010 }
1111 else 0
1212 }
1313
1414
1515 func e (b) = {
1616 let c = getString(this, b)
1717 if ($isInstanceOf(c, "String"))
1818 then {
1919 let d = c
2020 d
2121 }
2222 else ""
2323 }
2424
2525
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)
3545
3646
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)
4648
4749
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)
5751
5852
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)
6854
6955
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)
12357
12458
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)
14260
14361
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))
14569
14670
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))
15672
15773
158-func ae (af) = (("cancel_lease_tx_reserve_fee" + "_") + af)
74+func A (p) = e(s(p))
15975
16076
161-func ag (ah) = ((aa + "_") + ah)
77+func B (p) = e(t(p))
16278
16379
164-func ai (ah) = ((ab + "_") + ah)
80+func C (p) = a(u(p))
16581
16682
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)])
31592 }
31693
31794
31895
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+ }
336135 }
337136
338137
339138
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)])
367145 }
368146
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- }
424147

github/deemru/w8io/873ac7e 
786.46 ms