tx · 9Mx9R9aNdJeFJSvvdTZWcgdBHgmTEUQhBRQMw9fafGWz

3MwK6nw9HMwuKbXxu6J1rfecvePPd3JyAje:  -0.02900000 Waves

2022.12.01 15:20 [2341266] smart account 3MwK6nw9HMwuKbXxu6J1rfecvePPd3JyAje > SELF 0.00000000 Waves

{ "type": 13, "id": "9Mx9R9aNdJeFJSvvdTZWcgdBHgmTEUQhBRQMw9fafGWz", "fee": 2900000, "feeAssetId": null, "timestamp": 1669897324749, "version": 1, "sender": "3MwK6nw9HMwuKbXxu6J1rfecvePPd3JyAje", "senderPublicKey": "8JB75GXEKqxmpXc6KVtT9UNqJ3BBSUZDodYD4DU7CUUB", "proofs": [ "647RE6N9t5kb85ho19YrMN1Q8eCWvHW3xLnhUidhBegu9q3UnuV7AiUBD27xAQz9kkayL5WzXGZB4WAx2WLYUPUC" ], "script": "base64:AAIFAAAAAAAAELwIAhIJCgcBAQEBAQgBEgASBAoCCAgSAwoBCBIECgIICBIECgIICBIDCgEIEgAiD2dldFN0cmluZ09yRmFpbCIDa2V5IgNTRVAiCEJVRlNDQUxFIgZzY2FsZTgiCHRocm93RXJyIgNtc2ciCGFzU3RyaW5nIgN2YWwiByRtYXRjaDAiBnZhbFN0ciIdY29udmVydFByaWNlQXNzZXRJbnRvSWRvQXNzZXQiEHByaWNlQXNzZXRBbW91bnQiDnByaWNlQXNzZXRNVUxUIgVwcmljZSIJcHJpY2VNVUxUIgxpZG9Bc3NldE1VTFQiD2JQcmljZUFzc2V0TVVMVCINYklkb0Fzc2V0TVVMVCIOYlByaWNlQXNzZXRCVUYiD2JBbW91bnRBc3NldEJVRiIOSWR4Q2ZnSWRvU3RhcnQiEUlkeENmZ0lkb0R1cmF0aW9uIhBJZHhDZmdDbGFpbVN0YXJ0IhNJZHhDZmdDbGFpbUR1cmF0aW9uIgtJZHhDZmdQcmljZSIPSWR4Q2ZnUHJpY2VNdWx0IhBJZHhDZmdJZG9Bc3NldElkIhJJZHhDZmdJZG9Bc3NldE11bHQiEklkeENmZ1ByaWNlQXNzZXRJZCIUSWR4Q2ZnUHJpY2VBc3NldE11bHQiFUlkeENmZ01pbkludmVzdEFtb3VudCINZnJvbWF0Q29uZmlnUyIIaWRvU3RhcnQiC2lkb0R1cmF0aW9uIgpjbGFpbVN0YXJ0Ig1jbGFpbUR1cmF0aW9uIglwcmljZU11bHQiDGlkb0Fzc2V0SWQ1OCIMaWRvQXNzZXRNdWx0Ig5wcmljZUFzc2V0SWQ1OCIOcHJpY2VBc3NldE11bHQiD21pbkludmVzdEFtb3VudCITdG90YWxJZG9Bc3NldFRvU2VsbCIMZnJvbWF0Q29uZmlnIhFJZHhJbnZUb3RhbEFtb3VudCIVSWR4SW52UmVtYWluaW5nQW1vdW50Ih1JZHhJbnZDbGFpbWVkUHJpY2VBc3NldEFtb3VudCIbSWR4SW52Q2xhaW1lZElkb0Fzc2V0QW1vdW50IhdJZHhJbnZMYXN0Q2xhaW1lZEhlaWdodCIPZm9ybWF0SW52ZXN0b3JTIgt0b3RhbEFtb3VudCIPcmVtYWluaW5nQW1vdW50IhdjbGFpbWVkUHJpY2VBc3NldEFtb3VudCIVY2xhaW1lZElkb0Fzc2V0QW1vdW50IhFsYXN0Q2xhaW1lZEhlaWdodCIOZm9ybWF0SW52ZXN0b3IiE2Zvcm1hdEhpc3RvcnlSZWNvcmQiDmlkb0Fzc2V0QW1vdW50IglrZXlDb25maWciC2tleUludmVzdG9yIgt1c2VyQWRkcmVzcyIJa2V5VG90YWxzIhlrZXlPcGVyYXRpb25IaXN0b3J5UmVjb3JkIgR0eXBlIgZ0eElkNTgiFGtleVVTRE5DbGFpbURpc2FibGVkIhVrZXlVU0ROQ2xhaW1FbmRIZWlnaHQiD2tleVBlcmlvZExlbmd0aCIQa2V5Q3VycmVudFBlcmlvZCIUa2V5UGVyaW9kU3RhcnRIZWlnaHQiCXBlcmlvZE51bSISa2V5UGVyaW9kRW5kSGVpZ2h0Ih9rZXlVc2R0UHJpY2VBc3NldEFsbG93YWJsZVJhdGlvIhdrZXlUb3RhbFBlcmlvZEFsbG93YW5jZSIHYXNzZXRJZCIWa2V5VXNlclBlcmlvZEFsbG93YW5jZSIea2V5UGVyaW9kVG90YWxBdmFpbGFibGVUb0NsYWltIh1rZXlQZXJpb2RVc2VyQXZhaWxhYmxlVG9DbGFpbSIba2V5VXNkdFByaWNlQXNzZXRTdGFibGVQb29sIg5rZXlVc2R0QXNzZXRJZCIUa2V5UHJpY2VBc3NldEJhbGFuY2UiB2FkZHJlc3MiE2tleU1hbmFnZXJQdWJsaWNLZXkiGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5Ig9yZWFkQ29uZmlnQXJyYXkiI3JlYWRUb3RhbHNBcnJheU9yRGVmYXVsdEJ5Q3VzdG9tS2V5IgljdXN0b21LZXkiGHJlYWRUb3RhbHNBcnJheU9yRGVmYXVsdCIacmVhZEludmVzdG9yQXJyYXlPckRlZmF1bHQiF3JlYWRJbnZlc3RvckFycmF5T3JGYWlsIhVJZHhEaWZmVG90YWxJbmNyZW1lbnQiJElkeERpZmZSZW1haW5pbmdQcmljZUFtb3VudEluY3JlbWVudCIiSWR4RGlmZkNsYWltZWRQcmljZUFtb3VudEluY3JlbWVudCIlSWR4RGlmZkNsYWltZWRJZG9Bc3NldEFtb3VudEluY3JlbWVudCILVG90YWxzRW50cnkiCW9yaWdBcnJheSINaW5jcmVtZW50RGlmZiIUbmV3TGFzdENsYWltZWRIZWlnaHQiEXByaWNlQXNzZXRCYWxhbmNlIg5uZXdUb3RhbEFtb3VudCISbmV3UmVtYWluaW5nQW1vdW50IghjZmdBcnJheSIScHJpY2VBc3NldERlY2ltYWxzIiNwcmljZUFzc2V0QmFsYW5jZVByaWNlQXNzZXREZWNpbWFscyIabmV3Q2xhaW1lZFByaWNlQXNzZXRBbW91bnQiGG5ld0NsYWltZWRJZG9Bc3NldEFtb3VudCIHZW50cmllcyIEZGlmZiIXbmV3TG9naWNSZW1haW5pbmdBbW91bnQiG0ludmVzdE9wZXJhdGlvbkhpc3RvcnlFbnRyeSIEdHhJZCIaQ2xhaW1PcGVyYXRpb25IaXN0b3J5RW50cnkiDWludGVybmFsQ2xhaW0iEGNsYWltZWRBc3NldElkNTgiCGNsYWltRW5kIgppZG9Bc3NldElkIgxwcmljZUFzc2V0SWQiDXVzZXJBZGRyZXNzNTgiD29yaWdJbnZlc3RBcnJheSIRaW52ZXN0VG90YWxBbW91bnQiGmludmVzdExhc3RDbGFpbWVkSGVpZ2h0VE1QIhdpbnZlc3RMYXN0Q2xhaW1lZEhlaWdodCIUbmV3Q2xhaW1QZXJpb2RIZWlnaHQiDmNsYWltaW5nQmxvY2tzIhhjbGFpbWluZ1ByaWNlQXNzZXRBbW91bnQiFmNsYWltaW5nSWRvQXNzZXRBbW91bnQiBmlzVVNETiITaXNVU0ROQ2xhaW1EaXNhYmxlZCIGY2hlY2tzIg9pbnRlcm5hbENsYWltVjIiCW91dEFtb3VudCIZdG90YWxVc2VyQXZhaWxhYmxlVG9DbGFpbSIedG90YWxQZXJpb2RQcmljZUFzc2V0QWxsb3dhbmNlIh11c2VyUGVyaW9kUHJpY2VBc3NldEFsbG93YW5jZSIMcGVyaW9kTGVuZ3RoIg1jdXJyZW50UGVyaW9kIht6ZXJvUGVyaW9kRW5kSGVpZ2hJc0RlZmluZWQiDSR0MDEyNzk0MTQ2NjQiFWxhc3RQZXJpb2RTdGFydEhlaWdodCITbGFzdFBlcmlvZEVuZEhlaWdodCINJHQwMTMwNTQxMzc1OSIUdXBkYXRlZEN1cnJlbnRQZXJpb2QiC3BlcmlvZFN0YXJ0IhdibG9ja3NUb0xhc3RQZXJpb2RTdGFydCIJcGVyaW9kRW5kIhV6ZXJvUGVyaW9kU3RhcnRIZWlnaHQiE3plcm9QZXJpb2RFbmRIZWlnaHQiDSR0MDE0MDE0MTQzOTYiG3BlcmlvZFRvdGFsQXZhaWxhYmxlVG9DbGFpbSIacGVyaW9kVXNlckF2YWlsYWJsZVRvQ2xhaW0iGXBlcmlvZE1pbkF2YWlsYWJsZVRvQ2xhaW0iHHVzZHRQcmljZUFzc2V0QWxsb3dhYmxlUmF0aW8iG3B1dE9uZVRrblYyUHJpY2VBc3NldEFtb3VudCINJHQwMTU0MTkxNTY3MiIBQCIFYm9udXMiCWZlZUFtb3VudCIIbHBBbW91bnQiC3VzZHRBc3NldElkIg0kdDAxNTczNDE1OTUyIhRnZXRPbmVUa25WMkZlZUFtb3VudCIKdXNkdEFtb3VudCIaY3VycmVudFVzZHRQcmljZUFzc2V0UmF0aW8iE2VuZFBlcmlvZEJsb2Nrc0xlZnQiFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQiAXMiHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0IgttdXN0TWFuYWdlciIBaSICcGQiAnBrIgZpZG9FbmQiA3BtdCIMaWRvQXNzZXRJbmZvIg5wcmljZUFzc2V0SW5mbyIPb3JpZ1RvdGFsc0FycmF5Igp0b3RhbHNEaWZmIg5taW5JdmVzdEFtb3VudCIKcG10QXNzZXRJZCIJcG10QW1vdW50IhFvcmlnSW52ZXN0b3JBcnJheSITbmV3UHJpY2VUb3RhbEFtb3VudCIWcmVxdWlyZWRJZG9Bc3NldEFtb3VudCIPY2FsbGVyQWRkcmVzczU4IhBjbGFpbVJlc3VsdFR1cGxlIgpvdXRBc3NldElkIhpjbGFpbWVkUHJpY2VBbW91bnRGcm9tRGlmZiIdY2xhaW1lZElkb0Fzc2V0QW1vdW50RnJvbURpZmYiDSR0MDIxODYxMjIzMDUiInVwZGF0ZWRQZXJpb2RUb3RhbEF2YWlsYWJsZVRvQ2xhaW0iIXVwZGF0ZWRQZXJpb2RVc2VyQXZhaWxhYmxlVG9DbGFpbSIYdXBkYXRlZFByaWNlQXNzZXRCYWxhbmNlIhxwcmljZUFzc2V0QmFsYW5jZUlkb0RlY2ltYWxzIg5ldmFsdWF0ZVJlc3VsdCIFY2hlY2siCGludmVzdG9yIhNpbnZlc3RvclRvdGFsQW1vdW50IhdpbnZlc3RvclJlbWFpbmluZ0Ftb3VudCIZaW52ZXN0b3JQcmljZUFzc2V0QmFsYW5jZSIXaW52ZXN0b3JJZG9Bc3NldEJhbGFuY2UiGWludmVzdG9yTGFzdENsYWltZWRIZWlnaHQiC25ld0ludmVzdG9yIgZ0b3RhbHMiEXRvdGFsc1RvdGFsQW1vdW50IhV0b3RhbHNSZW1haW5pbmdBbW91bnQiHXRvdGFsc0NsYWltZWRQcmljZUFzc2V0QW1vdW50Iht0b3RhbHNDbGFpbWVkSWRvQXNzZXRBbW91bnQiF3RvdGFsc0xhc3RDbGFpbWVkSGVpZ2h0IgluZXdUb3RhbHMiFWF2YWlsYWJsZVRvQ2xhaW1BcnJheSIbYXZhaWxhYmxlUHJpY2VBbW91bnRUb0NsYWltIhlhdmFpbGFibGVJZG9BbW91bnRUb0NsYWltIi5hdmFpbGFibGVJZG9BbW91bnRUb0NsYWltV2l0aFByaWNlQXNzZXRCYWxhbmNlIg0kdDAzMDU4ODMxMDAwIhZjdXJyZW50UGVyaW9kRW5kSGVpZ2h0Ihp1c2VyVG90YWxQcmljZUFzc2V0Q2xhaW1lZCIMcmVzdWx0U3RyaW5nIgxwZXJpb2RMZW5naHQiE3VzZXJQZXJpb2RBbGxvd2FuY2UiFHRvdGFsUGVyaW9kQWxsb3dhbmNlIhdwZW5kaW5nTWFuYWdlclB1YmxpY0tleSILY2hlY2tDYWxsZXIiFWNoZWNrTWFuYWdlclB1YmxpY0tleSICcG0iBWhhc1BNIgdjaGVja1BNIgJ0eCIGdmVyaWZ5Ig90YXJnZXRQdWJsaWNLZXkAAABBAQAAAAFhAAAAAQAAAAFiCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQiAAAAAQUAAAABYgkAASwAAAACCQABLAAAAAICAAAAD21hbmRhdG9yeSB0aGlzLgUAAAABYgIAAAAPIGlzIG5vdCBkZWZpbmVkAAAAAAFjAgAAAAJfXwAAAAABZAkAATYAAAABAA3gtrOnZAAAAAAAAAFlAAAAAAAF9eEAAQAAAAFmAAAAAQAAAAFnCQAAAgAAAAEJAAS5AAAA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", "chainId": 84, "height": 2341266, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: AfU4LoDdvt7rZZE3AzZTy3WypR9FzbaWWffUfbewA7Eh Next: Aqmuci6fL5PojJrf43RGNjGPNmvUYNQaiDF2kMgcfgD8 Diff:
OldNewDifferences
1313 func f (g) = throw(makeString(["ido.ride:", g], " "))
1414
1515
16-func h (i,j,k,l,m) = {
17- let n = toBigInt(j)
18- let o = toBigInt(m)
19- let p = fraction(toBigInt(i), d, n)
20- let q = fraction(p, toBigInt(l), toBigInt(k))
21- toInt(fraction(q, toBigInt(m), d))
16+func h (i) = {
17+ let j = i
18+ if ($isInstanceOf(j, "String"))
19+ then {
20+ let k = j
21+ k
22+ }
23+ else throw("fail to cast into String")
2224 }
2325
2426
25-let r = 1
26-
27-let s = 2
28-
29-let t = 3
30-
31-let u = 4
32-
33-let v = 5
34-
35-let w = 6
36-
37-let x = 7
38-
39-let y = 8
40-
41-let z = 9
42-
43-let A = 10
44-
45-let B = 11
46-
47-func C (D,E,F,G,k,H,I,J,K,L,M,N) = makeString(["%d%d%d%d%d%d%s%d%s%d%d%d", D, E, F, G, k, H, I, J, K, L, M, N], c)
48-
49-
50-func O (D,E,F,G,k,H,I,J,K,L,M,N) = C(toString(D), toString(E), toString(F), toString(G), toString(k), toString(H), I, toString(J), K, toString(L), toString(M), toString(N))
51-
52-
53-let P = 1
54-
55-let Q = 2
56-
57-let R = 3
58-
59-let S = 4
60-
61-let T = 5
62-
63-func U (V,W,X,Y,Z) = makeString(["%d%d%d%d%d", V, W, X, Y, Z], c)
64-
65-
66-func aa (V,W,X,Y,Z) = U(toString(V), toString(W), toString(X), toString(Y), toString(Z))
67-
68-
69-func ab (i,ac) = makeString(["%d%d%d%d", toString(height), toString(lastBlock.timestamp), toString(i), toString(ac)], c)
70-
71-
72-func ad () = "%s__config"
73-
74-
75-func ae (af) = ("%s__" + af)
76-
77-
78-func ag () = "%s__totals"
79-
80-
81-func ah (ai,af,aj) = makeString(["%s%s%s%s__history", ai, af, aj], c)
82-
83-
84-func ak () = "%s__usdnClaimDisabled"
85-
86-
87-func al () = "%s__usdnClaimEndHeight"
88-
89-
90-func am () = makeString(["%s", "periodLength"], c)
91-
92-
93-func an () = makeString(["%s", "currentPeriod"], c)
94-
95-
96-func ao (ap) = makeString(["%s%s", "periodStartHeight", toString(ap)], c)
97-
98-
99-func aq (ap) = makeString(["%s%s", "periodEndHeight", toString(ap)], c)
100-
101-
102-func ar () = makeString(["%s", "usdtPriceAssetAllowableRatio"], c)
103-
104-
105-func as (at) = makeString(["%s%s", "totalPeriodAllowance", at], c)
106-
107-
108-func au (at) = makeString(["%s%s", "userPeriodAllowance", at], c)
109-
110-
111-func av (at,ap) = makeString(["%s%s%s", "periodTotalAvailableToClaim", at, toString(ap)], c)
112-
113-
114-func aw (at,ap,af) = makeString(["%s%s%s%s", "periodUserAvailableToClaim", at, toString(ap), af], c)
115-
116-
117-func ax () = makeString(["%s", "usdtPriceAssetStablePool"], c)
118-
119-
120-func ay () = makeString(["%s", "usdtAssetId"], c)
121-
122-
123-func az (aA) = makeString(["%s%s", "priceAssetBalance", aA], c)
124-
125-
126-func aB () = "%s__managerPublicKey"
127-
128-
129-func aC () = "%s__pendingManagerPublicKey"
130-
131-
132-func aD () = split(a(ad()), c)
133-
134-
135-func aE (aF) = split(valueOrElse(getString(aF), U("0", "0", "0", "0", "0")), c)
136-
137-
138-func aG () = aE(ag())
139-
140-
141-func aH (af) = aE(ae(af))
142-
143-
144-func aI (af) = split(a(ae(af)), c)
145-
146-
147-let aJ = 0
148-
149-let aK = 1
150-
151-let aL = 2
152-
153-let aM = 3
154-
155-func aN (b,aO,aP,aQ,aR) = {
156- let V = parseIntValue(aO[P])
157- let W = parseIntValue(aO[Q])
158- let X = parseIntValue(aO[R])
159- let Y = parseIntValue(aO[S])
160- let Z = parseIntValue(aO[T])
161- let aS = (V + aP[aJ])
162- let aT = (W + aP[aK])
163- let aU = aD()
164- let K = aU[z]
165- let aV = value(assetInfo(fromBase58String(K))).decimals
166- let aW = fraction(aR, e, pow(10, 0, aV, 0, 0, DOWN))
167- let aX = ((X + aP[aL]) - aR)
168- let aY = ((Y + aP[aM]) + aW)
169- let aZ = if ((0 > aT))
170- then {
171- let ba = ((aS - aX) - aY)
172- StringEntry(b, aa(aS, ba, aX, aY, aQ))
173- }
174- else StringEntry(b, aa(aS, aT, aX, aY, aQ))
175- aZ
27+func l (m,n,o,p,q) = {
28+ let r = toBigInt(n)
29+ let s = toBigInt(q)
30+ let t = fraction(toBigInt(m), d, r)
31+ let u = fraction(t, toBigInt(p), toBigInt(o))
32+ toInt(fraction(u, toBigInt(q), d))
17633 }
17734
17835
179-func bb (af,i,ac,bc) = StringEntry(ah("invest", af, toBase58String(bc)), ab(i, ac))
36+let v = 1
37+
38+let w = 2
39+
40+let x = 3
41+
42+let y = 4
43+
44+let z = 5
45+
46+let A = 6
47+
48+let B = 7
49+
50+let C = 8
51+
52+let D = 9
53+
54+let E = 10
55+
56+let F = 11
57+
58+func G (H,I,J,K,o,L,M,N,O,P,Q,R) = makeString(["%d%d%d%d%d%d%s%d%s%d%d%d", H, I, J, K, o, L, M, N, O, P, Q, R], c)
18059
18160
182-func bd (af,i,ac,bc) = StringEntry(ah("claim", af, toBase58String(bc)), ab(i, ac))
61+func S (H,I,J,K,o,L,M,N,O,P,Q,R) = G(toString(H), toString(I), toString(J), toString(K), toString(o), toString(L), M, toString(N), O, toString(P), toString(Q), toString(R))
18362
18463
185-func be (bf,af,bc) = {
186- let aU = aD()
187- let F = parseIntValue(aU[t])
188- let G = parseIntValue(aU[u])
189- let bg = (F + G)
190- let k = parseIntValue(aU[v])
191- let H = parseIntValue(aU[w])
192- let I = aU[x]
193- let bh = fromBase58String(I)
194- let J = parseIntValue(aU[y])
195- let K = aU[z]
196- let bi = fromBase58String(K)
197- let L = parseIntValue(aU[A])
198- let bj = toString(af)
199- let bk = aI(bj)
200- let bl = parseIntValue(bk[P])
201- let bm = parseIntValue(bk[T])
202- let bn = if ((F >= bm))
203- then F
204- else bm
205- let bo = if ((height > bg))
206- then bg
207- else if ((F > height))
208- then F
64+let T = 1
65+
66+let U = 2
67+
68+let V = 3
69+
70+let W = 4
71+
72+let X = 5
73+
74+func Y (Z,aa,ab,ac,ad) = makeString(["%d%d%d%d%d", Z, aa, ab, ac, ad], c)
75+
76+
77+func ae (Z,aa,ab,ac,ad) = Y(toString(Z), toString(aa), toString(ab), toString(ac), toString(ad))
78+
79+
80+func af (m,ag) = makeString(["%d%d%d%d", toString(height), toString(lastBlock.timestamp), toString(m), toString(ag)], c)
81+
82+
83+func ah () = "%s__config"
84+
85+
86+func ai (aj) = ("%s__" + aj)
87+
88+
89+func ak () = "%s__totals"
90+
91+
92+func al (am,aj,an) = makeString(["%s%s%s%s__history", am, aj, an], c)
93+
94+
95+func ao () = "%s__usdnClaimDisabled"
96+
97+
98+func ap () = "%s__usdnClaimEndHeight"
99+
100+
101+func aq () = makeString(["%s", "periodLength"], c)
102+
103+
104+func ar () = makeString(["%s", "currentPeriod"], c)
105+
106+
107+func as (at) = makeString(["%s%s", "periodStartHeight", toString(at)], c)
108+
109+
110+func au (at) = makeString(["%s%s", "periodEndHeight", toString(at)], c)
111+
112+
113+func av () = makeString(["%s", "usdtPriceAssetAllowableRatio"], c)
114+
115+
116+func aw (ax) = makeString(["%s%s", "totalPeriodAllowance", ax], c)
117+
118+
119+func ay (ax) = makeString(["%s%s", "userPeriodAllowance", ax], c)
120+
121+
122+func az (ax,at) = makeString(["%s%s%s", "periodTotalAvailableToClaim", ax, toString(at)], c)
123+
124+
125+func aA (ax,at,aj) = makeString(["%s%s%s%s", "periodUserAvailableToClaim", ax, toString(at), aj], c)
126+
127+
128+func aB () = makeString(["%s", "usdtPriceAssetStablePool"], c)
129+
130+
131+func aC () = makeString(["%s", "usdtAssetId"], c)
132+
133+
134+func aD (aE) = makeString(["%s%s", "priceAssetBalance", aE], c)
135+
136+
137+func aF () = "%s__managerPublicKey"
138+
139+
140+func aG () = "%s__pendingManagerPublicKey"
141+
142+
143+func aH () = split(a(ah()), c)
144+
145+
146+func aI (aJ) = split(valueOrElse(getString(aJ), Y("0", "0", "0", "0", "0")), c)
147+
148+
149+func aK () = aI(ak())
150+
151+
152+func aL (aj) = aI(ai(aj))
153+
154+
155+func aM (aj) = split(a(ai(aj)), c)
156+
157+
158+let aN = 0
159+
160+let aO = 1
161+
162+let aP = 2
163+
164+let aQ = 3
165+
166+func aR (b,aS,aT,aU,aV) = {
167+ let Z = parseIntValue(aS[T])
168+ let aa = parseIntValue(aS[U])
169+ let ab = parseIntValue(aS[V])
170+ let ac = parseIntValue(aS[W])
171+ let ad = parseIntValue(aS[X])
172+ let aW = (Z + aT[aN])
173+ let aX = (aa + aT[aO])
174+ let aY = aH()
175+ let O = aY[D]
176+ let aZ = value(assetInfo(fromBase58String(O))).decimals
177+ let ba = fraction(aV, e, pow(10, 0, aZ, 0, 0, DOWN))
178+ let bb = ((ab + aT[aP]) - aV)
179+ let bc = ((ac + aT[aQ]) + ba)
180+ let bd = if ((0 > aX))
181+ then {
182+ let be = ((aW - bb) - bc)
183+ let bf = if ((0 > be))
184+ then 0
185+ else be
186+ StringEntry(b, ae(aW, bf, bb, bc, aU))
187+ }
188+ else StringEntry(b, ae(aW, aX, bb, bc, aU))
189+ bd
190+ }
191+
192+
193+func bg (aj,m,ag,bh) = StringEntry(al("invest", aj, toBase58String(bh)), af(m, ag))
194+
195+
196+func bi (aj,m,ag,bh) = StringEntry(al("claim", aj, toBase58String(bh)), af(m, ag))
197+
198+
199+func bj (bk,aj,bh) = {
200+ let aY = aH()
201+ let J = parseIntValue(aY[x])
202+ let K = parseIntValue(aY[y])
203+ let bl = (J + K)
204+ let o = parseIntValue(aY[z])
205+ let L = parseIntValue(aY[A])
206+ let M = aY[B]
207+ let bm = fromBase58String(M)
208+ let N = parseIntValue(aY[C])
209+ let O = aY[D]
210+ let bn = fromBase58String(O)
211+ let P = parseIntValue(aY[E])
212+ let bo = toString(aj)
213+ let bp = aM(bo)
214+ let bq = parseIntValue(bp[T])
215+ let br = parseIntValue(bp[X])
216+ let bs = if ((J >= br))
217+ then J
218+ else br
219+ let bt = if ((height > bl))
220+ then bl
221+ else if ((J > height))
222+ then J
209223 else height
210- let bp = (bo - bn)
211- let bq = fraction(bl, bp, G)
212- let br = h(bq, L, k, H, J)
213- let bs = (bf == K)
214- let bt = valueOrElse(getBoolean(ak()), false)
215- let bu = [if (!(if (bs)
216- then bt
224+ let bu = (bt - bs)
225+ let bv = fraction(bq, bu, K)
226+ let bw = l(bv, P, o, L, N)
227+ let bx = (bk == O)
228+ let by = valueOrElse(getBoolean(ao()), false)
229+ let bz = [if (!(if (bx)
230+ then by
217231 else false))
218232 then true
219233 else throw("USDN claim is disabled")]
220- if ((bu == bu))
221- then if ((bf == K))
222- then $Tuple6([0, -(bq), bq, 0], bq, bi, bk, bo, [bq, br])
223- else if ((bf == I))
224- then $Tuple6([0, -(bq), 0, br], br, bh, bk, bo, [bq, br])
225- else throw(("unsupported assetId: " + bf))
234+ if ((bz == bz))
235+ then if ((bk == O))
236+ then $Tuple6([0, -(bv), bv, 0], bv, bn, bp, bt, [bv, bw])
237+ else if ((bk == M))
238+ then $Tuple6([0, -(bv), 0, bw], bw, bm, bp, bt, [bv, bw])
239+ else throw(("unsupported assetId: " + bk))
226240 else throw("Strict value is not equal to itself.")
227241 }
228242
229243
230-func bv (K,bj,bw,bx) = {
231- let by = value(getInteger(as(K)))
232- let bz = value(getInteger(au(K)))
233- let bA = value(getInteger(am()))
234- let bB = valueOrElse(getInteger(an()), 0)
235- let bC = isDefined(getInteger(aq(0)))
236- let bD = if ((bB > 0))
244+func bA (O,bo,bB,bC) = {
245+ let bD = value(getInteger(aw(O)))
246+ let bE = value(getInteger(ay(O)))
247+ let bF = value(getInteger(aq()))
248+ let bG = valueOrElse(getInteger(ar()), 0)
249+ let bH = isDefined(getInteger(au(0)))
250+ let bI = if ((bG > 0))
237251 then {
238- let bE = value(getInteger(ao(bB)))
239- let bF = value(getInteger(aq(bB)))
240- let bG = if ((height > bF))
252+ let bJ = value(getInteger(as(bG)))
253+ let bK = value(getInteger(au(bG)))
254+ let bL = if ((height > bK))
241255 then {
242- let bH = (bB + 1)
243- let bI = if ((height > (bF + bA)))
256+ let bM = (bG + 1)
257+ let bN = if ((height > (bK + bF)))
244258 then {
245- let bJ = ((height - bF) % bA)
246- if ((bJ == 0))
247- then ((height - bA) + 1)
248- else (height - bJ)
259+ let bO = ((height - bK) % bF)
260+ if ((bO == 0))
261+ then ((height - bF) + 1)
262+ else (height - bO)
249263 }
250- else (bF + 1)
251- let bK = ((bI + bA) - 1)
252- $Tuple3(bH, bI, bK)
264+ else (bK + 1)
265+ let bP = ((bN + bF) - 1)
266+ $Tuple3(bM, bN, bP)
253267 }
254- else $Tuple3(bB, bE, bF)
255- let bH = bG._1
256- let bI = bG._2
257- let bK = bG._3
258- $Tuple3(bH, bI, bK)
268+ else $Tuple3(bG, bJ, bK)
269+ let bM = bL._1
270+ let bN = bL._2
271+ let bP = bL._3
272+ $Tuple3(bM, bN, bP)
259273 }
260- else if (bC)
274+ else if (bH)
261275 then {
262- let bL = value(getInteger(ao(0)))
263- let bM = value(getInteger(aq(0)))
264- let bN = if ((height > bM))
276+ let bQ = value(getInteger(as(0)))
277+ let bR = value(getInteger(au(0)))
278+ let bS = if ((height > bR))
265279 then {
266- let bH = (bB + 1)
267- let bI = (bM + 1)
268- let bK = ((bI + bA) - 1)
269- $Tuple3(bH, bI, bK)
280+ let bM = (bG + 1)
281+ let bN = (bR + 1)
282+ let bP = ((bN + bF) - 1)
283+ $Tuple3(bM, bN, bP)
270284 }
271- else $Tuple3(bB, bL, bM)
272- let bH = bN._1
273- let bI = bN._2
274- let bK = bN._3
275- $Tuple3(bH, bI, bK)
285+ else $Tuple3(bG, bQ, bR)
286+ let bM = bS._1
287+ let bN = bS._2
288+ let bP = bS._3
289+ $Tuple3(bM, bN, bP)
276290 }
277- else $Tuple3(bB, valueOrElse(getInteger(ao(bB)), height), valueOrElse(getInteger(aq(bB)), ((height + bA) - 1)))
278- let bH = bD._1
279- let bI = bD._2
280- let bK = bD._3
281- let bO = valueOrElse(getInteger(av(K, bH)), by)
282- let bP = valueOrElse(getInteger(aw(K, bH, bj)), bz)
283- let aR = valueOrElse(getInteger(az(bj)), 0)
284- let bQ = min([(bw + aR), bO, bP])
285- let bR = value(getInteger(ar()))
286- let bS = e
287- let bT = {
288- let bU = invoke(addressFromStringValue(value(getString(ax()))), "putOneTknV2WithoutTakeFeeREADONLY", [bS, K], nil)
289- if ($isInstanceOf(bU, "(Int, Int, Int)"))
290- then bU
291+ else $Tuple3(bG, valueOrElse(getInteger(as(bG)), height), valueOrElse(getInteger(au(bG)), ((height + bF) - 1)))
292+ let bM = bI._1
293+ let bN = bI._2
294+ let bP = bI._3
295+ let bT = valueOrElse(getInteger(az(O, bM)), bD)
296+ let bU = valueOrElse(getInteger(aA(O, bM, bo)), bE)
297+ let aV = valueOrElse(getInteger(aD(bo)), 0)
298+ let bV = min([(bB + aV), bT, bU])
299+ let bW = value(getInteger(av()))
300+ let bX = e
301+ let bY = {
302+ let bZ = invoke(addressFromStringValue(value(getString(aB()))), "putOneTknV2WithoutTakeFeeREADONLY", [bX, O], nil)
303+ if ($isInstanceOf(bZ, "(Int, Int, Int)"))
304+ then bZ
291305 else throw("Couldn't cast Any to (Int, Int, Int)")
292306 }
293- if ((bT == bT))
307+ if ((bY == bY))
294308 then {
295- let bV = bT._3
296- let bW = bT._2
297- let bX = bT._1
298- let bY = value(getString(ay()))
299- let bZ = {
300- let bU = invoke(addressFromStringValue(value(getString(ax()))), "getOneTknV2READONLY", [bY, bX], nil)
301- if ($isInstanceOf(bU, "(Int, Int)"))
302- then bU
309+ let ca = bY._3
310+ let cb = bY._2
311+ let cc = bY._1
312+ let cd = value(getString(aC()))
313+ let ce = {
314+ let bZ = invoke(addressFromStringValue(value(getString(aB()))), "getOneTknV2READONLY", [cd, cc], nil)
315+ if ($isInstanceOf(bZ, "(Int, Int)"))
316+ then bZ
303317 else throw("Couldn't cast Any to (Int, Int)")
304318 }
305- if ((bZ == bZ))
319+ if ((ce == ce))
306320 then {
307- let ca = bZ._2
308- let cb = bZ._1
309- let cc = fraction(bS, e, cb)
310- let cd = (bK - height)
311- $Tuple10(bQ, bO, bP, bx, bR, cc, cd, bH, bI, bK)
321+ let cf = ce._2
322+ let cg = ce._1
323+ let ch = fraction(bX, e, cg)
324+ let ci = (bP - height)
325+ $Tuple10(bV, bT, bU, bC, bW, ch, ci, bM, bN, bP)
312326 }
313327 else throw("Strict value is not equal to itself.")
314328 }
316330 }
317331
318332
319-func ce () = {
320- let cf = getString(aB())
321- if ($isInstanceOf(cf, "String"))
333+func cj () = {
334+ let j = getString(aF())
335+ if ($isInstanceOf(j, "String"))
322336 then {
323- let cg = cf
324- fromBase58String(cg)
337+ let ck = j
338+ fromBase58String(ck)
325339 }
326- else if ($isInstanceOf(cf, "Unit"))
340+ else if ($isInstanceOf(j, "Unit"))
327341 then unit
328342 else throw("Match error")
329343 }
330344
331345
332-func ch () = {
333- let cf = getString(aC())
334- if ($isInstanceOf(cf, "String"))
346+func cl () = {
347+ let j = getString(aG())
348+ if ($isInstanceOf(j, "String"))
335349 then {
336- let cg = cf
337- fromBase58String(cg)
350+ let ck = j
351+ fromBase58String(ck)
338352 }
339- else if ($isInstanceOf(cf, "Unit"))
353+ else if ($isInstanceOf(j, "Unit"))
340354 then unit
341355 else throw("Match error")
342356 }
343357
344358
345-func ci (cj) = {
346- let ck = throw("Permission denied")
347- let cf = ce()
348- if ($isInstanceOf(cf, "ByteVector"))
359+func cm (cn) = {
360+ let co = throw("Permission denied")
361+ let j = cj()
362+ if ($isInstanceOf(j, "ByteVector"))
349363 then {
350- let cl = cf
351- if ((cj.callerPublicKey == cl))
364+ let cp = j
365+ if ((cn.callerPublicKey == cp))
352366 then true
353- else ck
367+ else co
354368 }
355- else if ($isInstanceOf(cf, "Unit"))
356- then if ((cj.caller == this))
369+ else if ($isInstanceOf(j, "Unit"))
370+ then if ((cn.caller == this))
357371 then true
358- else ck
372+ else co
359373 else throw("Match error")
360374 }
361375
362376
363-@Callable(cj)
364-func constructor (D,E,F,G,k,K,M) = {
365- let H = ((100 * 1000) * 1000)
366- let cm = (D + E)
367- if (isDefined(getString(ad())))
377+@Callable(cn)
378+func constructor (H,I,J,K,o,O,Q) = {
379+ let L = ((100 * 1000) * 1000)
380+ let cq = (H + I)
381+ if (isDefined(getString(ah())))
368382 then throw("already initialized")
369- else if (("3PMEHLx1j6zerarZTYfsGqDeeZqQoMpxq5S" != toString(cj.caller)))
383+ else if (("3PMEHLx1j6zerarZTYfsGqDeeZqQoMpxq5S" != toString(cn.caller)))
370384 then throw("not authorized")
371- else if ((size(cj.payments) != 1))
385+ else if ((size(cn.payments) != 1))
372386 then throw("exactly 1 payment must be attached")
373- else if ((cm >= F))
387+ else if ((cq >= J))
374388 then throw("claimStart must be greater than idoEnd")
375389 else {
376- let cn = value(cj.payments[0])
377- let bh = value(cn.assetId)
378- let co = valueOrErrorMessage(assetInfo(bh), "fail to load ido asset info")
379- let I = toBase58String(bh)
380- let J = pow(10, 0, co.decimals, 0, 0, DOWN)
381- let bi = fromBase58String(K)
382- let cp = valueOrErrorMessage(assetInfo(bi), "fail to load price asset info")
383- let L = pow(10, 0, cp.decimals, 0, 0, DOWN)
384- let cq = aG()
385- let cr = [0, 0, 0, 0]
386-[StringEntry(ad(), O(D, E, F, G, k, H, I, J, K, L, M, cn.amount)), aN(ag(), cq, cr, F, 0)]
390+ let cr = value(cn.payments[0])
391+ let bm = value(cr.assetId)
392+ let cs = valueOrErrorMessage(assetInfo(bm), "fail to load ido asset info")
393+ let M = toBase58String(bm)
394+ let N = pow(10, 0, cs.decimals, 0, 0, DOWN)
395+ let bn = fromBase58String(O)
396+ let ct = valueOrErrorMessage(assetInfo(bn), "fail to load price asset info")
397+ let P = pow(10, 0, ct.decimals, 0, 0, DOWN)
398+ let cu = aK()
399+ let cv = [0, 0, 0, 0]
400+[StringEntry(ah(), S(H, I, J, K, o, L, M, N, O, P, Q, cr.amount)), aR(ak(), cu, cv, J, 0)]
387401 }
388402 }
389403
390404
391405
392-@Callable(cj)
406+@Callable(cn)
393407 func invest () = {
394- let aU = aD()
395- let D = parseIntValue(aU[r])
396- let E = parseIntValue(aU[s])
397- let cm = (D + E)
398- let F = parseIntValue(aU[t])
399- let G = parseIntValue(aU[u])
400- let k = parseIntValue(aU[v])
401- let H = parseIntValue(aU[w])
402- let I = aU[x]
403- let bh = fromBase58String(I)
404- let J = parseIntValue(aU[y])
405- let K = aU[z]
406- let bi = fromBase58String(K)
407- let L = parseIntValue(aU[A])
408- let cs = parseIntValue(aU[B])
409- let af = toString(cj.caller)
410- if ((D > height))
408+ let aY = aH()
409+ let H = parseIntValue(aY[v])
410+ let I = parseIntValue(aY[w])
411+ let cq = (H + I)
412+ let J = parseIntValue(aY[x])
413+ let K = parseIntValue(aY[y])
414+ let o = parseIntValue(aY[z])
415+ let L = parseIntValue(aY[A])
416+ let M = aY[B]
417+ let bm = fromBase58String(M)
418+ let N = parseIntValue(aY[C])
419+ let O = aY[D]
420+ let bn = fromBase58String(O)
421+ let P = parseIntValue(aY[E])
422+ let cw = parseIntValue(aY[F])
423+ let aj = toString(cn.caller)
424+ if ((H > height))
411425 then throw("ido has not been started yet")
412- else if ((height > cm))
426+ else if ((height > cq))
413427 then throw("ido has been already ended")
414- else if ((size(cj.payments) != 1))
428+ else if ((size(cn.payments) != 1))
415429 then throw("exactly 1 payment is expected")
416430 else {
417- let cn = value(cj.payments[0])
418- let ct = value(cn.assetId)
419- let cu = cn.amount
420- if ((ct != bi))
421- then throw((("invalid payment asset id: " + toBase58String(ct)) + " is expected"))
431+ let cr = value(cn.payments[0])
432+ let cx = value(cr.assetId)
433+ let cy = cr.amount
434+ if ((cx != bn))
435+ then throw((("invalid payment asset id: " + toBase58String(cx)) + " is expected"))
422436 else {
423- let cv = aH(af)
424- let cq = aG()
425- let cw = (parseIntValue(cq[P]) + cu)
426- let cx = (cw * 100)
427- if ((cx > assetBalance(this, bh)))
437+ let cz = aL(aj)
438+ let cu = aK()
439+ let cA = (parseIntValue(cu[T]) + cy)
440+ let cB = (cA * 100)
441+ if ((cB > assetBalance(this, bm)))
428442 then throw("IDO asset has been - sold consider to use smaller payment")
429443 else {
430- let cr = [cu, cu, 0, 0]
431-[aN(ae(af), cv, cr, F, 0), aN(ag(), cq, cr, F, 0), bb(af, cu, 0, cj.transactionId)]
444+ let cv = [cy, cy, 0, 0]
445+[aR(ai(aj), cz, cv, J, 0), aR(ak(), cu, cv, J, 0), bg(aj, cy, 0, cn.transactionId)]
432446 }
433447 }
434448 }
436450
437451
438452
439-@Callable(cj)
440-func claim (bf,bj) = {
441- let cy = toString(cj.caller)
442- if ((bj != cy))
453+@Callable(cn)
454+func claim (bk,bo) = {
455+ let cC = toString(cn.caller)
456+ if ((bo != cC))
443457 then throw("not authorized")
444458 else {
445- let aU = aD()
446- let K = aU[z]
447- let cz = be(bf, cj.caller, cj.transactionId)
448- let cr = cz._1
449- let bw = cz._2
450- let cA = cz._3
451- let bk = cz._4
452- let bo = cz._5
453- let cB = cr[aL]
454- let cC = cr[aM]
455- let aR = valueOrElse(getInteger(az(bj)), 0)
456- let aV = value(assetInfo(fromBase58String(K))).decimals
457- let aZ = if ((bf == K))
459+ let aY = aH()
460+ let O = aY[D]
461+ let cD = bj(bk, cn.caller, cn.transactionId)
462+ let cv = cD._1
463+ let bB = cD._2
464+ let cE = cD._3
465+ let bp = cD._4
466+ let bt = cD._5
467+ let cF = cv[aP]
468+ let cG = cv[aQ]
469+ let aV = valueOrElse(getInteger(aD(bo)), 0)
470+ let aZ = value(assetInfo(fromBase58String(O))).decimals
471+ let bd = if ((bk == O))
458472 then {
459- let cD = bv(K, bj, bw, cr[aL])
460- let bQ = cD._1
461- let bO = cD._2
462- let bP = cD._3
463- let bx = cD._4
464- let bR = cD._5
465- let cc = cD._6
466- let cd = cD._7
467- let bH = cD._8
468- let bI = cD._9
469- let bK = cD._10
470- let bu = [if ((bP > 0))
473+ let cH = bA(O, bo, bB, cv[aP])
474+ let bV = cH._1
475+ let bT = cH._2
476+ let bU = cH._3
477+ let bC = cH._4
478+ let bW = cH._5
479+ let ch = cH._6
480+ let ci = cH._7
481+ let bM = cH._8
482+ let bN = cH._9
483+ let bP = cH._10
484+ let bz = [if ((bU > 0))
471485 then true
472- else f("unavailable to claim because user period allowance reached"), if ((bO > 0))
486+ else f("unavailable to claim because user period allowance reached"), if ((bT > 0))
473487 then true
474- else f("unavailable to claim because total period allowance reached"), if ((bQ > 0))
488+ else f("unavailable to claim because total period allowance reached"), if ((bV > 0))
475489 then true
476- else f("nothing to claim"), if ((bR > cc))
490+ else f("nothing to claim"), if ((bW > ch))
477491 then true
478492 else f("unavailable to claim because usdn price lower than usdtPriceAssetAllowableRatio")]
479- if ((bu == bu))
493+ if ((bz == bz))
480494 then {
481- let cE = (bO - bQ)
482- let cF = (bP - bQ)
483- let aZ = if ((aR >= bQ))
484- then [ScriptTransfer(cj.caller, bQ, cA), IntegerEntry(az(bj), (aR - bQ))]
495+ let cI = (bT - bV)
496+ let cJ = (bU - bV)
497+ let bd = if ((aV >= bV))
498+ then [ScriptTransfer(cn.caller, bV, cE), IntegerEntry(aD(bo), (aV - bV))]
485499 else {
486- let cG = ((aR + bw) - bQ)
487-[ScriptTransfer(cj.caller, bQ, cA), aN(ae(bj), bk, cr, bo, 0), aN(ag(), aG(), cr, bo, 0), IntegerEntry(az(bj), cG)]
500+ let cK = ((aV + bB) - bV)
501+[ScriptTransfer(cn.caller, bV, cE), aR(ai(bo), bp, cv, bt, 0), aR(ak(), aK(), cv, bt, 0), IntegerEntry(aD(bo), cK)]
488502 }
489- $Tuple2(([IntegerEntry(an(), bH), IntegerEntry(ao(bH), bI), IntegerEntry(aq(bH), bK), IntegerEntry(av(K, bH), cE), IntegerEntry(aw(K, bH, bj), cF), bd(bj, bQ, cC, cj.transactionId)] ++ aZ), unit)
503+ $Tuple2(([IntegerEntry(ar(), bM), IntegerEntry(as(bM), bN), IntegerEntry(au(bM), bP), IntegerEntry(az(O, bM), cI), IntegerEntry(aA(O, bM, bo), cJ), bi(bo, bV, cG, cn.transactionId)] ++ bd), unit)
490504 }
491505 else throw("Strict value is not equal to itself.")
492506 }
493507 else {
494- let cH = fraction(aR, e, pow(10, 0, aV, 0, 0, DOWN))
495- $Tuple2([ScriptTransfer(cj.caller, (bw + cH), cA), IntegerEntry(az(bj), 0), aN(ae(bj), bk, cr, bo, aR), aN(ag(), aG(), cr, bo, aR), bd(bj, cB, (cC + cH), cj.transactionId)], unit)
508+ let cL = fraction(aV, e, pow(10, 0, aZ, 0, 0, DOWN))
509+ $Tuple2([ScriptTransfer(cn.caller, (bB + cL), cE), IntegerEntry(aD(bo), 0), aR(ai(bo), bp, cv, bt, aV), aR(ak(), aK(), cv, bt, aV), bi(bo, cF, (cG + cL), cn.transactionId)], unit)
496510 }
497- aZ
511+ bd
498512 }
499513 }
500514
501515
502516
503-@Callable(cj)
504-func claimREADONLY (bf,bj) = {
505- let cz = be(bf, addressFromStringValue(bj), fromBase58String(""))
506- let cr = cz._1
507- let bw = cz._2
508- let cA = cz._3
509- let bk = cz._4
510- let bo = cz._5
511- let cI = cz._6
512- let cJ = cI[0]
513- let cK = cI[1]
514- $Tuple2(nil, makeString(["%s%d%d", bj, toString(cJ), toString(cK)], c))
515- }
516-
517-
518-
519-@Callable(cj)
520-func claimV2READONLY (bf,bj) = {
521- let cz = be(bf, addressFromStringValue(bj), fromBase58String(""))
522- let cr = cz._1
523- let bw = cz._2
524- let cA = cz._3
525- let bk = cz._4
526- let bo = cz._5
527- let cI = cz._6
528- let cJ = cI[0]
529- let cK = cI[1]
530- let aU = aD()
531- let K = aU[z]
532- let aR = valueOrElse(getInteger(az(bj)), 0)
533- let cH = (aR * 100)
534- let cL = (cK + cH)
535- let cM = bv(K, bj, bw, cr[aL])
536- let bQ = cM._1
537- let bO = cM._2
538- let bP = cM._3
539- let bx = cM._4
540- let bR = cM._5
541- let cc = cM._6
542- let cd = cM._7
543- let bH = cM._8
544- let bI = cM._9
545- let bK = cM._10
546- let cN = valueOrElse(getInteger(aq(bH)), 0)
547- let cO = (parseIntValue(aI(bj)[R]) - aR)
548- let cP = if ((height > cN))
517+@Callable(cn)
518+func cleanRemaingAmount (bo) = {
519+ let O = aH()[D]
520+ let cM = split(h(invoke(this, "claimV2READONLY", [O, bo], nil)), c)
521+ if ((cM == cM))
549522 then {
550- let cQ = value(getInteger(am()))
551- let cR = value(getInteger(au(K)))
552- let cS = value(getInteger(as(K)))
553- makeString(["%d%d%d%d%d%d", toString(cL), toString(cR), toString(cS), toString(bR), toString(cc), toString(cQ), toString(cO)], c)
554- }
555- else makeString(["%d%d%d%d%d%d", toString(cL), toString(bQ), toString(bO), toString(bR), toString(cc), toString(cd), toString(cO)], c)
556- $Tuple2(nil, cP)
557- }
558-
559-
560-
561-@Callable(cj)
562-func setManager (cT) = {
563- let cU = ci(cj)
564- if ((cU == cU))
565- then {
566- let cV = fromBase58String(cT)
567- if ((cV == cV))
568- then [StringEntry(aC(), cT)]
523+ let bV = parseIntValue(cM[2])
524+ let cN = if ((bV == 0))
525+ then true
526+ else f("user have unclaimed assets")
527+ if ((cN == cN))
528+ then {
529+ let cO = split(value(getString(ai(bo))), c)
530+ let cP = parseIntValue(cO[T])
531+ let cQ = parseIntValue(cO[U])
532+ let cR = parseIntValue(cO[V])
533+ let cS = parseIntValue(cO[W])
534+ let cT = parseIntValue(cO[X])
535+ let cU = makeString([toString(cP), "0", toString(cR), toString(cS), toString(cT)], c)
536+ let cV = split(value(getString(ak())), c)
537+ let cW = parseIntValue(cV[T])
538+ let cX = parseIntValue(cV[U])
539+ let cY = parseIntValue(cV[U])
540+ let cZ = parseIntValue(cV[V])
541+ let da = parseIntValue(cV[X])
542+ let db = makeString([toString(cW), toString((cX - cQ)), toString(cY), toString(cZ), toString(da)], c)
543+[StringEntry(ai(bo), cU), StringEntry(ak(), db)]
544+ }
569545 else throw("Strict value is not equal to itself.")
570546 }
571547 else throw("Strict value is not equal to itself.")
573549
574550
575551
576-@Callable(cj)
577-func confirmManager () = {
578- let cW = ch()
579- let cX = if (isDefined(cW))
580- then true
581- else throw("No pending manager")
582- if ((cX == cX))
552+@Callable(cn)
553+func claimREADONLY (bk,bo) = {
554+ let cD = bj(bk, addressFromStringValue(bo), fromBase58String(""))
555+ let cv = cD._1
556+ let bB = cD._2
557+ let cE = cD._3
558+ let bp = cD._4
559+ let bt = cD._5
560+ let dc = cD._6
561+ let dd = dc[0]
562+ let de = dc[1]
563+ $Tuple2(nil, makeString(["%s%d%d", bo, toString(dd), toString(de)], c))
564+ }
565+
566+
567+
568+@Callable(cn)
569+func claimV2READONLY (bk,bo) = {
570+ let cD = bj(bk, addressFromStringValue(bo), fromBase58String(""))
571+ let cv = cD._1
572+ let bB = cD._2
573+ let cE = cD._3
574+ let bp = cD._4
575+ let bt = cD._5
576+ let dc = cD._6
577+ let dd = dc[0]
578+ let de = dc[1]
579+ let aY = aH()
580+ let O = aY[D]
581+ let aV = valueOrElse(getInteger(aD(bo)), 0)
582+ let cL = (aV * 100)
583+ let df = (de + cL)
584+ let dg = bA(O, bo, bB, cv[aP])
585+ let bV = dg._1
586+ let bT = dg._2
587+ let bU = dg._3
588+ let bC = dg._4
589+ let bW = dg._5
590+ let ch = dg._6
591+ let ci = dg._7
592+ let bM = dg._8
593+ let bN = dg._9
594+ let bP = dg._10
595+ let dh = valueOrElse(getInteger(au(bM)), 0)
596+ let di = (parseIntValue(aM(bo)[V]) - aV)
597+ let dj = if ((height > dh))
583598 then {
584- let cY = if ((cj.callerPublicKey == value(cW)))
585- then true
586- else throw("You are not pending manager")
587- if ((cY == cY))
588- then [StringEntry(aB(), toBase58String(value(cW))), DeleteEntry(aC())]
599+ let dk = value(getInteger(aq()))
600+ let dl = value(getInteger(ay(O)))
601+ let dm = value(getInteger(aw(O)))
602+ makeString(["%d%d%d%d%d%d", toString(df), toString(dl), toString(dm), toString(bW), toString(ch), toString(dk), toString(di)], c)
603+ }
604+ else makeString(["%d%d%d%d%d%d", toString(df), toString(bV), toString(bT), toString(bW), toString(ch), toString(ci), toString(di)], c)
605+ $Tuple2(nil, dj)
606+ }
607+
608+
609+
610+@Callable(cn)
611+func setManager (dn) = {
612+ let do = cm(cn)
613+ if ((do == do))
614+ then {
615+ let dp = fromBase58String(dn)
616+ if ((dp == dp))
617+ then [StringEntry(aG(), dn)]
589618 else throw("Strict value is not equal to itself.")
590619 }
591620 else throw("Strict value is not equal to itself.")
592621 }
593622
594623
595-@Verifier(cZ)
596-func da () = {
597- let db = {
598- let cf = ce()
599- if ($isInstanceOf(cf, "ByteVector"))
624+
625+@Callable(cn)
626+func confirmManager () = {
627+ let dq = cl()
628+ let dr = if (isDefined(dq))
629+ then true
630+ else throw("No pending manager")
631+ if ((dr == dr))
632+ then {
633+ let ds = if ((cn.callerPublicKey == value(dq)))
634+ then true
635+ else throw("You are not pending manager")
636+ if ((ds == ds))
637+ then [StringEntry(aF(), toBase58String(value(dq))), DeleteEntry(aG())]
638+ else throw("Strict value is not equal to itself.")
639+ }
640+ else throw("Strict value is not equal to itself.")
641+ }
642+
643+
644+@Verifier(dt)
645+func du () = {
646+ let dv = {
647+ let j = cj()
648+ if ($isInstanceOf(j, "ByteVector"))
600649 then {
601- let cl = cf
602- cl
650+ let cp = j
651+ cp
603652 }
604- else if ($isInstanceOf(cf, "Unit"))
605- then cZ.senderPublicKey
653+ else if ($isInstanceOf(j, "Unit"))
654+ then dt.senderPublicKey
606655 else throw("Match error")
607656 }
608- sigVerify(cZ.bodyBytes, cZ.proofs[0], db)
657+ sigVerify(dt.bodyBytes, dt.proofs[0], dv)
609658 }
610659
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func a (b) = valueOrErrorMessage(getString(b), (("mandatory this." + b) + " is not defined"))
55
66
77 let c = "__"
88
99 let d = toBigInt(1000000000000000000)
1010
1111 let e = 100000000
1212
1313 func f (g) = throw(makeString(["ido.ride:", g], " "))
1414
1515
16-func h (i,j,k,l,m) = {
17- let n = toBigInt(j)
18- let o = toBigInt(m)
19- let p = fraction(toBigInt(i), d, n)
20- let q = fraction(p, toBigInt(l), toBigInt(k))
21- toInt(fraction(q, toBigInt(m), d))
16+func h (i) = {
17+ let j = i
18+ if ($isInstanceOf(j, "String"))
19+ then {
20+ let k = j
21+ k
22+ }
23+ else throw("fail to cast into String")
2224 }
2325
2426
25-let r = 1
26-
27-let s = 2
28-
29-let t = 3
30-
31-let u = 4
32-
33-let v = 5
34-
35-let w = 6
36-
37-let x = 7
38-
39-let y = 8
40-
41-let z = 9
42-
43-let A = 10
44-
45-let B = 11
46-
47-func C (D,E,F,G,k,H,I,J,K,L,M,N) = makeString(["%d%d%d%d%d%d%s%d%s%d%d%d", D, E, F, G, k, H, I, J, K, L, M, N], c)
48-
49-
50-func O (D,E,F,G,k,H,I,J,K,L,M,N) = C(toString(D), toString(E), toString(F), toString(G), toString(k), toString(H), I, toString(J), K, toString(L), toString(M), toString(N))
51-
52-
53-let P = 1
54-
55-let Q = 2
56-
57-let R = 3
58-
59-let S = 4
60-
61-let T = 5
62-
63-func U (V,W,X,Y,Z) = makeString(["%d%d%d%d%d", V, W, X, Y, Z], c)
64-
65-
66-func aa (V,W,X,Y,Z) = U(toString(V), toString(W), toString(X), toString(Y), toString(Z))
67-
68-
69-func ab (i,ac) = makeString(["%d%d%d%d", toString(height), toString(lastBlock.timestamp), toString(i), toString(ac)], c)
70-
71-
72-func ad () = "%s__config"
73-
74-
75-func ae (af) = ("%s__" + af)
76-
77-
78-func ag () = "%s__totals"
79-
80-
81-func ah (ai,af,aj) = makeString(["%s%s%s%s__history", ai, af, aj], c)
82-
83-
84-func ak () = "%s__usdnClaimDisabled"
85-
86-
87-func al () = "%s__usdnClaimEndHeight"
88-
89-
90-func am () = makeString(["%s", "periodLength"], c)
91-
92-
93-func an () = makeString(["%s", "currentPeriod"], c)
94-
95-
96-func ao (ap) = makeString(["%s%s", "periodStartHeight", toString(ap)], c)
97-
98-
99-func aq (ap) = makeString(["%s%s", "periodEndHeight", toString(ap)], c)
100-
101-
102-func ar () = makeString(["%s", "usdtPriceAssetAllowableRatio"], c)
103-
104-
105-func as (at) = makeString(["%s%s", "totalPeriodAllowance", at], c)
106-
107-
108-func au (at) = makeString(["%s%s", "userPeriodAllowance", at], c)
109-
110-
111-func av (at,ap) = makeString(["%s%s%s", "periodTotalAvailableToClaim", at, toString(ap)], c)
112-
113-
114-func aw (at,ap,af) = makeString(["%s%s%s%s", "periodUserAvailableToClaim", at, toString(ap), af], c)
115-
116-
117-func ax () = makeString(["%s", "usdtPriceAssetStablePool"], c)
118-
119-
120-func ay () = makeString(["%s", "usdtAssetId"], c)
121-
122-
123-func az (aA) = makeString(["%s%s", "priceAssetBalance", aA], c)
124-
125-
126-func aB () = "%s__managerPublicKey"
127-
128-
129-func aC () = "%s__pendingManagerPublicKey"
130-
131-
132-func aD () = split(a(ad()), c)
133-
134-
135-func aE (aF) = split(valueOrElse(getString(aF), U("0", "0", "0", "0", "0")), c)
136-
137-
138-func aG () = aE(ag())
139-
140-
141-func aH (af) = aE(ae(af))
142-
143-
144-func aI (af) = split(a(ae(af)), c)
145-
146-
147-let aJ = 0
148-
149-let aK = 1
150-
151-let aL = 2
152-
153-let aM = 3
154-
155-func aN (b,aO,aP,aQ,aR) = {
156- let V = parseIntValue(aO[P])
157- let W = parseIntValue(aO[Q])
158- let X = parseIntValue(aO[R])
159- let Y = parseIntValue(aO[S])
160- let Z = parseIntValue(aO[T])
161- let aS = (V + aP[aJ])
162- let aT = (W + aP[aK])
163- let aU = aD()
164- let K = aU[z]
165- let aV = value(assetInfo(fromBase58String(K))).decimals
166- let aW = fraction(aR, e, pow(10, 0, aV, 0, 0, DOWN))
167- let aX = ((X + aP[aL]) - aR)
168- let aY = ((Y + aP[aM]) + aW)
169- let aZ = if ((0 > aT))
170- then {
171- let ba = ((aS - aX) - aY)
172- StringEntry(b, aa(aS, ba, aX, aY, aQ))
173- }
174- else StringEntry(b, aa(aS, aT, aX, aY, aQ))
175- aZ
27+func l (m,n,o,p,q) = {
28+ let r = toBigInt(n)
29+ let s = toBigInt(q)
30+ let t = fraction(toBigInt(m), d, r)
31+ let u = fraction(t, toBigInt(p), toBigInt(o))
32+ toInt(fraction(u, toBigInt(q), d))
17633 }
17734
17835
179-func bb (af,i,ac,bc) = StringEntry(ah("invest", af, toBase58String(bc)), ab(i, ac))
36+let v = 1
37+
38+let w = 2
39+
40+let x = 3
41+
42+let y = 4
43+
44+let z = 5
45+
46+let A = 6
47+
48+let B = 7
49+
50+let C = 8
51+
52+let D = 9
53+
54+let E = 10
55+
56+let F = 11
57+
58+func G (H,I,J,K,o,L,M,N,O,P,Q,R) = makeString(["%d%d%d%d%d%d%s%d%s%d%d%d", H, I, J, K, o, L, M, N, O, P, Q, R], c)
18059
18160
182-func bd (af,i,ac,bc) = StringEntry(ah("claim", af, toBase58String(bc)), ab(i, ac))
61+func S (H,I,J,K,o,L,M,N,O,P,Q,R) = G(toString(H), toString(I), toString(J), toString(K), toString(o), toString(L), M, toString(N), O, toString(P), toString(Q), toString(R))
18362
18463
185-func be (bf,af,bc) = {
186- let aU = aD()
187- let F = parseIntValue(aU[t])
188- let G = parseIntValue(aU[u])
189- let bg = (F + G)
190- let k = parseIntValue(aU[v])
191- let H = parseIntValue(aU[w])
192- let I = aU[x]
193- let bh = fromBase58String(I)
194- let J = parseIntValue(aU[y])
195- let K = aU[z]
196- let bi = fromBase58String(K)
197- let L = parseIntValue(aU[A])
198- let bj = toString(af)
199- let bk = aI(bj)
200- let bl = parseIntValue(bk[P])
201- let bm = parseIntValue(bk[T])
202- let bn = if ((F >= bm))
203- then F
204- else bm
205- let bo = if ((height > bg))
206- then bg
207- else if ((F > height))
208- then F
64+let T = 1
65+
66+let U = 2
67+
68+let V = 3
69+
70+let W = 4
71+
72+let X = 5
73+
74+func Y (Z,aa,ab,ac,ad) = makeString(["%d%d%d%d%d", Z, aa, ab, ac, ad], c)
75+
76+
77+func ae (Z,aa,ab,ac,ad) = Y(toString(Z), toString(aa), toString(ab), toString(ac), toString(ad))
78+
79+
80+func af (m,ag) = makeString(["%d%d%d%d", toString(height), toString(lastBlock.timestamp), toString(m), toString(ag)], c)
81+
82+
83+func ah () = "%s__config"
84+
85+
86+func ai (aj) = ("%s__" + aj)
87+
88+
89+func ak () = "%s__totals"
90+
91+
92+func al (am,aj,an) = makeString(["%s%s%s%s__history", am, aj, an], c)
93+
94+
95+func ao () = "%s__usdnClaimDisabled"
96+
97+
98+func ap () = "%s__usdnClaimEndHeight"
99+
100+
101+func aq () = makeString(["%s", "periodLength"], c)
102+
103+
104+func ar () = makeString(["%s", "currentPeriod"], c)
105+
106+
107+func as (at) = makeString(["%s%s", "periodStartHeight", toString(at)], c)
108+
109+
110+func au (at) = makeString(["%s%s", "periodEndHeight", toString(at)], c)
111+
112+
113+func av () = makeString(["%s", "usdtPriceAssetAllowableRatio"], c)
114+
115+
116+func aw (ax) = makeString(["%s%s", "totalPeriodAllowance", ax], c)
117+
118+
119+func ay (ax) = makeString(["%s%s", "userPeriodAllowance", ax], c)
120+
121+
122+func az (ax,at) = makeString(["%s%s%s", "periodTotalAvailableToClaim", ax, toString(at)], c)
123+
124+
125+func aA (ax,at,aj) = makeString(["%s%s%s%s", "periodUserAvailableToClaim", ax, toString(at), aj], c)
126+
127+
128+func aB () = makeString(["%s", "usdtPriceAssetStablePool"], c)
129+
130+
131+func aC () = makeString(["%s", "usdtAssetId"], c)
132+
133+
134+func aD (aE) = makeString(["%s%s", "priceAssetBalance", aE], c)
135+
136+
137+func aF () = "%s__managerPublicKey"
138+
139+
140+func aG () = "%s__pendingManagerPublicKey"
141+
142+
143+func aH () = split(a(ah()), c)
144+
145+
146+func aI (aJ) = split(valueOrElse(getString(aJ), Y("0", "0", "0", "0", "0")), c)
147+
148+
149+func aK () = aI(ak())
150+
151+
152+func aL (aj) = aI(ai(aj))
153+
154+
155+func aM (aj) = split(a(ai(aj)), c)
156+
157+
158+let aN = 0
159+
160+let aO = 1
161+
162+let aP = 2
163+
164+let aQ = 3
165+
166+func aR (b,aS,aT,aU,aV) = {
167+ let Z = parseIntValue(aS[T])
168+ let aa = parseIntValue(aS[U])
169+ let ab = parseIntValue(aS[V])
170+ let ac = parseIntValue(aS[W])
171+ let ad = parseIntValue(aS[X])
172+ let aW = (Z + aT[aN])
173+ let aX = (aa + aT[aO])
174+ let aY = aH()
175+ let O = aY[D]
176+ let aZ = value(assetInfo(fromBase58String(O))).decimals
177+ let ba = fraction(aV, e, pow(10, 0, aZ, 0, 0, DOWN))
178+ let bb = ((ab + aT[aP]) - aV)
179+ let bc = ((ac + aT[aQ]) + ba)
180+ let bd = if ((0 > aX))
181+ then {
182+ let be = ((aW - bb) - bc)
183+ let bf = if ((0 > be))
184+ then 0
185+ else be
186+ StringEntry(b, ae(aW, bf, bb, bc, aU))
187+ }
188+ else StringEntry(b, ae(aW, aX, bb, bc, aU))
189+ bd
190+ }
191+
192+
193+func bg (aj,m,ag,bh) = StringEntry(al("invest", aj, toBase58String(bh)), af(m, ag))
194+
195+
196+func bi (aj,m,ag,bh) = StringEntry(al("claim", aj, toBase58String(bh)), af(m, ag))
197+
198+
199+func bj (bk,aj,bh) = {
200+ let aY = aH()
201+ let J = parseIntValue(aY[x])
202+ let K = parseIntValue(aY[y])
203+ let bl = (J + K)
204+ let o = parseIntValue(aY[z])
205+ let L = parseIntValue(aY[A])
206+ let M = aY[B]
207+ let bm = fromBase58String(M)
208+ let N = parseIntValue(aY[C])
209+ let O = aY[D]
210+ let bn = fromBase58String(O)
211+ let P = parseIntValue(aY[E])
212+ let bo = toString(aj)
213+ let bp = aM(bo)
214+ let bq = parseIntValue(bp[T])
215+ let br = parseIntValue(bp[X])
216+ let bs = if ((J >= br))
217+ then J
218+ else br
219+ let bt = if ((height > bl))
220+ then bl
221+ else if ((J > height))
222+ then J
209223 else height
210- let bp = (bo - bn)
211- let bq = fraction(bl, bp, G)
212- let br = h(bq, L, k, H, J)
213- let bs = (bf == K)
214- let bt = valueOrElse(getBoolean(ak()), false)
215- let bu = [if (!(if (bs)
216- then bt
224+ let bu = (bt - bs)
225+ let bv = fraction(bq, bu, K)
226+ let bw = l(bv, P, o, L, N)
227+ let bx = (bk == O)
228+ let by = valueOrElse(getBoolean(ao()), false)
229+ let bz = [if (!(if (bx)
230+ then by
217231 else false))
218232 then true
219233 else throw("USDN claim is disabled")]
220- if ((bu == bu))
221- then if ((bf == K))
222- then $Tuple6([0, -(bq), bq, 0], bq, bi, bk, bo, [bq, br])
223- else if ((bf == I))
224- then $Tuple6([0, -(bq), 0, br], br, bh, bk, bo, [bq, br])
225- else throw(("unsupported assetId: " + bf))
234+ if ((bz == bz))
235+ then if ((bk == O))
236+ then $Tuple6([0, -(bv), bv, 0], bv, bn, bp, bt, [bv, bw])
237+ else if ((bk == M))
238+ then $Tuple6([0, -(bv), 0, bw], bw, bm, bp, bt, [bv, bw])
239+ else throw(("unsupported assetId: " + bk))
226240 else throw("Strict value is not equal to itself.")
227241 }
228242
229243
230-func bv (K,bj,bw,bx) = {
231- let by = value(getInteger(as(K)))
232- let bz = value(getInteger(au(K)))
233- let bA = value(getInteger(am()))
234- let bB = valueOrElse(getInteger(an()), 0)
235- let bC = isDefined(getInteger(aq(0)))
236- let bD = if ((bB > 0))
244+func bA (O,bo,bB,bC) = {
245+ let bD = value(getInteger(aw(O)))
246+ let bE = value(getInteger(ay(O)))
247+ let bF = value(getInteger(aq()))
248+ let bG = valueOrElse(getInteger(ar()), 0)
249+ let bH = isDefined(getInteger(au(0)))
250+ let bI = if ((bG > 0))
237251 then {
238- let bE = value(getInteger(ao(bB)))
239- let bF = value(getInteger(aq(bB)))
240- let bG = if ((height > bF))
252+ let bJ = value(getInteger(as(bG)))
253+ let bK = value(getInteger(au(bG)))
254+ let bL = if ((height > bK))
241255 then {
242- let bH = (bB + 1)
243- let bI = if ((height > (bF + bA)))
256+ let bM = (bG + 1)
257+ let bN = if ((height > (bK + bF)))
244258 then {
245- let bJ = ((height - bF) % bA)
246- if ((bJ == 0))
247- then ((height - bA) + 1)
248- else (height - bJ)
259+ let bO = ((height - bK) % bF)
260+ if ((bO == 0))
261+ then ((height - bF) + 1)
262+ else (height - bO)
249263 }
250- else (bF + 1)
251- let bK = ((bI + bA) - 1)
252- $Tuple3(bH, bI, bK)
264+ else (bK + 1)
265+ let bP = ((bN + bF) - 1)
266+ $Tuple3(bM, bN, bP)
253267 }
254- else $Tuple3(bB, bE, bF)
255- let bH = bG._1
256- let bI = bG._2
257- let bK = bG._3
258- $Tuple3(bH, bI, bK)
268+ else $Tuple3(bG, bJ, bK)
269+ let bM = bL._1
270+ let bN = bL._2
271+ let bP = bL._3
272+ $Tuple3(bM, bN, bP)
259273 }
260- else if (bC)
274+ else if (bH)
261275 then {
262- let bL = value(getInteger(ao(0)))
263- let bM = value(getInteger(aq(0)))
264- let bN = if ((height > bM))
276+ let bQ = value(getInteger(as(0)))
277+ let bR = value(getInteger(au(0)))
278+ let bS = if ((height > bR))
265279 then {
266- let bH = (bB + 1)
267- let bI = (bM + 1)
268- let bK = ((bI + bA) - 1)
269- $Tuple3(bH, bI, bK)
280+ let bM = (bG + 1)
281+ let bN = (bR + 1)
282+ let bP = ((bN + bF) - 1)
283+ $Tuple3(bM, bN, bP)
270284 }
271- else $Tuple3(bB, bL, bM)
272- let bH = bN._1
273- let bI = bN._2
274- let bK = bN._3
275- $Tuple3(bH, bI, bK)
285+ else $Tuple3(bG, bQ, bR)
286+ let bM = bS._1
287+ let bN = bS._2
288+ let bP = bS._3
289+ $Tuple3(bM, bN, bP)
276290 }
277- else $Tuple3(bB, valueOrElse(getInteger(ao(bB)), height), valueOrElse(getInteger(aq(bB)), ((height + bA) - 1)))
278- let bH = bD._1
279- let bI = bD._2
280- let bK = bD._3
281- let bO = valueOrElse(getInteger(av(K, bH)), by)
282- let bP = valueOrElse(getInteger(aw(K, bH, bj)), bz)
283- let aR = valueOrElse(getInteger(az(bj)), 0)
284- let bQ = min([(bw + aR), bO, bP])
285- let bR = value(getInteger(ar()))
286- let bS = e
287- let bT = {
288- let bU = invoke(addressFromStringValue(value(getString(ax()))), "putOneTknV2WithoutTakeFeeREADONLY", [bS, K], nil)
289- if ($isInstanceOf(bU, "(Int, Int, Int)"))
290- then bU
291+ else $Tuple3(bG, valueOrElse(getInteger(as(bG)), height), valueOrElse(getInteger(au(bG)), ((height + bF) - 1)))
292+ let bM = bI._1
293+ let bN = bI._2
294+ let bP = bI._3
295+ let bT = valueOrElse(getInteger(az(O, bM)), bD)
296+ let bU = valueOrElse(getInteger(aA(O, bM, bo)), bE)
297+ let aV = valueOrElse(getInteger(aD(bo)), 0)
298+ let bV = min([(bB + aV), bT, bU])
299+ let bW = value(getInteger(av()))
300+ let bX = e
301+ let bY = {
302+ let bZ = invoke(addressFromStringValue(value(getString(aB()))), "putOneTknV2WithoutTakeFeeREADONLY", [bX, O], nil)
303+ if ($isInstanceOf(bZ, "(Int, Int, Int)"))
304+ then bZ
291305 else throw("Couldn't cast Any to (Int, Int, Int)")
292306 }
293- if ((bT == bT))
307+ if ((bY == bY))
294308 then {
295- let bV = bT._3
296- let bW = bT._2
297- let bX = bT._1
298- let bY = value(getString(ay()))
299- let bZ = {
300- let bU = invoke(addressFromStringValue(value(getString(ax()))), "getOneTknV2READONLY", [bY, bX], nil)
301- if ($isInstanceOf(bU, "(Int, Int)"))
302- then bU
309+ let ca = bY._3
310+ let cb = bY._2
311+ let cc = bY._1
312+ let cd = value(getString(aC()))
313+ let ce = {
314+ let bZ = invoke(addressFromStringValue(value(getString(aB()))), "getOneTknV2READONLY", [cd, cc], nil)
315+ if ($isInstanceOf(bZ, "(Int, Int)"))
316+ then bZ
303317 else throw("Couldn't cast Any to (Int, Int)")
304318 }
305- if ((bZ == bZ))
319+ if ((ce == ce))
306320 then {
307- let ca = bZ._2
308- let cb = bZ._1
309- let cc = fraction(bS, e, cb)
310- let cd = (bK - height)
311- $Tuple10(bQ, bO, bP, bx, bR, cc, cd, bH, bI, bK)
321+ let cf = ce._2
322+ let cg = ce._1
323+ let ch = fraction(bX, e, cg)
324+ let ci = (bP - height)
325+ $Tuple10(bV, bT, bU, bC, bW, ch, ci, bM, bN, bP)
312326 }
313327 else throw("Strict value is not equal to itself.")
314328 }
315329 else throw("Strict value is not equal to itself.")
316330 }
317331
318332
319-func ce () = {
320- let cf = getString(aB())
321- if ($isInstanceOf(cf, "String"))
333+func cj () = {
334+ let j = getString(aF())
335+ if ($isInstanceOf(j, "String"))
322336 then {
323- let cg = cf
324- fromBase58String(cg)
337+ let ck = j
338+ fromBase58String(ck)
325339 }
326- else if ($isInstanceOf(cf, "Unit"))
340+ else if ($isInstanceOf(j, "Unit"))
327341 then unit
328342 else throw("Match error")
329343 }
330344
331345
332-func ch () = {
333- let cf = getString(aC())
334- if ($isInstanceOf(cf, "String"))
346+func cl () = {
347+ let j = getString(aG())
348+ if ($isInstanceOf(j, "String"))
335349 then {
336- let cg = cf
337- fromBase58String(cg)
350+ let ck = j
351+ fromBase58String(ck)
338352 }
339- else if ($isInstanceOf(cf, "Unit"))
353+ else if ($isInstanceOf(j, "Unit"))
340354 then unit
341355 else throw("Match error")
342356 }
343357
344358
345-func ci (cj) = {
346- let ck = throw("Permission denied")
347- let cf = ce()
348- if ($isInstanceOf(cf, "ByteVector"))
359+func cm (cn) = {
360+ let co = throw("Permission denied")
361+ let j = cj()
362+ if ($isInstanceOf(j, "ByteVector"))
349363 then {
350- let cl = cf
351- if ((cj.callerPublicKey == cl))
364+ let cp = j
365+ if ((cn.callerPublicKey == cp))
352366 then true
353- else ck
367+ else co
354368 }
355- else if ($isInstanceOf(cf, "Unit"))
356- then if ((cj.caller == this))
369+ else if ($isInstanceOf(j, "Unit"))
370+ then if ((cn.caller == this))
357371 then true
358- else ck
372+ else co
359373 else throw("Match error")
360374 }
361375
362376
363-@Callable(cj)
364-func constructor (D,E,F,G,k,K,M) = {
365- let H = ((100 * 1000) * 1000)
366- let cm = (D + E)
367- if (isDefined(getString(ad())))
377+@Callable(cn)
378+func constructor (H,I,J,K,o,O,Q) = {
379+ let L = ((100 * 1000) * 1000)
380+ let cq = (H + I)
381+ if (isDefined(getString(ah())))
368382 then throw("already initialized")
369- else if (("3PMEHLx1j6zerarZTYfsGqDeeZqQoMpxq5S" != toString(cj.caller)))
383+ else if (("3PMEHLx1j6zerarZTYfsGqDeeZqQoMpxq5S" != toString(cn.caller)))
370384 then throw("not authorized")
371- else if ((size(cj.payments) != 1))
385+ else if ((size(cn.payments) != 1))
372386 then throw("exactly 1 payment must be attached")
373- else if ((cm >= F))
387+ else if ((cq >= J))
374388 then throw("claimStart must be greater than idoEnd")
375389 else {
376- let cn = value(cj.payments[0])
377- let bh = value(cn.assetId)
378- let co = valueOrErrorMessage(assetInfo(bh), "fail to load ido asset info")
379- let I = toBase58String(bh)
380- let J = pow(10, 0, co.decimals, 0, 0, DOWN)
381- let bi = fromBase58String(K)
382- let cp = valueOrErrorMessage(assetInfo(bi), "fail to load price asset info")
383- let L = pow(10, 0, cp.decimals, 0, 0, DOWN)
384- let cq = aG()
385- let cr = [0, 0, 0, 0]
386-[StringEntry(ad(), O(D, E, F, G, k, H, I, J, K, L, M, cn.amount)), aN(ag(), cq, cr, F, 0)]
390+ let cr = value(cn.payments[0])
391+ let bm = value(cr.assetId)
392+ let cs = valueOrErrorMessage(assetInfo(bm), "fail to load ido asset info")
393+ let M = toBase58String(bm)
394+ let N = pow(10, 0, cs.decimals, 0, 0, DOWN)
395+ let bn = fromBase58String(O)
396+ let ct = valueOrErrorMessage(assetInfo(bn), "fail to load price asset info")
397+ let P = pow(10, 0, ct.decimals, 0, 0, DOWN)
398+ let cu = aK()
399+ let cv = [0, 0, 0, 0]
400+[StringEntry(ah(), S(H, I, J, K, o, L, M, N, O, P, Q, cr.amount)), aR(ak(), cu, cv, J, 0)]
387401 }
388402 }
389403
390404
391405
392-@Callable(cj)
406+@Callable(cn)
393407 func invest () = {
394- let aU = aD()
395- let D = parseIntValue(aU[r])
396- let E = parseIntValue(aU[s])
397- let cm = (D + E)
398- let F = parseIntValue(aU[t])
399- let G = parseIntValue(aU[u])
400- let k = parseIntValue(aU[v])
401- let H = parseIntValue(aU[w])
402- let I = aU[x]
403- let bh = fromBase58String(I)
404- let J = parseIntValue(aU[y])
405- let K = aU[z]
406- let bi = fromBase58String(K)
407- let L = parseIntValue(aU[A])
408- let cs = parseIntValue(aU[B])
409- let af = toString(cj.caller)
410- if ((D > height))
408+ let aY = aH()
409+ let H = parseIntValue(aY[v])
410+ let I = parseIntValue(aY[w])
411+ let cq = (H + I)
412+ let J = parseIntValue(aY[x])
413+ let K = parseIntValue(aY[y])
414+ let o = parseIntValue(aY[z])
415+ let L = parseIntValue(aY[A])
416+ let M = aY[B]
417+ let bm = fromBase58String(M)
418+ let N = parseIntValue(aY[C])
419+ let O = aY[D]
420+ let bn = fromBase58String(O)
421+ let P = parseIntValue(aY[E])
422+ let cw = parseIntValue(aY[F])
423+ let aj = toString(cn.caller)
424+ if ((H > height))
411425 then throw("ido has not been started yet")
412- else if ((height > cm))
426+ else if ((height > cq))
413427 then throw("ido has been already ended")
414- else if ((size(cj.payments) != 1))
428+ else if ((size(cn.payments) != 1))
415429 then throw("exactly 1 payment is expected")
416430 else {
417- let cn = value(cj.payments[0])
418- let ct = value(cn.assetId)
419- let cu = cn.amount
420- if ((ct != bi))
421- then throw((("invalid payment asset id: " + toBase58String(ct)) + " is expected"))
431+ let cr = value(cn.payments[0])
432+ let cx = value(cr.assetId)
433+ let cy = cr.amount
434+ if ((cx != bn))
435+ then throw((("invalid payment asset id: " + toBase58String(cx)) + " is expected"))
422436 else {
423- let cv = aH(af)
424- let cq = aG()
425- let cw = (parseIntValue(cq[P]) + cu)
426- let cx = (cw * 100)
427- if ((cx > assetBalance(this, bh)))
437+ let cz = aL(aj)
438+ let cu = aK()
439+ let cA = (parseIntValue(cu[T]) + cy)
440+ let cB = (cA * 100)
441+ if ((cB > assetBalance(this, bm)))
428442 then throw("IDO asset has been - sold consider to use smaller payment")
429443 else {
430- let cr = [cu, cu, 0, 0]
431-[aN(ae(af), cv, cr, F, 0), aN(ag(), cq, cr, F, 0), bb(af, cu, 0, cj.transactionId)]
444+ let cv = [cy, cy, 0, 0]
445+[aR(ai(aj), cz, cv, J, 0), aR(ak(), cu, cv, J, 0), bg(aj, cy, 0, cn.transactionId)]
432446 }
433447 }
434448 }
435449 }
436450
437451
438452
439-@Callable(cj)
440-func claim (bf,bj) = {
441- let cy = toString(cj.caller)
442- if ((bj != cy))
453+@Callable(cn)
454+func claim (bk,bo) = {
455+ let cC = toString(cn.caller)
456+ if ((bo != cC))
443457 then throw("not authorized")
444458 else {
445- let aU = aD()
446- let K = aU[z]
447- let cz = be(bf, cj.caller, cj.transactionId)
448- let cr = cz._1
449- let bw = cz._2
450- let cA = cz._3
451- let bk = cz._4
452- let bo = cz._5
453- let cB = cr[aL]
454- let cC = cr[aM]
455- let aR = valueOrElse(getInteger(az(bj)), 0)
456- let aV = value(assetInfo(fromBase58String(K))).decimals
457- let aZ = if ((bf == K))
459+ let aY = aH()
460+ let O = aY[D]
461+ let cD = bj(bk, cn.caller, cn.transactionId)
462+ let cv = cD._1
463+ let bB = cD._2
464+ let cE = cD._3
465+ let bp = cD._4
466+ let bt = cD._5
467+ let cF = cv[aP]
468+ let cG = cv[aQ]
469+ let aV = valueOrElse(getInteger(aD(bo)), 0)
470+ let aZ = value(assetInfo(fromBase58String(O))).decimals
471+ let bd = if ((bk == O))
458472 then {
459- let cD = bv(K, bj, bw, cr[aL])
460- let bQ = cD._1
461- let bO = cD._2
462- let bP = cD._3
463- let bx = cD._4
464- let bR = cD._5
465- let cc = cD._6
466- let cd = cD._7
467- let bH = cD._8
468- let bI = cD._9
469- let bK = cD._10
470- let bu = [if ((bP > 0))
473+ let cH = bA(O, bo, bB, cv[aP])
474+ let bV = cH._1
475+ let bT = cH._2
476+ let bU = cH._3
477+ let bC = cH._4
478+ let bW = cH._5
479+ let ch = cH._6
480+ let ci = cH._7
481+ let bM = cH._8
482+ let bN = cH._9
483+ let bP = cH._10
484+ let bz = [if ((bU > 0))
471485 then true
472- else f("unavailable to claim because user period allowance reached"), if ((bO > 0))
486+ else f("unavailable to claim because user period allowance reached"), if ((bT > 0))
473487 then true
474- else f("unavailable to claim because total period allowance reached"), if ((bQ > 0))
488+ else f("unavailable to claim because total period allowance reached"), if ((bV > 0))
475489 then true
476- else f("nothing to claim"), if ((bR > cc))
490+ else f("nothing to claim"), if ((bW > ch))
477491 then true
478492 else f("unavailable to claim because usdn price lower than usdtPriceAssetAllowableRatio")]
479- if ((bu == bu))
493+ if ((bz == bz))
480494 then {
481- let cE = (bO - bQ)
482- let cF = (bP - bQ)
483- let aZ = if ((aR >= bQ))
484- then [ScriptTransfer(cj.caller, bQ, cA), IntegerEntry(az(bj), (aR - bQ))]
495+ let cI = (bT - bV)
496+ let cJ = (bU - bV)
497+ let bd = if ((aV >= bV))
498+ then [ScriptTransfer(cn.caller, bV, cE), IntegerEntry(aD(bo), (aV - bV))]
485499 else {
486- let cG = ((aR + bw) - bQ)
487-[ScriptTransfer(cj.caller, bQ, cA), aN(ae(bj), bk, cr, bo, 0), aN(ag(), aG(), cr, bo, 0), IntegerEntry(az(bj), cG)]
500+ let cK = ((aV + bB) - bV)
501+[ScriptTransfer(cn.caller, bV, cE), aR(ai(bo), bp, cv, bt, 0), aR(ak(), aK(), cv, bt, 0), IntegerEntry(aD(bo), cK)]
488502 }
489- $Tuple2(([IntegerEntry(an(), bH), IntegerEntry(ao(bH), bI), IntegerEntry(aq(bH), bK), IntegerEntry(av(K, bH), cE), IntegerEntry(aw(K, bH, bj), cF), bd(bj, bQ, cC, cj.transactionId)] ++ aZ), unit)
503+ $Tuple2(([IntegerEntry(ar(), bM), IntegerEntry(as(bM), bN), IntegerEntry(au(bM), bP), IntegerEntry(az(O, bM), cI), IntegerEntry(aA(O, bM, bo), cJ), bi(bo, bV, cG, cn.transactionId)] ++ bd), unit)
490504 }
491505 else throw("Strict value is not equal to itself.")
492506 }
493507 else {
494- let cH = fraction(aR, e, pow(10, 0, aV, 0, 0, DOWN))
495- $Tuple2([ScriptTransfer(cj.caller, (bw + cH), cA), IntegerEntry(az(bj), 0), aN(ae(bj), bk, cr, bo, aR), aN(ag(), aG(), cr, bo, aR), bd(bj, cB, (cC + cH), cj.transactionId)], unit)
508+ let cL = fraction(aV, e, pow(10, 0, aZ, 0, 0, DOWN))
509+ $Tuple2([ScriptTransfer(cn.caller, (bB + cL), cE), IntegerEntry(aD(bo), 0), aR(ai(bo), bp, cv, bt, aV), aR(ak(), aK(), cv, bt, aV), bi(bo, cF, (cG + cL), cn.transactionId)], unit)
496510 }
497- aZ
511+ bd
498512 }
499513 }
500514
501515
502516
503-@Callable(cj)
504-func claimREADONLY (bf,bj) = {
505- let cz = be(bf, addressFromStringValue(bj), fromBase58String(""))
506- let cr = cz._1
507- let bw = cz._2
508- let cA = cz._3
509- let bk = cz._4
510- let bo = cz._5
511- let cI = cz._6
512- let cJ = cI[0]
513- let cK = cI[1]
514- $Tuple2(nil, makeString(["%s%d%d", bj, toString(cJ), toString(cK)], c))
515- }
516-
517-
518-
519-@Callable(cj)
520-func claimV2READONLY (bf,bj) = {
521- let cz = be(bf, addressFromStringValue(bj), fromBase58String(""))
522- let cr = cz._1
523- let bw = cz._2
524- let cA = cz._3
525- let bk = cz._4
526- let bo = cz._5
527- let cI = cz._6
528- let cJ = cI[0]
529- let cK = cI[1]
530- let aU = aD()
531- let K = aU[z]
532- let aR = valueOrElse(getInteger(az(bj)), 0)
533- let cH = (aR * 100)
534- let cL = (cK + cH)
535- let cM = bv(K, bj, bw, cr[aL])
536- let bQ = cM._1
537- let bO = cM._2
538- let bP = cM._3
539- let bx = cM._4
540- let bR = cM._5
541- let cc = cM._6
542- let cd = cM._7
543- let bH = cM._8
544- let bI = cM._9
545- let bK = cM._10
546- let cN = valueOrElse(getInteger(aq(bH)), 0)
547- let cO = (parseIntValue(aI(bj)[R]) - aR)
548- let cP = if ((height > cN))
517+@Callable(cn)
518+func cleanRemaingAmount (bo) = {
519+ let O = aH()[D]
520+ let cM = split(h(invoke(this, "claimV2READONLY", [O, bo], nil)), c)
521+ if ((cM == cM))
549522 then {
550- let cQ = value(getInteger(am()))
551- let cR = value(getInteger(au(K)))
552- let cS = value(getInteger(as(K)))
553- makeString(["%d%d%d%d%d%d", toString(cL), toString(cR), toString(cS), toString(bR), toString(cc), toString(cQ), toString(cO)], c)
554- }
555- else makeString(["%d%d%d%d%d%d", toString(cL), toString(bQ), toString(bO), toString(bR), toString(cc), toString(cd), toString(cO)], c)
556- $Tuple2(nil, cP)
557- }
558-
559-
560-
561-@Callable(cj)
562-func setManager (cT) = {
563- let cU = ci(cj)
564- if ((cU == cU))
565- then {
566- let cV = fromBase58String(cT)
567- if ((cV == cV))
568- then [StringEntry(aC(), cT)]
523+ let bV = parseIntValue(cM[2])
524+ let cN = if ((bV == 0))
525+ then true
526+ else f("user have unclaimed assets")
527+ if ((cN == cN))
528+ then {
529+ let cO = split(value(getString(ai(bo))), c)
530+ let cP = parseIntValue(cO[T])
531+ let cQ = parseIntValue(cO[U])
532+ let cR = parseIntValue(cO[V])
533+ let cS = parseIntValue(cO[W])
534+ let cT = parseIntValue(cO[X])
535+ let cU = makeString([toString(cP), "0", toString(cR), toString(cS), toString(cT)], c)
536+ let cV = split(value(getString(ak())), c)
537+ let cW = parseIntValue(cV[T])
538+ let cX = parseIntValue(cV[U])
539+ let cY = parseIntValue(cV[U])
540+ let cZ = parseIntValue(cV[V])
541+ let da = parseIntValue(cV[X])
542+ let db = makeString([toString(cW), toString((cX - cQ)), toString(cY), toString(cZ), toString(da)], c)
543+[StringEntry(ai(bo), cU), StringEntry(ak(), db)]
544+ }
569545 else throw("Strict value is not equal to itself.")
570546 }
571547 else throw("Strict value is not equal to itself.")
572548 }
573549
574550
575551
576-@Callable(cj)
577-func confirmManager () = {
578- let cW = ch()
579- let cX = if (isDefined(cW))
580- then true
581- else throw("No pending manager")
582- if ((cX == cX))
552+@Callable(cn)
553+func claimREADONLY (bk,bo) = {
554+ let cD = bj(bk, addressFromStringValue(bo), fromBase58String(""))
555+ let cv = cD._1
556+ let bB = cD._2
557+ let cE = cD._3
558+ let bp = cD._4
559+ let bt = cD._5
560+ let dc = cD._6
561+ let dd = dc[0]
562+ let de = dc[1]
563+ $Tuple2(nil, makeString(["%s%d%d", bo, toString(dd), toString(de)], c))
564+ }
565+
566+
567+
568+@Callable(cn)
569+func claimV2READONLY (bk,bo) = {
570+ let cD = bj(bk, addressFromStringValue(bo), fromBase58String(""))
571+ let cv = cD._1
572+ let bB = cD._2
573+ let cE = cD._3
574+ let bp = cD._4
575+ let bt = cD._5
576+ let dc = cD._6
577+ let dd = dc[0]
578+ let de = dc[1]
579+ let aY = aH()
580+ let O = aY[D]
581+ let aV = valueOrElse(getInteger(aD(bo)), 0)
582+ let cL = (aV * 100)
583+ let df = (de + cL)
584+ let dg = bA(O, bo, bB, cv[aP])
585+ let bV = dg._1
586+ let bT = dg._2
587+ let bU = dg._3
588+ let bC = dg._4
589+ let bW = dg._5
590+ let ch = dg._6
591+ let ci = dg._7
592+ let bM = dg._8
593+ let bN = dg._9
594+ let bP = dg._10
595+ let dh = valueOrElse(getInteger(au(bM)), 0)
596+ let di = (parseIntValue(aM(bo)[V]) - aV)
597+ let dj = if ((height > dh))
583598 then {
584- let cY = if ((cj.callerPublicKey == value(cW)))
585- then true
586- else throw("You are not pending manager")
587- if ((cY == cY))
588- then [StringEntry(aB(), toBase58String(value(cW))), DeleteEntry(aC())]
599+ let dk = value(getInteger(aq()))
600+ let dl = value(getInteger(ay(O)))
601+ let dm = value(getInteger(aw(O)))
602+ makeString(["%d%d%d%d%d%d", toString(df), toString(dl), toString(dm), toString(bW), toString(ch), toString(dk), toString(di)], c)
603+ }
604+ else makeString(["%d%d%d%d%d%d", toString(df), toString(bV), toString(bT), toString(bW), toString(ch), toString(ci), toString(di)], c)
605+ $Tuple2(nil, dj)
606+ }
607+
608+
609+
610+@Callable(cn)
611+func setManager (dn) = {
612+ let do = cm(cn)
613+ if ((do == do))
614+ then {
615+ let dp = fromBase58String(dn)
616+ if ((dp == dp))
617+ then [StringEntry(aG(), dn)]
589618 else throw("Strict value is not equal to itself.")
590619 }
591620 else throw("Strict value is not equal to itself.")
592621 }
593622
594623
595-@Verifier(cZ)
596-func da () = {
597- let db = {
598- let cf = ce()
599- if ($isInstanceOf(cf, "ByteVector"))
624+
625+@Callable(cn)
626+func confirmManager () = {
627+ let dq = cl()
628+ let dr = if (isDefined(dq))
629+ then true
630+ else throw("No pending manager")
631+ if ((dr == dr))
632+ then {
633+ let ds = if ((cn.callerPublicKey == value(dq)))
634+ then true
635+ else throw("You are not pending manager")
636+ if ((ds == ds))
637+ then [StringEntry(aF(), toBase58String(value(dq))), DeleteEntry(aG())]
638+ else throw("Strict value is not equal to itself.")
639+ }
640+ else throw("Strict value is not equal to itself.")
641+ }
642+
643+
644+@Verifier(dt)
645+func du () = {
646+ let dv = {
647+ let j = cj()
648+ if ($isInstanceOf(j, "ByteVector"))
600649 then {
601- let cl = cf
602- cl
650+ let cp = j
651+ cp
603652 }
604- else if ($isInstanceOf(cf, "Unit"))
605- then cZ.senderPublicKey
653+ else if ($isInstanceOf(j, "Unit"))
654+ then dt.senderPublicKey
606655 else throw("Match error")
607656 }
608- sigVerify(cZ.bodyBytes, cZ.proofs[0], db)
657+ sigVerify(dt.bodyBytes, dt.proofs[0], dv)
609658 }
610659

github/deemru/w8io/169f3d6 
226.14 ms