tx · 875SoMuHxnMqy7ggeMyp6koSoZruGEvWkGysjeAnJB9Y 3NC9wWawxuFG6a3sZdfckGwoMeVhLFjZFwH: -0.01400000 Waves 2021.03.30 15:25 [1460496] smart account 3NC9wWawxuFG6a3sZdfckGwoMeVhLFjZFwH > SELF 0.00000000 Waves
{ "type": 13, "id": "875SoMuHxnMqy7ggeMyp6koSoZruGEvWkGysjeAnJB9Y", "fee": 1400000, "feeAssetId": null, "timestamp": 1617107122688, "version": 1, "sender": "3NC9wWawxuFG6a3sZdfckGwoMeVhLFjZFwH", "senderPublicKey": "HoEvP2nFKMAsffQ9PUyAm6auWisyHgusY9HxDeMASrzZ", "proofs": [ "37tJPUdjQVvtGPmpo94EWrmNVYXLVDepPz3WDSY7Tqqm5osAo2NC1wL71uvxq6tZHRhQxsrkiX4tvTmQsbAEVtRQ" ], "script": "base64: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AAAACQAAAAZzdGF0dXMAAAANaW5Bc3NldEFtb3VudAAAAAVwcmljZQAAAA5vdXRBc3NldEFtb3VudAAAAAtzdGFydEhlaWdodAAAAA5zdGFydFRpbWVzdGFtcAAAAAllbmRIZWlnaHQAAAAMZW5kVGltZXN0YW1wAAAADnRvcHVwVW5sb2NrSWR4CQEAAAAecHJpdmF0ZURhdGFPcGVyYXRpb25BbGxTdHJpbmdzAAAACQUAAAAGc3RhdHVzCQABpAAAAAEFAAAADWluQXNzZXRBbW91bnQJAAGkAAAAAQUAAAAFcHJpY2UJAAGkAAAAAQUAAAAOb3V0QXNzZXRBbW91bnQJAAGkAAAAAQUAAAALc3RhcnRIZWlnaHQJAAGkAAAAAQUAAAAOc3RhcnRUaW1lc3RhbXAJAAGkAAAAAQUAAAAJZW5kSGVpZ2h0CQABpAAAAAEFAAAADGVuZFRpbWVzdGFtcAkAAaQAAAABBQAAAA50b3B1cFVubG9ja0lkeAEAAAAcZGF0YU9wZXJhdGlvbkV4ZWN1dGlvblVwZGF0ZQAAAAQAAAANY3Vyck9wZXJBcnJheQAAAAluZXdTdGF0dXMAAAAIbmV3UHJpY2UAAAAMbmV3T3V0QW1vdW50CQEAAAAecHJpdmF0ZURhdGFPcGVyYXRpb25BbGxTdHJpbmdzAAAACQUAAAAJbmV3U3RhdHVzCQABkQAAAAIFAAAADWN1cnJPcGVyQXJyYXkFAAAABHYxMjQJAAGkAAAAAQUAAAAIbmV3UHJpY2UJAAGkAAAAAQUAAAAMbmV3T3V0QW1vdW50CQABkQAAAAIFAAAADWN1cnJPcGVyQXJyYXkFAAAABHYxMjcJAAGRAAAAAgUAAAANY3Vyck9wZXJBcnJheQUAAAAEdjEyOAkAAaQAAAABBQAAAAZoZWlnaHQJAAGkAAAAAQgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAJAAGRAAAAAgUAAAANY3Vyck9wZXJBcnJheQUAAAAEdjEzMQEAAAAEZjEzMgAAAAEAAAAEdjEzMwQAAAADa2V5CQEAAAADZjIzAAAAAQUAAAAEdjEzMwkABLUAAAACCQEAAAACZjAAAAABBQAAAANrZXkFAAAAA1NFUAAAAAAEdjEzNAAAAAAAAAAAAQAAAAAEdjEzNQAAAAAAAAAAAgEA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ZWdlckVudHJ5AAAAAgIAAAAWZGVjaW1hbHNNdWx0Qm90aEFzc2V0cwUAAAAEdjIxMwkBAAAADEludGVnZXJFbnRyeQAAAAICAAAACHByaWNlQVRIBQAAAAR2MjE3CQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAJcHJpY2VMYXN0BQAAAAR2MjE5AAAACgAAAAFpAQAAABJhZG1pblJlZ2lzdGVyQXNzZXQAAAAOAAAADGJhc2VBc3NldFN0cgAAAA5zaGFyZUFzc2V0TmFtZQAAAA9zaGFyZUFzc2V0RGVzY3IAAAAQZ2V0RGVsYXlpbkJsb2NrcwAAABZzaHV0ZG93bk1hbmFnZXJBZGRyZXNzAAAACnN0YXJ0UHJpY2UAAAAVdG9wdXBJbnRlcnZhbEluQmxvY2tzAAAAFHRvcHVwTWF4TmVnYXRpdmVQYXJ0AAAAE3RvcHVwTWFuYWdlckFkZHJlc3MAAAATc3VibWl0TGltaXRzQmFzZU1heAAAABVzdWJtaXRMaW1pdHNCYXNlUmVzZXQAAAAUc3VibWl0TGltaXRzU2hhcmVNYXgAAAAWc3VibWl0TGltaXRzU2hhcmVSZXNldAAAAAxhZG1pbkFkZHJlc3MEAAAABHYyMjEJAAJZAAAAAQUAAAAMYmFzZUFzc2V0U3RyBAAAAAR2MjIyCAkBAAAABXZhbHVlAAAAAQkAA+wAAAABBQAAAAR2MjIxAAAACGRlY2ltYWxzBAAAAAR2MjIzCQAAbAAAAAYAAAAAAAAAAAoAAAAAAAAAAAAFAAAABHYyMjIAAAAAAAAAAAAAAAAAAAAAAAAFAAAABERPV04EAAAABHYyMjQJAABoAAAAAgkAAGgAAAACAAAAAAAAAABkAAAAAAAAAAPoAAAAAAAAAAPoBAAAAAR2MjI1CQAAawAAAAMFAAAAFHRvcHVwTWF4TmVnYXRpdmVQYXJ0AAAAAAAAAABkBQAAAAR2MjIzBAAAAAR2MjI2CQAD8AAAAAIFAAAABHRoaXMFAAAABHYyMjEDCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABHRoaXMJAAACAAAAAQIAAAAScGVybWlzc2lvbnMgZGVuaWVkAwkAAAAAAAACBQAAAAR2MjI2AAAAAAAAAAAACQAAAgAAAAEJAAEsAAAAAgkAASwAAAAC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", "chainId": 84, "height": 1460496, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BLbkqpPGTNExpoLzGNZ4nQxGbzkLbLes6u9Ca2VEq9hA Next: 8DsMsYYj9ZoEGcdykZH5NwbgvcANa6LcspaU62oh65dK Diff:
Old | New | Differences | |
---|---|---|---|
24 | 24 | func s (t,u,v) = fraction(t, u, v) | |
25 | 25 | ||
26 | 26 | ||
27 | - | func w (x, | |
27 | + | func w (x,y,z) = fraction(x, z, y) | |
28 | 28 | ||
29 | 29 | ||
30 | - | func | |
30 | + | func A (B) = ("%s%s%s__config__asset__" + B) | |
31 | 31 | ||
32 | 32 | ||
33 | - | func | |
33 | + | func C () = "%s__nextInternalAssetId" | |
34 | 34 | ||
35 | 35 | ||
36 | - | func | |
36 | + | func D (E) = ("%s%s%d__price__last__" + E) | |
37 | 37 | ||
38 | 38 | ||
39 | - | func | |
39 | + | func F (G) = ("%s%s%d__price__ath__" + G) | |
40 | 40 | ||
41 | 41 | ||
42 | - | func | |
42 | + | func H (I,J) = makeString(["%s%s%d%d__price__byTopUpIdx", I, toString(J)], a) | |
43 | 43 | ||
44 | 44 | ||
45 | - | func | |
45 | + | func K (L,M,N) = makeString(["%s%s%d%d%d__price__history", L, toString(M), toString(N)], a) | |
46 | 46 | ||
47 | 47 | ||
48 | - | func | |
48 | + | func O (P) = ("%s%s%d__total__locked__" + P) | |
49 | 49 | ||
50 | 50 | ||
51 | - | func | |
51 | + | func Q (R,S) = makeString(["%s%s%d%s__total__locked", R, S], a) | |
52 | 52 | ||
53 | 53 | ||
54 | - | func | |
54 | + | func T (U) = ("%s%s%d__mappings__internal2baseAssetId__" + toString(U)) | |
55 | 55 | ||
56 | 56 | ||
57 | - | func | |
57 | + | func V (W) = ("%s%s%s__mappings__baseAsset2internalId__" + W) | |
58 | 58 | ||
59 | 59 | ||
60 | - | func | |
60 | + | func X (Y) = ("%s%s%s__mappings__share2baseAssetId__" + Y) | |
61 | 61 | ||
62 | 62 | ||
63 | - | func | |
63 | + | func Z (aa) = ("%s%s%s__mappings__baseAsset2shareId__" + aa) | |
64 | 64 | ||
65 | 65 | ||
66 | - | func | |
66 | + | func ab (ac) = ("%s%s%d__shutdown__submit__" + ac) | |
67 | 67 | ||
68 | 68 | ||
69 | - | func | |
69 | + | func ad (ae) = ("%s%s%d__shutdown__manager__" + ae) | |
70 | 70 | ||
71 | 71 | ||
72 | - | func | |
72 | + | func af (ag) = ("%s%s%d__topup__currentIdx__" + ag) | |
73 | 73 | ||
74 | 74 | ||
75 | - | func | |
75 | + | func ah (ai,aj) = makeString(["%s%s%s%d%s__topup__last__height", ai, aj], a) | |
76 | 76 | ||
77 | 77 | ||
78 | - | func | |
78 | + | func ak (al) = ("%s%s%d__topup__mutex__" + al) | |
79 | 79 | ||
80 | 80 | ||
81 | - | func | |
81 | + | func am (an,ao) = makeString(["%s%s%d%d__topup__history", an, toString(ao)], a) | |
82 | 82 | ||
83 | 83 | ||
84 | - | func | |
84 | + | func ap (aq) = ("%s%s%d__limits__remaining__" + aq) | |
85 | 85 | ||
86 | 86 | ||
87 | - | let | |
87 | + | let ar = 1 | |
88 | 88 | ||
89 | - | let | |
89 | + | let as = 2 | |
90 | 90 | ||
91 | - | let | |
91 | + | let at = 3 | |
92 | 92 | ||
93 | - | let | |
93 | + | let au = 4 | |
94 | 94 | ||
95 | - | let | |
95 | + | let av = 5 | |
96 | 96 | ||
97 | - | let | |
97 | + | let aw = 6 | |
98 | 98 | ||
99 | - | let | |
99 | + | let ax = 7 | |
100 | 100 | ||
101 | - | let | |
101 | + | let ay = 8 | |
102 | 102 | ||
103 | - | let | |
103 | + | let az = 9 | |
104 | 104 | ||
105 | - | let | |
105 | + | let aA = 10 | |
106 | 106 | ||
107 | - | let | |
107 | + | let aB = 11 | |
108 | 108 | ||
109 | - | let | |
109 | + | let aC = 12 | |
110 | 110 | ||
111 | - | let | |
111 | + | let aD = 13 | |
112 | 112 | ||
113 | - | func | |
113 | + | func aE (aF,aG,aH,aI,aJ,aK,aL,aM,aN,aO,aP,aQ,aR) = makeString(["%s%d%d%d%d%d%d%s%d%d%d%d", aF, aG, toString(aH), toString(aI), toString(aJ), toString(aK), toString(aL), aM, toString(aN), toString(aO), toString(aP), toString(aQ), aR], a) | |
114 | 114 | ||
115 | 115 | ||
116 | - | let | |
116 | + | let aS = 1 | |
117 | 117 | ||
118 | - | let | |
118 | + | let aT = 2 | |
119 | 119 | ||
120 | - | let | |
120 | + | let aU = 3 | |
121 | 121 | ||
122 | - | let | |
122 | + | let aV = 4 | |
123 | 123 | ||
124 | - | func | |
124 | + | func aW (aX,aY,aZ,ba) = makeString(["%d%d%d%d", toString(aX), toString(aY), toString(aZ), toString(ba)], a) | |
125 | 125 | ||
126 | 126 | ||
127 | - | func | |
127 | + | func bb (bc,bd,be,bf) = [-1, bc, bd, be, bf] | |
128 | 128 | ||
129 | 129 | ||
130 | - | func | |
131 | - | let | |
132 | - | | |
130 | + | func bg (c) = { | |
131 | + | let bh = split(valueOrElse(getString(this, c), aW(0, 0, 0, 0)), a) | |
132 | + | bb(parseIntValue(bh[aS]), parseIntValue(bh[aT]), parseIntValue(bh[aU]), parseIntValue(bh[aV])) | |
133 | 133 | } | |
134 | 134 | ||
135 | 135 | ||
136 | - | func | |
137 | - | let | |
138 | - | if (( | |
136 | + | func bi (bj,bk,bl,bm,bn,bo,bp,bq) = { | |
137 | + | let br = (bj + bk) | |
138 | + | if ((br == "submitP")) | |
139 | 139 | then { | |
140 | - | let | |
141 | - | let | |
142 | - | $Tuple4( | |
140 | + | let bs = bb(0, 0, bo, 0) | |
141 | + | let bt = bs | |
142 | + | $Tuple4(bs, bt, 0, fromBase58String("")) | |
143 | 143 | } | |
144 | - | else if (( | |
144 | + | else if ((br == "submitG")) | |
145 | 145 | then { | |
146 | - | let | |
147 | - | let | |
148 | - | $Tuple4( | |
146 | + | let bu = bb(bo, 0, 0, 0) | |
147 | + | let bv = bu | |
148 | + | $Tuple4(bu, bv, 0, fromBase58String("")) | |
149 | 149 | } | |
150 | - | else if (( | |
150 | + | else if ((br == "executeP")) | |
151 | 151 | then { | |
152 | - | let | |
153 | - | let | |
154 | - | let | |
155 | - | $Tuple4( | |
152 | + | let bw = w(bo, bm, bn) | |
153 | + | let bx = bb(0, 0, 0, bw) | |
154 | + | let by = bb(0, 0, bo, 0) | |
155 | + | $Tuple4(bx, by, bw, bq) | |
156 | 156 | } | |
157 | - | else if (( | |
157 | + | else if ((br == "executeG")) | |
158 | 158 | then { | |
159 | - | let | |
160 | - | let | |
161 | - | let | |
162 | - | $Tuple4( | |
159 | + | let bz = s(bo, bm, bn) | |
160 | + | let bA = bb(0, bz, 0, 0) | |
161 | + | let bB = bb(bo, 0, 0, 0) | |
162 | + | $Tuple4(bA, bB, bz, bp) | |
163 | 163 | } | |
164 | - | else if (( | |
164 | + | else if ((br == "topup")) | |
165 | 165 | then { | |
166 | - | let | |
167 | - | let | |
168 | - | let | |
169 | - | let | |
170 | - | $Tuple4( | |
166 | + | let bC = bg(O(bl)) | |
167 | + | let bD = bC[aU] | |
168 | + | let bE = bC[aS] | |
169 | + | let bF = bb(bE, (-1 * s(bE, bm, bn)), bD, (-1 * w(bD, bm, bn))) | |
170 | + | $Tuple4(bF, nil, 0, fromBase58String("")) | |
171 | 171 | } | |
172 | - | else throw(("Unsupported Type " + | |
172 | + | else throw(("Unsupported Type " + br)) | |
173 | 173 | } | |
174 | 174 | ||
175 | 175 | ||
176 | - | func | |
177 | - | func | |
178 | - | then ( | |
179 | - | else if (( | |
180 | - | then ( | |
181 | - | else throw(("Unsupported action " + | |
176 | + | func bG (bH,c,bI) = { | |
177 | + | func bJ (bK,bL) = if ((bH == "INCREMENT")) | |
178 | + | then (bK + bL) | |
179 | + | else if ((bH == "DECREMENT")) | |
180 | + | then (bK - bL) | |
181 | + | else throw(("Unsupported action " + bH)) | |
182 | 182 | ||
183 | - | let | |
184 | - | StringEntry(c, | |
183 | + | let bM = bg(c) | |
184 | + | StringEntry(c, aW(bJ(bM[aS], bI[aS]), bJ(bM[aT], bI[aT]), bJ(bM[aU], bI[aU]), bJ(bM[aV], bI[aV]))) | |
185 | 185 | } | |
186 | 186 | ||
187 | 187 | ||
188 | - | func | |
188 | + | func bN (bO,bP,bQ,bR) = makeString(["%s%d%s%s", bO, bP, bQ, bR], a) | |
189 | 189 | ||
190 | 190 | ||
191 | - | let | |
191 | + | let bS = 1 | |
192 | 192 | ||
193 | - | let | |
193 | + | let bT = 2 | |
194 | 194 | ||
195 | - | let | |
195 | + | let bU = 3 | |
196 | 196 | ||
197 | - | let | |
197 | + | let bV = 4 | |
198 | 198 | ||
199 | - | let | |
199 | + | let bW = 5 | |
200 | 200 | ||
201 | - | let | |
201 | + | let bX = 6 | |
202 | 202 | ||
203 | - | let | |
203 | + | let bY = 7 | |
204 | 204 | ||
205 | - | let | |
205 | + | let bZ = 8 | |
206 | 206 | ||
207 | - | let | |
207 | + | let ca = 9 | |
208 | 208 | ||
209 | - | func | |
209 | + | func cb (cc,cd,ce,cf,cg,ch,ci,cj,ck) = makeString(["%s%d%d%d%d%d%d%d%d", cc, cd, ce, cf, cg, ch, ci, cj, ck], a) | |
210 | 210 | ||
211 | 211 | ||
212 | - | func | |
212 | + | func cl (cc,cd,ce,cf,cg,ch,ci,cj,cm) = cb(cc, toString(cd), toString(ce), toString(cf), toString(cg), toString(ch), toString(ci), toString(cj), toString(cm)) | |
213 | 213 | ||
214 | 214 | ||
215 | - | func | |
215 | + | func cn (co,cp,cq,cr) = cb(cp, co[bT], toString(cq), toString(cr), co[bW], co[bX], toString(height), toString(lastBlock.timestamp), co[ca]) | |
216 | 216 | ||
217 | 217 | ||
218 | - | func | |
219 | - | let c = | |
218 | + | func cs (ct) = { | |
219 | + | let c = A(ct) | |
220 | 220 | split(b(c), a) | |
221 | 221 | } | |
222 | 222 | ||
223 | 223 | ||
224 | - | let | |
224 | + | let cu = 1 | |
225 | 225 | ||
226 | - | let | |
226 | + | let cv = 2 | |
227 | 227 | ||
228 | - | func | |
228 | + | func cw (c,cx,cy) = StringEntry(c, makeString(["%d%d", toString(cx), toString(cy)], a)) | |
229 | 229 | ||
230 | 230 | ||
231 | - | func | |
231 | + | func cz (cA,cB) = IntegerEntry(ak(cA), cB) | |
232 | 232 | ||
233 | 233 | ||
234 | - | func | |
235 | - | let | |
236 | - | let | |
237 | - | let | |
238 | - | let | |
239 | - | let | |
240 | - | let | |
241 | - | let | |
242 | - | let | |
243 | - | if ((0 > | |
244 | - | then throw((((" | |
234 | + | func cC (cD,cE,cF,cG,cH) = { | |
235 | + | let cI = bg(O(cD)) | |
236 | + | let cJ = cI[aT] | |
237 | + | let cK = cI[aU] | |
238 | + | let cL = assetBalance(this, cE) | |
239 | + | let cM = (((cL + cF) - cK) - cJ) | |
240 | + | let cN = cI[aV] | |
241 | + | let cO = cI[aS] | |
242 | + | let cP = value(assetInfo(cG)).quantity | |
243 | + | if ((0 > cM)) | |
244 | + | then throw(((("v152 < 0: v151=" + toString(cL)) + " v152=") + toString(cM))) | |
245 | 245 | else { | |
246 | - | let | |
247 | - | let | |
248 | - | then | |
249 | - | else fraction( | |
250 | - | $Tuple9( | |
246 | + | let cQ = e(D(cD)) | |
247 | + | let cR = if ((cP == 0)) | |
248 | + | then cQ | |
249 | + | else fraction(cM, cH, cP) | |
250 | + | $Tuple9(cR, cL, -1, cM, cP, cK, cO, cJ, cN) | |
251 | 251 | } | |
252 | 252 | } | |
253 | 253 | ||
254 | 254 | ||
255 | - | func | |
255 | + | func cS (cT,cU,cV,cW) = cC(cT, cU, 0, cV, cW) | |
256 | 256 | ||
257 | 257 | ||
258 | - | func | |
259 | - | let | |
260 | - | let | |
261 | - | let | |
262 | - | let | |
263 | - | let | |
264 | - | let | |
265 | - | let | |
266 | - | let | |
267 | - | let | |
268 | - | let | |
269 | - | let | |
270 | - | let | |
271 | - | let | |
272 | - | if ( | |
258 | + | func cX (cY,cZ,da,db,dc) = { | |
259 | + | let dd = toBase58String(db) | |
260 | + | let de = toString(cZ.caller) | |
261 | + | let df = fromBase58String(dc) | |
262 | + | let dg = cs(dc) | |
263 | + | let dh = dg[ar] | |
264 | + | let di = fromBase58String(dh) | |
265 | + | let dj = parseIntValue(dg[at]) | |
266 | + | let dk = dg[as] | |
267 | + | let dl = ap(dk) | |
268 | + | let dm = split(b(dl), a) | |
269 | + | let dn = parseIntValue(dm[cu]) | |
270 | + | let do = parseIntValue(dm[cv]) | |
271 | + | let dp = valueOrElse(getBoolean(this, ab(dk)), false) | |
272 | + | if (dp) | |
273 | 273 | then throw("submit operation is blocked") | |
274 | 274 | else { | |
275 | - | let | |
276 | - | if ((( | |
275 | + | let dq = valueOrElse(getInteger(this, ak(dk)), 0) | |
276 | + | if (((dq + 60) > height)) | |
277 | 277 | then throw("submit operations are blocked by topup manager") | |
278 | 278 | else { | |
279 | - | let | |
280 | - | let | |
281 | - | let | |
282 | - | if (if ((0 > | |
279 | + | let dr = bi("submit", cY, dk, 0, 0, da, df, di) | |
280 | + | let ds = (dn - dr._2[aU]) | |
281 | + | let dt = (do - dr._2[aS]) | |
282 | + | if (if ((0 > ds)) | |
283 | 283 | then true | |
284 | - | else (0 > | |
285 | - | then l( | |
284 | + | else (0 > dt)) | |
285 | + | then l(dn, do, ds, dt) | |
286 | 286 | else { | |
287 | - | let | |
288 | - | ((([StringEntry( | |
287 | + | let du = e(af(dk)) | |
288 | + | ((([StringEntry(bN(cY, dk, de, toBase58String(cZ.transactionId)), cl("PENDING", da, 0, 0, height, lastBlock.timestamp, 0, 0, (du + 1)))] :+ bG("INCREMENT", O(dk), dr._1)) :+ bG("INCREMENT", Q(dk, de), dr._2)) :+ cw(dl, ds, dt)) | |
289 | 289 | } | |
290 | 290 | } | |
291 | 291 | } | |
292 | 292 | } | |
293 | 293 | ||
294 | 294 | ||
295 | - | func | |
296 | - | let | |
297 | - | let | |
298 | - | let | |
299 | - | let | |
300 | - | let | |
301 | - | let | |
302 | - | let | |
303 | - | let | |
304 | - | let | |
305 | - | let | |
306 | - | let | |
307 | - | let | |
308 | - | let | |
309 | - | if (( | |
310 | - | then f("Status is not PENDING", | |
311 | - | else if (( | |
312 | - | then f(((("OperLock[" + toString( | |
295 | + | func dv (dw,dx,dy,dz) = { | |
296 | + | let dA = addressFromStringValue(dy) | |
297 | + | let dB = cs(dx) | |
298 | + | let dC = fromBase58String(dB[ar]) | |
299 | + | let dD = dB[as] | |
300 | + | let dE = parseIntValue(dB[au]) | |
301 | + | let dF = fromBase58String(dx) | |
302 | + | let dG = bN(dw, dD, dy, dz) | |
303 | + | let dH = split(b(dG), a) | |
304 | + | let dI = dH[bS] | |
305 | + | let dJ = parseIntValue(dH[bT]) | |
306 | + | let dK = parseIntValue(dH[ca]) | |
307 | + | let dL = e(af(dD)) | |
308 | + | let dM = e(H(dD, dK)) | |
309 | + | if ((dI != "PENDING")) | |
310 | + | then f("Status is not PENDING", dx, dy, dz, dw) | |
311 | + | else if ((dK > dL)) | |
312 | + | then f(((("OperLock[" + toString(dK)) + "] > ") + toString(dL)), dx, dy, dz, dw) | |
313 | 313 | else { | |
314 | - | let | |
315 | - | let | |
316 | - | let | |
317 | - | then [ScriptTransfer( | |
318 | - | else [ScriptTransfer( | |
319 | - | ((( | |
314 | + | let dN = bi("execute", dw, dD, dM, dE, dJ, dF, dC) | |
315 | + | let dO = dN._3 | |
316 | + | let dP = if ((dN._4 == dF)) | |
317 | + | then [ScriptTransfer(dA, dO, dF)] | |
318 | + | else [ScriptTransfer(dA, dO, dC)] | |
319 | + | (((dP :+ StringEntry(dG, cn(dH, "FINISHED", dM, dO))) :+ bG("DECREMENT", O(dD), dN._1)) :+ bG("DECREMENT", Q(dD, dy), dN._2)) | |
320 | 320 | } | |
321 | 321 | } | |
322 | 322 | ||
323 | 323 | ||
324 | - | func | |
325 | - | let | |
326 | - | let | |
327 | - | let | |
328 | - | let | |
329 | - | let | |
330 | - | let | |
331 | - | let | |
332 | - | let | |
333 | - | let | |
334 | - | let | |
335 | - | let | |
336 | - | let | |
337 | - | $Tuple13(IntegerEntry("price", | |
324 | + | func dQ (dR) = { | |
325 | + | let dS = fromBase58String(dR) | |
326 | + | let dT = cs(dR) | |
327 | + | let dU = dT[ar] | |
328 | + | let dV = fromBase58String(dU) | |
329 | + | let dW = parseIntValue(dT[at]) | |
330 | + | let dX = parseIntValue(dT[au]) | |
331 | + | let dY = dT[as] | |
332 | + | let dZ = F(dY) | |
333 | + | let ea = valueOrElse(getInteger(this, dZ), 0) | |
334 | + | let eb = D(dY) | |
335 | + | let ec = valueOrElse(getInteger(this, eb), 0) | |
336 | + | let ed = cS(dY, dS, dV, dX) | |
337 | + | $Tuple13(IntegerEntry("price", ed._1), IntegerEntry("decimalsMultPrice", dX), IntegerEntry("baseAssetBalance", ed._2), IntegerEntry("-1", ed._3), IntegerEntry("baseAssetBalanceWCO", ed._4), IntegerEntry("shareEmission", ed._5), IntegerEntry("currIterTotalInBaseAmount", ed._6), IntegerEntry("currIterTotalInShareAmount", ed._7), IntegerEntry("totalLockedOutBaseAmount", ed._8), IntegerEntry("totalLockedOutShareAmount", ed._9), IntegerEntry("decimalsMultBothAssets", dW), IntegerEntry("priceATH", ea), IntegerEntry("priceLast", ec)) | |
338 | 338 | } | |
339 | 339 | ||
340 | 340 | ||
341 | - | @Callable( | |
342 | - | func adminRegisterAsset ( | |
343 | - | let | |
344 | - | let | |
345 | - | let | |
346 | - | let | |
347 | - | let | |
348 | - | let | |
349 | - | if (( | |
341 | + | @Callable(cZ) | |
342 | + | func adminRegisterAsset (ee,ef,eg,eh,ei,ej,aK,aL,aM,aN,aO,aP,aQ,aR) = { | |
343 | + | let ek = fromBase58String(ee) | |
344 | + | let el = value(assetInfo(ek)).decimals | |
345 | + | let em = pow(10, 0, el, 0, 0, DOWN) | |
346 | + | let en = ((100 * 1000) * 1000) | |
347 | + | let eo = fraction(aL, 100, em) | |
348 | + | let ep = assetBalance(this, ek) | |
349 | + | if ((cZ.caller != this)) | |
350 | 350 | then throw("permissions denied") | |
351 | - | else if (( | |
352 | - | then throw(((toString(this) + " must have any initial balance of ") + | |
353 | - | else if (isDefined(getString(this, | |
354 | - | then throw(( | |
355 | - | else if ((toString(addressFromStringValue( | |
351 | + | else if ((ep == 0)) | |
352 | + | then throw(((toString(this) + " must have any initial balance of ") + ee)) | |
353 | + | else if (isDefined(getString(this, A(ee)))) | |
354 | + | then throw((ee + " has been already registered")) | |
355 | + | else if ((toString(addressFromStringValue(ei)) != ei)) | |
356 | 356 | then throw("invalid shutdownManagerAddress") | |
357 | - | else if ((toString(addressFromStringValue( | |
357 | + | else if ((toString(addressFromStringValue(aM)) != aM)) | |
358 | 358 | then throw("invalid topupManagerAddress") | |
359 | - | else if ((0 > | |
360 | - | then throw(("invalid getDelayinBlocks=" + toString( | |
361 | - | else if (if ((0 >= | |
359 | + | else if ((0 > eh)) | |
360 | + | then throw(("invalid getDelayinBlocks=" + toString(eh))) | |
361 | + | else if (if ((0 >= eo)) | |
362 | 362 | then true | |
363 | - | else ( | |
363 | + | else (eo >= 99)) | |
364 | 364 | then throw("invalid topupMaxNegativePart parameter") | |
365 | 365 | else { | |
366 | - | let | |
367 | - | let | |
368 | - | let | |
369 | - | let | |
370 | - | let | |
371 | - | let | |
372 | - | [StringEntry( | |
366 | + | let eq = w(ep, ej, en) | |
367 | + | let er = Issue(ef, eg, eq, el, true) | |
368 | + | let es = calculateAssetId(er) | |
369 | + | let et = toBase58String(es) | |
370 | + | let eu = valueOrElse(getInteger(this, C()), 0) | |
371 | + | let ev = toString(eu) | |
372 | + | [StringEntry(A(ee), aE(et, ev, em, en, eh, aK, aL, aM, aN, aO, aP, aQ, aR)), StringEntry(T(eu), ee), StringEntry(V(ee), ev), StringEntry(X(et), ee), StringEntry(Z(ee), et), BooleanEntry(ab(ev), false), StringEntry(ad(ev), ei), IntegerEntry(C(), (eu + 1)), IntegerEntry(D(ev), ej), IntegerEntry(K(ev, height, lastBlock.timestamp), ej), IntegerEntry(af(ev), 0), cw(ap(ev), aN, aP), er, ScriptTransfer(addressFromStringValue(aM), eq, es)] | |
373 | 373 | } | |
374 | 374 | } | |
375 | 375 | ||
376 | 376 | ||
377 | 377 | ||
378 | - | @Callable( | |
379 | - | func adminUpdateCfg ( | |
380 | - | let | |
378 | + | @Callable(cZ) | |
379 | + | func adminUpdateCfg (ew,ex,ey) = { | |
380 | + | let ez = cs(ew) | |
381 | 381 | nil | |
382 | 382 | } | |
383 | 383 | ||
384 | 384 | ||
385 | 385 | ||
386 | - | @Callable( | |
387 | - | func shutdownSubmits ( | |
388 | - | let | |
389 | - | let | |
390 | - | let | |
391 | - | if ((1 > size( | |
392 | - | then throw("invalid | |
393 | - | else if ((toString( | |
386 | + | @Callable(cZ) | |
387 | + | func shutdownSubmits (eu) = { | |
388 | + | let eA = toString(eu) | |
389 | + | let eB = b(T(eu)) | |
390 | + | let eC = b(ad(eA)) | |
391 | + | if ((1 > size(eB))) | |
392 | + | then throw("invalid v231") | |
393 | + | else if ((toString(cZ.caller) != eC)) | |
394 | 394 | then throw("access denied") | |
395 | - | else [BooleanEntry( | |
395 | + | else [BooleanEntry(ab(toString(eu)), true)] | |
396 | 396 | } | |
397 | 397 | ||
398 | 398 | ||
399 | 399 | ||
400 | - | @Callable( | |
400 | + | @Callable(cZ) | |
401 | 401 | func submitPut () = { | |
402 | - | let | |
403 | - | let | |
404 | - | let | |
405 | - | let | |
406 | - | | |
402 | + | let eD = value(cZ.payments[0]) | |
403 | + | let eE = eD.amount | |
404 | + | let eF = value(eD.assetId) | |
405 | + | let eG = toBase58String(eF) | |
406 | + | cX("P", cZ, eE, eF, eG) | |
407 | 407 | } | |
408 | 408 | ||
409 | 409 | ||
410 | 410 | ||
411 | - | @Callable( | |
411 | + | @Callable(cZ) | |
412 | 412 | func submitGet () = { | |
413 | - | let | |
414 | - | let | |
415 | - | let | |
416 | - | let | |
417 | - | let | |
418 | - | | |
413 | + | let eD = value(cZ.payments[0]) | |
414 | + | let eH = eD.amount | |
415 | + | let eI = value(eD.assetId) | |
416 | + | let et = toBase58String(eI) | |
417 | + | let eJ = b(X(et)) | |
418 | + | cX("G", cZ, eH, eI, eJ) | |
419 | 419 | } | |
420 | 420 | ||
421 | 421 | ||
422 | 422 | ||
423 | - | @Callable( | |
424 | - | func executePut ( | |
423 | + | @Callable(cZ) | |
424 | + | func executePut (eK,eL,eM) = dv("P", eK, eL, eM) | |
425 | 425 | ||
426 | 426 | ||
427 | 427 | ||
428 | - | @Callable( | |
429 | - | func executeGet ( | |
428 | + | @Callable(cZ) | |
429 | + | func executeGet (eN,eO,eP) = dv("G", eN, eO, eP) | |
430 | 430 | ||
431 | 431 | ||
432 | 432 | ||
433 | - | @Callable( | |
434 | - | func operationsMutex ( | |
435 | - | let | |
436 | - | let | |
437 | - | let | |
438 | - | if ((toString( | |
439 | - | then q( | |
440 | - | else [ | |
433 | + | @Callable(cZ) | |
434 | + | func operationsMutex (eQ) = { | |
435 | + | let eR = cs(eQ) | |
436 | + | let eS = eR[ay] | |
437 | + | let ev = eR[as] | |
438 | + | if ((toString(cZ.caller) != eS)) | |
439 | + | then q(eS) | |
440 | + | else [cz(ev, height)] | |
441 | 441 | } | |
442 | 442 | ||
443 | 443 | ||
444 | 444 | ||
445 | - | @Callable( | |
446 | - | func topUpBalance ( | |
447 | - | let | |
448 | - | let | |
449 | - | let | |
450 | - | let | |
451 | - | let | |
452 | - | let | |
453 | - | let | |
454 | - | let | |
455 | - | let | |
456 | - | let | |
457 | - | let | |
458 | - | let | |
459 | - | let | |
460 | - | let | |
461 | - | let | |
445 | + | @Callable(cZ) | |
446 | + | func topUpBalance (eT,eU) = { | |
447 | + | let ek = fromBase58String(eT) | |
448 | + | let eV = cs(eT) | |
449 | + | let es = fromBase58String(eV[ar]) | |
450 | + | let eW = parseIntValue(eV[au]) | |
451 | + | let eX = parseIntValue(eV[at]) | |
452 | + | let eY = parseIntValue(eV[aw]) | |
453 | + | let eZ = parseIntValue(eV[ax]) | |
454 | + | let ev = eV[as] | |
455 | + | let fa = eV[ay] | |
456 | + | let fb = parseIntValue(eV[az]) | |
457 | + | let fc = parseIntValue(eV[aB]) | |
458 | + | let fd = af(ev) | |
459 | + | let fe = e(fd) | |
460 | + | let ff = (fe + 1) | |
461 | + | let fg = if ((eU > 0)) | |
462 | 462 | then { | |
463 | - | let | |
464 | - | let | |
465 | - | if (( | |
466 | - | then throw("attached payment's asset id is NOT matched passed | |
467 | - | else if ((size( | |
463 | + | let eD = value(cZ.payments[0]) | |
464 | + | let fh = value(eD.assetId) | |
465 | + | if ((ek != fh)) | |
466 | + | then throw("attached payment's asset id is NOT matched passed v255") | |
467 | + | else if ((size(cZ.payments) > 1)) | |
468 | 468 | then throw("only one payment can be attached") | |
469 | - | else if (( | |
470 | - | then throw("attached payment.amount is NOT matched passed | |
469 | + | else if ((eD.amount != eU)) | |
470 | + | then throw("attached payment.amount is NOT matched passed v256 argument") | |
471 | 471 | else true | |
472 | 472 | } | |
473 | - | else if ((0 > | |
473 | + | else if ((0 > eU)) | |
474 | 474 | then { | |
475 | - | let | |
476 | - | let | |
477 | - | if ((-( | |
478 | - | then throw(("topup negative | |
475 | + | let fi = assetBalance(this, ek) | |
476 | + | let fj = fraction(eZ, fi, eX) | |
477 | + | if ((-(eU) > fj)) | |
478 | + | then throw(("topup negative v256 couldn't be greater than " + toString(fj))) | |
479 | 479 | else true | |
480 | 480 | } | |
481 | - | else throw("zero | |
482 | - | let | |
483 | - | let | |
484 | - | if ((toString( | |
485 | - | then q( | |
486 | - | else if (!( | |
481 | + | else throw("zero v256 is not allowed") | |
482 | + | let fk = ah(ev, toString(cZ.caller)) | |
483 | + | let fl = valueOrElse(getInteger(this, fk), 0) | |
484 | + | if ((toString(cZ.caller) != fa)) | |
485 | + | then q(fa) | |
486 | + | else if (!(fg)) | |
487 | 487 | then throw("validation failed") | |
488 | - | else if (( | |
489 | - | then throw((("1 topup per " + toString( | |
488 | + | else if ((eY > (height - fl))) | |
489 | + | then throw((("1 topup per " + toString(eY)) + " blocks from the same address is allowed")) | |
490 | 490 | else { | |
491 | - | let | |
492 | - | let | |
493 | - | let | |
494 | - | let | |
495 | - | let | |
496 | - | (((((([IntegerEntry( | |
497 | - | then | |
498 | - | else | |
499 | - | then [ScriptTransfer( | |
491 | + | let fm = cC(ev, ek, eU, es, eW)._1 | |
492 | + | let fn = bi("topup", "", ev, fm, eW, 0, ek, es) | |
493 | + | let fo = fn._1 | |
494 | + | let fp = F(ev) | |
495 | + | let fq = valueOrElse(getInteger(this, fp), 0) | |
496 | + | (((((([IntegerEntry(D(ev), fm), IntegerEntry(K(ev, height, lastBlock.timestamp), fm), IntegerEntry(H(ev, ff), fm), IntegerEntry(fd, ff), IntegerEntry(fp, if ((fm > fq)) | |
497 | + | then fm | |
498 | + | else fq), IntegerEntry(fk, height)] :+ bG("DECREMENT", O(ev), fo)) :+ cz(ev, 0)) :+ cw(ap(ev), fb, fc)) :+ Burn(es, fo[aS])) :+ Reissue(es, -(fo[aV]), true)) ++ (if ((0 > eU)) | |
499 | + | then [ScriptTransfer(cZ.caller, -(eU), ek)] | |
500 | 500 | else nil)) | |
501 | 501 | } | |
502 | 502 | } | |
503 | 503 | ||
504 | 504 | ||
505 | 505 | ||
506 | - | @Callable( | |
507 | - | func currentSysParamsREST ( | |
508 | - | let | |
509 | - | let | |
510 | - | let | |
511 | - | let | |
512 | - | let | |
513 | - | let | |
514 | - | let | |
515 | - | let | |
516 | - | let | |
517 | - | let | |
518 | - | let | |
519 | - | let | |
520 | - | let | |
521 | - | let | |
522 | - | let | |
523 | - | throw( | |
506 | + | @Callable(cZ) | |
507 | + | func currentSysParamsREST (fr) = { | |
508 | + | let fs = dQ(fr) | |
509 | + | let ft = fs._1.value | |
510 | + | let en = fs._2.value | |
511 | + | let ep = fs._3.value | |
512 | + | let fu = fs._4.value | |
513 | + | let fv = fs._5.value | |
514 | + | let fw = fs._6.value | |
515 | + | let fx = fs._7.value | |
516 | + | let fy = fs._8.value | |
517 | + | let fz = fs._9.value | |
518 | + | let fA = fs._10.value | |
519 | + | let em = fs._11.value | |
520 | + | let fB = fs._12.value | |
521 | + | let fC = fs._13.value | |
522 | + | let fD = makeString(["startCurrentSysParamsREST", toString(ft), toString(en), toString(ep), toString(fu), toString(fv), toString(fw), toString(fx), toString(fy), toString(fz), toString(fA), toString(em), toString(fB), toString(fC), "endCurrentSysParamsREST"], a) | |
523 | + | throw(fD) | |
524 | 524 | } | |
525 | 525 | ||
526 | 526 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 4 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = "__" | |
5 | 5 | ||
6 | 6 | func b (c) = valueOrErrorMessage(getString(this, c), ("No data for this.key=" + c)) | |
7 | 7 | ||
8 | 8 | ||
9 | 9 | func d (c) = valueOrErrorMessage(getBoolean(this, c), ("No data for this.key=" + c)) | |
10 | 10 | ||
11 | 11 | ||
12 | 12 | func e (c) = valueOrErrorMessage(getInteger(this, c), ("No data for this.key=" + c)) | |
13 | 13 | ||
14 | 14 | ||
15 | 15 | func f (g,h,i,j,k) = throw(((((((((g + ": baseAsset=") + h) + " userAddress=") + i) + " submitTxId=") + j) + " operation=") + k)) | |
16 | 16 | ||
17 | 17 | ||
18 | 18 | func l (m,n,o,p) = throw((((((((("submit operation limits have been reached: " + " remainingBaseVal=") + toString(m)) + " remainingShareVal=") + toString(n)) + " newRemainingBaseVal=") + toString(o)) + " newRemainingShareVal=") + toString(p))) | |
19 | 19 | ||
20 | 20 | ||
21 | 21 | func q (r) = throw((("opertion denied: only topUpManager=" + r) + " can send such transactions")) | |
22 | 22 | ||
23 | 23 | ||
24 | 24 | func s (t,u,v) = fraction(t, u, v) | |
25 | 25 | ||
26 | 26 | ||
27 | - | func w (x, | |
27 | + | func w (x,y,z) = fraction(x, z, y) | |
28 | 28 | ||
29 | 29 | ||
30 | - | func | |
30 | + | func A (B) = ("%s%s%s__config__asset__" + B) | |
31 | 31 | ||
32 | 32 | ||
33 | - | func | |
33 | + | func C () = "%s__nextInternalAssetId" | |
34 | 34 | ||
35 | 35 | ||
36 | - | func | |
36 | + | func D (E) = ("%s%s%d__price__last__" + E) | |
37 | 37 | ||
38 | 38 | ||
39 | - | func | |
39 | + | func F (G) = ("%s%s%d__price__ath__" + G) | |
40 | 40 | ||
41 | 41 | ||
42 | - | func | |
42 | + | func H (I,J) = makeString(["%s%s%d%d__price__byTopUpIdx", I, toString(J)], a) | |
43 | 43 | ||
44 | 44 | ||
45 | - | func | |
45 | + | func K (L,M,N) = makeString(["%s%s%d%d%d__price__history", L, toString(M), toString(N)], a) | |
46 | 46 | ||
47 | 47 | ||
48 | - | func | |
48 | + | func O (P) = ("%s%s%d__total__locked__" + P) | |
49 | 49 | ||
50 | 50 | ||
51 | - | func | |
51 | + | func Q (R,S) = makeString(["%s%s%d%s__total__locked", R, S], a) | |
52 | 52 | ||
53 | 53 | ||
54 | - | func | |
54 | + | func T (U) = ("%s%s%d__mappings__internal2baseAssetId__" + toString(U)) | |
55 | 55 | ||
56 | 56 | ||
57 | - | func | |
57 | + | func V (W) = ("%s%s%s__mappings__baseAsset2internalId__" + W) | |
58 | 58 | ||
59 | 59 | ||
60 | - | func | |
60 | + | func X (Y) = ("%s%s%s__mappings__share2baseAssetId__" + Y) | |
61 | 61 | ||
62 | 62 | ||
63 | - | func | |
63 | + | func Z (aa) = ("%s%s%s__mappings__baseAsset2shareId__" + aa) | |
64 | 64 | ||
65 | 65 | ||
66 | - | func | |
66 | + | func ab (ac) = ("%s%s%d__shutdown__submit__" + ac) | |
67 | 67 | ||
68 | 68 | ||
69 | - | func | |
69 | + | func ad (ae) = ("%s%s%d__shutdown__manager__" + ae) | |
70 | 70 | ||
71 | 71 | ||
72 | - | func | |
72 | + | func af (ag) = ("%s%s%d__topup__currentIdx__" + ag) | |
73 | 73 | ||
74 | 74 | ||
75 | - | func | |
75 | + | func ah (ai,aj) = makeString(["%s%s%s%d%s__topup__last__height", ai, aj], a) | |
76 | 76 | ||
77 | 77 | ||
78 | - | func | |
78 | + | func ak (al) = ("%s%s%d__topup__mutex__" + al) | |
79 | 79 | ||
80 | 80 | ||
81 | - | func | |
81 | + | func am (an,ao) = makeString(["%s%s%d%d__topup__history", an, toString(ao)], a) | |
82 | 82 | ||
83 | 83 | ||
84 | - | func | |
84 | + | func ap (aq) = ("%s%s%d__limits__remaining__" + aq) | |
85 | 85 | ||
86 | 86 | ||
87 | - | let | |
87 | + | let ar = 1 | |
88 | 88 | ||
89 | - | let | |
89 | + | let as = 2 | |
90 | 90 | ||
91 | - | let | |
91 | + | let at = 3 | |
92 | 92 | ||
93 | - | let | |
93 | + | let au = 4 | |
94 | 94 | ||
95 | - | let | |
95 | + | let av = 5 | |
96 | 96 | ||
97 | - | let | |
97 | + | let aw = 6 | |
98 | 98 | ||
99 | - | let | |
99 | + | let ax = 7 | |
100 | 100 | ||
101 | - | let | |
101 | + | let ay = 8 | |
102 | 102 | ||
103 | - | let | |
103 | + | let az = 9 | |
104 | 104 | ||
105 | - | let | |
105 | + | let aA = 10 | |
106 | 106 | ||
107 | - | let | |
107 | + | let aB = 11 | |
108 | 108 | ||
109 | - | let | |
109 | + | let aC = 12 | |
110 | 110 | ||
111 | - | let | |
111 | + | let aD = 13 | |
112 | 112 | ||
113 | - | func | |
113 | + | func aE (aF,aG,aH,aI,aJ,aK,aL,aM,aN,aO,aP,aQ,aR) = makeString(["%s%d%d%d%d%d%d%s%d%d%d%d", aF, aG, toString(aH), toString(aI), toString(aJ), toString(aK), toString(aL), aM, toString(aN), toString(aO), toString(aP), toString(aQ), aR], a) | |
114 | 114 | ||
115 | 115 | ||
116 | - | let | |
116 | + | let aS = 1 | |
117 | 117 | ||
118 | - | let | |
118 | + | let aT = 2 | |
119 | 119 | ||
120 | - | let | |
120 | + | let aU = 3 | |
121 | 121 | ||
122 | - | let | |
122 | + | let aV = 4 | |
123 | 123 | ||
124 | - | func | |
124 | + | func aW (aX,aY,aZ,ba) = makeString(["%d%d%d%d", toString(aX), toString(aY), toString(aZ), toString(ba)], a) | |
125 | 125 | ||
126 | 126 | ||
127 | - | func | |
127 | + | func bb (bc,bd,be,bf) = [-1, bc, bd, be, bf] | |
128 | 128 | ||
129 | 129 | ||
130 | - | func | |
131 | - | let | |
132 | - | | |
130 | + | func bg (c) = { | |
131 | + | let bh = split(valueOrElse(getString(this, c), aW(0, 0, 0, 0)), a) | |
132 | + | bb(parseIntValue(bh[aS]), parseIntValue(bh[aT]), parseIntValue(bh[aU]), parseIntValue(bh[aV])) | |
133 | 133 | } | |
134 | 134 | ||
135 | 135 | ||
136 | - | func | |
137 | - | let | |
138 | - | if (( | |
136 | + | func bi (bj,bk,bl,bm,bn,bo,bp,bq) = { | |
137 | + | let br = (bj + bk) | |
138 | + | if ((br == "submitP")) | |
139 | 139 | then { | |
140 | - | let | |
141 | - | let | |
142 | - | $Tuple4( | |
140 | + | let bs = bb(0, 0, bo, 0) | |
141 | + | let bt = bs | |
142 | + | $Tuple4(bs, bt, 0, fromBase58String("")) | |
143 | 143 | } | |
144 | - | else if (( | |
144 | + | else if ((br == "submitG")) | |
145 | 145 | then { | |
146 | - | let | |
147 | - | let | |
148 | - | $Tuple4( | |
146 | + | let bu = bb(bo, 0, 0, 0) | |
147 | + | let bv = bu | |
148 | + | $Tuple4(bu, bv, 0, fromBase58String("")) | |
149 | 149 | } | |
150 | - | else if (( | |
150 | + | else if ((br == "executeP")) | |
151 | 151 | then { | |
152 | - | let | |
153 | - | let | |
154 | - | let | |
155 | - | $Tuple4( | |
152 | + | let bw = w(bo, bm, bn) | |
153 | + | let bx = bb(0, 0, 0, bw) | |
154 | + | let by = bb(0, 0, bo, 0) | |
155 | + | $Tuple4(bx, by, bw, bq) | |
156 | 156 | } | |
157 | - | else if (( | |
157 | + | else if ((br == "executeG")) | |
158 | 158 | then { | |
159 | - | let | |
160 | - | let | |
161 | - | let | |
162 | - | $Tuple4( | |
159 | + | let bz = s(bo, bm, bn) | |
160 | + | let bA = bb(0, bz, 0, 0) | |
161 | + | let bB = bb(bo, 0, 0, 0) | |
162 | + | $Tuple4(bA, bB, bz, bp) | |
163 | 163 | } | |
164 | - | else if (( | |
164 | + | else if ((br == "topup")) | |
165 | 165 | then { | |
166 | - | let | |
167 | - | let | |
168 | - | let | |
169 | - | let | |
170 | - | $Tuple4( | |
166 | + | let bC = bg(O(bl)) | |
167 | + | let bD = bC[aU] | |
168 | + | let bE = bC[aS] | |
169 | + | let bF = bb(bE, (-1 * s(bE, bm, bn)), bD, (-1 * w(bD, bm, bn))) | |
170 | + | $Tuple4(bF, nil, 0, fromBase58String("")) | |
171 | 171 | } | |
172 | - | else throw(("Unsupported Type " + | |
172 | + | else throw(("Unsupported Type " + br)) | |
173 | 173 | } | |
174 | 174 | ||
175 | 175 | ||
176 | - | func | |
177 | - | func | |
178 | - | then ( | |
179 | - | else if (( | |
180 | - | then ( | |
181 | - | else throw(("Unsupported action " + | |
176 | + | func bG (bH,c,bI) = { | |
177 | + | func bJ (bK,bL) = if ((bH == "INCREMENT")) | |
178 | + | then (bK + bL) | |
179 | + | else if ((bH == "DECREMENT")) | |
180 | + | then (bK - bL) | |
181 | + | else throw(("Unsupported action " + bH)) | |
182 | 182 | ||
183 | - | let | |
184 | - | StringEntry(c, | |
183 | + | let bM = bg(c) | |
184 | + | StringEntry(c, aW(bJ(bM[aS], bI[aS]), bJ(bM[aT], bI[aT]), bJ(bM[aU], bI[aU]), bJ(bM[aV], bI[aV]))) | |
185 | 185 | } | |
186 | 186 | ||
187 | 187 | ||
188 | - | func | |
188 | + | func bN (bO,bP,bQ,bR) = makeString(["%s%d%s%s", bO, bP, bQ, bR], a) | |
189 | 189 | ||
190 | 190 | ||
191 | - | let | |
191 | + | let bS = 1 | |
192 | 192 | ||
193 | - | let | |
193 | + | let bT = 2 | |
194 | 194 | ||
195 | - | let | |
195 | + | let bU = 3 | |
196 | 196 | ||
197 | - | let | |
197 | + | let bV = 4 | |
198 | 198 | ||
199 | - | let | |
199 | + | let bW = 5 | |
200 | 200 | ||
201 | - | let | |
201 | + | let bX = 6 | |
202 | 202 | ||
203 | - | let | |
203 | + | let bY = 7 | |
204 | 204 | ||
205 | - | let | |
205 | + | let bZ = 8 | |
206 | 206 | ||
207 | - | let | |
207 | + | let ca = 9 | |
208 | 208 | ||
209 | - | func | |
209 | + | func cb (cc,cd,ce,cf,cg,ch,ci,cj,ck) = makeString(["%s%d%d%d%d%d%d%d%d", cc, cd, ce, cf, cg, ch, ci, cj, ck], a) | |
210 | 210 | ||
211 | 211 | ||
212 | - | func | |
212 | + | func cl (cc,cd,ce,cf,cg,ch,ci,cj,cm) = cb(cc, toString(cd), toString(ce), toString(cf), toString(cg), toString(ch), toString(ci), toString(cj), toString(cm)) | |
213 | 213 | ||
214 | 214 | ||
215 | - | func | |
215 | + | func cn (co,cp,cq,cr) = cb(cp, co[bT], toString(cq), toString(cr), co[bW], co[bX], toString(height), toString(lastBlock.timestamp), co[ca]) | |
216 | 216 | ||
217 | 217 | ||
218 | - | func | |
219 | - | let c = | |
218 | + | func cs (ct) = { | |
219 | + | let c = A(ct) | |
220 | 220 | split(b(c), a) | |
221 | 221 | } | |
222 | 222 | ||
223 | 223 | ||
224 | - | let | |
224 | + | let cu = 1 | |
225 | 225 | ||
226 | - | let | |
226 | + | let cv = 2 | |
227 | 227 | ||
228 | - | func | |
228 | + | func cw (c,cx,cy) = StringEntry(c, makeString(["%d%d", toString(cx), toString(cy)], a)) | |
229 | 229 | ||
230 | 230 | ||
231 | - | func | |
231 | + | func cz (cA,cB) = IntegerEntry(ak(cA), cB) | |
232 | 232 | ||
233 | 233 | ||
234 | - | func | |
235 | - | let | |
236 | - | let | |
237 | - | let | |
238 | - | let | |
239 | - | let | |
240 | - | let | |
241 | - | let | |
242 | - | let | |
243 | - | if ((0 > | |
244 | - | then throw((((" | |
234 | + | func cC (cD,cE,cF,cG,cH) = { | |
235 | + | let cI = bg(O(cD)) | |
236 | + | let cJ = cI[aT] | |
237 | + | let cK = cI[aU] | |
238 | + | let cL = assetBalance(this, cE) | |
239 | + | let cM = (((cL + cF) - cK) - cJ) | |
240 | + | let cN = cI[aV] | |
241 | + | let cO = cI[aS] | |
242 | + | let cP = value(assetInfo(cG)).quantity | |
243 | + | if ((0 > cM)) | |
244 | + | then throw(((("v152 < 0: v151=" + toString(cL)) + " v152=") + toString(cM))) | |
245 | 245 | else { | |
246 | - | let | |
247 | - | let | |
248 | - | then | |
249 | - | else fraction( | |
250 | - | $Tuple9( | |
246 | + | let cQ = e(D(cD)) | |
247 | + | let cR = if ((cP == 0)) | |
248 | + | then cQ | |
249 | + | else fraction(cM, cH, cP) | |
250 | + | $Tuple9(cR, cL, -1, cM, cP, cK, cO, cJ, cN) | |
251 | 251 | } | |
252 | 252 | } | |
253 | 253 | ||
254 | 254 | ||
255 | - | func | |
255 | + | func cS (cT,cU,cV,cW) = cC(cT, cU, 0, cV, cW) | |
256 | 256 | ||
257 | 257 | ||
258 | - | func | |
259 | - | let | |
260 | - | let | |
261 | - | let | |
262 | - | let | |
263 | - | let | |
264 | - | let | |
265 | - | let | |
266 | - | let | |
267 | - | let | |
268 | - | let | |
269 | - | let | |
270 | - | let | |
271 | - | let | |
272 | - | if ( | |
258 | + | func cX (cY,cZ,da,db,dc) = { | |
259 | + | let dd = toBase58String(db) | |
260 | + | let de = toString(cZ.caller) | |
261 | + | let df = fromBase58String(dc) | |
262 | + | let dg = cs(dc) | |
263 | + | let dh = dg[ar] | |
264 | + | let di = fromBase58String(dh) | |
265 | + | let dj = parseIntValue(dg[at]) | |
266 | + | let dk = dg[as] | |
267 | + | let dl = ap(dk) | |
268 | + | let dm = split(b(dl), a) | |
269 | + | let dn = parseIntValue(dm[cu]) | |
270 | + | let do = parseIntValue(dm[cv]) | |
271 | + | let dp = valueOrElse(getBoolean(this, ab(dk)), false) | |
272 | + | if (dp) | |
273 | 273 | then throw("submit operation is blocked") | |
274 | 274 | else { | |
275 | - | let | |
276 | - | if ((( | |
275 | + | let dq = valueOrElse(getInteger(this, ak(dk)), 0) | |
276 | + | if (((dq + 60) > height)) | |
277 | 277 | then throw("submit operations are blocked by topup manager") | |
278 | 278 | else { | |
279 | - | let | |
280 | - | let | |
281 | - | let | |
282 | - | if (if ((0 > | |
279 | + | let dr = bi("submit", cY, dk, 0, 0, da, df, di) | |
280 | + | let ds = (dn - dr._2[aU]) | |
281 | + | let dt = (do - dr._2[aS]) | |
282 | + | if (if ((0 > ds)) | |
283 | 283 | then true | |
284 | - | else (0 > | |
285 | - | then l( | |
284 | + | else (0 > dt)) | |
285 | + | then l(dn, do, ds, dt) | |
286 | 286 | else { | |
287 | - | let | |
288 | - | ((([StringEntry( | |
287 | + | let du = e(af(dk)) | |
288 | + | ((([StringEntry(bN(cY, dk, de, toBase58String(cZ.transactionId)), cl("PENDING", da, 0, 0, height, lastBlock.timestamp, 0, 0, (du + 1)))] :+ bG("INCREMENT", O(dk), dr._1)) :+ bG("INCREMENT", Q(dk, de), dr._2)) :+ cw(dl, ds, dt)) | |
289 | 289 | } | |
290 | 290 | } | |
291 | 291 | } | |
292 | 292 | } | |
293 | 293 | ||
294 | 294 | ||
295 | - | func | |
296 | - | let | |
297 | - | let | |
298 | - | let | |
299 | - | let | |
300 | - | let | |
301 | - | let | |
302 | - | let | |
303 | - | let | |
304 | - | let | |
305 | - | let | |
306 | - | let | |
307 | - | let | |
308 | - | let | |
309 | - | if (( | |
310 | - | then f("Status is not PENDING", | |
311 | - | else if (( | |
312 | - | then f(((("OperLock[" + toString( | |
295 | + | func dv (dw,dx,dy,dz) = { | |
296 | + | let dA = addressFromStringValue(dy) | |
297 | + | let dB = cs(dx) | |
298 | + | let dC = fromBase58String(dB[ar]) | |
299 | + | let dD = dB[as] | |
300 | + | let dE = parseIntValue(dB[au]) | |
301 | + | let dF = fromBase58String(dx) | |
302 | + | let dG = bN(dw, dD, dy, dz) | |
303 | + | let dH = split(b(dG), a) | |
304 | + | let dI = dH[bS] | |
305 | + | let dJ = parseIntValue(dH[bT]) | |
306 | + | let dK = parseIntValue(dH[ca]) | |
307 | + | let dL = e(af(dD)) | |
308 | + | let dM = e(H(dD, dK)) | |
309 | + | if ((dI != "PENDING")) | |
310 | + | then f("Status is not PENDING", dx, dy, dz, dw) | |
311 | + | else if ((dK > dL)) | |
312 | + | then f(((("OperLock[" + toString(dK)) + "] > ") + toString(dL)), dx, dy, dz, dw) | |
313 | 313 | else { | |
314 | - | let | |
315 | - | let | |
316 | - | let | |
317 | - | then [ScriptTransfer( | |
318 | - | else [ScriptTransfer( | |
319 | - | ((( | |
314 | + | let dN = bi("execute", dw, dD, dM, dE, dJ, dF, dC) | |
315 | + | let dO = dN._3 | |
316 | + | let dP = if ((dN._4 == dF)) | |
317 | + | then [ScriptTransfer(dA, dO, dF)] | |
318 | + | else [ScriptTransfer(dA, dO, dC)] | |
319 | + | (((dP :+ StringEntry(dG, cn(dH, "FINISHED", dM, dO))) :+ bG("DECREMENT", O(dD), dN._1)) :+ bG("DECREMENT", Q(dD, dy), dN._2)) | |
320 | 320 | } | |
321 | 321 | } | |
322 | 322 | ||
323 | 323 | ||
324 | - | func | |
325 | - | let | |
326 | - | let | |
327 | - | let | |
328 | - | let | |
329 | - | let | |
330 | - | let | |
331 | - | let | |
332 | - | let | |
333 | - | let | |
334 | - | let | |
335 | - | let | |
336 | - | let | |
337 | - | $Tuple13(IntegerEntry("price", | |
324 | + | func dQ (dR) = { | |
325 | + | let dS = fromBase58String(dR) | |
326 | + | let dT = cs(dR) | |
327 | + | let dU = dT[ar] | |
328 | + | let dV = fromBase58String(dU) | |
329 | + | let dW = parseIntValue(dT[at]) | |
330 | + | let dX = parseIntValue(dT[au]) | |
331 | + | let dY = dT[as] | |
332 | + | let dZ = F(dY) | |
333 | + | let ea = valueOrElse(getInteger(this, dZ), 0) | |
334 | + | let eb = D(dY) | |
335 | + | let ec = valueOrElse(getInteger(this, eb), 0) | |
336 | + | let ed = cS(dY, dS, dV, dX) | |
337 | + | $Tuple13(IntegerEntry("price", ed._1), IntegerEntry("decimalsMultPrice", dX), IntegerEntry("baseAssetBalance", ed._2), IntegerEntry("-1", ed._3), IntegerEntry("baseAssetBalanceWCO", ed._4), IntegerEntry("shareEmission", ed._5), IntegerEntry("currIterTotalInBaseAmount", ed._6), IntegerEntry("currIterTotalInShareAmount", ed._7), IntegerEntry("totalLockedOutBaseAmount", ed._8), IntegerEntry("totalLockedOutShareAmount", ed._9), IntegerEntry("decimalsMultBothAssets", dW), IntegerEntry("priceATH", ea), IntegerEntry("priceLast", ec)) | |
338 | 338 | } | |
339 | 339 | ||
340 | 340 | ||
341 | - | @Callable( | |
342 | - | func adminRegisterAsset ( | |
343 | - | let | |
344 | - | let | |
345 | - | let | |
346 | - | let | |
347 | - | let | |
348 | - | let | |
349 | - | if (( | |
341 | + | @Callable(cZ) | |
342 | + | func adminRegisterAsset (ee,ef,eg,eh,ei,ej,aK,aL,aM,aN,aO,aP,aQ,aR) = { | |
343 | + | let ek = fromBase58String(ee) | |
344 | + | let el = value(assetInfo(ek)).decimals | |
345 | + | let em = pow(10, 0, el, 0, 0, DOWN) | |
346 | + | let en = ((100 * 1000) * 1000) | |
347 | + | let eo = fraction(aL, 100, em) | |
348 | + | let ep = assetBalance(this, ek) | |
349 | + | if ((cZ.caller != this)) | |
350 | 350 | then throw("permissions denied") | |
351 | - | else if (( | |
352 | - | then throw(((toString(this) + " must have any initial balance of ") + | |
353 | - | else if (isDefined(getString(this, | |
354 | - | then throw(( | |
355 | - | else if ((toString(addressFromStringValue( | |
351 | + | else if ((ep == 0)) | |
352 | + | then throw(((toString(this) + " must have any initial balance of ") + ee)) | |
353 | + | else if (isDefined(getString(this, A(ee)))) | |
354 | + | then throw((ee + " has been already registered")) | |
355 | + | else if ((toString(addressFromStringValue(ei)) != ei)) | |
356 | 356 | then throw("invalid shutdownManagerAddress") | |
357 | - | else if ((toString(addressFromStringValue( | |
357 | + | else if ((toString(addressFromStringValue(aM)) != aM)) | |
358 | 358 | then throw("invalid topupManagerAddress") | |
359 | - | else if ((0 > | |
360 | - | then throw(("invalid getDelayinBlocks=" + toString( | |
361 | - | else if (if ((0 >= | |
359 | + | else if ((0 > eh)) | |
360 | + | then throw(("invalid getDelayinBlocks=" + toString(eh))) | |
361 | + | else if (if ((0 >= eo)) | |
362 | 362 | then true | |
363 | - | else ( | |
363 | + | else (eo >= 99)) | |
364 | 364 | then throw("invalid topupMaxNegativePart parameter") | |
365 | 365 | else { | |
366 | - | let | |
367 | - | let | |
368 | - | let | |
369 | - | let | |
370 | - | let | |
371 | - | let | |
372 | - | [StringEntry( | |
366 | + | let eq = w(ep, ej, en) | |
367 | + | let er = Issue(ef, eg, eq, el, true) | |
368 | + | let es = calculateAssetId(er) | |
369 | + | let et = toBase58String(es) | |
370 | + | let eu = valueOrElse(getInteger(this, C()), 0) | |
371 | + | let ev = toString(eu) | |
372 | + | [StringEntry(A(ee), aE(et, ev, em, en, eh, aK, aL, aM, aN, aO, aP, aQ, aR)), StringEntry(T(eu), ee), StringEntry(V(ee), ev), StringEntry(X(et), ee), StringEntry(Z(ee), et), BooleanEntry(ab(ev), false), StringEntry(ad(ev), ei), IntegerEntry(C(), (eu + 1)), IntegerEntry(D(ev), ej), IntegerEntry(K(ev, height, lastBlock.timestamp), ej), IntegerEntry(af(ev), 0), cw(ap(ev), aN, aP), er, ScriptTransfer(addressFromStringValue(aM), eq, es)] | |
373 | 373 | } | |
374 | 374 | } | |
375 | 375 | ||
376 | 376 | ||
377 | 377 | ||
378 | - | @Callable( | |
379 | - | func adminUpdateCfg ( | |
380 | - | let | |
378 | + | @Callable(cZ) | |
379 | + | func adminUpdateCfg (ew,ex,ey) = { | |
380 | + | let ez = cs(ew) | |
381 | 381 | nil | |
382 | 382 | } | |
383 | 383 | ||
384 | 384 | ||
385 | 385 | ||
386 | - | @Callable( | |
387 | - | func shutdownSubmits ( | |
388 | - | let | |
389 | - | let | |
390 | - | let | |
391 | - | if ((1 > size( | |
392 | - | then throw("invalid | |
393 | - | else if ((toString( | |
386 | + | @Callable(cZ) | |
387 | + | func shutdownSubmits (eu) = { | |
388 | + | let eA = toString(eu) | |
389 | + | let eB = b(T(eu)) | |
390 | + | let eC = b(ad(eA)) | |
391 | + | if ((1 > size(eB))) | |
392 | + | then throw("invalid v231") | |
393 | + | else if ((toString(cZ.caller) != eC)) | |
394 | 394 | then throw("access denied") | |
395 | - | else [BooleanEntry( | |
395 | + | else [BooleanEntry(ab(toString(eu)), true)] | |
396 | 396 | } | |
397 | 397 | ||
398 | 398 | ||
399 | 399 | ||
400 | - | @Callable( | |
400 | + | @Callable(cZ) | |
401 | 401 | func submitPut () = { | |
402 | - | let | |
403 | - | let | |
404 | - | let | |
405 | - | let | |
406 | - | | |
402 | + | let eD = value(cZ.payments[0]) | |
403 | + | let eE = eD.amount | |
404 | + | let eF = value(eD.assetId) | |
405 | + | let eG = toBase58String(eF) | |
406 | + | cX("P", cZ, eE, eF, eG) | |
407 | 407 | } | |
408 | 408 | ||
409 | 409 | ||
410 | 410 | ||
411 | - | @Callable( | |
411 | + | @Callable(cZ) | |
412 | 412 | func submitGet () = { | |
413 | - | let | |
414 | - | let | |
415 | - | let | |
416 | - | let | |
417 | - | let | |
418 | - | | |
413 | + | let eD = value(cZ.payments[0]) | |
414 | + | let eH = eD.amount | |
415 | + | let eI = value(eD.assetId) | |
416 | + | let et = toBase58String(eI) | |
417 | + | let eJ = b(X(et)) | |
418 | + | cX("G", cZ, eH, eI, eJ) | |
419 | 419 | } | |
420 | 420 | ||
421 | 421 | ||
422 | 422 | ||
423 | - | @Callable( | |
424 | - | func executePut ( | |
423 | + | @Callable(cZ) | |
424 | + | func executePut (eK,eL,eM) = dv("P", eK, eL, eM) | |
425 | 425 | ||
426 | 426 | ||
427 | 427 | ||
428 | - | @Callable( | |
429 | - | func executeGet ( | |
428 | + | @Callable(cZ) | |
429 | + | func executeGet (eN,eO,eP) = dv("G", eN, eO, eP) | |
430 | 430 | ||
431 | 431 | ||
432 | 432 | ||
433 | - | @Callable( | |
434 | - | func operationsMutex ( | |
435 | - | let | |
436 | - | let | |
437 | - | let | |
438 | - | if ((toString( | |
439 | - | then q( | |
440 | - | else [ | |
433 | + | @Callable(cZ) | |
434 | + | func operationsMutex (eQ) = { | |
435 | + | let eR = cs(eQ) | |
436 | + | let eS = eR[ay] | |
437 | + | let ev = eR[as] | |
438 | + | if ((toString(cZ.caller) != eS)) | |
439 | + | then q(eS) | |
440 | + | else [cz(ev, height)] | |
441 | 441 | } | |
442 | 442 | ||
443 | 443 | ||
444 | 444 | ||
445 | - | @Callable( | |
446 | - | func topUpBalance ( | |
447 | - | let | |
448 | - | let | |
449 | - | let | |
450 | - | let | |
451 | - | let | |
452 | - | let | |
453 | - | let | |
454 | - | let | |
455 | - | let | |
456 | - | let | |
457 | - | let | |
458 | - | let | |
459 | - | let | |
460 | - | let | |
461 | - | let | |
445 | + | @Callable(cZ) | |
446 | + | func topUpBalance (eT,eU) = { | |
447 | + | let ek = fromBase58String(eT) | |
448 | + | let eV = cs(eT) | |
449 | + | let es = fromBase58String(eV[ar]) | |
450 | + | let eW = parseIntValue(eV[au]) | |
451 | + | let eX = parseIntValue(eV[at]) | |
452 | + | let eY = parseIntValue(eV[aw]) | |
453 | + | let eZ = parseIntValue(eV[ax]) | |
454 | + | let ev = eV[as] | |
455 | + | let fa = eV[ay] | |
456 | + | let fb = parseIntValue(eV[az]) | |
457 | + | let fc = parseIntValue(eV[aB]) | |
458 | + | let fd = af(ev) | |
459 | + | let fe = e(fd) | |
460 | + | let ff = (fe + 1) | |
461 | + | let fg = if ((eU > 0)) | |
462 | 462 | then { | |
463 | - | let | |
464 | - | let | |
465 | - | if (( | |
466 | - | then throw("attached payment's asset id is NOT matched passed | |
467 | - | else if ((size( | |
463 | + | let eD = value(cZ.payments[0]) | |
464 | + | let fh = value(eD.assetId) | |
465 | + | if ((ek != fh)) | |
466 | + | then throw("attached payment's asset id is NOT matched passed v255") | |
467 | + | else if ((size(cZ.payments) > 1)) | |
468 | 468 | then throw("only one payment can be attached") | |
469 | - | else if (( | |
470 | - | then throw("attached payment.amount is NOT matched passed | |
469 | + | else if ((eD.amount != eU)) | |
470 | + | then throw("attached payment.amount is NOT matched passed v256 argument") | |
471 | 471 | else true | |
472 | 472 | } | |
473 | - | else if ((0 > | |
473 | + | else if ((0 > eU)) | |
474 | 474 | then { | |
475 | - | let | |
476 | - | let | |
477 | - | if ((-( | |
478 | - | then throw(("topup negative | |
475 | + | let fi = assetBalance(this, ek) | |
476 | + | let fj = fraction(eZ, fi, eX) | |
477 | + | if ((-(eU) > fj)) | |
478 | + | then throw(("topup negative v256 couldn't be greater than " + toString(fj))) | |
479 | 479 | else true | |
480 | 480 | } | |
481 | - | else throw("zero | |
482 | - | let | |
483 | - | let | |
484 | - | if ((toString( | |
485 | - | then q( | |
486 | - | else if (!( | |
481 | + | else throw("zero v256 is not allowed") | |
482 | + | let fk = ah(ev, toString(cZ.caller)) | |
483 | + | let fl = valueOrElse(getInteger(this, fk), 0) | |
484 | + | if ((toString(cZ.caller) != fa)) | |
485 | + | then q(fa) | |
486 | + | else if (!(fg)) | |
487 | 487 | then throw("validation failed") | |
488 | - | else if (( | |
489 | - | then throw((("1 topup per " + toString( | |
488 | + | else if ((eY > (height - fl))) | |
489 | + | then throw((("1 topup per " + toString(eY)) + " blocks from the same address is allowed")) | |
490 | 490 | else { | |
491 | - | let | |
492 | - | let | |
493 | - | let | |
494 | - | let | |
495 | - | let | |
496 | - | (((((([IntegerEntry( | |
497 | - | then | |
498 | - | else | |
499 | - | then [ScriptTransfer( | |
491 | + | let fm = cC(ev, ek, eU, es, eW)._1 | |
492 | + | let fn = bi("topup", "", ev, fm, eW, 0, ek, es) | |
493 | + | let fo = fn._1 | |
494 | + | let fp = F(ev) | |
495 | + | let fq = valueOrElse(getInteger(this, fp), 0) | |
496 | + | (((((([IntegerEntry(D(ev), fm), IntegerEntry(K(ev, height, lastBlock.timestamp), fm), IntegerEntry(H(ev, ff), fm), IntegerEntry(fd, ff), IntegerEntry(fp, if ((fm > fq)) | |
497 | + | then fm | |
498 | + | else fq), IntegerEntry(fk, height)] :+ bG("DECREMENT", O(ev), fo)) :+ cz(ev, 0)) :+ cw(ap(ev), fb, fc)) :+ Burn(es, fo[aS])) :+ Reissue(es, -(fo[aV]), true)) ++ (if ((0 > eU)) | |
499 | + | then [ScriptTransfer(cZ.caller, -(eU), ek)] | |
500 | 500 | else nil)) | |
501 | 501 | } | |
502 | 502 | } | |
503 | 503 | ||
504 | 504 | ||
505 | 505 | ||
506 | - | @Callable( | |
507 | - | func currentSysParamsREST ( | |
508 | - | let | |
509 | - | let | |
510 | - | let | |
511 | - | let | |
512 | - | let | |
513 | - | let | |
514 | - | let | |
515 | - | let | |
516 | - | let | |
517 | - | let | |
518 | - | let | |
519 | - | let | |
520 | - | let | |
521 | - | let | |
522 | - | let | |
523 | - | throw( | |
506 | + | @Callable(cZ) | |
507 | + | func currentSysParamsREST (fr) = { | |
508 | + | let fs = dQ(fr) | |
509 | + | let ft = fs._1.value | |
510 | + | let en = fs._2.value | |
511 | + | let ep = fs._3.value | |
512 | + | let fu = fs._4.value | |
513 | + | let fv = fs._5.value | |
514 | + | let fw = fs._6.value | |
515 | + | let fx = fs._7.value | |
516 | + | let fy = fs._8.value | |
517 | + | let fz = fs._9.value | |
518 | + | let fA = fs._10.value | |
519 | + | let em = fs._11.value | |
520 | + | let fB = fs._12.value | |
521 | + | let fC = fs._13.value | |
522 | + | let fD = makeString(["startCurrentSysParamsREST", toString(ft), toString(en), toString(ep), toString(fu), toString(fv), toString(fw), toString(fx), toString(fy), toString(fz), toString(fA), toString(em), toString(fB), toString(fC), "endCurrentSysParamsREST"], a) | |
523 | + | throw(fD) | |
524 | 524 | } | |
525 | 525 | ||
526 | 526 |
github/deemru/w8io/169f3d6 231.18 ms ◑