tx · AquSqmK3DiQhCFkTgTWgvLWUBeQMzZqje9cQXYq226vs

3MsgzbtRg8NEkbTcHBywtwTdCe9BRxMQo5T:  -0.00800000 Waves

2024.09.24 08:54 [3297271] smart account 3MsgzbtRg8NEkbTcHBywtwTdCe9BRxMQo5T > SELF 0.00000000 Waves

{ "type": 13, "id": "AquSqmK3DiQhCFkTgTWgvLWUBeQMzZqje9cQXYq226vs", "fee": 800000, "feeAssetId": null, "timestamp": 1727157307994, "version": 1, "sender": "3MsgzbtRg8NEkbTcHBywtwTdCe9BRxMQo5T", "senderPublicKey": "iTiQR3Kvxn7i8PFgEbZn36n5iFLxFwkTA6M3wi846Vx", "proofs": [ "4mQaXVZc22rCaCMkZAdiRW3836kFQ2f6cBmkyrbBPqVxabmgLAQDCmgEPKRgH2QFzKGjQN57tFtqHGwKWGFnRb8Z" ], "script": "base64:BwJLCAISAwoBCBIECgIICBIECgIIARIECgIIBBIECgIIAhIDCgEIEgUKAwIBBBIECgICARIFCgMCAQISBQoDAhIREgQKAgIBEgQKAggYEAAJc2VwYXJhdG9yAgJfXwALd2F2ZXNTdHJpbmcCBVdBVkVTABBjb250cmFjdEZpbGVuYW1lAhRtZW1lX2ltX2ZhY3RvcnkucmlkZQAJa1NodXRkb3duAgwlc19fc2h1dGRvd24ACHNodXRkb3duCQELdmFsdWVPckVsc2UCCQCgCAEFCWtTaHV0ZG93bgcBB3dyYXBFcnIBAXMJAKwCAgkArAICBRBjb250cmFjdEZpbGVuYW1lAgI6IAUBcwEIdGhyb3dFcnIBAXMJAAIBCQEHd3JhcEVycgEFAXMBD3ZhbGlkYXRlQWRkcmVzcwEHYWRkcmVzcwkBCWlzRGVmaW5lZAEJAKYIAQUHYWRkcmVzcwASa0NhbGN1bGF0b3JBZGRyZXNzAhNjYWxjdWxhdG9yX19hZGRyZXNzABdjYWxjdWxhdG9yQWRkcmVzc09wdGlvbgQHJG1hdGNoMAkAnQgCBQR0aGlzBRJrQ2FsY3VsYXRvckFkZHJlc3MDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQCmCAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yABFjYWxjdWxhdG9yQWRkcmVzcwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCBRdjYWxjdWxhdG9yQWRkcmVzc09wdGlvbgkBB3dyYXBFcnIBAhppbnZhbGlkIGNhbGN1bGF0b3IgYWRkcmVzcwELbXVzdEFkZHJlc3MCAWkHYWRkcmVzcwMJAAACCAUBaQZjYWxsZXIFB2FkZHJlc3MGCQEIdGhyb3dFcnIBAhFwZXJtaXNzaW9uIGRlbmllZAEIbXVzdFRoaXMBAWkJAQttdXN0QWRkcmVzcwIFAWkFBHRoaXMBDm11c3RDYWxjdWxhdG9yAQFpCQELbXVzdEFkZHJlc3MCBQFpBRFjYWxjdWxhdG9yQWRkcmVzcwEMcGFyc2VBc3NldElkAQVpbnB1dAMJAAACBQVpbnB1dAULd2F2ZXNTdHJpbmcFBHVuaXQJANkEAQUFaW5wdXQBD2Fzc2V0SWRUb1N0cmluZwEFaW5wdXQDCQAAAgUFaW5wdXQFBHVuaXQFC3dhdmVzU3RyaW5nCQDYBAEJAQV2YWx1ZQEFBWlucHV0DAFpAQRpbml0ARRjYWxjdWxhdG9yQWRkcmVzc1N0cgQLY2hlY2tDYWxsZXIJAQhtdXN0VGhpcwEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUSa0NhbGN1bGF0b3JBZGRyZXNzBRRjYWxjdWxhdG9yQWRkcmVzc1N0cgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBC3N0cmluZ0VudHJ5AgNrZXkDdmFsAwMJAQEhAQUIc2h1dGRvd24JAQ5tdXN0Q2FsY3VsYXRvcgEFAWkHCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUDa2V5BQN2YWwFA25pbAUDa2V5CQEIdGhyb3dFcnIBAgtub3QgYWxsb3dlZAFpAQxpbnRlZ2VyRW50cnkCA2tleQN2YWwDAwkBASEBBQhzaHV0ZG93bgkBDm11c3RDYWxjdWxhdG9yAQUBaQcJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUDa2V5BQN2YWwFA25pbAUDa2V5CQEIdGhyb3dFcnIBAgtub3QgYWxsb3dlZAFpAQxib29sZWFuRW50cnkCA2tleQN2YWwDAwkBASEBBQhzaHV0ZG93bgkBDm11c3RDYWxjdWxhdG9yAQUBaQcJAJQKAgkAzAgCCQEMQm9vbGVhbkVudHJ5AgUDa2V5BQN2YWwFA25pbAUDa2V5CQEIdGhyb3dFcnIBAgtub3QgYWxsb3dlZAFpAQtiaW5hcnlFbnRyeQIDa2V5A3ZhbAMDCQEBIQEFCHNodXRkb3duCQEObXVzdENhbGN1bGF0b3IBBQFpBwkAlAoCCQDMCAIJAQtCaW5hcnlFbnRyeQIFA2tleQUDdmFsBQNuaWwFA2tleQkBCHRocm93RXJyAQILbm90IGFsbG93ZWQBaQELZGVsZXRlRW50cnkBA2tleQMDCQEBIQEFCHNodXRkb3duCQEObXVzdENhbGN1bGF0b3IBBQFpBwkAlAoCCQDMCAIJAQtEZWxldGVFbnRyeQEFA2tleQUDbmlsBQNrZXkJAQh0aHJvd0VycgECC25vdCBhbGxvd2VkAWkBB3JlaXNzdWUDB2Fzc2V0SWQGYW1vdW50CnJlaXNzdWFibGUDAwkBASEBBQhzaHV0ZG93bgkBDm11c3RDYWxjdWxhdG9yAQUBaQcJAJQKAgkAzAgCCQEHUmVpc3N1ZQMFB2Fzc2V0SWQFBmFtb3VudAUKcmVpc3N1YWJsZQUDbmlsBQZhbW91bnQJAQh0aHJvd0VycgECC25vdCBhbGxvd2VkAWkBBGJ1cm4CB2Fzc2V0SWQGYW1vdW50AwMJAQEhAQUIc2h1dGRvd24JAQ5tdXN0Q2FsY3VsYXRvcgEFAWkHCQCUCgIJAMwIAgkBBEJ1cm4CBQdhc3NldElkBQZhbW91bnQFA25pbAUGYW1vdW50CQEIdGhyb3dFcnIBAgtub3QgYWxsb3dlZAFpAQ10cmFuc2ZlckFzc2V0Aw5yZWNpcGllbnRCeXRlcwZhbW91bnQHYXNzZXRJZAMDCQEBIQEFCHNodXRkb3duCQEObXVzdENhbGN1bGF0b3IBBQFpBwkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQUOcmVjaXBpZW50Qnl0ZXMFBmFtb3VudAUHYXNzZXRJZAUDbmlsBQZhbW91bnQJAQh0aHJvd0VycgECC25vdCBhbGxvd2VkAWkBDnRyYW5zZmVyQXNzZXRzAw5yZWNpcGllbnRCeXRlcwphc3NldHNMaXN0C2Ftb3VudHNMaXN0AwMJAQEhAQUIc2h1dGRvd24JAQ5tdXN0Q2FsY3VsYXRvcgEFAWkHCgEOYWRkTmV3VHJhbnNmZXICA2FjYwtuZXh0QXNzZXRJZAQLJHQwMzEwNDMxMjgFA2FjYwQJdHJhbnNmZXJzCAULJHQwMzEwNDMxMjgCXzEEAWoIBQskdDAzMTA0MzEyOAJfMgQLbmV3VHJhbnNmZXIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQUOcmVjaXBpZW50Qnl0ZXMJAJEDAgULYW1vdW50c0xpc3QFAWoJAJEDAgUKYXNzZXRzTGlzdAUBagQQdXBkYXRlZFRyYW5zZmVycwkAzQgCBQl0cmFuc2ZlcnMFC25ld1RyYW5zZmVyCQCUCgIFEHVwZGF0ZWRUcmFuc2ZlcnMJAGQCBQFqAAEECyR0MDMzNTQzNDM1CgACJGwFCmFzc2V0c0xpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIFA25pbAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQ5hZGROZXdUcmFuc2ZlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgQPYXNzZXRzVHJhbnNmZXJzCAULJHQwMzM1NDM0MzUCXzEECl9sYXN0SW5kZXgIBQskdDAzMzU0MzQzNQJfMgkAlAoCBQ9hc3NldHNUcmFuc2ZlcnMFBHVuaXQJAQh0aHJvd0VycgECC25vdCBhbGxvd2VkAWkBDXRyYW5zZmVyV2F2ZXMCDnJlY2lwaWVudEJ5dGVzBmFtb3VudAMDCQEBIQEFCHNodXRkb3duCQEObXVzdENhbGN1bGF0b3IBBQFpBwkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQUOcmVjaXBpZW50Qnl0ZXMFBmFtb3VudAUEdW5pdAUDbmlsBQZhbW91bnQJAQh0aHJvd0VycgECC25vdCBhbGxvd2VkAWkBBGNhbGwCCGZ1bmN0aW9uBGFyZ3MEDWNsZWFuUGF5bWVudHMDCQAAAggFAWkPY2FsbGVyUHVibGljS2V5ASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUDbmlsCAUBaQhwYXltZW50cwQGcmVzdWx0CQD9BwQFEWNhbGN1bGF0b3JBZGRyZXNzBQhmdW5jdGlvbgkAzAgCCAUBaQ9jYWxsZXJQdWJsaWNLZXkJAMwIAgUEYXJncwUDbmlsBQ1jbGVhblBheW1lbnRzCQCUCgIFA25pbAUGcmVzdWx0AGelHiA=", "chainId": 84, "height": 3297271, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: A9MF7eiEdrTN3nNz9cpyQ4YeR38xeFQS5osguQwMyJpY Next: 4j9ZJFaRvwQuJWwK5ZPG66uCAgdExnk5aNDgitknDCWq Diff:
OldNewDifferences
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
6-let b = take(drop(this.bytes, 1), 1)
6+let b = "WAVES"
77
8-let c = base58'2W'
8+let c = "meme_im_factory.ride"
99
10-let d = "futures_calculator.ride"
10+let d = "%s__shutdown"
1111
12-let e = 100000000
12+let e = valueOrElse(getBoolean(d), false)
1313
14-let f = toBigInt(1000000000000000000)
15-
16-let g = 8
17-
18-let h = 6
19-
20-let i = "WAVES"
21-
22-let j = 32
23-
24-let k = toBigInt(0)
25-
26-let l = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
27-
28-let m = "%s__multisig"
29-
30-func n (o,p) = makeString(["%s__status", o, p], a)
14+func f (g) = ((c + ": ") + g)
3115
3216
33-let q = "%s__shutdown"
34-
35-let r = "%s__publicKeys"
36-
37-let s = "%s__matcherPublicKey"
38-
39-func t (u,v) = fraction(toBigInt(u), f, toBigInt(v))
17+func h (g) = throw(f(g))
4018
4119
42-func w (x,y) = toInt(fraction(x, toBigInt(y), f))
20+func i (j) = isDefined(addressFromString(j))
4321
4422
45-func z (A) = isDefined(addressFromString(A))
23+let k = "calculator__address"
4624
47-
48-func B (C) = ((d + ": ") + C)
49-
50-
51-func D (C) = throw(B(C))
52-
53-
54-func E (F,C) = if ((F >= 0))
55- then F
56- else D((C + " value should be positive"))
57-
58-
59-func G (H) = if ((H == i))
60- then unit
61- else fromBase58String(H)
62-
63-
64-func I (H) = if ((H == unit))
65- then i
66- else toBase58String(value(H))
67-
68-
69-func J (K) = valueOrErrorMessage(assetInfo(K), B("invalid asset info"))
70-
71-
72-func L (K) = {
73- let M = K
74- if ($isInstanceOf(M, "Unit"))
75- then g
76- else if ($isInstanceOf(M, "ByteVector"))
77- then {
78- let K = M
79- J(K).decimals
80- }
81- else throw("Match error")
82- }
83-
84-
85-func N (K,A) = {
86- let M = K
87- if ($isInstanceOf(M, "Unit"))
88- then wavesBalance(A).available
89- else if ($isInstanceOf(M, "ByteVector"))
90- then {
91- let K = M
92- assetBalance(A, K)
93- }
94- else throw("Match error")
95- }
96-
97-
98-func O (P) = pow(10, 0, P, 0, 0, DOWN)
99-
100-
101-func Q (K) = O(L(K))
102-
103-
104-let R = "%s__factoryAddress"
105-
106-let S = {
107- let M = getString(this, R)
108- if ($isInstanceOf(M, "String"))
25+let l = {
26+ let m = getString(this, k)
27+ if ($isInstanceOf(m, "String"))
10928 then {
110- let C = M
111- addressFromString(C)
29+ let g = m
30+ addressFromString(g)
11231 }
113- else if ($isInstanceOf(M, "Unit"))
32+ else if ($isInstanceOf(m, "Unit"))
11433 then unit
11534 else throw("Match error")
11635 }
11736
118-let T = valueOrErrorMessage(S, B("invalid factory address"))
37+let n = valueOrErrorMessage(l, f("invalid calculator address"))
11938
120-let U = "%s__usdtAssetId"
121-
122-let V = {
123- let M = getString(T, U)
124- if ($isInstanceOf(M, "String"))
125- then {
126- let C = M
127- G(C)
128- }
129- else if ($isInstanceOf(M, "Unit"))
130- then unit
131- else throw("Match error")
132- }
133-
134-let W = valueOrErrorMessage(V, B("invalid usdt asset id"))
135-
136-let X = "%s__calculatorAddress"
137-
138-let Y = valueOrElse(getBoolean(T, q), false)
139-
140-func Z (aa,A) = if ((aa == A))
39+func o (p,j) = if ((p.caller == j))
14140 then true
142- else D("permission denied")
41+ else h("permission denied")
14342
14443
145-func ab (aa) = Z(aa, this)
44+func q (p) = o(p, this)
14645
14746
148-func ac (aa) = Z(aa, T)
47+func r (p) = o(p, n)
14948
15049
151-func ad (ae) = {
152- let af = getString(T, m)
153- let ag = {
154- let M = af
155- if ($isInstanceOf(M, "String"))
156- then {
157- let ah = M
158- let ai = addressFromStringValue(ah)
159- let aj = split(getStringValue(ai, r), a)
160- containsElement(aj, toBase58String(ae))
161- }
162- else (addressFromPublicKey(ae) == T)
163- }
164- if (ag)
165- then true
166- else D("not allowed")
167- }
50+func s (t) = if ((t == b))
51+ then unit
52+ else fromBase58String(t)
16853
16954
170-let ak = "%s__accountScript"
171-
172-func al () = valueOrErrorMessage(getBinary(T, ak), B("account script is not set"))
55+func u (t) = if ((t == unit))
56+ then b
57+ else toBase58String(value(t))
17358
17459
175-let am = "%s__rewardAmount"
176-
177-func an () = valueOrErrorMessage(getInteger(T, am), B("reward amount is not set"))
178-
179-
180-let ao = "%s__accountsLimit"
181-
182-let ap = 20
183-
184-func aq () = valueOrElse(getInteger(T, ao), ap)
185-
186-
187-func ar (as) = makeString(["%s%s", "deposited", toString(as)], a)
188-
189-
190-func at (as) = getInteger(T, ar(as))
191-
192-
193-func au (as,K) = makeString(["%s%s%s", "credit", toString(as), I(K)], a)
194-
195-
196-func av (as,K) = getInteger(T, au(as, K))
197-
198-
199-func aw (as) = makeString(["%s%s", "leverage", toString(as)], a)
200-
201-
202-func ax (ay) = makeString(["%s%s", "requestLeverage", toBase58String(ay)], a)
203-
204-
205-func az (aA) = makeString(["%s%s", "syntheticAssetId", I(aA)], a)
206-
207-
208-func aB (aC) = makeString(["%s%s", "baseAssetId", I(aC)], a)
209-
210-
211-let aD = 0
212-
213-let aE = 1
214-
215-func aF (ay) = makeString(["%s%s", toBase58String(ay), "status"], a)
216-
217-
218-func aG (as) = makeString(["%s%s", toString(as), "creatorPublicKey"], a)
219-
220-
221-func aH (ay) = makeString(["%s%s", toBase58String(ay), "ownerPublicKey"], a)
222-
223-
224-func aI (ay) = makeString(["%s%s", toBase58String(ay), "amountAssetId"], a)
225-
226-
227-func aJ (ay) = makeString(["%s%s", toBase58String(ay), "priceAssetId"], a)
228-
229-
230-func aK (ay) = makeString(["%s%s", toBase58String(ay), "requestIdToAccountPublicKey"], a)
231-
232-
233-func aL (as) = makeString(["%s%s", toString(as), "accountAddressToRequestId"], a)
234-
235-
236-func aM () = makeString(["%s", "requestsQueue"], a)
237-
238-
239-func aN () = valueOrElse(getBinary(T, aM()), base58'')
240-
241-
242-func aO (aP) = makeString(["%s%s", "requests", toString(aP)], a)
243-
244-
245-func aQ (aP) = valueOrElse(getBinary(T, aO(aP)), base58'')
246-
247-
248-func aR (aS,aT) = makeString(["%s%s%s", I(aS), I(aT), "pairAllowed"], a)
249-
250-
251-func aU (aS,aT) = valueOrElse(getBoolean(T, aR(aS, aT)), false)
252-
253-
254-func aV (K) = makeString(["%s", I(K)], a)
255-
256-
257-func aW (aS,aT) = makeString(["%s%s%s", I(aS), I(aT), "pairSettingPrices"], a)
258-
259-
260-func aX (aS,aT) = {
261- let M = getString(T, aW(aS, aT))
262- if ($isInstanceOf(M, "String"))
263- then {
264- let C = M
265- split(C, a)
266- }
267- else nil
268- }
269-
270-
271-func aY (aS,aT,aZ) = makeString(["%s%s%d%s", I(aS), I(aT), aZ, "settings"], a)
272-
273-
274-func ba (K) = {
275- let bb = fromBase58String(valueOrErrorMessage(getString(T, s), B("invalid matcher public key")))
276- let bc = addressFromPublicKey(bb)
277- let bd = valueOrErrorMessage(getInteger(bc, aV(K)), B(("invalid price, assetId = " + I(K))))
278- bd
279- }
280-
281-
282-func be (bf,bg,bh) = (fraction(bf, bh, f) + bg)
283-
284-
285-func bi (bj,bk,bh) = (fraction(bj, bh, f) + bk)
286-
287-
288-func bl (bm,bn) = (bm - bn)
289-
290-
291-func bo (bp,bq,bn) = (fraction(bp, bq, f) - bn)
292-
293-
294-func br (bs,bt) = if ((bs > k))
295- then (bs - bt)
296- else k
297-
298-
299-func bu (bs,bt) = if ((bs > k))
300- then (bt - bs)
301- else k
302-
303-
304-func bv (bw,bx) = if ((bx > k))
305- then max([k, fraction(bw, f, bx)])
306- else k
307-
308-
309-func by (bw,bx) = if ((bx > k))
310- then max([k, fraction(bx, f, bw)])
311- else k
312-
313-
314-func bz (bA,bB,bh,bC) = fraction((fraction(bA, bh, f) + bB), bC, f)
315-
316-
317-func bD (bE,bC,bF) = fraction(bE, bF, bC)
318-
319-
320-func bG (bp,bH,bA,bB,bI,bJ) = {
321- let bK = if ((bA > k))
322- then (((bp - bH) / bA) + bI)
323- else k
324- let bL = if ((bB > k))
325- then (bJ - ((bp - bH) / (bA / bJ)))
326- else k
327- (bK + bL)
328- }
329-
330-
331-func bM (as) = {
332- let ay = fromBase58String(valueOrErrorMessage(getString(T, aL(as)), B("invalid account address: request id is undefined")))
333- ay
334- }
335-
336-
337-func bN (as) = {
338- let ay = bM(as)
339- let aS = G(valueOrErrorMessage(getString(T, aI(ay)), B("invalid amount asset id")))
340- let aT = G(valueOrErrorMessage(getString(T, aJ(ay)), B("invalid amount price id")))
341- $Tuple2(aS, aT)
342- }
343-
344-
345-func bO (as) = {
346- let ay = bM(as)
347- let bP = valueOrErrorMessage(getBinary(T, aH(ay)), B("invalid amount asset id"))
348- bP
349- }
350-
351-
352-func bQ (as) = {
353- let bR = bN(as)
354- let aS = bR._1
355- let aT = bR._2
356- let bq = valueOrErrorMessage(getInteger(T, aw(as)), B("leverage should be defined"))
357- let ay = bM(as)
358- let bS = valueOrErrorMessage(getBinary(T, aK(ay)), "kRequestIdToAccountPublicKey not found")
359- let bT = valueOrElse(at(as), 0)
360- let bh = t(ba(aS), Q(aT))
361- let bf = valueOrElse(getInteger(T, au(as, aS)), 0)
362- let bg = valueOrElse(getInteger(T, au(as, aT)), 0)
363- let bU = valueOrErrorMessage(getInteger(T, aF(ay)), ("status not found. RequestId = " + toBase58String(ay)))
364- let bV = getString(T, az(aS))
365- let bW = {
366- let M = bV
367- if ($isInstanceOf(M, "String"))
368- then {
369- let C = M
370- N(G(C), as)
371- }
372- else 0
373- }
374- let bX = getString(T, az(aT))
375- let bY = {
376- let M = bX
377- if ($isInstanceOf(M, "String"))
378- then {
379- let C = M
380- N(G(C), as)
381- }
382- else 0
383- }
384- $Tuple12(I(aS), I(aT), toString(as), toBase58String(bS), bq, toBase58String(ay), bT, bf, bg, bW, bY, bU)
385- }
386-
387-
388-func bZ (ae,ca,cb) = {
389- let cc = cb.payments[0]
390- let as = valueOrErrorMessage(addressFromString(ca[0]), B("invalid account address"))
391- let cd = [if (!(Y))
392- then true
393- else D("not allowed"), ac(cb.caller), if ((size(cb.payments) == 1))
394- then true
395- else D("1 payment is required"), if ((cc.assetId == W))
396- then true
397- else D("invalid asset"), if ((getInteger(T, aF(bM(as))) == aE))
398- then true
399- else D("account is not ready")]
400- if ((cd == cd))
401- then {
402- let ce = [ScriptTransfer(as, cc.amount, cc.assetId)]
403- let cf = [invoke(T, "integerEntry", [ar(as), (valueOrElse(at(as), 0) + cc.amount)], nil)]
404- $Tuple2(ce, cf)
405- }
406- else throw("Strict value is not equal to itself.")
407- }
408-
409-
410-func cg (ae,ca,cb) = {
411- let as = valueOrErrorMessage(addressFromString(ca[0]), B("invalid account address"))
412- let ch = G(ca[1])
413- let ci = E(valueOrErrorMessage(parseInt(ca[2]), B("invalid requested amount")), "requested amount")
414- let cj = bO(as)
415- let ck = addressFromPublicKey(ae)
416- let cd = [if (!(Y))
417- then true
418- else D("not allowed"), ac(cb.caller), if ((ae == cj))
419- then true
420- else D("can be called by account owner only")]
421- if ((cd == cd))
422- then {
423- let aS = bN(as)._1
424- let bT = t(valueOrElse(at(as), 0), Q(W))
425- let bh = t(ba(aS), Q(W))
426- let bf = t(valueOrElse(getInteger(T, au(as, aS)), 0), Q(aS))
427- let bg = t(valueOrElse(getInteger(T, au(as, W)), 0), Q(W))
428- let bn = be(bf, bg, bh)
429- let bq = t(valueOrErrorMessage(getInteger(T, aw(as)), B("leverage should be defined")), 1)
430- let cl = bo(bT, bq, bn)
431- let cm = if ((ch == aS))
432- then w(fraction(cl, f, bh), Q(aS))
433- else if ((ch == W))
434- then w(cl, Q(W))
435- else D("invalid requested asset id")
436- let aC = G(valueOrErrorMessage(getString(T, az(ch)), B("synthetic asset for requested asset is undefined")))
437- let cn = if ((cm >= ci))
438- then ci
439- else D(("credit available = " + toString(cm)))
440- let cf = [invoke(T, "integerEntry", [au(as, ch), (valueOrElse(av(as, ch), 0) + cn)], nil), invoke(T, "transferAsset", [as.bytes, cn, aC], nil)]
441- $Tuple2(nil, [cf, cm])
442- }
443- else throw("Strict value is not equal to itself.")
444- }
445-
446-
447-@Callable(cb)
448-func init (co) = {
449- let cp = ab(cb.caller)
450- if ((cp == cp))
451- then $Tuple2([StringEntry(R, co)], unit)
60+@Callable(p)
61+func init (v) = {
62+ let w = q(p)
63+ if ((w == w))
64+ then $Tuple2([StringEntry(k, v)], unit)
45265 else throw("Strict value is not equal to itself.")
45366 }
45467
45568
45669
457-@Callable(cb)
458-func requestAccount (ae,ca) = {
459- let cd = [if (!(Y))
460- then true
461- else D("not allowed"), ac(cb.caller)]
462- if ((cd == cd))
463- then {
464- let cq = ca[0]
465- let cr = ca[1]
466- let bq = valueOrErrorMessage(parseInt(ca[2]), B("invalid leverage"))
467- let ck = addressFromPublicKey(ae)
468- let ay = sha256(cb.transactionId)
469- let aS = G(cq)
470- let aT = G(cr)
471- let cs = (size(aO(ck)) / j)
472- let ct = [if ((size(cb.payments) == 1))
473- then true
474- else D("1 payment is required"), if ((cb.payments[0].assetId == unit))
475- then true
476- else D("invalid asset"), if ((cb.payments[0].amount == an()))
477- then true
478- else D("invalid amount"), if (aU(aS, aT))
479- then true
480- else D("pair is not allowed"), if ((bq == 2))
481- then true
482- else D("leverage is not allowed"), if ((getInteger(T, aF(ay)) == unit))
483- then true
484- else D("account is already exists"), if ((aq() > cs))
485- then true
486- else D(("accounts limit is " + toString(aq())))]
487- if ((ct == ct))
488- then {
489- let ce = [ScriptTransfer(T, an(), unit)]
490- $Tuple2(ce, [invoke(T, "integerEntry", [aF(ay), aD], nil), invoke(T, "binaryEntry", [aM(), (aN() + ay)], nil), invoke(T, "binaryEntry", [aO(ck), (aQ(ck) + ay)], nil), invoke(T, "binaryEntry", [aH(ay), ae], nil), invoke(T, "stringEntry", [aI(ay), cq], nil), invoke(T, "stringEntry", [aJ(ay), cr], nil), invoke(T, "integerEntry", [ax(ay), bq], nil)])
491- }
492- else throw("Strict value is not equal to itself.")
493- }
494- else throw("Strict value is not equal to itself.")
495- }
70+@Callable(p)
71+func stringEntry (x,y) = if (if (!(e))
72+ then r(p)
73+ else false)
74+ then $Tuple2([StringEntry(x, y)], x)
75+ else h("not allowed")
49676
49777
49878
499-@Callable(cb)
500-func editAccount (ae,ca) = {
501- let as = valueOrErrorMessage(addressFromString(ca[0]), B("invalid account address"))
502- let cq = ca[1]
503- let cr = ca[2]
504- let bq = valueOrErrorMessage(parseInt(ca[3]), B("invalid leverage"))
505- let ay = bM(as)
506- let cu = bO(as)
507- let aS = G(cq)
508- let aT = G(cr)
509- let ct = [if (!(Y))
510- then true
511- else D("not allowed"), ac(cb.caller), if ((ae == cu))
512- then true
513- else D("caller is not an account owner"), if (aU(aS, aT))
514- then true
515- else D("pair is not allowed"), if ((bq == 2))
516- then true
517- else D("leverage is not allowed"), if ((getInteger(T, aF(ay)) == aE))
518- then true
519- else D("account is not ready")]
520- if ((ct == ct))
521- then $Tuple2(nil, [invoke(T, "stringEntry", [aI(ay), cq], nil), invoke(T, "stringEntry", [aJ(ay), cr], nil), invoke(T, "integerEntry", [ax(ay), bq], nil)])
522- else throw("Strict value is not equal to itself.")
523- }
79+@Callable(p)
80+func integerEntry (x,y) = if (if (!(e))
81+ then r(p)
82+ else false)
83+ then $Tuple2([IntegerEntry(x, y)], x)
84+ else h("not allowed")
52485
52586
52687
527-@Callable(cb)
528-func addAccount (ae,ca) = {
529- let cd = [if (!(Y))
530- then true
531- else D("not allowed"), ac(cb.caller)]
532- if ((cd == cd))
533- then {
534- let cv = fromBase58String(ca[0])
535- let bS = ae
536- let as = addressFromPublicKey(ae)
537- let cw = addressFromPublicKey(cv)
538- let ct = [if ((getBinary(T, aG(as)) == unit))
539- then true
540- else D("account is already exists"), if ({
541- let M = scriptHash(as)
542- if ($isInstanceOf(M, "ByteVector"))
543- then {
544- let cx = M
545- (cx == blake2b256_32Kb(al()))
546- }
547- else false
548- })
549- then true
550- else D("invalid script")]
551- if ((ct == ct))
552- then {
553- let cy = if ((size(aN()) == 0))
554- then $Tuple2(D("requests queue is empty"), nil)
555- else {
556- let ay = take(aN(), j)
557- let bq = valueOrErrorMessage(getInteger(T, ax(ay)), B("request's leverage is undefined"))
558- $Tuple2(nil, [invoke(T, "integerEntry", [aF(ay), aE], nil), invoke(T, "binaryEntry", [aK(ay), bS], nil), invoke(T, "binaryEntry", [aM(), drop(aN(), j)], nil), invoke(T, "stringEntry", [aL(as), toBase58String(ay)], nil), invoke(T, "transferWaves", [cw.bytes, an()], nil), invoke(T, "integerEntry", [aw(as), bq], nil)])
559- }
560- let ce = cy._1
561- let cf = cy._2
562- $Tuple2(ce, (cf ++ [invoke(T, "binaryEntry", [aG(as), cv], nil)]))
563- }
564- else throw("Strict value is not equal to itself.")
565- }
566- else throw("Strict value is not equal to itself.")
567- }
88+@Callable(p)
89+func booleanEntry (x,y) = if (if (!(e))
90+ then r(p)
91+ else false)
92+ then $Tuple2([BooleanEntry(x, y)], x)
93+ else h("not allowed")
56894
56995
57096
571-@Callable(cb)
572-func withdraw (ae,ca) = {
573- let ct = [if (!(Y))
574- then true
575- else D("not allowed"), ac(cb.caller)]
576- if ((ct == ct))
577- then {
578- let ck = addressFromPublicKey(ae)
579- let as = valueOrErrorMessage(addressFromString(ca[0]), B("invalid account address"))
580- let cz = valueOrErrorMessage(parseInt(ca[1]), B("invalid amount"))
581- let K = G(ca[2])
582- let cA = [invoke(as, "transferAsset", [ck.bytes, cz, K], nil)]
583- $Tuple2(nil, cA)
584- }
585- else throw("Strict value is not equal to itself.")
586- }
97+@Callable(p)
98+func binaryEntry (x,y) = if (if (!(e))
99+ then r(p)
100+ else false)
101+ then $Tuple2([BinaryEntry(x, y)], x)
102+ else h("not allowed")
587103
588104
589105
590-@Callable(cb)
591-func deposit (ae,ca) = {
592- let cB = bZ(ae, ca, cb)
593- let ce = cB._1
594- let cf = cB._2
595- $Tuple2(ce, cf)
596- }
106+@Callable(p)
107+func deleteEntry (x) = if (if (!(e))
108+ then r(p)
109+ else false)
110+ then $Tuple2([DeleteEntry(x)], x)
111+ else h("not allowed")
597112
598113
599114
600-@Callable(cb)
601-func borrow (ae,ca) = {
602- let cC = cg(ae, ca, cb)
603- let ce = cC._1
604- let cf = cC._2
605- $Tuple2(ce, cf)
606- }
115+@Callable(p)
116+func reissue (z,A,B) = if (if (!(e))
117+ then r(p)
118+ else false)
119+ then $Tuple2([Reissue(z, A, B)], A)
120+ else h("not allowed")
607121
608122
609123
610-@Callable(cb)
611-func depositAndBorrow (ae,ca) = {
612- let as = ca[0]
613- let cD = bZ(ae, [as], cb)
614- let cE = cD._1
615- let cF = cD._2
616- let cG = cg(ae, ca, cb)
617- let cH = cG._1
618- let cI = cG._2
619- $Tuple2((cE ++ cH), (cF ++ cI))
620- }
124+@Callable(p)
125+func burn (z,A) = if (if (!(e))
126+ then r(p)
127+ else false)
128+ then $Tuple2([Burn(z, A)], A)
129+ else h("not allowed")
621130
622131
623132
624-@Callable(cb)
625-func repay (ae,ca) = {
626- let cd = [if (!(Y))
627- then true
628- else D("not allowed"), ac(cb.caller)]
629- if ((cd == cd))
630- then $Tuple2(nil, unit)
631- else throw("Strict value is not equal to itself.")
632- }
133+@Callable(p)
134+func transferAsset (C,A,z) = if (if (!(e))
135+ then r(p)
136+ else false)
137+ then $Tuple2([ScriptTransfer(Address(C), A, z)], A)
138+ else h("not allowed")
633139
634140
635141
636-@Callable(cb)
637-func setPairAllowance (ae,ca) = {
638- let cd = [if (!(Y))
639- then true
640- else D("not allowed"), ac(cb.caller), ad(ae)]
641- if ((cd == cd))
642- then {
643- let cq = ca[0]
644- let cr = ca[1]
645- let cJ = ca[2]
646- let aS = G(cq)
647- let aT = G(cr)
648- let cK = (cJ == "true")
649- let cA = [invoke(T, "booleanEntry", [aR(aS, aT), cK], nil)]
650- $Tuple2(nil, cA)
142+@Callable(p)
143+func transferAssets (C,D,E) = if (if (!(e))
144+ then r(p)
145+ else false)
146+ then {
147+ func F (G,H) = {
148+ let I = G
149+ let J = I._1
150+ let K = I._2
151+ let L = ScriptTransfer(Address(C), E[K], D[K])
152+ let M = (J :+ L)
153+ $Tuple2(M, (K + 1))
651154 }
652- else throw("Strict value is not equal to itself.")
653- }
155+
156+ let N = {
157+ let O = D
158+ let P = size(O)
159+ let Q = $Tuple2(nil, 0)
160+ func R (S,T) = if ((T >= P))
161+ then S
162+ else F(S, O[T])
163+
164+ func U (S,T) = if ((T >= P))
165+ then S
166+ else throw("List size exceeds 10")
167+
168+ U(R(R(R(R(R(R(R(R(R(R(Q, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
169+ }
170+ let V = N._1
171+ let W = N._2
172+ $Tuple2(V, unit)
173+ }
174+ else h("not allowed")
654175
655176
656177
657-@Callable(cb)
658-func addSyntheticAsset (ae,ca) = {
659- let aA = G(ca[0])
660- let aC = G(ca[1])
661- let cd = [if (!(Y))
662- then true
663- else D("not allowed"), ac(cb.caller), ad(ae), if ((getString(T, az(aA)) == unit))
664- then true
665- else D("invalid base asset"), if ((getString(T, aB(aC)) == unit))
666- then true
667- else D("invalid synthetic asset")]
668- if ((cd == cd))
669- then {
670- let cA = [invoke(T, "stringEntry", [az(aA), I(aC)], nil), invoke(T, "stringEntry", [aB(aC), I(aA)], nil)]
671- $Tuple2(nil, cA)
672- }
673- else throw("Strict value is not equal to itself.")
674- }
178+@Callable(p)
179+func transferWaves (C,A) = if (if (!(e))
180+ then r(p)
181+ else false)
182+ then $Tuple2([ScriptTransfer(Address(C), A, unit)], A)
183+ else h("not allowed")
675184
676185
677186
678-@Callable(cb)
679-func doShutdown (ae,ca) = {
680- let ct = [ac(cb.caller), ad(ae)]
681- if ((ct == ct))
682- then {
683- let cA = [invoke(T, "booleanEntry", [q, true], nil)]
684- $Tuple2(nil, cA)
685- }
686- else throw("Strict value is not equal to itself.")
187+@Callable(p)
188+func call (X,Y) = {
189+ let Z = if ((p.callerPublicKey == base58'11111111111111111111111111111111'))
190+ then nil
191+ else p.payments
192+ let aa = reentrantInvoke(n, X, [p.callerPublicKey, Y], Z)
193+ $Tuple2(nil, aa)
687194 }
688195
689-
690-
691-@Callable(cb)
692-func getAccountInfoREADONLY (ae,ca) = {
693- let ct = [ac(cb.caller)]
694- if ((ct == ct))
695- then {
696- let as = valueOrErrorMessage(addressFromString(ca[0]), B("invalid account address"))
697- let cL = bQ(as)
698- $Tuple2(nil, cL)
699- }
700- else throw("Strict value is not equal to itself.")
701- }
702-
703-
704-
705-@Callable(cb)
706-func getUserInfoREADONLY (ae,ca) = {
707- let ct = [ac(cb.caller)]
708- if ((ct == ct))
709- then {
710- let ck = valueOrErrorMessage(addressFromString(ca[0]), B("invalid user address"))
711- let cM = valueOrElse(getBinary(T, aO(ck)), base58'')
712- let cs = (size(cM) / j)
713- func cN (cO,cP) = {
714- let cQ = cO
715- let cR = cQ._1
716- let cS = cQ._2
717- let cT = cQ._3
718- if ((cT > cP))
719- then {
720- let ay = take(cS, j)
721- let cU = drop(cS, j)
722- let bS = valueOrErrorMessage(getBinary(T, aK(ay)), "kRequestIdToAccountPublicKey not found")
723- let as = addressFromPublicKey(bS)
724- let cL = bQ(as)
725- $Tuple3((cR :+ cL), cU, cT)
726- }
727- else cO
728- }
729-
730- let cV = {
731- let cW = l
732- let cX = size(cW)
733- let cY = $Tuple3(nil, cM, cs)
734- func cZ (da,db) = if ((db >= cX))
735- then da
736- else cN(da, cW[db])
737-
738- func dc (da,db) = if ((db >= cX))
739- then da
740- else throw("List size exceeds 20")
741-
742- dc(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
743- }
744- let cR = cV._1
745- let dd = cV._2
746- let de = cV._3
747- $Tuple2(nil, cR)
748- }
749- else throw("Strict value is not equal to itself.")
750- }
751-
752-
753-
754-@Callable(cb)
755-func getPairSettingsInfoREADONLY (ae,ca) = {
756- let df = G(ca[0])
757- let dg = G(ca[1])
758- let dh = aX(df, dg)
759- func di (cO,dj) = {
760- let dk = aY(df, dg, dj)
761- let dl = getStringValue(T, dk)
762- let dm = split(dl, a)
763- let bd = parseInt(dj)
764- let dn = parseInt(dm[1])
765- let do = parseInt(dm[2])
766- let dp = parseInt(dm[3])
767- (cO :+ $Tuple4(bd, dn, do, dp))
768- }
769-
770- let cL = {
771- let cW = dh
772- let cX = size(cW)
773- let cY = nil
774- func cZ (da,db) = if ((db >= cX))
775- then da
776- else di(da, cW[db])
777-
778- func dc (da,db) = if ((db >= cX))
779- then da
780- else throw("List size exceeds 20")
781-
782- dc(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
783- }
784- $Tuple2(nil, cL)
785- }
786-
787-
788-
789-@Callable(cb)
790-func editPairSettings (ae,ca) = {
791- let ct = [ac(cb.caller), ad(ae)]
792- if ((ct == ct))
793- then {
794- let df = G(ca[0])
795- let dg = G(ca[1])
796- let bd = ca[2]
797- let dn = ca[3]
798- let do = ca[4]
799- let dp = ca[5]
800- let dq = aW(df, dg)
801- let dk = aY(df, dg, bd)
802- let dh = aX(df, dg)
803- let dr = {
804- let M = indexOf(dh, bd)
805- if ($isInstanceOf(M, "Int"))
806- then {
807- let ds = M
808- dh
809- }
810- else (dh :+ bd)
811- }
812- let dt = [valueOrErrorMessage(parseInt(bd), B("price value is not an Int")), valueOrErrorMessage(dn, B("maxLeverage value is not an Int")), valueOrErrorMessage(do, B("initialMargin value is not an Int")), valueOrErrorMessage(dp, B("maintenanceMargin value is not an Int")), if ((20 >= size(dr)))
813- then true
814- else D("exceeded max prices list size (20)")]
815- if ((dt == dt))
816- then {
817- let du = makeString(["%s%s%s", dn, do, dp], a)
818- let cA = [invoke(T, "stringEntry", [aW(df, dg), makeString(dr, a)], nil), invoke(T, "stringEntry", [aY(df, dg, bd), du], nil)]
819- $Tuple2(nil, cA)
820- }
821- else throw("Strict value is not equal to itself.")
822- }
823- else throw("Strict value is not equal to itself.")
824- }
825-
826-
827-
828-@Callable(cb)
829-func deletePairSettings (ae,ca) = {
830- let ct = [ac(cb.caller), ad(ae)]
831- if ((ct == ct))
832- then {
833- let df = G(ca[0])
834- let dg = G(ca[1])
835- let bd = ca[2]
836- let dk = aY(df, dg, bd)
837- let dq = aW(df, dg)
838- let dh = aX(df, dg)
839- let dr = {
840- let M = indexOf(dh, bd)
841- if ($isInstanceOf(M, "Int"))
842- then {
843- let ds = M
844- removeByIndex(dh, ds)
845- }
846- else dh
847- }
848- let cA = [invoke(T, "deleteEntry", [dk], nil), if ((size(dr) == 0))
849- then invoke(T, "deleteEntry", [aW(df, dg)], nil)
850- else invoke(T, "stringEntry", [aW(df, dg), makeString(dr, a)], nil)]
851- $Tuple2(nil, cA)
852- }
853- else throw("Strict value is not equal to itself.")
854- }
855-
856-
857-@Verifier(dv)
858-func dw () = if (if (isDefined(S))
859- then isDefined(getString(T, m))
860- else false)
861- then {
862- let M = getString(T, m)
863- if ($isInstanceOf(M, "String"))
864- then {
865- let ai = M
866- let dx = n(toString(this), toBase58String(dv.id))
867- let bU = valueOrElse(getBoolean(addressFromStringValue(ai), dx), false)
868- bU
869- }
870- else false
871- }
872- else sigVerify(dv.bodyBytes, dv.proofs[0], dv.senderPublicKey)
873196
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 7 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
6-let b = take(drop(this.bytes, 1), 1)
6+let b = "WAVES"
77
8-let c = base58'2W'
8+let c = "meme_im_factory.ride"
99
10-let d = "futures_calculator.ride"
10+let d = "%s__shutdown"
1111
12-let e = 100000000
12+let e = valueOrElse(getBoolean(d), false)
1313
14-let f = toBigInt(1000000000000000000)
15-
16-let g = 8
17-
18-let h = 6
19-
20-let i = "WAVES"
21-
22-let j = 32
23-
24-let k = toBigInt(0)
25-
26-let l = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
27-
28-let m = "%s__multisig"
29-
30-func n (o,p) = makeString(["%s__status", o, p], a)
14+func f (g) = ((c + ": ") + g)
3115
3216
33-let q = "%s__shutdown"
34-
35-let r = "%s__publicKeys"
36-
37-let s = "%s__matcherPublicKey"
38-
39-func t (u,v) = fraction(toBigInt(u), f, toBigInt(v))
17+func h (g) = throw(f(g))
4018
4119
42-func w (x,y) = toInt(fraction(x, toBigInt(y), f))
20+func i (j) = isDefined(addressFromString(j))
4321
4422
45-func z (A) = isDefined(addressFromString(A))
23+let k = "calculator__address"
4624
47-
48-func B (C) = ((d + ": ") + C)
49-
50-
51-func D (C) = throw(B(C))
52-
53-
54-func E (F,C) = if ((F >= 0))
55- then F
56- else D((C + " value should be positive"))
57-
58-
59-func G (H) = if ((H == i))
60- then unit
61- else fromBase58String(H)
62-
63-
64-func I (H) = if ((H == unit))
65- then i
66- else toBase58String(value(H))
67-
68-
69-func J (K) = valueOrErrorMessage(assetInfo(K), B("invalid asset info"))
70-
71-
72-func L (K) = {
73- let M = K
74- if ($isInstanceOf(M, "Unit"))
75- then g
76- else if ($isInstanceOf(M, "ByteVector"))
77- then {
78- let K = M
79- J(K).decimals
80- }
81- else throw("Match error")
82- }
83-
84-
85-func N (K,A) = {
86- let M = K
87- if ($isInstanceOf(M, "Unit"))
88- then wavesBalance(A).available
89- else if ($isInstanceOf(M, "ByteVector"))
90- then {
91- let K = M
92- assetBalance(A, K)
93- }
94- else throw("Match error")
95- }
96-
97-
98-func O (P) = pow(10, 0, P, 0, 0, DOWN)
99-
100-
101-func Q (K) = O(L(K))
102-
103-
104-let R = "%s__factoryAddress"
105-
106-let S = {
107- let M = getString(this, R)
108- if ($isInstanceOf(M, "String"))
25+let l = {
26+ let m = getString(this, k)
27+ if ($isInstanceOf(m, "String"))
10928 then {
110- let C = M
111- addressFromString(C)
29+ let g = m
30+ addressFromString(g)
11231 }
113- else if ($isInstanceOf(M, "Unit"))
32+ else if ($isInstanceOf(m, "Unit"))
11433 then unit
11534 else throw("Match error")
11635 }
11736
118-let T = valueOrErrorMessage(S, B("invalid factory address"))
37+let n = valueOrErrorMessage(l, f("invalid calculator address"))
11938
120-let U = "%s__usdtAssetId"
121-
122-let V = {
123- let M = getString(T, U)
124- if ($isInstanceOf(M, "String"))
125- then {
126- let C = M
127- G(C)
128- }
129- else if ($isInstanceOf(M, "Unit"))
130- then unit
131- else throw("Match error")
132- }
133-
134-let W = valueOrErrorMessage(V, B("invalid usdt asset id"))
135-
136-let X = "%s__calculatorAddress"
137-
138-let Y = valueOrElse(getBoolean(T, q), false)
139-
140-func Z (aa,A) = if ((aa == A))
39+func o (p,j) = if ((p.caller == j))
14140 then true
142- else D("permission denied")
41+ else h("permission denied")
14342
14443
145-func ab (aa) = Z(aa, this)
44+func q (p) = o(p, this)
14645
14746
148-func ac (aa) = Z(aa, T)
47+func r (p) = o(p, n)
14948
15049
151-func ad (ae) = {
152- let af = getString(T, m)
153- let ag = {
154- let M = af
155- if ($isInstanceOf(M, "String"))
156- then {
157- let ah = M
158- let ai = addressFromStringValue(ah)
159- let aj = split(getStringValue(ai, r), a)
160- containsElement(aj, toBase58String(ae))
161- }
162- else (addressFromPublicKey(ae) == T)
163- }
164- if (ag)
165- then true
166- else D("not allowed")
167- }
50+func s (t) = if ((t == b))
51+ then unit
52+ else fromBase58String(t)
16853
16954
170-let ak = "%s__accountScript"
171-
172-func al () = valueOrErrorMessage(getBinary(T, ak), B("account script is not set"))
55+func u (t) = if ((t == unit))
56+ then b
57+ else toBase58String(value(t))
17358
17459
175-let am = "%s__rewardAmount"
176-
177-func an () = valueOrErrorMessage(getInteger(T, am), B("reward amount is not set"))
178-
179-
180-let ao = "%s__accountsLimit"
181-
182-let ap = 20
183-
184-func aq () = valueOrElse(getInteger(T, ao), ap)
185-
186-
187-func ar (as) = makeString(["%s%s", "deposited", toString(as)], a)
188-
189-
190-func at (as) = getInteger(T, ar(as))
191-
192-
193-func au (as,K) = makeString(["%s%s%s", "credit", toString(as), I(K)], a)
194-
195-
196-func av (as,K) = getInteger(T, au(as, K))
197-
198-
199-func aw (as) = makeString(["%s%s", "leverage", toString(as)], a)
200-
201-
202-func ax (ay) = makeString(["%s%s", "requestLeverage", toBase58String(ay)], a)
203-
204-
205-func az (aA) = makeString(["%s%s", "syntheticAssetId", I(aA)], a)
206-
207-
208-func aB (aC) = makeString(["%s%s", "baseAssetId", I(aC)], a)
209-
210-
211-let aD = 0
212-
213-let aE = 1
214-
215-func aF (ay) = makeString(["%s%s", toBase58String(ay), "status"], a)
216-
217-
218-func aG (as) = makeString(["%s%s", toString(as), "creatorPublicKey"], a)
219-
220-
221-func aH (ay) = makeString(["%s%s", toBase58String(ay), "ownerPublicKey"], a)
222-
223-
224-func aI (ay) = makeString(["%s%s", toBase58String(ay), "amountAssetId"], a)
225-
226-
227-func aJ (ay) = makeString(["%s%s", toBase58String(ay), "priceAssetId"], a)
228-
229-
230-func aK (ay) = makeString(["%s%s", toBase58String(ay), "requestIdToAccountPublicKey"], a)
231-
232-
233-func aL (as) = makeString(["%s%s", toString(as), "accountAddressToRequestId"], a)
234-
235-
236-func aM () = makeString(["%s", "requestsQueue"], a)
237-
238-
239-func aN () = valueOrElse(getBinary(T, aM()), base58'')
240-
241-
242-func aO (aP) = makeString(["%s%s", "requests", toString(aP)], a)
243-
244-
245-func aQ (aP) = valueOrElse(getBinary(T, aO(aP)), base58'')
246-
247-
248-func aR (aS,aT) = makeString(["%s%s%s", I(aS), I(aT), "pairAllowed"], a)
249-
250-
251-func aU (aS,aT) = valueOrElse(getBoolean(T, aR(aS, aT)), false)
252-
253-
254-func aV (K) = makeString(["%s", I(K)], a)
255-
256-
257-func aW (aS,aT) = makeString(["%s%s%s", I(aS), I(aT), "pairSettingPrices"], a)
258-
259-
260-func aX (aS,aT) = {
261- let M = getString(T, aW(aS, aT))
262- if ($isInstanceOf(M, "String"))
263- then {
264- let C = M
265- split(C, a)
266- }
267- else nil
268- }
269-
270-
271-func aY (aS,aT,aZ) = makeString(["%s%s%d%s", I(aS), I(aT), aZ, "settings"], a)
272-
273-
274-func ba (K) = {
275- let bb = fromBase58String(valueOrErrorMessage(getString(T, s), B("invalid matcher public key")))
276- let bc = addressFromPublicKey(bb)
277- let bd = valueOrErrorMessage(getInteger(bc, aV(K)), B(("invalid price, assetId = " + I(K))))
278- bd
279- }
280-
281-
282-func be (bf,bg,bh) = (fraction(bf, bh, f) + bg)
283-
284-
285-func bi (bj,bk,bh) = (fraction(bj, bh, f) + bk)
286-
287-
288-func bl (bm,bn) = (bm - bn)
289-
290-
291-func bo (bp,bq,bn) = (fraction(bp, bq, f) - bn)
292-
293-
294-func br (bs,bt) = if ((bs > k))
295- then (bs - bt)
296- else k
297-
298-
299-func bu (bs,bt) = if ((bs > k))
300- then (bt - bs)
301- else k
302-
303-
304-func bv (bw,bx) = if ((bx > k))
305- then max([k, fraction(bw, f, bx)])
306- else k
307-
308-
309-func by (bw,bx) = if ((bx > k))
310- then max([k, fraction(bx, f, bw)])
311- else k
312-
313-
314-func bz (bA,bB,bh,bC) = fraction((fraction(bA, bh, f) + bB), bC, f)
315-
316-
317-func bD (bE,bC,bF) = fraction(bE, bF, bC)
318-
319-
320-func bG (bp,bH,bA,bB,bI,bJ) = {
321- let bK = if ((bA > k))
322- then (((bp - bH) / bA) + bI)
323- else k
324- let bL = if ((bB > k))
325- then (bJ - ((bp - bH) / (bA / bJ)))
326- else k
327- (bK + bL)
328- }
329-
330-
331-func bM (as) = {
332- let ay = fromBase58String(valueOrErrorMessage(getString(T, aL(as)), B("invalid account address: request id is undefined")))
333- ay
334- }
335-
336-
337-func bN (as) = {
338- let ay = bM(as)
339- let aS = G(valueOrErrorMessage(getString(T, aI(ay)), B("invalid amount asset id")))
340- let aT = G(valueOrErrorMessage(getString(T, aJ(ay)), B("invalid amount price id")))
341- $Tuple2(aS, aT)
342- }
343-
344-
345-func bO (as) = {
346- let ay = bM(as)
347- let bP = valueOrErrorMessage(getBinary(T, aH(ay)), B("invalid amount asset id"))
348- bP
349- }
350-
351-
352-func bQ (as) = {
353- let bR = bN(as)
354- let aS = bR._1
355- let aT = bR._2
356- let bq = valueOrErrorMessage(getInteger(T, aw(as)), B("leverage should be defined"))
357- let ay = bM(as)
358- let bS = valueOrErrorMessage(getBinary(T, aK(ay)), "kRequestIdToAccountPublicKey not found")
359- let bT = valueOrElse(at(as), 0)
360- let bh = t(ba(aS), Q(aT))
361- let bf = valueOrElse(getInteger(T, au(as, aS)), 0)
362- let bg = valueOrElse(getInteger(T, au(as, aT)), 0)
363- let bU = valueOrErrorMessage(getInteger(T, aF(ay)), ("status not found. RequestId = " + toBase58String(ay)))
364- let bV = getString(T, az(aS))
365- let bW = {
366- let M = bV
367- if ($isInstanceOf(M, "String"))
368- then {
369- let C = M
370- N(G(C), as)
371- }
372- else 0
373- }
374- let bX = getString(T, az(aT))
375- let bY = {
376- let M = bX
377- if ($isInstanceOf(M, "String"))
378- then {
379- let C = M
380- N(G(C), as)
381- }
382- else 0
383- }
384- $Tuple12(I(aS), I(aT), toString(as), toBase58String(bS), bq, toBase58String(ay), bT, bf, bg, bW, bY, bU)
385- }
386-
387-
388-func bZ (ae,ca,cb) = {
389- let cc = cb.payments[0]
390- let as = valueOrErrorMessage(addressFromString(ca[0]), B("invalid account address"))
391- let cd = [if (!(Y))
392- then true
393- else D("not allowed"), ac(cb.caller), if ((size(cb.payments) == 1))
394- then true
395- else D("1 payment is required"), if ((cc.assetId == W))
396- then true
397- else D("invalid asset"), if ((getInteger(T, aF(bM(as))) == aE))
398- then true
399- else D("account is not ready")]
400- if ((cd == cd))
401- then {
402- let ce = [ScriptTransfer(as, cc.amount, cc.assetId)]
403- let cf = [invoke(T, "integerEntry", [ar(as), (valueOrElse(at(as), 0) + cc.amount)], nil)]
404- $Tuple2(ce, cf)
405- }
406- else throw("Strict value is not equal to itself.")
407- }
408-
409-
410-func cg (ae,ca,cb) = {
411- let as = valueOrErrorMessage(addressFromString(ca[0]), B("invalid account address"))
412- let ch = G(ca[1])
413- let ci = E(valueOrErrorMessage(parseInt(ca[2]), B("invalid requested amount")), "requested amount")
414- let cj = bO(as)
415- let ck = addressFromPublicKey(ae)
416- let cd = [if (!(Y))
417- then true
418- else D("not allowed"), ac(cb.caller), if ((ae == cj))
419- then true
420- else D("can be called by account owner only")]
421- if ((cd == cd))
422- then {
423- let aS = bN(as)._1
424- let bT = t(valueOrElse(at(as), 0), Q(W))
425- let bh = t(ba(aS), Q(W))
426- let bf = t(valueOrElse(getInteger(T, au(as, aS)), 0), Q(aS))
427- let bg = t(valueOrElse(getInteger(T, au(as, W)), 0), Q(W))
428- let bn = be(bf, bg, bh)
429- let bq = t(valueOrErrorMessage(getInteger(T, aw(as)), B("leverage should be defined")), 1)
430- let cl = bo(bT, bq, bn)
431- let cm = if ((ch == aS))
432- then w(fraction(cl, f, bh), Q(aS))
433- else if ((ch == W))
434- then w(cl, Q(W))
435- else D("invalid requested asset id")
436- let aC = G(valueOrErrorMessage(getString(T, az(ch)), B("synthetic asset for requested asset is undefined")))
437- let cn = if ((cm >= ci))
438- then ci
439- else D(("credit available = " + toString(cm)))
440- let cf = [invoke(T, "integerEntry", [au(as, ch), (valueOrElse(av(as, ch), 0) + cn)], nil), invoke(T, "transferAsset", [as.bytes, cn, aC], nil)]
441- $Tuple2(nil, [cf, cm])
442- }
443- else throw("Strict value is not equal to itself.")
444- }
445-
446-
447-@Callable(cb)
448-func init (co) = {
449- let cp = ab(cb.caller)
450- if ((cp == cp))
451- then $Tuple2([StringEntry(R, co)], unit)
60+@Callable(p)
61+func init (v) = {
62+ let w = q(p)
63+ if ((w == w))
64+ then $Tuple2([StringEntry(k, v)], unit)
45265 else throw("Strict value is not equal to itself.")
45366 }
45467
45568
45669
457-@Callable(cb)
458-func requestAccount (ae,ca) = {
459- let cd = [if (!(Y))
460- then true
461- else D("not allowed"), ac(cb.caller)]
462- if ((cd == cd))
463- then {
464- let cq = ca[0]
465- let cr = ca[1]
466- let bq = valueOrErrorMessage(parseInt(ca[2]), B("invalid leverage"))
467- let ck = addressFromPublicKey(ae)
468- let ay = sha256(cb.transactionId)
469- let aS = G(cq)
470- let aT = G(cr)
471- let cs = (size(aO(ck)) / j)
472- let ct = [if ((size(cb.payments) == 1))
473- then true
474- else D("1 payment is required"), if ((cb.payments[0].assetId == unit))
475- then true
476- else D("invalid asset"), if ((cb.payments[0].amount == an()))
477- then true
478- else D("invalid amount"), if (aU(aS, aT))
479- then true
480- else D("pair is not allowed"), if ((bq == 2))
481- then true
482- else D("leverage is not allowed"), if ((getInteger(T, aF(ay)) == unit))
483- then true
484- else D("account is already exists"), if ((aq() > cs))
485- then true
486- else D(("accounts limit is " + toString(aq())))]
487- if ((ct == ct))
488- then {
489- let ce = [ScriptTransfer(T, an(), unit)]
490- $Tuple2(ce, [invoke(T, "integerEntry", [aF(ay), aD], nil), invoke(T, "binaryEntry", [aM(), (aN() + ay)], nil), invoke(T, "binaryEntry", [aO(ck), (aQ(ck) + ay)], nil), invoke(T, "binaryEntry", [aH(ay), ae], nil), invoke(T, "stringEntry", [aI(ay), cq], nil), invoke(T, "stringEntry", [aJ(ay), cr], nil), invoke(T, "integerEntry", [ax(ay), bq], nil)])
491- }
492- else throw("Strict value is not equal to itself.")
493- }
494- else throw("Strict value is not equal to itself.")
495- }
70+@Callable(p)
71+func stringEntry (x,y) = if (if (!(e))
72+ then r(p)
73+ else false)
74+ then $Tuple2([StringEntry(x, y)], x)
75+ else h("not allowed")
49676
49777
49878
499-@Callable(cb)
500-func editAccount (ae,ca) = {
501- let as = valueOrErrorMessage(addressFromString(ca[0]), B("invalid account address"))
502- let cq = ca[1]
503- let cr = ca[2]
504- let bq = valueOrErrorMessage(parseInt(ca[3]), B("invalid leverage"))
505- let ay = bM(as)
506- let cu = bO(as)
507- let aS = G(cq)
508- let aT = G(cr)
509- let ct = [if (!(Y))
510- then true
511- else D("not allowed"), ac(cb.caller), if ((ae == cu))
512- then true
513- else D("caller is not an account owner"), if (aU(aS, aT))
514- then true
515- else D("pair is not allowed"), if ((bq == 2))
516- then true
517- else D("leverage is not allowed"), if ((getInteger(T, aF(ay)) == aE))
518- then true
519- else D("account is not ready")]
520- if ((ct == ct))
521- then $Tuple2(nil, [invoke(T, "stringEntry", [aI(ay), cq], nil), invoke(T, "stringEntry", [aJ(ay), cr], nil), invoke(T, "integerEntry", [ax(ay), bq], nil)])
522- else throw("Strict value is not equal to itself.")
523- }
79+@Callable(p)
80+func integerEntry (x,y) = if (if (!(e))
81+ then r(p)
82+ else false)
83+ then $Tuple2([IntegerEntry(x, y)], x)
84+ else h("not allowed")
52485
52586
52687
527-@Callable(cb)
528-func addAccount (ae,ca) = {
529- let cd = [if (!(Y))
530- then true
531- else D("not allowed"), ac(cb.caller)]
532- if ((cd == cd))
533- then {
534- let cv = fromBase58String(ca[0])
535- let bS = ae
536- let as = addressFromPublicKey(ae)
537- let cw = addressFromPublicKey(cv)
538- let ct = [if ((getBinary(T, aG(as)) == unit))
539- then true
540- else D("account is already exists"), if ({
541- let M = scriptHash(as)
542- if ($isInstanceOf(M, "ByteVector"))
543- then {
544- let cx = M
545- (cx == blake2b256_32Kb(al()))
546- }
547- else false
548- })
549- then true
550- else D("invalid script")]
551- if ((ct == ct))
552- then {
553- let cy = if ((size(aN()) == 0))
554- then $Tuple2(D("requests queue is empty"), nil)
555- else {
556- let ay = take(aN(), j)
557- let bq = valueOrErrorMessage(getInteger(T, ax(ay)), B("request's leverage is undefined"))
558- $Tuple2(nil, [invoke(T, "integerEntry", [aF(ay), aE], nil), invoke(T, "binaryEntry", [aK(ay), bS], nil), invoke(T, "binaryEntry", [aM(), drop(aN(), j)], nil), invoke(T, "stringEntry", [aL(as), toBase58String(ay)], nil), invoke(T, "transferWaves", [cw.bytes, an()], nil), invoke(T, "integerEntry", [aw(as), bq], nil)])
559- }
560- let ce = cy._1
561- let cf = cy._2
562- $Tuple2(ce, (cf ++ [invoke(T, "binaryEntry", [aG(as), cv], nil)]))
563- }
564- else throw("Strict value is not equal to itself.")
565- }
566- else throw("Strict value is not equal to itself.")
567- }
88+@Callable(p)
89+func booleanEntry (x,y) = if (if (!(e))
90+ then r(p)
91+ else false)
92+ then $Tuple2([BooleanEntry(x, y)], x)
93+ else h("not allowed")
56894
56995
57096
571-@Callable(cb)
572-func withdraw (ae,ca) = {
573- let ct = [if (!(Y))
574- then true
575- else D("not allowed"), ac(cb.caller)]
576- if ((ct == ct))
577- then {
578- let ck = addressFromPublicKey(ae)
579- let as = valueOrErrorMessage(addressFromString(ca[0]), B("invalid account address"))
580- let cz = valueOrErrorMessage(parseInt(ca[1]), B("invalid amount"))
581- let K = G(ca[2])
582- let cA = [invoke(as, "transferAsset", [ck.bytes, cz, K], nil)]
583- $Tuple2(nil, cA)
584- }
585- else throw("Strict value is not equal to itself.")
586- }
97+@Callable(p)
98+func binaryEntry (x,y) = if (if (!(e))
99+ then r(p)
100+ else false)
101+ then $Tuple2([BinaryEntry(x, y)], x)
102+ else h("not allowed")
587103
588104
589105
590-@Callable(cb)
591-func deposit (ae,ca) = {
592- let cB = bZ(ae, ca, cb)
593- let ce = cB._1
594- let cf = cB._2
595- $Tuple2(ce, cf)
596- }
106+@Callable(p)
107+func deleteEntry (x) = if (if (!(e))
108+ then r(p)
109+ else false)
110+ then $Tuple2([DeleteEntry(x)], x)
111+ else h("not allowed")
597112
598113
599114
600-@Callable(cb)
601-func borrow (ae,ca) = {
602- let cC = cg(ae, ca, cb)
603- let ce = cC._1
604- let cf = cC._2
605- $Tuple2(ce, cf)
606- }
115+@Callable(p)
116+func reissue (z,A,B) = if (if (!(e))
117+ then r(p)
118+ else false)
119+ then $Tuple2([Reissue(z, A, B)], A)
120+ else h("not allowed")
607121
608122
609123
610-@Callable(cb)
611-func depositAndBorrow (ae,ca) = {
612- let as = ca[0]
613- let cD = bZ(ae, [as], cb)
614- let cE = cD._1
615- let cF = cD._2
616- let cG = cg(ae, ca, cb)
617- let cH = cG._1
618- let cI = cG._2
619- $Tuple2((cE ++ cH), (cF ++ cI))
620- }
124+@Callable(p)
125+func burn (z,A) = if (if (!(e))
126+ then r(p)
127+ else false)
128+ then $Tuple2([Burn(z, A)], A)
129+ else h("not allowed")
621130
622131
623132
624-@Callable(cb)
625-func repay (ae,ca) = {
626- let cd = [if (!(Y))
627- then true
628- else D("not allowed"), ac(cb.caller)]
629- if ((cd == cd))
630- then $Tuple2(nil, unit)
631- else throw("Strict value is not equal to itself.")
632- }
133+@Callable(p)
134+func transferAsset (C,A,z) = if (if (!(e))
135+ then r(p)
136+ else false)
137+ then $Tuple2([ScriptTransfer(Address(C), A, z)], A)
138+ else h("not allowed")
633139
634140
635141
636-@Callable(cb)
637-func setPairAllowance (ae,ca) = {
638- let cd = [if (!(Y))
639- then true
640- else D("not allowed"), ac(cb.caller), ad(ae)]
641- if ((cd == cd))
642- then {
643- let cq = ca[0]
644- let cr = ca[1]
645- let cJ = ca[2]
646- let aS = G(cq)
647- let aT = G(cr)
648- let cK = (cJ == "true")
649- let cA = [invoke(T, "booleanEntry", [aR(aS, aT), cK], nil)]
650- $Tuple2(nil, cA)
142+@Callable(p)
143+func transferAssets (C,D,E) = if (if (!(e))
144+ then r(p)
145+ else false)
146+ then {
147+ func F (G,H) = {
148+ let I = G
149+ let J = I._1
150+ let K = I._2
151+ let L = ScriptTransfer(Address(C), E[K], D[K])
152+ let M = (J :+ L)
153+ $Tuple2(M, (K + 1))
651154 }
652- else throw("Strict value is not equal to itself.")
653- }
155+
156+ let N = {
157+ let O = D
158+ let P = size(O)
159+ let Q = $Tuple2(nil, 0)
160+ func R (S,T) = if ((T >= P))
161+ then S
162+ else F(S, O[T])
163+
164+ func U (S,T) = if ((T >= P))
165+ then S
166+ else throw("List size exceeds 10")
167+
168+ U(R(R(R(R(R(R(R(R(R(R(Q, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
169+ }
170+ let V = N._1
171+ let W = N._2
172+ $Tuple2(V, unit)
173+ }
174+ else h("not allowed")
654175
655176
656177
657-@Callable(cb)
658-func addSyntheticAsset (ae,ca) = {
659- let aA = G(ca[0])
660- let aC = G(ca[1])
661- let cd = [if (!(Y))
662- then true
663- else D("not allowed"), ac(cb.caller), ad(ae), if ((getString(T, az(aA)) == unit))
664- then true
665- else D("invalid base asset"), if ((getString(T, aB(aC)) == unit))
666- then true
667- else D("invalid synthetic asset")]
668- if ((cd == cd))
669- then {
670- let cA = [invoke(T, "stringEntry", [az(aA), I(aC)], nil), invoke(T, "stringEntry", [aB(aC), I(aA)], nil)]
671- $Tuple2(nil, cA)
672- }
673- else throw("Strict value is not equal to itself.")
674- }
178+@Callable(p)
179+func transferWaves (C,A) = if (if (!(e))
180+ then r(p)
181+ else false)
182+ then $Tuple2([ScriptTransfer(Address(C), A, unit)], A)
183+ else h("not allowed")
675184
676185
677186
678-@Callable(cb)
679-func doShutdown (ae,ca) = {
680- let ct = [ac(cb.caller), ad(ae)]
681- if ((ct == ct))
682- then {
683- let cA = [invoke(T, "booleanEntry", [q, true], nil)]
684- $Tuple2(nil, cA)
685- }
686- else throw("Strict value is not equal to itself.")
187+@Callable(p)
188+func call (X,Y) = {
189+ let Z = if ((p.callerPublicKey == base58'11111111111111111111111111111111'))
190+ then nil
191+ else p.payments
192+ let aa = reentrantInvoke(n, X, [p.callerPublicKey, Y], Z)
193+ $Tuple2(nil, aa)
687194 }
688195
689-
690-
691-@Callable(cb)
692-func getAccountInfoREADONLY (ae,ca) = {
693- let ct = [ac(cb.caller)]
694- if ((ct == ct))
695- then {
696- let as = valueOrErrorMessage(addressFromString(ca[0]), B("invalid account address"))
697- let cL = bQ(as)
698- $Tuple2(nil, cL)
699- }
700- else throw("Strict value is not equal to itself.")
701- }
702-
703-
704-
705-@Callable(cb)
706-func getUserInfoREADONLY (ae,ca) = {
707- let ct = [ac(cb.caller)]
708- if ((ct == ct))
709- then {
710- let ck = valueOrErrorMessage(addressFromString(ca[0]), B("invalid user address"))
711- let cM = valueOrElse(getBinary(T, aO(ck)), base58'')
712- let cs = (size(cM) / j)
713- func cN (cO,cP) = {
714- let cQ = cO
715- let cR = cQ._1
716- let cS = cQ._2
717- let cT = cQ._3
718- if ((cT > cP))
719- then {
720- let ay = take(cS, j)
721- let cU = drop(cS, j)
722- let bS = valueOrErrorMessage(getBinary(T, aK(ay)), "kRequestIdToAccountPublicKey not found")
723- let as = addressFromPublicKey(bS)
724- let cL = bQ(as)
725- $Tuple3((cR :+ cL), cU, cT)
726- }
727- else cO
728- }
729-
730- let cV = {
731- let cW = l
732- let cX = size(cW)
733- let cY = $Tuple3(nil, cM, cs)
734- func cZ (da,db) = if ((db >= cX))
735- then da
736- else cN(da, cW[db])
737-
738- func dc (da,db) = if ((db >= cX))
739- then da
740- else throw("List size exceeds 20")
741-
742- dc(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
743- }
744- let cR = cV._1
745- let dd = cV._2
746- let de = cV._3
747- $Tuple2(nil, cR)
748- }
749- else throw("Strict value is not equal to itself.")
750- }
751-
752-
753-
754-@Callable(cb)
755-func getPairSettingsInfoREADONLY (ae,ca) = {
756- let df = G(ca[0])
757- let dg = G(ca[1])
758- let dh = aX(df, dg)
759- func di (cO,dj) = {
760- let dk = aY(df, dg, dj)
761- let dl = getStringValue(T, dk)
762- let dm = split(dl, a)
763- let bd = parseInt(dj)
764- let dn = parseInt(dm[1])
765- let do = parseInt(dm[2])
766- let dp = parseInt(dm[3])
767- (cO :+ $Tuple4(bd, dn, do, dp))
768- }
769-
770- let cL = {
771- let cW = dh
772- let cX = size(cW)
773- let cY = nil
774- func cZ (da,db) = if ((db >= cX))
775- then da
776- else di(da, cW[db])
777-
778- func dc (da,db) = if ((db >= cX))
779- then da
780- else throw("List size exceeds 20")
781-
782- dc(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
783- }
784- $Tuple2(nil, cL)
785- }
786-
787-
788-
789-@Callable(cb)
790-func editPairSettings (ae,ca) = {
791- let ct = [ac(cb.caller), ad(ae)]
792- if ((ct == ct))
793- then {
794- let df = G(ca[0])
795- let dg = G(ca[1])
796- let bd = ca[2]
797- let dn = ca[3]
798- let do = ca[4]
799- let dp = ca[5]
800- let dq = aW(df, dg)
801- let dk = aY(df, dg, bd)
802- let dh = aX(df, dg)
803- let dr = {
804- let M = indexOf(dh, bd)
805- if ($isInstanceOf(M, "Int"))
806- then {
807- let ds = M
808- dh
809- }
810- else (dh :+ bd)
811- }
812- let dt = [valueOrErrorMessage(parseInt(bd), B("price value is not an Int")), valueOrErrorMessage(dn, B("maxLeverage value is not an Int")), valueOrErrorMessage(do, B("initialMargin value is not an Int")), valueOrErrorMessage(dp, B("maintenanceMargin value is not an Int")), if ((20 >= size(dr)))
813- then true
814- else D("exceeded max prices list size (20)")]
815- if ((dt == dt))
816- then {
817- let du = makeString(["%s%s%s", dn, do, dp], a)
818- let cA = [invoke(T, "stringEntry", [aW(df, dg), makeString(dr, a)], nil), invoke(T, "stringEntry", [aY(df, dg, bd), du], nil)]
819- $Tuple2(nil, cA)
820- }
821- else throw("Strict value is not equal to itself.")
822- }
823- else throw("Strict value is not equal to itself.")
824- }
825-
826-
827-
828-@Callable(cb)
829-func deletePairSettings (ae,ca) = {
830- let ct = [ac(cb.caller), ad(ae)]
831- if ((ct == ct))
832- then {
833- let df = G(ca[0])
834- let dg = G(ca[1])
835- let bd = ca[2]
836- let dk = aY(df, dg, bd)
837- let dq = aW(df, dg)
838- let dh = aX(df, dg)
839- let dr = {
840- let M = indexOf(dh, bd)
841- if ($isInstanceOf(M, "Int"))
842- then {
843- let ds = M
844- removeByIndex(dh, ds)
845- }
846- else dh
847- }
848- let cA = [invoke(T, "deleteEntry", [dk], nil), if ((size(dr) == 0))
849- then invoke(T, "deleteEntry", [aW(df, dg)], nil)
850- else invoke(T, "stringEntry", [aW(df, dg), makeString(dr, a)], nil)]
851- $Tuple2(nil, cA)
852- }
853- else throw("Strict value is not equal to itself.")
854- }
855-
856-
857-@Verifier(dv)
858-func dw () = if (if (isDefined(S))
859- then isDefined(getString(T, m))
860- else false)
861- then {
862- let M = getString(T, m)
863- if ($isInstanceOf(M, "String"))
864- then {
865- let ai = M
866- let dx = n(toString(this), toBase58String(dv.id))
867- let bU = valueOrElse(getBoolean(addressFromStringValue(ai), dx), false)
868- bU
869- }
870- else false
871- }
872- else sigVerify(dv.bodyBytes, dv.proofs[0], dv.senderPublicKey)
873196

github/deemru/w8io/c3f4982 
68.83 ms