tx · 2qW17c8JnPrwt2Bw4FoKQzpxMSG4bt4Hu6iqKS9WCJre

3MwK6nw9HMwuKbXxu6J1rfecvePPd3JyAje:  -0.03000000 Waves

2022.12.01 17:13 [2341379] smart account 3MwK6nw9HMwuKbXxu6J1rfecvePPd3JyAje > SELF 0.00000000 Waves

{ "type": 13, "id": "2qW17c8JnPrwt2Bw4FoKQzpxMSG4bt4Hu6iqKS9WCJre", "fee": 3000000, "feeAssetId": null, "timestamp": 1669904040586, "version": 1, "sender": "3MwK6nw9HMwuKbXxu6J1rfecvePPd3JyAje", "senderPublicKey": "8JB75GXEKqxmpXc6KVtT9UNqJ3BBSUZDodYD4DU7CUUB", "proofs": [ "2kZeuwPKcSobcEzghKLh1aaJMvwvtWZb436QK6X8Ae4kALbY7wDedDoVuHssJekbsPmB2Dg1pUj5Ee6H3dXaqck8" ], "script": "base64:AAIFAAAAAAAAEUgIAhIJCgcBAQEBAQgBEgASBAoCCAgSAwoBCBIECgIICBIECgIICBIDCgEIEgAiD2dldFN0cmluZ09yRmFpbCIDa2V5IgNTRVAiCEJVRlNDQUxFIgZzY2FsZTgiCHRocm93RXJyIgNtc2ciCGFzU3RyaW5nIgN2YWwiByRtYXRjaDAiBnZhbFN0ciIdY29udmVydFByaWNlQXNzZXRJbnRvSWRvQXNzZXQiEHByaWNlQXNzZXRBbW91bnQiDnByaWNlQXNzZXRNVUxUIgVwcmljZSIJcHJpY2VNVUxUIgxpZG9Bc3NldE1VTFQiD2JQcmljZUFzc2V0TVVMVCINYklkb0Fzc2V0TVVMVCIOYlByaWNlQXNzZXRCVUYiD2JBbW91bnRBc3NldEJVRiIOSWR4Q2ZnSWRvU3RhcnQiEUlkeENmZ0lkb0R1cmF0aW9uIhBJZHhDZmdDbGFpbVN0YXJ0IhNJZHhDZmdDbGFpbUR1cmF0aW9uIgtJZHhDZmdQcmljZSIPSWR4Q2ZnUHJpY2VNdWx0IhBJZHhDZmdJZG9Bc3NldElkIhJJZHhDZmdJZG9Bc3NldE11bHQiEklkeENmZ1ByaWNlQXNzZXRJZCIUSWR4Q2ZnUHJpY2VBc3NldE11bHQiFUlkeENmZ01pbkludmVzdEFtb3VudCINZnJvbWF0Q29uZmlnUyIIaWRvU3RhcnQiC2lkb0R1cmF0aW9uIgpjbGFpbVN0YXJ0Ig1jbGFpbUR1cmF0aW9uIglwcmljZU11bHQiDGlkb0Fzc2V0SWQ1OCIMaWRvQXNzZXRNdWx0Ig5wcmljZUFzc2V0SWQ1OCIOcHJpY2VBc3NldE11bHQiD21pbkludmVzdEFtb3VudCITdG90YWxJZG9Bc3NldFRvU2VsbCIMZnJvbWF0Q29uZmlnIhFJZHhJbnZUb3RhbEFtb3VudCIVSWR4SW52UmVtYWluaW5nQW1vdW50Ih1JZHhJbnZDbGFpbWVkUHJpY2VBc3NldEFtb3VudCIbSWR4SW52Q2xhaW1lZElkb0Fzc2V0QW1vdW50IhdJZHhJbnZMYXN0Q2xhaW1lZEhlaWdodCIPZm9ybWF0SW52ZXN0b3JTIgt0b3RhbEFtb3VudCIPcmVtYWluaW5nQW1vdW50IhdjbGFpbWVkUHJpY2VBc3NldEFtb3VudCIVY2xhaW1lZElkb0Fzc2V0QW1vdW50IhFsYXN0Q2xhaW1lZEhlaWdodCIOZm9ybWF0SW52ZXN0b3IiE2Zvcm1hdEhpc3RvcnlSZWNvcmQiDmlkb0Fzc2V0QW1vdW50IglrZXlDb25maWciC2tleUludmVzdG9yIgt1c2VyQWRkcmVzcyIJa2V5VG90YWxzIhlrZXlPcGVyYXRpb25IaXN0b3J5UmVjb3JkIgR0eXBlIgZ0eElkNTgiFGtleVVTRE5DbGFpbURpc2FibGVkIhVrZXlVU0ROQ2xhaW1FbmRIZWlnaHQiD2tleVBlcmlvZExlbmd0aCIQa2V5Q3VycmVudFBlcmlvZCIUa2V5UGVyaW9kU3RhcnRIZWlnaHQiCXBlcmlvZE51bSISa2V5UGVyaW9kRW5kSGVpZ2h0Ih9rZXlVc2R0UHJpY2VBc3NldEFsbG93YWJsZVJhdGlvIhdrZXlUb3RhbFBlcmlvZEFsbG93YW5jZSIHYXNzZXRJZCIWa2V5VXNlclBlcmlvZEFsbG93YW5jZSIea2V5UGVyaW9kVG90YWxBdmFpbGFibGVUb0NsYWltIh1rZXlQZXJpb2RVc2VyQXZhaWxhYmxlVG9DbGFpbSIba2V5VXNkdFByaWNlQXNzZXRTdGFibGVQb29sIg5rZXlVc2R0QXNzZXRJZCIUa2V5UHJpY2VBc3NldEJhbGFuY2UiB2FkZHJlc3MiEmtleVJlbWFpbmluZ0Ftb3VudCITa2V5TWFuYWdlclB1YmxpY0tleSIaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiD3JlYWRDb25maWdBcnJheSIjcmVhZFRvdGFsc0FycmF5T3JEZWZhdWx0QnlDdXN0b21LZXkiCWN1c3RvbUtleSIYcmVhZFRvdGFsc0FycmF5T3JEZWZhdWx0IhpyZWFkSW52ZXN0b3JBcnJheU9yRGVmYXVsdCIXcmVhZEludmVzdG9yQXJyYXlPckZhaWwiFUlkeERpZmZUb3RhbEluY3JlbWVudCIkSWR4RGlmZlJlbWFpbmluZ1ByaWNlQW1vdW50SW5jcmVtZW50IiJJZHhEaWZmQ2xhaW1lZFByaWNlQW1vdW50SW5jcmVtZW50IiVJZHhEaWZmQ2xhaW1lZElkb0Fzc2V0QW1vdW50SW5jcmVtZW50IgtUb3RhbHNFbnRyeSIJb3JpZ0FycmF5Ig1pbmNyZW1lbnREaWZmIhRuZXdMYXN0Q2xhaW1lZEhlaWdodCIRcHJpY2VBc3NldEJhbGFuY2UiDm5ld1RvdGFsQW1vdW50IhJuZXdSZW1haW5pbmdBbW91bnQiCGNmZ0FycmF5IhJwcmljZUFzc2V0RGVjaW1hbHMiI3ByaWNlQXNzZXRCYWxhbmNlUHJpY2VBc3NldERlY2ltYWxzIhpuZXdDbGFpbWVkUHJpY2VBc3NldEFtb3VudCIYbmV3Q2xhaW1lZElkb0Fzc2V0QW1vdW50IgdlbnRyaWVzIgRkaWZmIhduZXdMb2dpY1JlbWFpbmluZ0Ftb3VudCIbSW52ZXN0T3BlcmF0aW9uSGlzdG9yeUVudHJ5IgR0eElkIhpDbGFpbU9wZXJhdGlvbkhpc3RvcnlFbnRyeSINaW50ZXJuYWxDbGFpbSIQY2xhaW1lZEFzc2V0SWQ1OCIIY2xhaW1FbmQiCmlkb0Fzc2V0SWQiDHByaWNlQXNzZXRJZCINdXNlckFkZHJlc3M1OCIPb3JpZ0ludmVzdEFycmF5IhFpbnZlc3RUb3RhbEFtb3VudCIaaW52ZXN0TGFzdENsYWltZWRIZWlnaHRUTVAiF2ludmVzdExhc3RDbGFpbWVkSGVpZ2h0IhRuZXdDbGFpbVBlcmlvZEhlaWdodCIOY2xhaW1pbmdCbG9ja3MiGGNsYWltaW5nUHJpY2VBc3NldEFtb3VudCIWY2xhaW1pbmdJZG9Bc3NldEFtb3VudCIGaXNVU0ROIhNpc1VTRE5DbGFpbURpc2FibGVkIgZjaGVja3MiD2ludGVybmFsQ2xhaW1WMiIJb3V0QW1vdW50Ihl0b3RhbFVzZXJBdmFpbGFibGVUb0NsYWltIh50b3RhbFBlcmlvZFByaWNlQXNzZXRBbGxvd2FuY2UiHXVzZXJQZXJpb2RQcmljZUFzc2V0QWxsb3dhbmNlIgxwZXJpb2RMZW5ndGgiDWN1cnJlbnRQZXJpb2QiG3plcm9QZXJpb2RFbmRIZWlnaElzRGVmaW5lZCINJHQwMTI4OTExNDc2MSIVbGFzdFBlcmlvZFN0YXJ0SGVpZ2h0IhNsYXN0UGVyaW9kRW5kSGVpZ2h0Ig0kdDAxMzE1MTEzODU2IhR1cGRhdGVkQ3VycmVudFBlcmlvZCILcGVyaW9kU3RhcnQiF2Jsb2Nrc1RvTGFzdFBlcmlvZFN0YXJ0IglwZXJpb2RFbmQiFXplcm9QZXJpb2RTdGFydEhlaWdodCITemVyb1BlcmlvZEVuZEhlaWdodCINJHQwMTQxMTExNDQ5MyIbcGVyaW9kVG90YWxBdmFpbGFibGVUb0NsYWltIhpwZXJpb2RVc2VyQXZhaWxhYmxlVG9DbGFpbSIZcGVyaW9kTWluQXZhaWxhYmxlVG9DbGFpbSIcdXNkdFByaWNlQXNzZXRBbGxvd2FibGVSYXRpbyIbcHV0T25lVGtuVjJQcmljZUFzc2V0QW1vdW50Ig0kdDAxNTUxNjE1NzY5IgFAIgVib251cyIJZmVlQW1vdW50IghscEFtb3VudCILdXNkdEFzc2V0SWQiDSR0MDE1ODMxMTYwNDkiFGdldE9uZVRrblYyRmVlQW1vdW50Igp1c2R0QW1vdW50IhpjdXJyZW50VXNkdFByaWNlQXNzZXRSYXRpbyITZW5kUGVyaW9kQmxvY2tzTGVmdCIWbWFuYWdlclB1YmxpY0tleU9yVW5pdCIBcyIdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQiC211c3RNYW5hZ2VyIgFpIgJwZCICcGsiBmlkb0VuZCIDcG10IgxpZG9Bc3NldEluZm8iDnByaWNlQXNzZXRJbmZvIg9vcmlnVG90YWxzQXJyYXkiCnRvdGFsc0RpZmYiDm1pbkl2ZXN0QW1vdW50IgpwbXRBc3NldElkIglwbXRBbW91bnQiEW9yaWdJbnZlc3RvckFycmF5IhNuZXdQcmljZVRvdGFsQW1vdW50IhZyZXF1aXJlZElkb0Fzc2V0QW1vdW50Ig9jYWxsZXJBZGRyZXNzNTgiEGNsYWltUmVzdWx0VHVwbGUiCm91dEFzc2V0SWQiGmNsYWltZWRQcmljZUFtb3VudEZyb21EaWZmIh1jbGFpbWVkSWRvQXNzZXRBbW91bnRGcm9tRGlmZiINJHQwMjE5NTgyMjQwMiIidXBkYXRlZFBlcmlvZFRvdGFsQXZhaWxhYmxlVG9DbGFpbSIhdXBkYXRlZFBlcmlvZFVzZXJBdmFpbGFibGVUb0NsYWltIg5ldmFsdWF0ZVJlc3VsdCIbYXZhaWxhYmxlUHJpY2VBbW91bnRUb0NsYWltIhBsYXN0Q2xhaW1FbnRyaWVzIhNpbnZlc3RvclRvdGFsQW1vdW50IhdpbnZlc3RvclJlbWFpbmluZ0Ftb3VudCIZaW52ZXN0b3JQcmljZUFzc2V0QmFsYW5jZSIXaW52ZXN0b3JJZG9Bc3NldEJhbGFuY2UiGWludmVzdG9yTGFzdENsYWltZWRIZWlnaHQiDm5ld0ludmVzdEFycmF5IgZ0b3RhbHMiEXRvdGFsc1RvdGFsQW1vdW50IhV0b3RhbHNSZW1haW5pbmdBbW91bnQiHXRvdGFsc0NsYWltZWRQcmljZUFzc2V0QW1vdW50Iht0b3RhbHNDbGFpbWVkSWRvQXNzZXRBbW91bnQiF3RvdGFsc0xhc3RDbGFpbWVkSGVpZ2h0IhhuZXdUb3RhbHNSZW1haW5pbmdBbW91bnQiDW5ld1RvdGFsQXJyYXkiGHVwZGF0ZWRQcmljZUFzc2V0QmFsYW5jZSIccHJpY2VBc3NldEJhbGFuY2VJZG9EZWNpbWFscyIUY2hlY2tVbmNsYWltZWRBc3NldHMiCGludmVzdG9yIhxpbnZlc3RvclJlbWFpbmluZ0Ftb3VudENoZWNrIgtuZXdJbnZlc3RvciIJbmV3VG90YWxzIhVhdmFpbGFibGVUb0NsYWltQXJyYXkiGWF2YWlsYWJsZUlkb0Ftb3VudFRvQ2xhaW0iLmF2YWlsYWJsZUlkb0Ftb3VudFRvQ2xhaW1XaXRoUHJpY2VBc3NldEJhbGFuY2UiDSR0MDMzMjI4MzM2NDAiFmN1cnJlbnRQZXJpb2RFbmRIZWlnaHQiGnVzZXJUb3RhbFByaWNlQXNzZXRDbGFpbWVkIgxyZXN1bHRTdHJpbmciDHBlcmlvZExlbmdodCITdXNlclBlcmlvZEFsbG93YW5jZSIUdG90YWxQZXJpb2RBbGxvd2FuY2UiF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5IgtjaGVja0NhbGxlciIVY2hlY2tNYW5hZ2VyUHVibGljS2V5IgJwbSIFaGFzUE0iB2NoZWNrUE0iAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleQAAAEIBAAAAAWEAAAABAAAAAWIJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCIAAAABBQAAAAFiCQAB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", "chainId": 84, "height": 2341379, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: AJ5U4yWhoE2z8pvAgpY4SyJ1vdDDfrpP3RAsGSELq5Aw Next: 9vixyuM1TkeC73BhoPKFjmGe5HDuqpYom75TB1nRUFaC Diff:
OldNewDifferences
134134 func aD (aE) = makeString(["%s%s", "priceAssetBalance", aE], c)
135135
136136
137-func aF () = "%s__managerPublicKey"
137+func aF (aE) = makeString(["%s%s", "remainingAmount", aE], c)
138138
139139
140-func aG () = "%s__pendingManagerPublicKey"
140+func aG () = "%s__managerPublicKey"
141141
142142
143-func aH () = split(a(ah()), c)
143+func aH () = "%s__pendingManagerPublicKey"
144144
145145
146-func aI (aJ) = split(valueOrElse(getString(aJ), Y("0", "0", "0", "0", "0")), c)
146+func aI () = split(a(ah()), c)
147147
148148
149-func aK () = aI(ak())
149+func aJ (aK) = split(valueOrElse(getString(aK), Y("0", "0", "0", "0", "0")), c)
150150
151151
152-func aL (aj) = aI(ai(aj))
152+func aL () = aJ(ak())
153153
154154
155-func aM (aj) = split(a(ai(aj)), c)
155+func aM (aj) = aJ(ai(aj))
156156
157157
158-let aN = 0
158+func aN (aj) = split(a(ai(aj)), c)
159159
160-let aO = 1
161160
162-let aP = 2
161+let aO = 0
163162
164-let aQ = 3
163+let aP = 1
165164
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))
165+let aQ = 2
166+
167+let aR = 3
168+
169+func aS (b,aT,aU,aV,aW) = {
170+ let Z = parseIntValue(aT[T])
171+ let aa = parseIntValue(aT[U])
172+ let ab = parseIntValue(aT[V])
173+ let ac = parseIntValue(aT[W])
174+ let ad = parseIntValue(aT[X])
175+ let aX = (Z + aU[aO])
176+ let aY = (aa + aU[aP])
177+ let aZ = aI()
178+ let O = aZ[D]
179+ let ba = value(assetInfo(fromBase58String(O))).decimals
180+ let bb = fraction(aW, e, pow(10, 0, ba, 0, 0, DOWN))
181+ let bc = ((ab + aU[aQ]) - aW)
182+ let bd = ((ac + aU[aR]) + bb)
183+ let be = if ((0 > aY))
181184 then {
182- let be = ((aW - bb) - bc)
183- let bf = if ((0 > be))
185+ let bf = ((aX - bc) - bd)
186+ let bg = if ((0 > bf))
184187 then 0
185- else be
186- StringEntry(b, ae(aW, bf, bb, bc, aU))
188+ else bf
189+ StringEntry(b, ae(aX, bg, bc, bd, aV))
187190 }
188- else StringEntry(b, ae(aW, aX, bb, bc, aU))
189- bd
191+ else StringEntry(b, ae(aX, aY, bc, bd, aV))
192+ be
190193 }
191194
192195
193-func bg (aj,m,ag,bh) = StringEntry(al("invest", aj, toBase58String(bh)), af(m, ag))
196+func bh (aj,m,ag,bi) = StringEntry(al("invest", aj, toBase58String(bi)), af(m, ag))
194197
195198
196-func bi (aj,m,ag,bh) = StringEntry(al("claim", aj, toBase58String(bh)), af(m, ag))
199+func bj (aj,m,ag,bi) = StringEntry(al("claim", aj, toBase58String(bi)), af(m, ag))
197200
198201
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))
202+func bk (bl,aj,bi) = {
203+ let aZ = aI()
204+ let J = parseIntValue(aZ[x])
205+ let K = parseIntValue(aZ[y])
206+ let bm = (J + K)
207+ let o = parseIntValue(aZ[z])
208+ let L = parseIntValue(aZ[A])
209+ let M = aZ[B]
210+ let bn = fromBase58String(M)
211+ let N = parseIntValue(aZ[C])
212+ let O = aZ[D]
213+ let bo = fromBase58String(O)
214+ let P = parseIntValue(aZ[E])
215+ let bp = toString(aj)
216+ let bq = aN(bp)
217+ let br = parseIntValue(bq[T])
218+ let bs = parseIntValue(bq[X])
219+ let bt = if ((J >= bs))
217220 then J
218- else br
219- let bt = if ((height > bl))
220- then bl
221+ else bs
222+ let bu = if ((height > bm))
223+ then bm
221224 else if ((J > height))
222225 then J
223226 else height
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
227+ let bv = (bu - bt)
228+ let bw = fraction(br, bv, K)
229+ let bx = l(bw, P, o, L, N)
230+ let by = (bl == O)
231+ let bz = valueOrElse(getBoolean(ao()), false)
232+ let bA = [if (!(if (by)
233+ then bz
231234 else false))
232235 then true
233236 else throw("USDN claim is disabled")]
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))
237+ if ((bA == bA))
238+ then if ((bl == O))
239+ then $Tuple6([0, -(bw), bw, 0], bw, bo, bq, bu, [bw, bx])
240+ else if ((bl == M))
241+ then $Tuple6([0, -(bw), 0, bx], bx, bn, bq, bu, [bw, bx])
242+ else throw(("unsupported assetId: " + bl))
240243 else throw("Strict value is not equal to itself.")
241244 }
242245
243246
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))
247+func bB (O,bp,bC,bD) = {
248+ let bE = value(getInteger(aw(O)))
249+ let bF = value(getInteger(ay(O)))
250+ let bG = value(getInteger(aq()))
251+ let bH = valueOrElse(getInteger(ar()), 0)
252+ let bI = isDefined(getInteger(au(0)))
253+ let bJ = if ((bH > 0))
251254 then {
252- let bJ = value(getInteger(as(bG)))
253- let bK = value(getInteger(au(bG)))
254- let bL = if ((height > bK))
255+ let bK = value(getInteger(as(bH)))
256+ let bL = value(getInteger(au(bH)))
257+ let bM = if ((height > bL))
255258 then {
256- let bM = (bG + 1)
257- let bN = if ((height > (bK + bF)))
259+ let bN = (bH + 1)
260+ let bO = if ((height > (bL + bG)))
258261 then {
259- let bO = ((height - bK) % bF)
260- if ((bO == 0))
261- then ((height - bF) + 1)
262- else (height - bO)
262+ let bP = ((height - bL) % bG)
263+ if ((bP == 0))
264+ then ((height - bG) + 1)
265+ else (height - bP)
263266 }
264- else (bK + 1)
265- let bP = ((bN + bF) - 1)
266- $Tuple3(bM, bN, bP)
267+ else (bL + 1)
268+ let bQ = ((bO + bG) - 1)
269+ $Tuple3(bN, bO, bQ)
267270 }
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)
271+ else $Tuple3(bH, bK, bL)
272+ let bN = bM._1
273+ let bO = bM._2
274+ let bQ = bM._3
275+ $Tuple3(bN, bO, bQ)
273276 }
274- else if (bH)
277+ else if (bI)
275278 then {
276- let bQ = value(getInteger(as(0)))
277- let bR = value(getInteger(au(0)))
278- let bS = if ((height > bR))
279+ let bR = value(getInteger(as(0)))
280+ let bS = value(getInteger(au(0)))
281+ let bT = if ((height > bS))
279282 then {
280- let bM = (bG + 1)
281- let bN = (bR + 1)
282- let bP = ((bN + bF) - 1)
283- $Tuple3(bM, bN, bP)
283+ let bN = (bH + 1)
284+ let bO = (bS + 1)
285+ let bQ = ((bO + bG) - 1)
286+ $Tuple3(bN, bO, bQ)
284287 }
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)
288+ else $Tuple3(bH, bR, bS)
289+ let bN = bT._1
290+ let bO = bT._2
291+ let bQ = bT._3
292+ $Tuple3(bN, bO, bQ)
290293 }
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
294+ else $Tuple3(bH, valueOrElse(getInteger(as(bH)), height), valueOrElse(getInteger(au(bH)), ((height + bG) - 1)))
295+ let bN = bJ._1
296+ let bO = bJ._2
297+ let bQ = bJ._3
298+ let bU = valueOrElse(getInteger(az(O, bN)), bE)
299+ let bV = valueOrElse(getInteger(aA(O, bN, bp)), bF)
300+ let aW = valueOrElse(getInteger(aD(bp)), 0)
301+ let bW = min([(bC + aW), bU, bV])
302+ let bX = value(getInteger(av()))
303+ let bY = e
304+ let bZ = {
305+ let ca = invoke(addressFromStringValue(value(getString(aB()))), "putOneTknV2WithoutTakeFeeREADONLY", [bY, O], nil)
306+ if ($isInstanceOf(ca, "(Int, Int, Int)"))
307+ then ca
305308 else throw("Couldn't cast Any to (Int, Int, Int)")
306309 }
307- if ((bY == bY))
310+ if ((bZ == bZ))
308311 then {
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
312+ let cb = bZ._3
313+ let cc = bZ._2
314+ let cd = bZ._1
315+ let ce = value(getString(aC()))
316+ let cf = {
317+ let ca = invoke(addressFromStringValue(value(getString(aB()))), "getOneTknV2READONLY", [ce, cd], nil)
318+ if ($isInstanceOf(ca, "(Int, Int)"))
319+ then ca
317320 else throw("Couldn't cast Any to (Int, Int)")
318321 }
319- if ((ce == ce))
322+ if ((cf == cf))
320323 then {
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)
324+ let cg = cf._2
325+ let ch = cf._1
326+ let ci = fraction(bY, e, ch)
327+ let cj = (bQ - height)
328+ $Tuple10(bW, bU, bV, bD, bX, ci, cj, bN, bO, bQ)
326329 }
327330 else throw("Strict value is not equal to itself.")
328331 }
330333 }
331334
332335
333-func cj () = {
334- let j = getString(aF())
336+func ck () = {
337+ let j = getString(aG())
335338 if ($isInstanceOf(j, "String"))
336339 then {
337- let ck = j
338- fromBase58String(ck)
340+ let cl = j
341+ fromBase58String(cl)
339342 }
340343 else if ($isInstanceOf(j, "Unit"))
341344 then unit
343346 }
344347
345348
346-func cl () = {
347- let j = getString(aG())
349+func cm () = {
350+ let j = getString(aH())
348351 if ($isInstanceOf(j, "String"))
349352 then {
350- let ck = j
351- fromBase58String(ck)
353+ let cl = j
354+ fromBase58String(cl)
352355 }
353356 else if ($isInstanceOf(j, "Unit"))
354357 then unit
356359 }
357360
358361
359-func cm (cn) = {
360- let co = throw("Permission denied")
361- let j = cj()
362+func cn (co) = {
363+ let cp = throw("Permission denied")
364+ let j = ck()
362365 if ($isInstanceOf(j, "ByteVector"))
363366 then {
364- let cp = j
365- if ((cn.callerPublicKey == cp))
367+ let cq = j
368+ if ((co.callerPublicKey == cq))
366369 then true
367- else co
370+ else cp
368371 }
369372 else if ($isInstanceOf(j, "Unit"))
370- then if ((cn.caller == this))
373+ then if ((co.caller == this))
371374 then true
372- else co
375+ else cp
373376 else throw("Match error")
374377 }
375378
376379
377-@Callable(cn)
380+@Callable(co)
378381 func constructor (H,I,J,K,o,O,Q) = {
379382 let L = ((100 * 1000) * 1000)
380- let cq = (H + I)
383+ let cr = (H + I)
381384 if (isDefined(getString(ah())))
382385 then throw("already initialized")
383- else if (("3PMEHLx1j6zerarZTYfsGqDeeZqQoMpxq5S" != toString(cn.caller)))
386+ else if (("3PMEHLx1j6zerarZTYfsGqDeeZqQoMpxq5S" != toString(co.caller)))
384387 then throw("not authorized")
385- else if ((size(cn.payments) != 1))
388+ else if ((size(co.payments) != 1))
386389 then throw("exactly 1 payment must be attached")
387- else if ((cq >= J))
390+ else if ((cr >= J))
388391 then throw("claimStart must be greater than idoEnd")
389392 else {
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)]
393+ let cs = value(co.payments[0])
394+ let bn = value(cs.assetId)
395+ let ct = valueOrErrorMessage(assetInfo(bn), "fail to load ido asset info")
396+ let M = toBase58String(bn)
397+ let N = pow(10, 0, ct.decimals, 0, 0, DOWN)
398+ let bo = fromBase58String(O)
399+ let cu = valueOrErrorMessage(assetInfo(bo), "fail to load price asset info")
400+ let P = pow(10, 0, cu.decimals, 0, 0, DOWN)
401+ let cv = aL()
402+ let cw = [0, 0, 0, 0]
403+[StringEntry(ah(), S(H, I, J, K, o, L, M, N, O, P, Q, cs.amount)), aS(ak(), cv, cw, J, 0)]
401404 }
402405 }
403406
404407
405408
406-@Callable(cn)
409+@Callable(co)
407410 func invest () = {
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)
411+ let aZ = aI()
412+ let H = parseIntValue(aZ[v])
413+ let I = parseIntValue(aZ[w])
414+ let cr = (H + I)
415+ let J = parseIntValue(aZ[x])
416+ let K = parseIntValue(aZ[y])
417+ let o = parseIntValue(aZ[z])
418+ let L = parseIntValue(aZ[A])
419+ let M = aZ[B]
420+ let bn = fromBase58String(M)
421+ let N = parseIntValue(aZ[C])
422+ let O = aZ[D]
423+ let bo = fromBase58String(O)
424+ let P = parseIntValue(aZ[E])
425+ let cx = parseIntValue(aZ[F])
426+ let aj = toString(co.caller)
424427 if ((H > height))
425428 then throw("ido has not been started yet")
426- else if ((height > cq))
429+ else if ((height > cr))
427430 then throw("ido has been already ended")
428- else if ((size(cn.payments) != 1))
431+ else if ((size(co.payments) != 1))
429432 then throw("exactly 1 payment is expected")
430433 else {
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"))
434+ let cs = value(co.payments[0])
435+ let cy = value(cs.assetId)
436+ let cz = cs.amount
437+ if ((cy != bo))
438+ then throw((("invalid payment asset id: " + toBase58String(cy)) + " is expected"))
436439 else {
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)))
440+ let cA = aM(aj)
441+ let cv = aL()
442+ let cB = (parseIntValue(cv[T]) + cz)
443+ let cC = (cB * 100)
444+ if ((cC > assetBalance(this, bn)))
442445 then throw("IDO asset has been - sold consider to use smaller payment")
443446 else {
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)]
447+ let cw = [cz, cz, 0, 0]
448+[aS(ai(aj), cA, cw, J, 0), aS(ak(), cv, cw, J, 0), bh(aj, cz, 0, co.transactionId)]
446449 }
447450 }
448451 }
450453
451454
452455
453-@Callable(cn)
454-func claim (bk,bo) = {
455- let cC = toString(cn.caller)
456- if ((bo != cC))
456+@Callable(co)
457+func claim (bl,bp) = {
458+ let cD = toString(co.caller)
459+ if ((bp != cD))
457460 then throw("not authorized")
458461 else {
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))
462+ let aZ = aI()
463+ let O = aZ[D]
464+ let cE = bk(bl, co.caller, co.transactionId)
465+ let cw = cE._1
466+ let bC = cE._2
467+ let cF = cE._3
468+ let bq = cE._4
469+ let bu = cE._5
470+ let cG = cw[aQ]
471+ let cH = cw[aR]
472+ let aW = valueOrElse(getInteger(aD(bp)), 0)
473+ let ba = value(assetInfo(fromBase58String(O))).decimals
474+ let be = if ((bl == O))
472475 then {
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))
476+ let cI = bB(O, bp, bC, cw[aQ])
477+ let bW = cI._1
478+ let bU = cI._2
479+ let bV = cI._3
480+ let bD = cI._4
481+ let bX = cI._5
482+ let ci = cI._6
483+ let cj = cI._7
484+ let bN = cI._8
485+ let bO = cI._9
486+ let bQ = cI._10
487+ let bA = [if ((bV > 0))
485488 then true
486- else f("unavailable to claim because user period allowance reached"), if ((bT > 0))
489+ else f("unavailable to claim because user period allowance reached"), if ((bU > 0))
487490 then true
488- else f("unavailable to claim because total period allowance reached"), if ((bV > 0))
491+ else f("unavailable to claim because total period allowance reached"), if ((bW > 0))
489492 then true
490- else f("nothing to claim"), if ((bW > ch))
493+ else f("nothing to claim"), if ((bX > ci))
491494 then true
492495 else f("unavailable to claim because usdn price lower than usdtPriceAssetAllowableRatio")]
493- if ((bz == bz))
496+ if ((bA == bA))
494497 then {
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))]
498+ let cJ = (bU - bW)
499+ let cK = (bV - bW)
500+ let be = if ((aW >= bW))
501+ then [ScriptTransfer(co.caller, bW, cF), IntegerEntry(aD(bp), (aW - bW))]
499502 else {
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)]
503+ let cL = split(h(invoke(this, "claimREADONLY", [O, bp], nil)), c)
504+ if ((cL == cL))
505+ then {
506+ let cM = parseIntValue(cL[3])
507+ let cN = if ((cM == bW))
508+ then {
509+ let cO = parseIntValue(bq[T])
510+ let cP = parseIntValue(bq[U])
511+ let cQ = parseIntValue(bq[V])
512+ let cR = parseIntValue(bq[W])
513+ let cS = parseIntValue(bq[X])
514+ let cT = [toString(cO), "0", toString(cQ), toString(cR), toString(cS)]
515+ let cU = aL()
516+ let cV = parseIntValue(cU[T])
517+ let cW = parseIntValue(cU[U])
518+ let cX = parseIntValue(cU[U])
519+ let cY = parseIntValue(cU[V])
520+ let cZ = parseIntValue(cU[X])
521+ let da = (cW - cP)
522+ let db = [toString(cV), toString(da), toString(cX), toString(cY), toString(cZ)]
523+[StringEntry(aF(bp), toString(cP)), aS(ai(bp), cT, cw, bu, 0), aS(ak(), db, cw, bu, 0)]
524+ }
525+ else [aS(ai(bp), bq, cw, bu, 0), aS(ak(), aL(), cw, bu, 0)]
526+ let dc = ((aW + bC) - bW)
527+ ([ScriptTransfer(co.caller, bW, cF), IntegerEntry(aD(bp), dc)] ++ cN)
528+ }
529+ else throw("Strict value is not equal to itself.")
502530 }
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)
531+ $Tuple2(([IntegerEntry(ar(), bN), IntegerEntry(as(bN), bO), IntegerEntry(au(bN), bQ), IntegerEntry(az(O, bN), cJ), IntegerEntry(aA(O, bN, bp), cK), bj(bp, bW, cH, co.transactionId)] ++ be), unit)
504532 }
505533 else throw("Strict value is not equal to itself.")
506534 }
507535 else {
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)
536+ let dd = fraction(aW, e, pow(10, 0, ba, 0, 0, DOWN))
537+ $Tuple2([ScriptTransfer(co.caller, (bC + dd), cF), IntegerEntry(aD(bp), 0), aS(ai(bp), bq, cw, bu, aW), aS(ak(), aL(), cw, bu, aW), bj(bp, cG, (cH + dd), co.transactionId)], unit)
510538 }
511- bd
539+ be
512540 }
513541 }
514542
515543
516544
517-@Callable(cn)
518-func cleanRemaingAmount (bo) = {
519- let O = aH()[D]
520- let cM = split(h(invoke(this, "claimREADONLY", [O, bo], nil)), c)
521- if ((cM == cM))
545+@Callable(co)
546+func cleanRemaingAmount (bp) = {
547+ let O = aI()[D]
548+ let cL = split(h(invoke(this, "claimREADONLY", [O, bp], nil)), c)
549+ if ((cL == cL))
522550 then {
523- let cN = parseIntValue(cM[3])
524- let cO = if ((cN == 0))
551+ let cM = parseIntValue(cL[3])
552+ let de = if ((cM == 0))
525553 then true
526554 else f("user have unclaimed assets")
527- if ((cO == cO))
555+ if ((de == de))
528556 then {
529- let cP = split(value(getString(ai(bo))), c)
530- let cQ = parseIntValue(cP[T])
531- let cR = parseIntValue(cP[U])
532- let cS = parseIntValue(cP[V])
533- let cT = parseIntValue(cP[W])
534- let cU = parseIntValue(cP[X])
535- let cV = if ((cR != 0))
557+ let df = split(value(getString(ai(bp))), c)
558+ let cO = parseIntValue(df[T])
559+ let cP = parseIntValue(df[U])
560+ let cQ = parseIntValue(df[V])
561+ let cR = parseIntValue(df[W])
562+ let cS = parseIntValue(df[X])
563+ let dg = if ((cP != 0))
536564 then true
537565 else f("investorRemainingAmount already zero")
538- if ((cV == cV))
566+ if ((dg == dg))
539567 then {
540- let cW = makeString(["%d%d%d%d%d", toString(cQ), "0", toString(cS), toString(cT), toString(cU)], c)
541- let cX = split(value(getString(ak())), c)
542- let cY = parseIntValue(cX[T])
543- let cZ = parseIntValue(cX[U])
544- let da = parseIntValue(cX[U])
545- let db = parseIntValue(cX[V])
546- let dc = parseIntValue(cX[X])
547- let dd = makeString(["%d%d%d%d%d", toString(cY), toString((cZ - cR)), toString(da), toString(db), toString(dc)], c)
548-[StringEntry(ai(bo), cW), StringEntry(ak(), dd)]
568+ let dh = makeString(["%d%d%d%d%d", toString(cO), "0", toString(cQ), toString(cR), toString(cS)], c)
569+ let cU = split(value(getString(ak())), c)
570+ let cV = parseIntValue(cU[T])
571+ let cW = parseIntValue(cU[U])
572+ let cX = parseIntValue(cU[U])
573+ let cY = parseIntValue(cU[V])
574+ let cZ = parseIntValue(cU[X])
575+ let di = makeString(["%d%d%d%d%d", toString(cV), toString((cW - cP)), toString(cX), toString(cY), toString(cZ)], c)
576+[StringEntry(aF(bp), toString(cP)), StringEntry(ai(bp), dh), StringEntry(ak(), di)]
549577 }
550578 else throw("Strict value is not equal to itself.")
551579 }
556584
557585
558586
559-@Callable(cn)
560-func claimREADONLY (bk,bo) = {
561- let cD = bj(bk, addressFromStringValue(bo), fromBase58String(""))
562- let cv = cD._1
563- let bB = cD._2
564- let cE = cD._3
565- let bp = cD._4
566- let bt = cD._5
567- let de = cD._6
568- let cN = de[0]
569- let df = de[1]
570- $Tuple2(nil, makeString(["%s%d%d", bo, toString(cN), toString(df)], c))
587+@Callable(co)
588+func claimREADONLY (bl,bp) = {
589+ let cE = bk(bl, addressFromStringValue(bp), fromBase58String(""))
590+ let cw = cE._1
591+ let bC = cE._2
592+ let cF = cE._3
593+ let bq = cE._4
594+ let bu = cE._5
595+ let dj = cE._6
596+ let cM = dj[0]
597+ let dk = dj[1]
598+ $Tuple2(nil, makeString(["%s%d%d", bp, toString(cM), toString(dk)], c))
571599 }
572600
573601
574602
575-@Callable(cn)
576-func claimV2READONLY (bk,bo) = {
577- let cD = bj(bk, addressFromStringValue(bo), fromBase58String(""))
578- let cv = cD._1
579- let bB = cD._2
580- let cE = cD._3
581- let bp = cD._4
582- let bt = cD._5
583- let de = cD._6
584- let cN = de[0]
585- let df = de[1]
586- let aY = aH()
587- let O = aY[D]
588- let aV = valueOrElse(getInteger(aD(bo)), 0)
589- let cL = (aV * 100)
590- let dg = (df + cL)
591- let dh = bA(O, bo, bB, cv[aP])
592- let bV = dh._1
593- let bT = dh._2
594- let bU = dh._3
595- let bC = dh._4
596- let bW = dh._5
597- let ch = dh._6
598- let ci = dh._7
599- let bM = dh._8
600- let bN = dh._9
601- let bP = dh._10
602- let di = valueOrElse(getInteger(au(bM)), 0)
603- let dj = (parseIntValue(aM(bo)[V]) - aV)
604- let dk = if ((height > di))
603+@Callable(co)
604+func claimV2READONLY (bl,bp) = {
605+ let cE = bk(bl, addressFromStringValue(bp), fromBase58String(""))
606+ let cw = cE._1
607+ let bC = cE._2
608+ let cF = cE._3
609+ let bq = cE._4
610+ let bu = cE._5
611+ let dj = cE._6
612+ let cM = dj[0]
613+ let dk = dj[1]
614+ let aZ = aI()
615+ let O = aZ[D]
616+ let aW = valueOrElse(getInteger(aD(bp)), 0)
617+ let dd = (aW * 100)
618+ let dl = (dk + dd)
619+ let dm = bB(O, bp, bC, cw[aQ])
620+ let bW = dm._1
621+ let bU = dm._2
622+ let bV = dm._3
623+ let bD = dm._4
624+ let bX = dm._5
625+ let ci = dm._6
626+ let cj = dm._7
627+ let bN = dm._8
628+ let bO = dm._9
629+ let bQ = dm._10
630+ let dn = valueOrElse(getInteger(au(bN)), 0)
631+ let do = (parseIntValue(aN(bp)[V]) - aW)
632+ let dp = if ((height > dn))
605633 then {
606- let dl = value(getInteger(aq()))
607- let dm = value(getInteger(ay(O)))
608- let dn = value(getInteger(aw(O)))
609- makeString(["%d%d%d%d%d%d", toString(dg), toString(dm), toString(dn), toString(bW), toString(ch), toString(dl), toString(dj)], c)
634+ let dq = value(getInteger(aq()))
635+ let dr = value(getInteger(ay(O)))
636+ let ds = value(getInteger(aw(O)))
637+ makeString(["%d%d%d%d%d%d", toString(dl), toString(dr), toString(ds), toString(bX), toString(ci), toString(dq), toString(do)], c)
610638 }
611- else makeString(["%d%d%d%d%d%d", toString(dg), toString(bV), toString(bT), toString(bW), toString(ch), toString(ci), toString(dj)], c)
612- $Tuple2(nil, dk)
639+ else makeString(["%d%d%d%d%d%d", toString(dl), toString(bW), toString(bU), toString(bX), toString(ci), toString(cj), toString(do)], c)
640+ $Tuple2(nil, dp)
613641 }
614642
615643
616644
617-@Callable(cn)
618-func setManager (do) = {
619- let dp = cm(cn)
620- if ((dp == dp))
645+@Callable(co)
646+func setManager (dt) = {
647+ let du = cn(co)
648+ if ((du == du))
621649 then {
622- let dq = fromBase58String(do)
623- if ((dq == dq))
624- then [StringEntry(aG(), do)]
650+ let dv = fromBase58String(dt)
651+ if ((dv == dv))
652+ then [StringEntry(aH(), dt)]
625653 else throw("Strict value is not equal to itself.")
626654 }
627655 else throw("Strict value is not equal to itself.")
629657
630658
631659
632-@Callable(cn)
660+@Callable(co)
633661 func confirmManager () = {
634- let dr = cl()
635- let ds = if (isDefined(dr))
662+ let dw = cm()
663+ let dx = if (isDefined(dw))
636664 then true
637665 else throw("No pending manager")
638- if ((ds == ds))
666+ if ((dx == dx))
639667 then {
640- let dt = if ((cn.callerPublicKey == value(dr)))
668+ let dy = if ((co.callerPublicKey == value(dw)))
641669 then true
642670 else throw("You are not pending manager")
643- if ((dt == dt))
644- then [StringEntry(aF(), toBase58String(value(dr))), DeleteEntry(aG())]
671+ if ((dy == dy))
672+ then [StringEntry(aG(), toBase58String(value(dw))), DeleteEntry(aH())]
645673 else throw("Strict value is not equal to itself.")
646674 }
647675 else throw("Strict value is not equal to itself.")
648676 }
649677
650678
651-@Verifier(du)
652-func dv () = {
653- let dw = {
654- let j = cj()
679+@Verifier(dz)
680+func dA () = {
681+ let dB = {
682+ let j = ck()
655683 if ($isInstanceOf(j, "ByteVector"))
656684 then {
657- let cp = j
658- cp
685+ let cq = j
686+ cq
659687 }
660688 else if ($isInstanceOf(j, "Unit"))
661- then du.senderPublicKey
689+ then dz.senderPublicKey
662690 else throw("Match error")
663691 }
664- sigVerify(du.bodyBytes, du.proofs[0], dw)
692+ sigVerify(dz.bodyBytes, dz.proofs[0], dB)
665693 }
666694
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
1616 func h (i) = {
1717 let j = i
1818 if ($isInstanceOf(j, "String"))
1919 then {
2020 let k = j
2121 k
2222 }
2323 else throw("fail to cast into String")
2424 }
2525
2626
2727 func l (m,n,o,p,q) = {
2828 let r = toBigInt(n)
2929 let s = toBigInt(q)
3030 let t = fraction(toBigInt(m), d, r)
3131 let u = fraction(t, toBigInt(p), toBigInt(o))
3232 toInt(fraction(u, toBigInt(q), d))
3333 }
3434
3535
3636 let v = 1
3737
3838 let w = 2
3939
4040 let x = 3
4141
4242 let y = 4
4343
4444 let z = 5
4545
4646 let A = 6
4747
4848 let B = 7
4949
5050 let C = 8
5151
5252 let D = 9
5353
5454 let E = 10
5555
5656 let F = 11
5757
5858 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)
5959
6060
6161 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))
6262
6363
6464 let T = 1
6565
6666 let U = 2
6767
6868 let V = 3
6969
7070 let W = 4
7171
7272 let X = 5
7373
7474 func Y (Z,aa,ab,ac,ad) = makeString(["%d%d%d%d%d", Z, aa, ab, ac, ad], c)
7575
7676
7777 func ae (Z,aa,ab,ac,ad) = Y(toString(Z), toString(aa), toString(ab), toString(ac), toString(ad))
7878
7979
8080 func af (m,ag) = makeString(["%d%d%d%d", toString(height), toString(lastBlock.timestamp), toString(m), toString(ag)], c)
8181
8282
8383 func ah () = "%s__config"
8484
8585
8686 func ai (aj) = ("%s__" + aj)
8787
8888
8989 func ak () = "%s__totals"
9090
9191
9292 func al (am,aj,an) = makeString(["%s%s%s%s__history", am, aj, an], c)
9393
9494
9595 func ao () = "%s__usdnClaimDisabled"
9696
9797
9898 func ap () = "%s__usdnClaimEndHeight"
9999
100100
101101 func aq () = makeString(["%s", "periodLength"], c)
102102
103103
104104 func ar () = makeString(["%s", "currentPeriod"], c)
105105
106106
107107 func as (at) = makeString(["%s%s", "periodStartHeight", toString(at)], c)
108108
109109
110110 func au (at) = makeString(["%s%s", "periodEndHeight", toString(at)], c)
111111
112112
113113 func av () = makeString(["%s", "usdtPriceAssetAllowableRatio"], c)
114114
115115
116116 func aw (ax) = makeString(["%s%s", "totalPeriodAllowance", ax], c)
117117
118118
119119 func ay (ax) = makeString(["%s%s", "userPeriodAllowance", ax], c)
120120
121121
122122 func az (ax,at) = makeString(["%s%s%s", "periodTotalAvailableToClaim", ax, toString(at)], c)
123123
124124
125125 func aA (ax,at,aj) = makeString(["%s%s%s%s", "periodUserAvailableToClaim", ax, toString(at), aj], c)
126126
127127
128128 func aB () = makeString(["%s", "usdtPriceAssetStablePool"], c)
129129
130130
131131 func aC () = makeString(["%s", "usdtAssetId"], c)
132132
133133
134134 func aD (aE) = makeString(["%s%s", "priceAssetBalance", aE], c)
135135
136136
137-func aF () = "%s__managerPublicKey"
137+func aF (aE) = makeString(["%s%s", "remainingAmount", aE], c)
138138
139139
140-func aG () = "%s__pendingManagerPublicKey"
140+func aG () = "%s__managerPublicKey"
141141
142142
143-func aH () = split(a(ah()), c)
143+func aH () = "%s__pendingManagerPublicKey"
144144
145145
146-func aI (aJ) = split(valueOrElse(getString(aJ), Y("0", "0", "0", "0", "0")), c)
146+func aI () = split(a(ah()), c)
147147
148148
149-func aK () = aI(ak())
149+func aJ (aK) = split(valueOrElse(getString(aK), Y("0", "0", "0", "0", "0")), c)
150150
151151
152-func aL (aj) = aI(ai(aj))
152+func aL () = aJ(ak())
153153
154154
155-func aM (aj) = split(a(ai(aj)), c)
155+func aM (aj) = aJ(ai(aj))
156156
157157
158-let aN = 0
158+func aN (aj) = split(a(ai(aj)), c)
159159
160-let aO = 1
161160
162-let aP = 2
161+let aO = 0
163162
164-let aQ = 3
163+let aP = 1
165164
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))
165+let aQ = 2
166+
167+let aR = 3
168+
169+func aS (b,aT,aU,aV,aW) = {
170+ let Z = parseIntValue(aT[T])
171+ let aa = parseIntValue(aT[U])
172+ let ab = parseIntValue(aT[V])
173+ let ac = parseIntValue(aT[W])
174+ let ad = parseIntValue(aT[X])
175+ let aX = (Z + aU[aO])
176+ let aY = (aa + aU[aP])
177+ let aZ = aI()
178+ let O = aZ[D]
179+ let ba = value(assetInfo(fromBase58String(O))).decimals
180+ let bb = fraction(aW, e, pow(10, 0, ba, 0, 0, DOWN))
181+ let bc = ((ab + aU[aQ]) - aW)
182+ let bd = ((ac + aU[aR]) + bb)
183+ let be = if ((0 > aY))
181184 then {
182- let be = ((aW - bb) - bc)
183- let bf = if ((0 > be))
185+ let bf = ((aX - bc) - bd)
186+ let bg = if ((0 > bf))
184187 then 0
185- else be
186- StringEntry(b, ae(aW, bf, bb, bc, aU))
188+ else bf
189+ StringEntry(b, ae(aX, bg, bc, bd, aV))
187190 }
188- else StringEntry(b, ae(aW, aX, bb, bc, aU))
189- bd
191+ else StringEntry(b, ae(aX, aY, bc, bd, aV))
192+ be
190193 }
191194
192195
193-func bg (aj,m,ag,bh) = StringEntry(al("invest", aj, toBase58String(bh)), af(m, ag))
196+func bh (aj,m,ag,bi) = StringEntry(al("invest", aj, toBase58String(bi)), af(m, ag))
194197
195198
196-func bi (aj,m,ag,bh) = StringEntry(al("claim", aj, toBase58String(bh)), af(m, ag))
199+func bj (aj,m,ag,bi) = StringEntry(al("claim", aj, toBase58String(bi)), af(m, ag))
197200
198201
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))
202+func bk (bl,aj,bi) = {
203+ let aZ = aI()
204+ let J = parseIntValue(aZ[x])
205+ let K = parseIntValue(aZ[y])
206+ let bm = (J + K)
207+ let o = parseIntValue(aZ[z])
208+ let L = parseIntValue(aZ[A])
209+ let M = aZ[B]
210+ let bn = fromBase58String(M)
211+ let N = parseIntValue(aZ[C])
212+ let O = aZ[D]
213+ let bo = fromBase58String(O)
214+ let P = parseIntValue(aZ[E])
215+ let bp = toString(aj)
216+ let bq = aN(bp)
217+ let br = parseIntValue(bq[T])
218+ let bs = parseIntValue(bq[X])
219+ let bt = if ((J >= bs))
217220 then J
218- else br
219- let bt = if ((height > bl))
220- then bl
221+ else bs
222+ let bu = if ((height > bm))
223+ then bm
221224 else if ((J > height))
222225 then J
223226 else height
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
227+ let bv = (bu - bt)
228+ let bw = fraction(br, bv, K)
229+ let bx = l(bw, P, o, L, N)
230+ let by = (bl == O)
231+ let bz = valueOrElse(getBoolean(ao()), false)
232+ let bA = [if (!(if (by)
233+ then bz
231234 else false))
232235 then true
233236 else throw("USDN claim is disabled")]
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))
237+ if ((bA == bA))
238+ then if ((bl == O))
239+ then $Tuple6([0, -(bw), bw, 0], bw, bo, bq, bu, [bw, bx])
240+ else if ((bl == M))
241+ then $Tuple6([0, -(bw), 0, bx], bx, bn, bq, bu, [bw, bx])
242+ else throw(("unsupported assetId: " + bl))
240243 else throw("Strict value is not equal to itself.")
241244 }
242245
243246
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))
247+func bB (O,bp,bC,bD) = {
248+ let bE = value(getInteger(aw(O)))
249+ let bF = value(getInteger(ay(O)))
250+ let bG = value(getInteger(aq()))
251+ let bH = valueOrElse(getInteger(ar()), 0)
252+ let bI = isDefined(getInteger(au(0)))
253+ let bJ = if ((bH > 0))
251254 then {
252- let bJ = value(getInteger(as(bG)))
253- let bK = value(getInteger(au(bG)))
254- let bL = if ((height > bK))
255+ let bK = value(getInteger(as(bH)))
256+ let bL = value(getInteger(au(bH)))
257+ let bM = if ((height > bL))
255258 then {
256- let bM = (bG + 1)
257- let bN = if ((height > (bK + bF)))
259+ let bN = (bH + 1)
260+ let bO = if ((height > (bL + bG)))
258261 then {
259- let bO = ((height - bK) % bF)
260- if ((bO == 0))
261- then ((height - bF) + 1)
262- else (height - bO)
262+ let bP = ((height - bL) % bG)
263+ if ((bP == 0))
264+ then ((height - bG) + 1)
265+ else (height - bP)
263266 }
264- else (bK + 1)
265- let bP = ((bN + bF) - 1)
266- $Tuple3(bM, bN, bP)
267+ else (bL + 1)
268+ let bQ = ((bO + bG) - 1)
269+ $Tuple3(bN, bO, bQ)
267270 }
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)
271+ else $Tuple3(bH, bK, bL)
272+ let bN = bM._1
273+ let bO = bM._2
274+ let bQ = bM._3
275+ $Tuple3(bN, bO, bQ)
273276 }
274- else if (bH)
277+ else if (bI)
275278 then {
276- let bQ = value(getInteger(as(0)))
277- let bR = value(getInteger(au(0)))
278- let bS = if ((height > bR))
279+ let bR = value(getInteger(as(0)))
280+ let bS = value(getInteger(au(0)))
281+ let bT = if ((height > bS))
279282 then {
280- let bM = (bG + 1)
281- let bN = (bR + 1)
282- let bP = ((bN + bF) - 1)
283- $Tuple3(bM, bN, bP)
283+ let bN = (bH + 1)
284+ let bO = (bS + 1)
285+ let bQ = ((bO + bG) - 1)
286+ $Tuple3(bN, bO, bQ)
284287 }
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)
288+ else $Tuple3(bH, bR, bS)
289+ let bN = bT._1
290+ let bO = bT._2
291+ let bQ = bT._3
292+ $Tuple3(bN, bO, bQ)
290293 }
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
294+ else $Tuple3(bH, valueOrElse(getInteger(as(bH)), height), valueOrElse(getInteger(au(bH)), ((height + bG) - 1)))
295+ let bN = bJ._1
296+ let bO = bJ._2
297+ let bQ = bJ._3
298+ let bU = valueOrElse(getInteger(az(O, bN)), bE)
299+ let bV = valueOrElse(getInteger(aA(O, bN, bp)), bF)
300+ let aW = valueOrElse(getInteger(aD(bp)), 0)
301+ let bW = min([(bC + aW), bU, bV])
302+ let bX = value(getInteger(av()))
303+ let bY = e
304+ let bZ = {
305+ let ca = invoke(addressFromStringValue(value(getString(aB()))), "putOneTknV2WithoutTakeFeeREADONLY", [bY, O], nil)
306+ if ($isInstanceOf(ca, "(Int, Int, Int)"))
307+ then ca
305308 else throw("Couldn't cast Any to (Int, Int, Int)")
306309 }
307- if ((bY == bY))
310+ if ((bZ == bZ))
308311 then {
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
312+ let cb = bZ._3
313+ let cc = bZ._2
314+ let cd = bZ._1
315+ let ce = value(getString(aC()))
316+ let cf = {
317+ let ca = invoke(addressFromStringValue(value(getString(aB()))), "getOneTknV2READONLY", [ce, cd], nil)
318+ if ($isInstanceOf(ca, "(Int, Int)"))
319+ then ca
317320 else throw("Couldn't cast Any to (Int, Int)")
318321 }
319- if ((ce == ce))
322+ if ((cf == cf))
320323 then {
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)
324+ let cg = cf._2
325+ let ch = cf._1
326+ let ci = fraction(bY, e, ch)
327+ let cj = (bQ - height)
328+ $Tuple10(bW, bU, bV, bD, bX, ci, cj, bN, bO, bQ)
326329 }
327330 else throw("Strict value is not equal to itself.")
328331 }
329332 else throw("Strict value is not equal to itself.")
330333 }
331334
332335
333-func cj () = {
334- let j = getString(aF())
336+func ck () = {
337+ let j = getString(aG())
335338 if ($isInstanceOf(j, "String"))
336339 then {
337- let ck = j
338- fromBase58String(ck)
340+ let cl = j
341+ fromBase58String(cl)
339342 }
340343 else if ($isInstanceOf(j, "Unit"))
341344 then unit
342345 else throw("Match error")
343346 }
344347
345348
346-func cl () = {
347- let j = getString(aG())
349+func cm () = {
350+ let j = getString(aH())
348351 if ($isInstanceOf(j, "String"))
349352 then {
350- let ck = j
351- fromBase58String(ck)
353+ let cl = j
354+ fromBase58String(cl)
352355 }
353356 else if ($isInstanceOf(j, "Unit"))
354357 then unit
355358 else throw("Match error")
356359 }
357360
358361
359-func cm (cn) = {
360- let co = throw("Permission denied")
361- let j = cj()
362+func cn (co) = {
363+ let cp = throw("Permission denied")
364+ let j = ck()
362365 if ($isInstanceOf(j, "ByteVector"))
363366 then {
364- let cp = j
365- if ((cn.callerPublicKey == cp))
367+ let cq = j
368+ if ((co.callerPublicKey == cq))
366369 then true
367- else co
370+ else cp
368371 }
369372 else if ($isInstanceOf(j, "Unit"))
370- then if ((cn.caller == this))
373+ then if ((co.caller == this))
371374 then true
372- else co
375+ else cp
373376 else throw("Match error")
374377 }
375378
376379
377-@Callable(cn)
380+@Callable(co)
378381 func constructor (H,I,J,K,o,O,Q) = {
379382 let L = ((100 * 1000) * 1000)
380- let cq = (H + I)
383+ let cr = (H + I)
381384 if (isDefined(getString(ah())))
382385 then throw("already initialized")
383- else if (("3PMEHLx1j6zerarZTYfsGqDeeZqQoMpxq5S" != toString(cn.caller)))
386+ else if (("3PMEHLx1j6zerarZTYfsGqDeeZqQoMpxq5S" != toString(co.caller)))
384387 then throw("not authorized")
385- else if ((size(cn.payments) != 1))
388+ else if ((size(co.payments) != 1))
386389 then throw("exactly 1 payment must be attached")
387- else if ((cq >= J))
390+ else if ((cr >= J))
388391 then throw("claimStart must be greater than idoEnd")
389392 else {
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)]
393+ let cs = value(co.payments[0])
394+ let bn = value(cs.assetId)
395+ let ct = valueOrErrorMessage(assetInfo(bn), "fail to load ido asset info")
396+ let M = toBase58String(bn)
397+ let N = pow(10, 0, ct.decimals, 0, 0, DOWN)
398+ let bo = fromBase58String(O)
399+ let cu = valueOrErrorMessage(assetInfo(bo), "fail to load price asset info")
400+ let P = pow(10, 0, cu.decimals, 0, 0, DOWN)
401+ let cv = aL()
402+ let cw = [0, 0, 0, 0]
403+[StringEntry(ah(), S(H, I, J, K, o, L, M, N, O, P, Q, cs.amount)), aS(ak(), cv, cw, J, 0)]
401404 }
402405 }
403406
404407
405408
406-@Callable(cn)
409+@Callable(co)
407410 func invest () = {
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)
411+ let aZ = aI()
412+ let H = parseIntValue(aZ[v])
413+ let I = parseIntValue(aZ[w])
414+ let cr = (H + I)
415+ let J = parseIntValue(aZ[x])
416+ let K = parseIntValue(aZ[y])
417+ let o = parseIntValue(aZ[z])
418+ let L = parseIntValue(aZ[A])
419+ let M = aZ[B]
420+ let bn = fromBase58String(M)
421+ let N = parseIntValue(aZ[C])
422+ let O = aZ[D]
423+ let bo = fromBase58String(O)
424+ let P = parseIntValue(aZ[E])
425+ let cx = parseIntValue(aZ[F])
426+ let aj = toString(co.caller)
424427 if ((H > height))
425428 then throw("ido has not been started yet")
426- else if ((height > cq))
429+ else if ((height > cr))
427430 then throw("ido has been already ended")
428- else if ((size(cn.payments) != 1))
431+ else if ((size(co.payments) != 1))
429432 then throw("exactly 1 payment is expected")
430433 else {
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"))
434+ let cs = value(co.payments[0])
435+ let cy = value(cs.assetId)
436+ let cz = cs.amount
437+ if ((cy != bo))
438+ then throw((("invalid payment asset id: " + toBase58String(cy)) + " is expected"))
436439 else {
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)))
440+ let cA = aM(aj)
441+ let cv = aL()
442+ let cB = (parseIntValue(cv[T]) + cz)
443+ let cC = (cB * 100)
444+ if ((cC > assetBalance(this, bn)))
442445 then throw("IDO asset has been - sold consider to use smaller payment")
443446 else {
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)]
447+ let cw = [cz, cz, 0, 0]
448+[aS(ai(aj), cA, cw, J, 0), aS(ak(), cv, cw, J, 0), bh(aj, cz, 0, co.transactionId)]
446449 }
447450 }
448451 }
449452 }
450453
451454
452455
453-@Callable(cn)
454-func claim (bk,bo) = {
455- let cC = toString(cn.caller)
456- if ((bo != cC))
456+@Callable(co)
457+func claim (bl,bp) = {
458+ let cD = toString(co.caller)
459+ if ((bp != cD))
457460 then throw("not authorized")
458461 else {
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))
462+ let aZ = aI()
463+ let O = aZ[D]
464+ let cE = bk(bl, co.caller, co.transactionId)
465+ let cw = cE._1
466+ let bC = cE._2
467+ let cF = cE._3
468+ let bq = cE._4
469+ let bu = cE._5
470+ let cG = cw[aQ]
471+ let cH = cw[aR]
472+ let aW = valueOrElse(getInteger(aD(bp)), 0)
473+ let ba = value(assetInfo(fromBase58String(O))).decimals
474+ let be = if ((bl == O))
472475 then {
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))
476+ let cI = bB(O, bp, bC, cw[aQ])
477+ let bW = cI._1
478+ let bU = cI._2
479+ let bV = cI._3
480+ let bD = cI._4
481+ let bX = cI._5
482+ let ci = cI._6
483+ let cj = cI._7
484+ let bN = cI._8
485+ let bO = cI._9
486+ let bQ = cI._10
487+ let bA = [if ((bV > 0))
485488 then true
486- else f("unavailable to claim because user period allowance reached"), if ((bT > 0))
489+ else f("unavailable to claim because user period allowance reached"), if ((bU > 0))
487490 then true
488- else f("unavailable to claim because total period allowance reached"), if ((bV > 0))
491+ else f("unavailable to claim because total period allowance reached"), if ((bW > 0))
489492 then true
490- else f("nothing to claim"), if ((bW > ch))
493+ else f("nothing to claim"), if ((bX > ci))
491494 then true
492495 else f("unavailable to claim because usdn price lower than usdtPriceAssetAllowableRatio")]
493- if ((bz == bz))
496+ if ((bA == bA))
494497 then {
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))]
498+ let cJ = (bU - bW)
499+ let cK = (bV - bW)
500+ let be = if ((aW >= bW))
501+ then [ScriptTransfer(co.caller, bW, cF), IntegerEntry(aD(bp), (aW - bW))]
499502 else {
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)]
503+ let cL = split(h(invoke(this, "claimREADONLY", [O, bp], nil)), c)
504+ if ((cL == cL))
505+ then {
506+ let cM = parseIntValue(cL[3])
507+ let cN = if ((cM == bW))
508+ then {
509+ let cO = parseIntValue(bq[T])
510+ let cP = parseIntValue(bq[U])
511+ let cQ = parseIntValue(bq[V])
512+ let cR = parseIntValue(bq[W])
513+ let cS = parseIntValue(bq[X])
514+ let cT = [toString(cO), "0", toString(cQ), toString(cR), toString(cS)]
515+ let cU = aL()
516+ let cV = parseIntValue(cU[T])
517+ let cW = parseIntValue(cU[U])
518+ let cX = parseIntValue(cU[U])
519+ let cY = parseIntValue(cU[V])
520+ let cZ = parseIntValue(cU[X])
521+ let da = (cW - cP)
522+ let db = [toString(cV), toString(da), toString(cX), toString(cY), toString(cZ)]
523+[StringEntry(aF(bp), toString(cP)), aS(ai(bp), cT, cw, bu, 0), aS(ak(), db, cw, bu, 0)]
524+ }
525+ else [aS(ai(bp), bq, cw, bu, 0), aS(ak(), aL(), cw, bu, 0)]
526+ let dc = ((aW + bC) - bW)
527+ ([ScriptTransfer(co.caller, bW, cF), IntegerEntry(aD(bp), dc)] ++ cN)
528+ }
529+ else throw("Strict value is not equal to itself.")
502530 }
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)
531+ $Tuple2(([IntegerEntry(ar(), bN), IntegerEntry(as(bN), bO), IntegerEntry(au(bN), bQ), IntegerEntry(az(O, bN), cJ), IntegerEntry(aA(O, bN, bp), cK), bj(bp, bW, cH, co.transactionId)] ++ be), unit)
504532 }
505533 else throw("Strict value is not equal to itself.")
506534 }
507535 else {
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)
536+ let dd = fraction(aW, e, pow(10, 0, ba, 0, 0, DOWN))
537+ $Tuple2([ScriptTransfer(co.caller, (bC + dd), cF), IntegerEntry(aD(bp), 0), aS(ai(bp), bq, cw, bu, aW), aS(ak(), aL(), cw, bu, aW), bj(bp, cG, (cH + dd), co.transactionId)], unit)
510538 }
511- bd
539+ be
512540 }
513541 }
514542
515543
516544
517-@Callable(cn)
518-func cleanRemaingAmount (bo) = {
519- let O = aH()[D]
520- let cM = split(h(invoke(this, "claimREADONLY", [O, bo], nil)), c)
521- if ((cM == cM))
545+@Callable(co)
546+func cleanRemaingAmount (bp) = {
547+ let O = aI()[D]
548+ let cL = split(h(invoke(this, "claimREADONLY", [O, bp], nil)), c)
549+ if ((cL == cL))
522550 then {
523- let cN = parseIntValue(cM[3])
524- let cO = if ((cN == 0))
551+ let cM = parseIntValue(cL[3])
552+ let de = if ((cM == 0))
525553 then true
526554 else f("user have unclaimed assets")
527- if ((cO == cO))
555+ if ((de == de))
528556 then {
529- let cP = split(value(getString(ai(bo))), c)
530- let cQ = parseIntValue(cP[T])
531- let cR = parseIntValue(cP[U])
532- let cS = parseIntValue(cP[V])
533- let cT = parseIntValue(cP[W])
534- let cU = parseIntValue(cP[X])
535- let cV = if ((cR != 0))
557+ let df = split(value(getString(ai(bp))), c)
558+ let cO = parseIntValue(df[T])
559+ let cP = parseIntValue(df[U])
560+ let cQ = parseIntValue(df[V])
561+ let cR = parseIntValue(df[W])
562+ let cS = parseIntValue(df[X])
563+ let dg = if ((cP != 0))
536564 then true
537565 else f("investorRemainingAmount already zero")
538- if ((cV == cV))
566+ if ((dg == dg))
539567 then {
540- let cW = makeString(["%d%d%d%d%d", toString(cQ), "0", toString(cS), toString(cT), toString(cU)], c)
541- let cX = split(value(getString(ak())), c)
542- let cY = parseIntValue(cX[T])
543- let cZ = parseIntValue(cX[U])
544- let da = parseIntValue(cX[U])
545- let db = parseIntValue(cX[V])
546- let dc = parseIntValue(cX[X])
547- let dd = makeString(["%d%d%d%d%d", toString(cY), toString((cZ - cR)), toString(da), toString(db), toString(dc)], c)
548-[StringEntry(ai(bo), cW), StringEntry(ak(), dd)]
568+ let dh = makeString(["%d%d%d%d%d", toString(cO), "0", toString(cQ), toString(cR), toString(cS)], c)
569+ let cU = split(value(getString(ak())), c)
570+ let cV = parseIntValue(cU[T])
571+ let cW = parseIntValue(cU[U])
572+ let cX = parseIntValue(cU[U])
573+ let cY = parseIntValue(cU[V])
574+ let cZ = parseIntValue(cU[X])
575+ let di = makeString(["%d%d%d%d%d", toString(cV), toString((cW - cP)), toString(cX), toString(cY), toString(cZ)], c)
576+[StringEntry(aF(bp), toString(cP)), StringEntry(ai(bp), dh), StringEntry(ak(), di)]
549577 }
550578 else throw("Strict value is not equal to itself.")
551579 }
552580 else throw("Strict value is not equal to itself.")
553581 }
554582 else throw("Strict value is not equal to itself.")
555583 }
556584
557585
558586
559-@Callable(cn)
560-func claimREADONLY (bk,bo) = {
561- let cD = bj(bk, addressFromStringValue(bo), fromBase58String(""))
562- let cv = cD._1
563- let bB = cD._2
564- let cE = cD._3
565- let bp = cD._4
566- let bt = cD._5
567- let de = cD._6
568- let cN = de[0]
569- let df = de[1]
570- $Tuple2(nil, makeString(["%s%d%d", bo, toString(cN), toString(df)], c))
587+@Callable(co)
588+func claimREADONLY (bl,bp) = {
589+ let cE = bk(bl, addressFromStringValue(bp), fromBase58String(""))
590+ let cw = cE._1
591+ let bC = cE._2
592+ let cF = cE._3
593+ let bq = cE._4
594+ let bu = cE._5
595+ let dj = cE._6
596+ let cM = dj[0]
597+ let dk = dj[1]
598+ $Tuple2(nil, makeString(["%s%d%d", bp, toString(cM), toString(dk)], c))
571599 }
572600
573601
574602
575-@Callable(cn)
576-func claimV2READONLY (bk,bo) = {
577- let cD = bj(bk, addressFromStringValue(bo), fromBase58String(""))
578- let cv = cD._1
579- let bB = cD._2
580- let cE = cD._3
581- let bp = cD._4
582- let bt = cD._5
583- let de = cD._6
584- let cN = de[0]
585- let df = de[1]
586- let aY = aH()
587- let O = aY[D]
588- let aV = valueOrElse(getInteger(aD(bo)), 0)
589- let cL = (aV * 100)
590- let dg = (df + cL)
591- let dh = bA(O, bo, bB, cv[aP])
592- let bV = dh._1
593- let bT = dh._2
594- let bU = dh._3
595- let bC = dh._4
596- let bW = dh._5
597- let ch = dh._6
598- let ci = dh._7
599- let bM = dh._8
600- let bN = dh._9
601- let bP = dh._10
602- let di = valueOrElse(getInteger(au(bM)), 0)
603- let dj = (parseIntValue(aM(bo)[V]) - aV)
604- let dk = if ((height > di))
603+@Callable(co)
604+func claimV2READONLY (bl,bp) = {
605+ let cE = bk(bl, addressFromStringValue(bp), fromBase58String(""))
606+ let cw = cE._1
607+ let bC = cE._2
608+ let cF = cE._3
609+ let bq = cE._4
610+ let bu = cE._5
611+ let dj = cE._6
612+ let cM = dj[0]
613+ let dk = dj[1]
614+ let aZ = aI()
615+ let O = aZ[D]
616+ let aW = valueOrElse(getInteger(aD(bp)), 0)
617+ let dd = (aW * 100)
618+ let dl = (dk + dd)
619+ let dm = bB(O, bp, bC, cw[aQ])
620+ let bW = dm._1
621+ let bU = dm._2
622+ let bV = dm._3
623+ let bD = dm._4
624+ let bX = dm._5
625+ let ci = dm._6
626+ let cj = dm._7
627+ let bN = dm._8
628+ let bO = dm._9
629+ let bQ = dm._10
630+ let dn = valueOrElse(getInteger(au(bN)), 0)
631+ let do = (parseIntValue(aN(bp)[V]) - aW)
632+ let dp = if ((height > dn))
605633 then {
606- let dl = value(getInteger(aq()))
607- let dm = value(getInteger(ay(O)))
608- let dn = value(getInteger(aw(O)))
609- makeString(["%d%d%d%d%d%d", toString(dg), toString(dm), toString(dn), toString(bW), toString(ch), toString(dl), toString(dj)], c)
634+ let dq = value(getInteger(aq()))
635+ let dr = value(getInteger(ay(O)))
636+ let ds = value(getInteger(aw(O)))
637+ makeString(["%d%d%d%d%d%d", toString(dl), toString(dr), toString(ds), toString(bX), toString(ci), toString(dq), toString(do)], c)
610638 }
611- else makeString(["%d%d%d%d%d%d", toString(dg), toString(bV), toString(bT), toString(bW), toString(ch), toString(ci), toString(dj)], c)
612- $Tuple2(nil, dk)
639+ else makeString(["%d%d%d%d%d%d", toString(dl), toString(bW), toString(bU), toString(bX), toString(ci), toString(cj), toString(do)], c)
640+ $Tuple2(nil, dp)
613641 }
614642
615643
616644
617-@Callable(cn)
618-func setManager (do) = {
619- let dp = cm(cn)
620- if ((dp == dp))
645+@Callable(co)
646+func setManager (dt) = {
647+ let du = cn(co)
648+ if ((du == du))
621649 then {
622- let dq = fromBase58String(do)
623- if ((dq == dq))
624- then [StringEntry(aG(), do)]
650+ let dv = fromBase58String(dt)
651+ if ((dv == dv))
652+ then [StringEntry(aH(), dt)]
625653 else throw("Strict value is not equal to itself.")
626654 }
627655 else throw("Strict value is not equal to itself.")
628656 }
629657
630658
631659
632-@Callable(cn)
660+@Callable(co)
633661 func confirmManager () = {
634- let dr = cl()
635- let ds = if (isDefined(dr))
662+ let dw = cm()
663+ let dx = if (isDefined(dw))
636664 then true
637665 else throw("No pending manager")
638- if ((ds == ds))
666+ if ((dx == dx))
639667 then {
640- let dt = if ((cn.callerPublicKey == value(dr)))
668+ let dy = if ((co.callerPublicKey == value(dw)))
641669 then true
642670 else throw("You are not pending manager")
643- if ((dt == dt))
644- then [StringEntry(aF(), toBase58String(value(dr))), DeleteEntry(aG())]
671+ if ((dy == dy))
672+ then [StringEntry(aG(), toBase58String(value(dw))), DeleteEntry(aH())]
645673 else throw("Strict value is not equal to itself.")
646674 }
647675 else throw("Strict value is not equal to itself.")
648676 }
649677
650678
651-@Verifier(du)
652-func dv () = {
653- let dw = {
654- let j = cj()
679+@Verifier(dz)
680+func dA () = {
681+ let dB = {
682+ let j = ck()
655683 if ($isInstanceOf(j, "ByteVector"))
656684 then {
657- let cp = j
658- cp
685+ let cq = j
686+ cq
659687 }
660688 else if ($isInstanceOf(j, "Unit"))
661- then du.senderPublicKey
689+ then dz.senderPublicKey
662690 else throw("Match error")
663691 }
664- sigVerify(du.bodyBytes, du.proofs[0], dw)
692+ sigVerify(dz.bodyBytes, dz.proofs[0], dB)
665693 }
666694

github/deemru/w8io/169f3d6 
204.68 ms