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 | |
---|---|---|---|
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let SEP = "__" | |
5 | 5 | ||
6 | - | func | |
6 | + | func f0 (key) = valueOrErrorMessage(getString(this, key), ("No data for this.key=" + key)) | |
7 | 7 | ||
8 | 8 | ||
9 | - | func | |
9 | + | func f1 (key) = valueOrErrorMessage(getBoolean(this, key), ("No data for this.key=" + key)) | |
10 | 10 | ||
11 | 11 | ||
12 | - | func | |
12 | + | func f2 (key) = valueOrErrorMessage(getInteger(this, key), ("No data for this.key=" + key)) | |
13 | 13 | ||
14 | 14 | ||
15 | - | func | |
15 | + | func f3 (msg,v4,v5,v6,v7) = throw(((((((((msg + ": baseAsset=") + v4) + " userAddress=") + v5) + " submitTxId=") + v6) + " operation=") + v7)) | |
16 | 16 | ||
17 | 17 | ||
18 | - | func | |
18 | + | func f8 (v9,v10,v11,v12) = throw((((((((("submit operation limits have been reached: " + " remainingBaseVal=") + toString(v9)) + " remainingShareVal=") + toString(v10)) + " newRemainingBaseVal=") + toString(v11)) + " newRemainingShareVal=") + toString(v12))) | |
19 | 19 | ||
20 | 20 | ||
21 | - | func | |
21 | + | func f13 (v14) = throw((("opertion denied: only topUpManager=" + v14) + " can send such transactions")) | |
22 | 22 | ||
23 | 23 | ||
24 | - | func | |
24 | + | func f15 (v16,v17,v18) = fraction(v16, v17, v18) | |
25 | 25 | ||
26 | 26 | ||
27 | - | func | |
27 | + | func f19 (v20,v21,v22) = fraction(v20, v22, v21) | |
28 | 28 | ||
29 | 29 | ||
30 | - | func | |
30 | + | func f23 (v24) = ("%s%s%s__config__asset__" + v24) | |
31 | 31 | ||
32 | 32 | ||
33 | - | func | |
33 | + | func f25 () = "%s__nextInternalAssetId" | |
34 | 34 | ||
35 | 35 | ||
36 | - | func | |
36 | + | func f26 (v27) = ("%s%s%d__price__last__" + v27) | |
37 | 37 | ||
38 | 38 | ||
39 | - | func | |
39 | + | func f28 (v29) = ("%s%s%d__price__ath__" + v29) | |
40 | 40 | ||
41 | 41 | ||
42 | - | func | |
42 | + | func f30 (v31,v32) = makeString(["%s%s%d%d__price__byTopUpIdx", v31, toString(v32)], SEP) | |
43 | 43 | ||
44 | 44 | ||
45 | - | func | |
45 | + | func f33 (v34,h,v35) = makeString(["%s%s%d%d%d__price__history", v34, toString(h), toString(v35)], SEP) | |
46 | 46 | ||
47 | 47 | ||
48 | - | func | |
48 | + | func f36 (v37) = ("%s%s%d__total__locked__" + v37) | |
49 | 49 | ||
50 | 50 | ||
51 | - | func | |
51 | + | func f38 (v39,v40) = makeString(["%s%s%d%s__total__locked", v39, v40], SEP) | |
52 | 52 | ||
53 | 53 | ||
54 | - | func | |
54 | + | func f41 (v42) = ("%s%s%d__mappings__internal2baseAssetId__" + toString(v42)) | |
55 | 55 | ||
56 | 56 | ||
57 | - | func | |
57 | + | func f43 (v44) = ("%s%s%s__mappings__baseAsset2internalId__" + v44) | |
58 | 58 | ||
59 | 59 | ||
60 | - | func | |
60 | + | func f45 (v46) = ("%s%s%s__mappings__share2baseAssetId__" + v46) | |
61 | 61 | ||
62 | 62 | ||
63 | - | func | |
63 | + | func f47 (v48) = ("%s%s%s__mappings__baseAsset2shareId__" + v48) | |
64 | 64 | ||
65 | 65 | ||
66 | - | func | |
66 | + | func f49 (v50) = ("%s%s%d__shutdown__submit__" + v50) | |
67 | 67 | ||
68 | 68 | ||
69 | - | func | |
69 | + | func f51 (v52) = ("%s%s%d__shutdown__manager__" + v52) | |
70 | 70 | ||
71 | 71 | ||
72 | - | func | |
72 | + | func f53 (v54) = ("%s%s%d__topup__currentIdx__" + v54) | |
73 | 73 | ||
74 | 74 | ||
75 | - | func | |
75 | + | func f55 (v56,v57) = makeString(["%s%s%s%d%s__topup__last__height", v56, v57], SEP) | |
76 | 76 | ||
77 | 77 | ||
78 | - | func | |
78 | + | func f58 (v59) = ("%s%s%d__topup__mutex__" + v59) | |
79 | 79 | ||
80 | 80 | ||
81 | - | func | |
81 | + | func f60 (v61,v62) = makeString(["%s%s%d%d__topup__history", v61, toString(v62)], SEP) | |
82 | 82 | ||
83 | 83 | ||
84 | - | func | |
84 | + | func f63 (v64) = ("%s%s%d__limits__remaining__" + v64) | |
85 | 85 | ||
86 | 86 | ||
87 | - | let | |
87 | + | let v65 = 1 | |
88 | 88 | ||
89 | - | let | |
89 | + | let v66 = 2 | |
90 | 90 | ||
91 | - | let | |
91 | + | let v67 = 3 | |
92 | 92 | ||
93 | - | let | |
93 | + | let v68 = 4 | |
94 | 94 | ||
95 | - | let | |
95 | + | let v69 = 5 | |
96 | 96 | ||
97 | - | let | |
97 | + | let v70 = 6 | |
98 | 98 | ||
99 | - | let | |
99 | + | let v71 = 7 | |
100 | 100 | ||
101 | - | let | |
101 | + | let v72 = 8 | |
102 | 102 | ||
103 | - | let | |
103 | + | let v73 = 9 | |
104 | 104 | ||
105 | - | let | |
105 | + | let v74 = 10 | |
106 | 106 | ||
107 | - | let | |
107 | + | let v75 = 11 | |
108 | 108 | ||
109 | - | let | |
109 | + | let v76 = 12 | |
110 | 110 | ||
111 | - | let | |
111 | + | let v77 = 13 | |
112 | 112 | ||
113 | 113 | func dataAssetCfg (shareAssetStr,internalBaseAssetStr,decimalsMultBothAssets,decimalsMultPrice,getDelayInBlocks,topupIntervalInBlocks,topupMaxNegativePart,topupManagerAddress,submitLimitsBaseMax,submitLimitsBaseReset,submitLimitsShareMax,submitLimitsShareReset,adminAddress) = makeString(["%s%d%d%d%d%d%d%s%d%d%d%d", shareAssetStr, internalBaseAssetStr, toString(decimalsMultBothAssets), toString(decimalsMultPrice), toString(getDelayInBlocks), toString(topupIntervalInBlocks), toString(topupMaxNegativePart), topupManagerAddress, toString(submitLimitsBaseMax), toString(submitLimitsBaseReset), toString(submitLimitsShareMax), toString(submitLimitsShareReset), adminAddress], SEP) | |
114 | 114 | ||
115 | 115 | ||
116 | - | let | |
116 | + | let v78 = 1 | |
117 | 117 | ||
118 | - | let | |
118 | + | let v79 = 2 | |
119 | 119 | ||
120 | - | let | |
120 | + | let v80 = 3 | |
121 | 121 | ||
122 | - | let | |
122 | + | let v81 = 4 | |
123 | 123 | ||
124 | - | func | |
124 | + | func f82 (v83,v84,v85,v86) = makeString(["%d%d%d%d", toString(v83), toString(v84), toString(v85), toString(v86)], SEP) | |
125 | 125 | ||
126 | 126 | ||
127 | - | func | |
127 | + | func f87 (v88,v89,v90,v91) = [-1, v88, v89, v90, v91] | |
128 | 128 | ||
129 | 129 | ||
130 | - | func | |
131 | - | let | |
132 | - | | |
130 | + | func f92 (key) = { | |
131 | + | let v93 = split(valueOrElse(getString(this, key), f82(0, 0, 0, 0)), SEP) | |
132 | + | f87(parseIntValue(v93[v78]), parseIntValue(v93[v79]), parseIntValue(v93[v80]), parseIntValue(v93[v81])) | |
133 | 133 | } | |
134 | 134 | ||
135 | 135 | ||
136 | - | func | |
137 | - | let t = ( | |
136 | + | func f94 (v95,v96,v97,v98,v99,v100,v101,v102) = { | |
137 | + | let t = (v95 + v96) | |
138 | 138 | if ((t == "submitP")) | |
139 | 139 | then { | |
140 | - | let | |
141 | - | let | |
142 | - | $Tuple4( | |
140 | + | let v103 = f87(0, 0, v100, 0) | |
141 | + | let v104 = v103 | |
142 | + | $Tuple4(v103, v104, 0, fromBase58String("")) | |
143 | 143 | } | |
144 | 144 | else if ((t == "submitG")) | |
145 | 145 | then { | |
146 | - | let | |
147 | - | let | |
148 | - | $Tuple4( | |
146 | + | let v105 = f87(v100, 0, 0, 0) | |
147 | + | let v106 = v105 | |
148 | + | $Tuple4(v105, v106, 0, fromBase58String("")) | |
149 | 149 | } | |
150 | 150 | else if ((t == "executeP")) | |
151 | 151 | then { | |
152 | - | let | |
153 | - | let | |
154 | - | let | |
155 | - | $Tuple4( | |
152 | + | let v107 = f19(v100, v98, v99) | |
153 | + | let v108 = f87(0, 0, 0, v107) | |
154 | + | let v109 = f87(0, 0, v100, 0) | |
155 | + | $Tuple4(v108, v109, v107, v102) | |
156 | 156 | } | |
157 | 157 | else if ((t == "executeG")) | |
158 | 158 | then { | |
159 | - | let | |
160 | - | let | |
161 | - | let | |
162 | - | $Tuple4( | |
159 | + | let v110 = f15(v100, v98, v99) | |
160 | + | let v111 = f87(0, v110, 0, 0) | |
161 | + | let v112 = f87(v100, 0, 0, 0) | |
162 | + | $Tuple4(v111, v112, v110, v101) | |
163 | 163 | } | |
164 | 164 | else if ((t == "topup")) | |
165 | 165 | then { | |
166 | - | let | |
167 | - | let | |
168 | - | let | |
169 | - | let | |
170 | - | $Tuple4( | |
166 | + | let v113 = f92(f36(v97)) | |
167 | + | let v114 = v113[v80] | |
168 | + | let v115 = v113[v78] | |
169 | + | let v116 = f87(v115, (-1 * f15(v115, v98, v99)), v114, (-1 * f19(v114, v98, v99))) | |
170 | + | $Tuple4(v116, nil, 0, fromBase58String("")) | |
171 | 171 | } | |
172 | 172 | else throw(("Unsupported Type " + t)) | |
173 | 173 | } | |
174 | 174 | ||
175 | 175 | ||
176 | 176 | func TotalLockedStringEntry (action,key,diff) = { | |
177 | - | func | |
177 | + | func f117 (a,b) = if ((action == "INCREMENT")) | |
178 | 178 | then (a + b) | |
179 | 179 | else if ((action == "DECREMENT")) | |
180 | 180 | then (a - b) | |
181 | 181 | else throw(("Unsupported action " + action)) | |
182 | 182 | ||
183 | - | let | |
184 | - | StringEntry(key, | |
183 | + | let v118 = f92(key) | |
184 | + | StringEntry(key, f82(f117(v118[v78], diff[v78]), f117(v118[v79], diff[v79]), f117(v118[v80], diff[v80]), f117(v118[v81], diff[v81]))) | |
185 | 185 | } | |
186 | 186 | ||
187 | 187 | ||
188 | - | func | |
188 | + | func f119 (v120,v121,v122,txId) = makeString(["%s%d%s%s", v120, v121, v122, txId], SEP) | |
189 | 189 | ||
190 | 190 | ||
191 | - | let | |
191 | + | let v123 = 1 | |
192 | 192 | ||
193 | - | let | |
193 | + | let v124 = 2 | |
194 | 194 | ||
195 | - | let | |
195 | + | let v125 = 3 | |
196 | 196 | ||
197 | - | let | |
197 | + | let v126 = 4 | |
198 | 198 | ||
199 | - | let | |
199 | + | let v127 = 5 | |
200 | 200 | ||
201 | - | let | |
201 | + | let v128 = 6 | |
202 | 202 | ||
203 | - | let | |
203 | + | let v129 = 7 | |
204 | 204 | ||
205 | - | let | |
205 | + | let v130 = 8 | |
206 | 206 | ||
207 | - | let | |
207 | + | let v131 = 9 | |
208 | 208 | ||
209 | 209 | func privateDataOperationAllStrings (status,inAssetAmount,price,outAssetAmount,startHeight,startTimestamp,endHeight,endTimestamp,lock) = makeString(["%s%d%d%d%d%d%d%d%d", status, inAssetAmount, price, outAssetAmount, startHeight, startTimestamp, endHeight, endTimestamp, lock], SEP) | |
210 | 210 | ||
212 | 212 | func dataOperation (status,inAssetAmount,price,outAssetAmount,startHeight,startTimestamp,endHeight,endTimestamp,topupUnlockIdx) = privateDataOperationAllStrings(status, toString(inAssetAmount), toString(price), toString(outAssetAmount), toString(startHeight), toString(startTimestamp), toString(endHeight), toString(endTimestamp), toString(topupUnlockIdx)) | |
213 | 213 | ||
214 | 214 | ||
215 | - | func dataOperationExecutionUpdate (currOperArray,newStatus,newPrice,newOutAmount) = privateDataOperationAllStrings(newStatus, currOperArray[ | |
215 | + | func dataOperationExecutionUpdate (currOperArray,newStatus,newPrice,newOutAmount) = privateDataOperationAllStrings(newStatus, currOperArray[v124], toString(newPrice), toString(newOutAmount), currOperArray[v127], currOperArray[v128], toString(height), toString(lastBlock.timestamp), currOperArray[v131]) | |
216 | 216 | ||
217 | 217 | ||
218 | - | func | |
219 | - | let key = | |
220 | - | split( | |
218 | + | func f132 (v133) = { | |
219 | + | let key = f23(v133) | |
220 | + | split(f0(key), SEP) | |
221 | 221 | } | |
222 | 222 | ||
223 | 223 | ||
224 | - | let | |
224 | + | let v134 = 1 | |
225 | 225 | ||
226 | - | let | |
226 | + | let v135 = 2 | |
227 | 227 | ||
228 | - | func | |
228 | + | func f136 (key,v137,v138) = StringEntry(key, makeString(["%d%d", toString(v137), toString(v138)], SEP)) | |
229 | 229 | ||
230 | 230 | ||
231 | - | func | |
231 | + | func f139 (v140,v141) = IntegerEntry(f58(v140), v141) | |
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 f142 (v143,v144,v145,v146,v147) = { | |
235 | + | let v148 = f92(f36(v143)) | |
236 | + | let v149 = v148[v79] | |
237 | + | let v150 = v148[v80] | |
238 | + | let v151 = assetBalance(this, v144) | |
239 | + | let v152 = (((v151 + v145) - v150) - v149) | |
240 | + | let v153 = v148[v81] | |
241 | + | let v154 = v148[v78] | |
242 | + | let v155 = value(assetInfo(v146)).quantity | |
243 | + | if ((0 > v152)) | |
244 | + | then throw(((("v152 < 0: v151=" + toString(v151)) + " v152=") + toString(v152))) | |
245 | 245 | else { | |
246 | - | let | |
247 | - | let | |
248 | - | then | |
249 | - | else fraction( | |
250 | - | $Tuple9( | |
246 | + | let v156 = f2(f26(v143)) | |
247 | + | let v157 = if ((v155 == 0)) | |
248 | + | then v156 | |
249 | + | else fraction(v152, v147, v155) | |
250 | + | $Tuple9(v157, v151, -1, v152, v155, v150, v154, v149, v153) | |
251 | 251 | } | |
252 | 252 | } | |
253 | 253 | ||
254 | 254 | ||
255 | - | func | |
255 | + | func f158 (v159,v160,v161,v162) = f142(v159, v160, 0, v161, v162) | |
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 f163 (v164,i,v165,v166,v167) = { | |
259 | + | let v168 = toBase58String(v166) | |
260 | + | let v169 = toString(i.caller) | |
261 | + | let v170 = fromBase58String(v167) | |
262 | + | let v171 = f132(v167) | |
263 | + | let v172 = v171[v65] | |
264 | + | let v173 = fromBase58String(v172) | |
265 | + | let v174 = parseIntValue(v171[v67]) | |
266 | + | let v175 = v171[v66] | |
267 | + | let v176 = f63(v175) | |
268 | + | let v177 = split(f0(v176), SEP) | |
269 | + | let v178 = parseIntValue(v177[v134]) | |
270 | + | let v179 = parseIntValue(v177[v135]) | |
271 | + | let v180 = valueOrElse(getBoolean(this, f49(v175)), false) | |
272 | + | if (v180) | |
273 | 273 | then throw("submit operation is blocked") | |
274 | 274 | else { | |
275 | - | let | |
276 | - | if ((( | |
275 | + | let v181 = valueOrElse(getInteger(this, f58(v175)), 0) | |
276 | + | if (((v181 + 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 v182 = f94("submit", v164, v175, 0, 0, v165, v170, v173) | |
280 | + | let v183 = (v178 - v182._2[v80]) | |
281 | + | let v184 = (v179 - v182._2[v78]) | |
282 | + | if (if ((0 > v183)) | |
283 | 283 | then true | |
284 | - | else (0 > | |
285 | - | then | |
284 | + | else (0 > v184)) | |
285 | + | then f8(v178, v179, v183, v184) | |
286 | 286 | else { | |
287 | - | let | |
288 | - | ((([StringEntry( | |
287 | + | let v185 = f2(f53(v175)) | |
288 | + | ((([StringEntry(f119(v164, v175, v169, toBase58String(i.transactionId)), dataOperation("PENDING", v165, 0, 0, height, lastBlock.timestamp, 0, 0, (v185 + 1)))] :+ TotalLockedStringEntry("INCREMENT", f36(v175), v182._1)) :+ TotalLockedStringEntry("INCREMENT", f38(v175, v169), v182._2)) :+ f136(v176, v183, v184)) | |
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 | |
311 | - | else if (( | |
312 | - | then | |
295 | + | func f186 (v187,v188,v189,v190) = { | |
296 | + | let v191 = addressFromStringValue(v189) | |
297 | + | let v192 = f132(v188) | |
298 | + | let v193 = fromBase58String(v192[v65]) | |
299 | + | let v194 = v192[v66] | |
300 | + | let v195 = parseIntValue(v192[v68]) | |
301 | + | let v196 = fromBase58String(v188) | |
302 | + | let v197 = f119(v187, v194, v189, v190) | |
303 | + | let v198 = split(f0(v197), SEP) | |
304 | + | let v199 = v198[v123] | |
305 | + | let v200 = parseIntValue(v198[v124]) | |
306 | + | let v201 = parseIntValue(v198[v131]) | |
307 | + | let v202 = f2(f53(v194)) | |
308 | + | let v203 = f2(f30(v194, v201)) | |
309 | + | if ((v199 != "PENDING")) | |
310 | + | then f3("Status is not PENDING", v188, v189, v190, v187) | |
311 | + | else if ((v201 > v202)) | |
312 | + | then f3(((("OperLock[" + toString(v201)) + "] > ") + toString(v202)), v188, v189, v190, v187) | |
313 | 313 | else { | |
314 | - | let | |
315 | - | let | |
316 | - | let | |
317 | - | then [ScriptTransfer( | |
318 | - | else [ScriptTransfer( | |
319 | - | ((( | |
314 | + | let v204 = f94("execute", v187, v194, v203, v195, v200, v196, v193) | |
315 | + | let v205 = v204._3 | |
316 | + | let v206 = if ((v204._4 == v196)) | |
317 | + | then [ScriptTransfer(v191, v205, v196)] | |
318 | + | else [ScriptTransfer(v191, v205, v193)] | |
319 | + | (((v206 :+ StringEntry(v197, dataOperationExecutionUpdate(v198, "FINISHED", v203, v205))) :+ TotalLockedStringEntry("DECREMENT", f36(v194), v204._1)) :+ TotalLockedStringEntry("DECREMENT", f38(v194, v189), v204._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 f207 (v208) = { | |
325 | + | let v209 = fromBase58String(v208) | |
326 | + | let v210 = f132(v208) | |
327 | + | let v211 = v210[v65] | |
328 | + | let v212 = fromBase58String(v211) | |
329 | + | let v213 = parseIntValue(v210[v67]) | |
330 | + | let v214 = parseIntValue(v210[v68]) | |
331 | + | let v215 = v210[v66] | |
332 | + | let v216 = f28(v215) | |
333 | + | let v217 = valueOrElse(getInteger(this, v216), 0) | |
334 | + | let v218 = f26(v215) | |
335 | + | let v219 = valueOrElse(getInteger(this, v218), 0) | |
336 | + | let v220 = f158(v215, v209, v212, v214) | |
337 | + | $Tuple13(IntegerEntry("price", v220._1), IntegerEntry("decimalsMultPrice", v214), IntegerEntry("baseAssetBalance", v220._2), IntegerEntry("-1", v220._3), IntegerEntry("baseAssetBalanceWCO", v220._4), IntegerEntry("shareEmission", v220._5), IntegerEntry("currIterTotalInBaseAmount", v220._6), IntegerEntry("currIterTotalInShareAmount", v220._7), IntegerEntry("totalLockedOutBaseAmount", v220._8), IntegerEntry("totalLockedOutShareAmount", v220._9), IntegerEntry("decimalsMultBothAssets", v213), IntegerEntry("priceATH", v217), IntegerEntry("priceLast", v219)) | |
338 | 338 | } | |
339 | 339 | ||
340 | 340 | ||
341 | 341 | @Callable(i) | |
342 | 342 | func adminRegisterAsset (baseAssetStr,shareAssetName,shareAssetDescr,getDelayinBlocks,shutdownManagerAddress,startPrice,topupIntervalInBlocks,topupMaxNegativePart,topupManagerAddress,submitLimitsBaseMax,submitLimitsBaseReset,submitLimitsShareMax,submitLimitsShareReset,adminAddress) = { | |
343 | - | let | |
344 | - | let | |
345 | - | let | |
346 | - | let | |
347 | - | let | |
348 | - | let | |
343 | + | let v221 = fromBase58String(baseAssetStr) | |
344 | + | let v222 = value(assetInfo(v221)).decimals | |
345 | + | let v223 = pow(10, 0, v222, 0, 0, DOWN) | |
346 | + | let v224 = ((100 * 1000) * 1000) | |
347 | + | let v225 = fraction(topupMaxNegativePart, 100, v223) | |
348 | + | let v226 = assetBalance(this, v221) | |
349 | 349 | if ((i.caller != this)) | |
350 | 350 | then throw("permissions denied") | |
351 | - | else if (( | |
351 | + | else if ((v226 == 0)) | |
352 | 352 | then throw(((toString(this) + " must have any initial balance of ") + baseAssetStr)) | |
353 | - | else if (isDefined(getString(this, | |
353 | + | else if (isDefined(getString(this, f23(baseAssetStr)))) | |
354 | 354 | then throw((baseAssetStr + " has been already registered")) | |
355 | 355 | else if ((toString(addressFromStringValue(shutdownManagerAddress)) != shutdownManagerAddress)) | |
356 | 356 | then throw("invalid shutdownManagerAddress") | |
358 | 358 | then throw("invalid topupManagerAddress") | |
359 | 359 | else if ((0 > getDelayinBlocks)) | |
360 | 360 | then throw(("invalid getDelayinBlocks=" + toString(getDelayinBlocks))) | |
361 | - | else if (if ((0 >= | |
361 | + | else if (if ((0 >= v225)) | |
362 | 362 | then true | |
363 | - | else ( | |
363 | + | else (v225 >= 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 v227 = f19(v226, startPrice, v224) | |
367 | + | let v228 = Issue(shareAssetName, shareAssetDescr, v227, v222, true) | |
368 | + | let v229 = calculateAssetId(v228) | |
369 | + | let v230 = toBase58String(v229) | |
370 | + | let v231 = valueOrElse(getInteger(this, f25()), 0) | |
371 | + | let v232 = toString(v231) | |
372 | + | [StringEntry(f23(baseAssetStr), dataAssetCfg(v230, v232, v223, v224, getDelayinBlocks, topupIntervalInBlocks, topupMaxNegativePart, topupManagerAddress, submitLimitsBaseMax, submitLimitsBaseReset, submitLimitsShareMax, submitLimitsShareReset, adminAddress)), StringEntry(f41(v231), baseAssetStr), StringEntry(f43(baseAssetStr), v232), StringEntry(f45(v230), baseAssetStr), StringEntry(f47(baseAssetStr), v230), BooleanEntry(f49(v232), false), StringEntry(f51(v232), shutdownManagerAddress), IntegerEntry(f25(), (v231 + 1)), IntegerEntry(f26(v232), startPrice), IntegerEntry(f33(v232, height, lastBlock.timestamp), startPrice), IntegerEntry(f53(v232), 0), f136(f63(v232), submitLimitsBaseMax, submitLimitsShareMax), v228, ScriptTransfer(addressFromStringValue(topupManagerAddress), v227, v229)] | |
373 | 373 | } | |
374 | 374 | } | |
375 | 375 | ||
376 | 376 | ||
377 | 377 | ||
378 | 378 | @Callable(i) | |
379 | - | func adminUpdateCfg ( | |
380 | - | let | |
379 | + | func adminUpdateCfg (v233,v234,v235) = { | |
380 | + | let v236 = f132(v233) | |
381 | 381 | nil | |
382 | 382 | } | |
383 | 383 | ||
384 | 384 | ||
385 | 385 | ||
386 | 386 | @Callable(i) | |
387 | - | func shutdownSubmits ( | |
388 | - | let | |
389 | - | let | |
390 | - | let | |
391 | - | if ((1 > size( | |
392 | - | then throw("invalid | |
393 | - | else if ((toString(i.caller) != | |
387 | + | func shutdownSubmits (v231) = { | |
388 | + | let v237 = toString(v231) | |
389 | + | let v238 = f0(f41(v231)) | |
390 | + | let v239 = f0(f51(v237)) | |
391 | + | if ((1 > size(v238))) | |
392 | + | then throw("invalid v231") | |
393 | + | else if ((toString(i.caller) != v239)) | |
394 | 394 | then throw("access denied") | |
395 | - | else [BooleanEntry( | |
395 | + | else [BooleanEntry(f49(toString(v231)), true)] | |
396 | 396 | } | |
397 | 397 | ||
398 | 398 | ||
400 | 400 | @Callable(i) | |
401 | 401 | func submitPut () = { | |
402 | 402 | let pmt = value(i.payments[0]) | |
403 | - | let | |
404 | - | let | |
405 | - | let | |
406 | - | | |
403 | + | let v240 = pmt.amount | |
404 | + | let v241 = value(pmt.assetId) | |
405 | + | let v242 = toBase58String(v241) | |
406 | + | f163("P", i, v240, v241, v242) | |
407 | 407 | } | |
408 | 408 | ||
409 | 409 | ||
411 | 411 | @Callable(i) | |
412 | 412 | func submitGet () = { | |
413 | 413 | let pmt = value(i.payments[0]) | |
414 | - | let | |
415 | - | let | |
416 | - | let | |
417 | - | let | |
418 | - | | |
414 | + | let v243 = pmt.amount | |
415 | + | let v244 = value(pmt.assetId) | |
416 | + | let v230 = toBase58String(v244) | |
417 | + | let v245 = f0(f45(v230)) | |
418 | + | f163("G", i, v243, v244, v245) | |
419 | 419 | } | |
420 | 420 | ||
421 | 421 | ||
422 | 422 | ||
423 | 423 | @Callable(i) | |
424 | - | func executePut ( | |
424 | + | func executePut (v246,v247,v248) = f186("P", v246, v247, v248) | |
425 | 425 | ||
426 | 426 | ||
427 | 427 | ||
428 | 428 | @Callable(i) | |
429 | - | func executeGet ( | |
429 | + | func executeGet (v249,v250,v251) = f186("G", v249, v250, v251) | |
430 | 430 | ||
431 | 431 | ||
432 | 432 | ||
433 | 433 | @Callable(i) | |
434 | - | func operationsMutex ( | |
435 | - | let | |
436 | - | let | |
437 | - | let | |
438 | - | if ((toString(i.caller) != | |
439 | - | then | |
440 | - | else [ | |
434 | + | func operationsMutex (v252) = { | |
435 | + | let v253 = f132(v252) | |
436 | + | let v254 = v253[v72] | |
437 | + | let v232 = v253[v66] | |
438 | + | if ((toString(i.caller) != v254)) | |
439 | + | then f13(v254) | |
440 | + | else [f139(v232, height)] | |
441 | 441 | } | |
442 | 442 | ||
443 | 443 | ||
444 | 444 | ||
445 | 445 | @Callable(i) | |
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 | |
446 | + | func topUpBalance (v255,v256) = { | |
447 | + | let v221 = fromBase58String(v255) | |
448 | + | let v257 = f132(v255) | |
449 | + | let v229 = fromBase58String(v257[v65]) | |
450 | + | let v258 = parseIntValue(v257[v68]) | |
451 | + | let v259 = parseIntValue(v257[v67]) | |
452 | + | let v260 = parseIntValue(v257[v70]) | |
453 | + | let v261 = parseIntValue(v257[v71]) | |
454 | + | let v232 = v257[v66] | |
455 | + | let v262 = v257[v72] | |
456 | + | let v263 = parseIntValue(v257[v73]) | |
457 | + | let v264 = parseIntValue(v257[v75]) | |
458 | + | let v265 = f53(v232) | |
459 | + | let v266 = f2(v265) | |
460 | + | let v267 = (v266 + 1) | |
461 | + | let v268 = if ((v256 > 0)) | |
462 | 462 | then { | |
463 | 463 | let pmt = value(i.payments[0]) | |
464 | - | let | |
465 | - | if (( | |
466 | - | then throw("attached payment's asset id is NOT matched passed | |
464 | + | let v269 = value(pmt.assetId) | |
465 | + | if ((v221 != v269)) | |
466 | + | then throw("attached payment's asset id is NOT matched passed v255") | |
467 | 467 | else if ((size(i.payments) > 1)) | |
468 | 468 | then throw("only one payment can be attached") | |
469 | - | else if ((pmt.amount != | |
470 | - | then throw("attached payment.amount is NOT matched passed | |
469 | + | else if ((pmt.amount != v256)) | |
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 > v256)) | |
474 | 474 | then { | |
475 | - | let | |
476 | - | let | |
477 | - | if ((-( | |
478 | - | then throw(("topup negative | |
475 | + | let v270 = assetBalance(this, v221) | |
476 | + | let v271 = fraction(v261, v270, v259) | |
477 | + | if ((-(v256) > v271)) | |
478 | + | then throw(("topup negative v256 couldn't be greater than " + toString(v271))) | |
479 | 479 | else true | |
480 | 480 | } | |
481 | - | else throw("zero | |
482 | - | let | |
483 | - | let | |
484 | - | if ((toString(i.caller) != | |
485 | - | then | |
486 | - | else if (!( | |
481 | + | else throw("zero v256 is not allowed") | |
482 | + | let v272 = f55(v232, toString(i.caller)) | |
483 | + | let v273 = valueOrElse(getInteger(this, v272), 0) | |
484 | + | if ((toString(i.caller) != v262)) | |
485 | + | then f13(v262) | |
486 | + | else if (!(v268)) | |
487 | 487 | then throw("validation failed") | |
488 | - | else if (( | |
489 | - | then throw((("1 topup per " + toString( | |
488 | + | else if ((v260 > (height - v273))) | |
489 | + | then throw((("1 topup per " + toString(v260)) + " 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(i.caller, -( | |
491 | + | let v274 = f142(v232, v221, v256, v229, v258)._1 | |
492 | + | let v275 = f94("topup", "", v232, v274, v258, 0, v221, v229) | |
493 | + | let v276 = v275._1 | |
494 | + | let v277 = f28(v232) | |
495 | + | let v278 = valueOrElse(getInteger(this, v277), 0) | |
496 | + | (((((([IntegerEntry(f26(v232), v274), IntegerEntry(f33(v232, height, lastBlock.timestamp), v274), IntegerEntry(f30(v232, v267), v274), IntegerEntry(v265, v267), IntegerEntry(v277, if ((v274 > v278)) | |
497 | + | then v274 | |
498 | + | else v278), IntegerEntry(v272, height)] :+ TotalLockedStringEntry("DECREMENT", f36(v232), v276)) :+ f139(v232, 0)) :+ f136(f63(v232), v263, v264)) :+ Burn(v229, v276[v78])) :+ Reissue(v229, -(v276[v81]), true)) ++ (if ((0 > v256)) | |
499 | + | then [ScriptTransfer(i.caller, -(v256), v221)] | |
500 | 500 | else nil)) | |
501 | 501 | } | |
502 | 502 | } | |
504 | 504 | ||
505 | 505 | ||
506 | 506 | @Callable(i) | |
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( | |
507 | + | func currentSysParamsREST (v279) = { | |
508 | + | let v280 = f207(v279) | |
509 | + | let v281 = v280._1.value | |
510 | + | let v224 = v280._2.value | |
511 | + | let v226 = v280._3.value | |
512 | + | let v282 = v280._4.value | |
513 | + | let v283 = v280._5.value | |
514 | + | let v284 = v280._6.value | |
515 | + | let v285 = v280._7.value | |
516 | + | let v286 = v280._8.value | |
517 | + | let v287 = v280._9.value | |
518 | + | let v288 = v280._10.value | |
519 | + | let v223 = v280._11.value | |
520 | + | let v289 = v280._12.value | |
521 | + | let v290 = v280._13.value | |
522 | + | let v291 = makeString(["startCurrentSysParamsREST", toString(v281), toString(v224), toString(v226), toString(v282), toString(v283), toString(v284), toString(v285), toString(v286), toString(v287), toString(v288), toString(v223), toString(v289), toString(v290), "endCurrentSysParamsREST"], SEP) | |
523 | + | throw(v291) | |
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 SEP = "__" | |
5 | 5 | ||
6 | - | func | |
6 | + | func f0 (key) = valueOrErrorMessage(getString(this, key), ("No data for this.key=" + key)) | |
7 | 7 | ||
8 | 8 | ||
9 | - | func | |
9 | + | func f1 (key) = valueOrErrorMessage(getBoolean(this, key), ("No data for this.key=" + key)) | |
10 | 10 | ||
11 | 11 | ||
12 | - | func | |
12 | + | func f2 (key) = valueOrErrorMessage(getInteger(this, key), ("No data for this.key=" + key)) | |
13 | 13 | ||
14 | 14 | ||
15 | - | func | |
15 | + | func f3 (msg,v4,v5,v6,v7) = throw(((((((((msg + ": baseAsset=") + v4) + " userAddress=") + v5) + " submitTxId=") + v6) + " operation=") + v7)) | |
16 | 16 | ||
17 | 17 | ||
18 | - | func | |
18 | + | func f8 (v9,v10,v11,v12) = throw((((((((("submit operation limits have been reached: " + " remainingBaseVal=") + toString(v9)) + " remainingShareVal=") + toString(v10)) + " newRemainingBaseVal=") + toString(v11)) + " newRemainingShareVal=") + toString(v12))) | |
19 | 19 | ||
20 | 20 | ||
21 | - | func | |
21 | + | func f13 (v14) = throw((("opertion denied: only topUpManager=" + v14) + " can send such transactions")) | |
22 | 22 | ||
23 | 23 | ||
24 | - | func | |
24 | + | func f15 (v16,v17,v18) = fraction(v16, v17, v18) | |
25 | 25 | ||
26 | 26 | ||
27 | - | func | |
27 | + | func f19 (v20,v21,v22) = fraction(v20, v22, v21) | |
28 | 28 | ||
29 | 29 | ||
30 | - | func | |
30 | + | func f23 (v24) = ("%s%s%s__config__asset__" + v24) | |
31 | 31 | ||
32 | 32 | ||
33 | - | func | |
33 | + | func f25 () = "%s__nextInternalAssetId" | |
34 | 34 | ||
35 | 35 | ||
36 | - | func | |
36 | + | func f26 (v27) = ("%s%s%d__price__last__" + v27) | |
37 | 37 | ||
38 | 38 | ||
39 | - | func | |
39 | + | func f28 (v29) = ("%s%s%d__price__ath__" + v29) | |
40 | 40 | ||
41 | 41 | ||
42 | - | func | |
42 | + | func f30 (v31,v32) = makeString(["%s%s%d%d__price__byTopUpIdx", v31, toString(v32)], SEP) | |
43 | 43 | ||
44 | 44 | ||
45 | - | func | |
45 | + | func f33 (v34,h,v35) = makeString(["%s%s%d%d%d__price__history", v34, toString(h), toString(v35)], SEP) | |
46 | 46 | ||
47 | 47 | ||
48 | - | func | |
48 | + | func f36 (v37) = ("%s%s%d__total__locked__" + v37) | |
49 | 49 | ||
50 | 50 | ||
51 | - | func | |
51 | + | func f38 (v39,v40) = makeString(["%s%s%d%s__total__locked", v39, v40], SEP) | |
52 | 52 | ||
53 | 53 | ||
54 | - | func | |
54 | + | func f41 (v42) = ("%s%s%d__mappings__internal2baseAssetId__" + toString(v42)) | |
55 | 55 | ||
56 | 56 | ||
57 | - | func | |
57 | + | func f43 (v44) = ("%s%s%s__mappings__baseAsset2internalId__" + v44) | |
58 | 58 | ||
59 | 59 | ||
60 | - | func | |
60 | + | func f45 (v46) = ("%s%s%s__mappings__share2baseAssetId__" + v46) | |
61 | 61 | ||
62 | 62 | ||
63 | - | func | |
63 | + | func f47 (v48) = ("%s%s%s__mappings__baseAsset2shareId__" + v48) | |
64 | 64 | ||
65 | 65 | ||
66 | - | func | |
66 | + | func f49 (v50) = ("%s%s%d__shutdown__submit__" + v50) | |
67 | 67 | ||
68 | 68 | ||
69 | - | func | |
69 | + | func f51 (v52) = ("%s%s%d__shutdown__manager__" + v52) | |
70 | 70 | ||
71 | 71 | ||
72 | - | func | |
72 | + | func f53 (v54) = ("%s%s%d__topup__currentIdx__" + v54) | |
73 | 73 | ||
74 | 74 | ||
75 | - | func | |
75 | + | func f55 (v56,v57) = makeString(["%s%s%s%d%s__topup__last__height", v56, v57], SEP) | |
76 | 76 | ||
77 | 77 | ||
78 | - | func | |
78 | + | func f58 (v59) = ("%s%s%d__topup__mutex__" + v59) | |
79 | 79 | ||
80 | 80 | ||
81 | - | func | |
81 | + | func f60 (v61,v62) = makeString(["%s%s%d%d__topup__history", v61, toString(v62)], SEP) | |
82 | 82 | ||
83 | 83 | ||
84 | - | func | |
84 | + | func f63 (v64) = ("%s%s%d__limits__remaining__" + v64) | |
85 | 85 | ||
86 | 86 | ||
87 | - | let | |
87 | + | let v65 = 1 | |
88 | 88 | ||
89 | - | let | |
89 | + | let v66 = 2 | |
90 | 90 | ||
91 | - | let | |
91 | + | let v67 = 3 | |
92 | 92 | ||
93 | - | let | |
93 | + | let v68 = 4 | |
94 | 94 | ||
95 | - | let | |
95 | + | let v69 = 5 | |
96 | 96 | ||
97 | - | let | |
97 | + | let v70 = 6 | |
98 | 98 | ||
99 | - | let | |
99 | + | let v71 = 7 | |
100 | 100 | ||
101 | - | let | |
101 | + | let v72 = 8 | |
102 | 102 | ||
103 | - | let | |
103 | + | let v73 = 9 | |
104 | 104 | ||
105 | - | let | |
105 | + | let v74 = 10 | |
106 | 106 | ||
107 | - | let | |
107 | + | let v75 = 11 | |
108 | 108 | ||
109 | - | let | |
109 | + | let v76 = 12 | |
110 | 110 | ||
111 | - | let | |
111 | + | let v77 = 13 | |
112 | 112 | ||
113 | 113 | func dataAssetCfg (shareAssetStr,internalBaseAssetStr,decimalsMultBothAssets,decimalsMultPrice,getDelayInBlocks,topupIntervalInBlocks,topupMaxNegativePart,topupManagerAddress,submitLimitsBaseMax,submitLimitsBaseReset,submitLimitsShareMax,submitLimitsShareReset,adminAddress) = makeString(["%s%d%d%d%d%d%d%s%d%d%d%d", shareAssetStr, internalBaseAssetStr, toString(decimalsMultBothAssets), toString(decimalsMultPrice), toString(getDelayInBlocks), toString(topupIntervalInBlocks), toString(topupMaxNegativePart), topupManagerAddress, toString(submitLimitsBaseMax), toString(submitLimitsBaseReset), toString(submitLimitsShareMax), toString(submitLimitsShareReset), adminAddress], SEP) | |
114 | 114 | ||
115 | 115 | ||
116 | - | let | |
116 | + | let v78 = 1 | |
117 | 117 | ||
118 | - | let | |
118 | + | let v79 = 2 | |
119 | 119 | ||
120 | - | let | |
120 | + | let v80 = 3 | |
121 | 121 | ||
122 | - | let | |
122 | + | let v81 = 4 | |
123 | 123 | ||
124 | - | func | |
124 | + | func f82 (v83,v84,v85,v86) = makeString(["%d%d%d%d", toString(v83), toString(v84), toString(v85), toString(v86)], SEP) | |
125 | 125 | ||
126 | 126 | ||
127 | - | func | |
127 | + | func f87 (v88,v89,v90,v91) = [-1, v88, v89, v90, v91] | |
128 | 128 | ||
129 | 129 | ||
130 | - | func | |
131 | - | let | |
132 | - | | |
130 | + | func f92 (key) = { | |
131 | + | let v93 = split(valueOrElse(getString(this, key), f82(0, 0, 0, 0)), SEP) | |
132 | + | f87(parseIntValue(v93[v78]), parseIntValue(v93[v79]), parseIntValue(v93[v80]), parseIntValue(v93[v81])) | |
133 | 133 | } | |
134 | 134 | ||
135 | 135 | ||
136 | - | func | |
137 | - | let t = ( | |
136 | + | func f94 (v95,v96,v97,v98,v99,v100,v101,v102) = { | |
137 | + | let t = (v95 + v96) | |
138 | 138 | if ((t == "submitP")) | |
139 | 139 | then { | |
140 | - | let | |
141 | - | let | |
142 | - | $Tuple4( | |
140 | + | let v103 = f87(0, 0, v100, 0) | |
141 | + | let v104 = v103 | |
142 | + | $Tuple4(v103, v104, 0, fromBase58String("")) | |
143 | 143 | } | |
144 | 144 | else if ((t == "submitG")) | |
145 | 145 | then { | |
146 | - | let | |
147 | - | let | |
148 | - | $Tuple4( | |
146 | + | let v105 = f87(v100, 0, 0, 0) | |
147 | + | let v106 = v105 | |
148 | + | $Tuple4(v105, v106, 0, fromBase58String("")) | |
149 | 149 | } | |
150 | 150 | else if ((t == "executeP")) | |
151 | 151 | then { | |
152 | - | let | |
153 | - | let | |
154 | - | let | |
155 | - | $Tuple4( | |
152 | + | let v107 = f19(v100, v98, v99) | |
153 | + | let v108 = f87(0, 0, 0, v107) | |
154 | + | let v109 = f87(0, 0, v100, 0) | |
155 | + | $Tuple4(v108, v109, v107, v102) | |
156 | 156 | } | |
157 | 157 | else if ((t == "executeG")) | |
158 | 158 | then { | |
159 | - | let | |
160 | - | let | |
161 | - | let | |
162 | - | $Tuple4( | |
159 | + | let v110 = f15(v100, v98, v99) | |
160 | + | let v111 = f87(0, v110, 0, 0) | |
161 | + | let v112 = f87(v100, 0, 0, 0) | |
162 | + | $Tuple4(v111, v112, v110, v101) | |
163 | 163 | } | |
164 | 164 | else if ((t == "topup")) | |
165 | 165 | then { | |
166 | - | let | |
167 | - | let | |
168 | - | let | |
169 | - | let | |
170 | - | $Tuple4( | |
166 | + | let v113 = f92(f36(v97)) | |
167 | + | let v114 = v113[v80] | |
168 | + | let v115 = v113[v78] | |
169 | + | let v116 = f87(v115, (-1 * f15(v115, v98, v99)), v114, (-1 * f19(v114, v98, v99))) | |
170 | + | $Tuple4(v116, nil, 0, fromBase58String("")) | |
171 | 171 | } | |
172 | 172 | else throw(("Unsupported Type " + t)) | |
173 | 173 | } | |
174 | 174 | ||
175 | 175 | ||
176 | 176 | func TotalLockedStringEntry (action,key,diff) = { | |
177 | - | func | |
177 | + | func f117 (a,b) = if ((action == "INCREMENT")) | |
178 | 178 | then (a + b) | |
179 | 179 | else if ((action == "DECREMENT")) | |
180 | 180 | then (a - b) | |
181 | 181 | else throw(("Unsupported action " + action)) | |
182 | 182 | ||
183 | - | let | |
184 | - | StringEntry(key, | |
183 | + | let v118 = f92(key) | |
184 | + | StringEntry(key, f82(f117(v118[v78], diff[v78]), f117(v118[v79], diff[v79]), f117(v118[v80], diff[v80]), f117(v118[v81], diff[v81]))) | |
185 | 185 | } | |
186 | 186 | ||
187 | 187 | ||
188 | - | func | |
188 | + | func f119 (v120,v121,v122,txId) = makeString(["%s%d%s%s", v120, v121, v122, txId], SEP) | |
189 | 189 | ||
190 | 190 | ||
191 | - | let | |
191 | + | let v123 = 1 | |
192 | 192 | ||
193 | - | let | |
193 | + | let v124 = 2 | |
194 | 194 | ||
195 | - | let | |
195 | + | let v125 = 3 | |
196 | 196 | ||
197 | - | let | |
197 | + | let v126 = 4 | |
198 | 198 | ||
199 | - | let | |
199 | + | let v127 = 5 | |
200 | 200 | ||
201 | - | let | |
201 | + | let v128 = 6 | |
202 | 202 | ||
203 | - | let | |
203 | + | let v129 = 7 | |
204 | 204 | ||
205 | - | let | |
205 | + | let v130 = 8 | |
206 | 206 | ||
207 | - | let | |
207 | + | let v131 = 9 | |
208 | 208 | ||
209 | 209 | func privateDataOperationAllStrings (status,inAssetAmount,price,outAssetAmount,startHeight,startTimestamp,endHeight,endTimestamp,lock) = makeString(["%s%d%d%d%d%d%d%d%d", status, inAssetAmount, price, outAssetAmount, startHeight, startTimestamp, endHeight, endTimestamp, lock], SEP) | |
210 | 210 | ||
211 | 211 | ||
212 | 212 | func dataOperation (status,inAssetAmount,price,outAssetAmount,startHeight,startTimestamp,endHeight,endTimestamp,topupUnlockIdx) = privateDataOperationAllStrings(status, toString(inAssetAmount), toString(price), toString(outAssetAmount), toString(startHeight), toString(startTimestamp), toString(endHeight), toString(endTimestamp), toString(topupUnlockIdx)) | |
213 | 213 | ||
214 | 214 | ||
215 | - | func dataOperationExecutionUpdate (currOperArray,newStatus,newPrice,newOutAmount) = privateDataOperationAllStrings(newStatus, currOperArray[ | |
215 | + | func dataOperationExecutionUpdate (currOperArray,newStatus,newPrice,newOutAmount) = privateDataOperationAllStrings(newStatus, currOperArray[v124], toString(newPrice), toString(newOutAmount), currOperArray[v127], currOperArray[v128], toString(height), toString(lastBlock.timestamp), currOperArray[v131]) | |
216 | 216 | ||
217 | 217 | ||
218 | - | func | |
219 | - | let key = | |
220 | - | split( | |
218 | + | func f132 (v133) = { | |
219 | + | let key = f23(v133) | |
220 | + | split(f0(key), SEP) | |
221 | 221 | } | |
222 | 222 | ||
223 | 223 | ||
224 | - | let | |
224 | + | let v134 = 1 | |
225 | 225 | ||
226 | - | let | |
226 | + | let v135 = 2 | |
227 | 227 | ||
228 | - | func | |
228 | + | func f136 (key,v137,v138) = StringEntry(key, makeString(["%d%d", toString(v137), toString(v138)], SEP)) | |
229 | 229 | ||
230 | 230 | ||
231 | - | func | |
231 | + | func f139 (v140,v141) = IntegerEntry(f58(v140), v141) | |
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 f142 (v143,v144,v145,v146,v147) = { | |
235 | + | let v148 = f92(f36(v143)) | |
236 | + | let v149 = v148[v79] | |
237 | + | let v150 = v148[v80] | |
238 | + | let v151 = assetBalance(this, v144) | |
239 | + | let v152 = (((v151 + v145) - v150) - v149) | |
240 | + | let v153 = v148[v81] | |
241 | + | let v154 = v148[v78] | |
242 | + | let v155 = value(assetInfo(v146)).quantity | |
243 | + | if ((0 > v152)) | |
244 | + | then throw(((("v152 < 0: v151=" + toString(v151)) + " v152=") + toString(v152))) | |
245 | 245 | else { | |
246 | - | let | |
247 | - | let | |
248 | - | then | |
249 | - | else fraction( | |
250 | - | $Tuple9( | |
246 | + | let v156 = f2(f26(v143)) | |
247 | + | let v157 = if ((v155 == 0)) | |
248 | + | then v156 | |
249 | + | else fraction(v152, v147, v155) | |
250 | + | $Tuple9(v157, v151, -1, v152, v155, v150, v154, v149, v153) | |
251 | 251 | } | |
252 | 252 | } | |
253 | 253 | ||
254 | 254 | ||
255 | - | func | |
255 | + | func f158 (v159,v160,v161,v162) = f142(v159, v160, 0, v161, v162) | |
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 f163 (v164,i,v165,v166,v167) = { | |
259 | + | let v168 = toBase58String(v166) | |
260 | + | let v169 = toString(i.caller) | |
261 | + | let v170 = fromBase58String(v167) | |
262 | + | let v171 = f132(v167) | |
263 | + | let v172 = v171[v65] | |
264 | + | let v173 = fromBase58String(v172) | |
265 | + | let v174 = parseIntValue(v171[v67]) | |
266 | + | let v175 = v171[v66] | |
267 | + | let v176 = f63(v175) | |
268 | + | let v177 = split(f0(v176), SEP) | |
269 | + | let v178 = parseIntValue(v177[v134]) | |
270 | + | let v179 = parseIntValue(v177[v135]) | |
271 | + | let v180 = valueOrElse(getBoolean(this, f49(v175)), false) | |
272 | + | if (v180) | |
273 | 273 | then throw("submit operation is blocked") | |
274 | 274 | else { | |
275 | - | let | |
276 | - | if ((( | |
275 | + | let v181 = valueOrElse(getInteger(this, f58(v175)), 0) | |
276 | + | if (((v181 + 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 v182 = f94("submit", v164, v175, 0, 0, v165, v170, v173) | |
280 | + | let v183 = (v178 - v182._2[v80]) | |
281 | + | let v184 = (v179 - v182._2[v78]) | |
282 | + | if (if ((0 > v183)) | |
283 | 283 | then true | |
284 | - | else (0 > | |
285 | - | then | |
284 | + | else (0 > v184)) | |
285 | + | then f8(v178, v179, v183, v184) | |
286 | 286 | else { | |
287 | - | let | |
288 | - | ((([StringEntry( | |
287 | + | let v185 = f2(f53(v175)) | |
288 | + | ((([StringEntry(f119(v164, v175, v169, toBase58String(i.transactionId)), dataOperation("PENDING", v165, 0, 0, height, lastBlock.timestamp, 0, 0, (v185 + 1)))] :+ TotalLockedStringEntry("INCREMENT", f36(v175), v182._1)) :+ TotalLockedStringEntry("INCREMENT", f38(v175, v169), v182._2)) :+ f136(v176, v183, v184)) | |
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 | |
311 | - | else if (( | |
312 | - | then | |
295 | + | func f186 (v187,v188,v189,v190) = { | |
296 | + | let v191 = addressFromStringValue(v189) | |
297 | + | let v192 = f132(v188) | |
298 | + | let v193 = fromBase58String(v192[v65]) | |
299 | + | let v194 = v192[v66] | |
300 | + | let v195 = parseIntValue(v192[v68]) | |
301 | + | let v196 = fromBase58String(v188) | |
302 | + | let v197 = f119(v187, v194, v189, v190) | |
303 | + | let v198 = split(f0(v197), SEP) | |
304 | + | let v199 = v198[v123] | |
305 | + | let v200 = parseIntValue(v198[v124]) | |
306 | + | let v201 = parseIntValue(v198[v131]) | |
307 | + | let v202 = f2(f53(v194)) | |
308 | + | let v203 = f2(f30(v194, v201)) | |
309 | + | if ((v199 != "PENDING")) | |
310 | + | then f3("Status is not PENDING", v188, v189, v190, v187) | |
311 | + | else if ((v201 > v202)) | |
312 | + | then f3(((("OperLock[" + toString(v201)) + "] > ") + toString(v202)), v188, v189, v190, v187) | |
313 | 313 | else { | |
314 | - | let | |
315 | - | let | |
316 | - | let | |
317 | - | then [ScriptTransfer( | |
318 | - | else [ScriptTransfer( | |
319 | - | ((( | |
314 | + | let v204 = f94("execute", v187, v194, v203, v195, v200, v196, v193) | |
315 | + | let v205 = v204._3 | |
316 | + | let v206 = if ((v204._4 == v196)) | |
317 | + | then [ScriptTransfer(v191, v205, v196)] | |
318 | + | else [ScriptTransfer(v191, v205, v193)] | |
319 | + | (((v206 :+ StringEntry(v197, dataOperationExecutionUpdate(v198, "FINISHED", v203, v205))) :+ TotalLockedStringEntry("DECREMENT", f36(v194), v204._1)) :+ TotalLockedStringEntry("DECREMENT", f38(v194, v189), v204._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 f207 (v208) = { | |
325 | + | let v209 = fromBase58String(v208) | |
326 | + | let v210 = f132(v208) | |
327 | + | let v211 = v210[v65] | |
328 | + | let v212 = fromBase58String(v211) | |
329 | + | let v213 = parseIntValue(v210[v67]) | |
330 | + | let v214 = parseIntValue(v210[v68]) | |
331 | + | let v215 = v210[v66] | |
332 | + | let v216 = f28(v215) | |
333 | + | let v217 = valueOrElse(getInteger(this, v216), 0) | |
334 | + | let v218 = f26(v215) | |
335 | + | let v219 = valueOrElse(getInteger(this, v218), 0) | |
336 | + | let v220 = f158(v215, v209, v212, v214) | |
337 | + | $Tuple13(IntegerEntry("price", v220._1), IntegerEntry("decimalsMultPrice", v214), IntegerEntry("baseAssetBalance", v220._2), IntegerEntry("-1", v220._3), IntegerEntry("baseAssetBalanceWCO", v220._4), IntegerEntry("shareEmission", v220._5), IntegerEntry("currIterTotalInBaseAmount", v220._6), IntegerEntry("currIterTotalInShareAmount", v220._7), IntegerEntry("totalLockedOutBaseAmount", v220._8), IntegerEntry("totalLockedOutShareAmount", v220._9), IntegerEntry("decimalsMultBothAssets", v213), IntegerEntry("priceATH", v217), IntegerEntry("priceLast", v219)) | |
338 | 338 | } | |
339 | 339 | ||
340 | 340 | ||
341 | 341 | @Callable(i) | |
342 | 342 | func adminRegisterAsset (baseAssetStr,shareAssetName,shareAssetDescr,getDelayinBlocks,shutdownManagerAddress,startPrice,topupIntervalInBlocks,topupMaxNegativePart,topupManagerAddress,submitLimitsBaseMax,submitLimitsBaseReset,submitLimitsShareMax,submitLimitsShareReset,adminAddress) = { | |
343 | - | let | |
344 | - | let | |
345 | - | let | |
346 | - | let | |
347 | - | let | |
348 | - | let | |
343 | + | let v221 = fromBase58String(baseAssetStr) | |
344 | + | let v222 = value(assetInfo(v221)).decimals | |
345 | + | let v223 = pow(10, 0, v222, 0, 0, DOWN) | |
346 | + | let v224 = ((100 * 1000) * 1000) | |
347 | + | let v225 = fraction(topupMaxNegativePart, 100, v223) | |
348 | + | let v226 = assetBalance(this, v221) | |
349 | 349 | if ((i.caller != this)) | |
350 | 350 | then throw("permissions denied") | |
351 | - | else if (( | |
351 | + | else if ((v226 == 0)) | |
352 | 352 | then throw(((toString(this) + " must have any initial balance of ") + baseAssetStr)) | |
353 | - | else if (isDefined(getString(this, | |
353 | + | else if (isDefined(getString(this, f23(baseAssetStr)))) | |
354 | 354 | then throw((baseAssetStr + " has been already registered")) | |
355 | 355 | else if ((toString(addressFromStringValue(shutdownManagerAddress)) != shutdownManagerAddress)) | |
356 | 356 | then throw("invalid shutdownManagerAddress") | |
357 | 357 | else if ((toString(addressFromStringValue(topupManagerAddress)) != topupManagerAddress)) | |
358 | 358 | then throw("invalid topupManagerAddress") | |
359 | 359 | else if ((0 > getDelayinBlocks)) | |
360 | 360 | then throw(("invalid getDelayinBlocks=" + toString(getDelayinBlocks))) | |
361 | - | else if (if ((0 >= | |
361 | + | else if (if ((0 >= v225)) | |
362 | 362 | then true | |
363 | - | else ( | |
363 | + | else (v225 >= 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 v227 = f19(v226, startPrice, v224) | |
367 | + | let v228 = Issue(shareAssetName, shareAssetDescr, v227, v222, true) | |
368 | + | let v229 = calculateAssetId(v228) | |
369 | + | let v230 = toBase58String(v229) | |
370 | + | let v231 = valueOrElse(getInteger(this, f25()), 0) | |
371 | + | let v232 = toString(v231) | |
372 | + | [StringEntry(f23(baseAssetStr), dataAssetCfg(v230, v232, v223, v224, getDelayinBlocks, topupIntervalInBlocks, topupMaxNegativePart, topupManagerAddress, submitLimitsBaseMax, submitLimitsBaseReset, submitLimitsShareMax, submitLimitsShareReset, adminAddress)), StringEntry(f41(v231), baseAssetStr), StringEntry(f43(baseAssetStr), v232), StringEntry(f45(v230), baseAssetStr), StringEntry(f47(baseAssetStr), v230), BooleanEntry(f49(v232), false), StringEntry(f51(v232), shutdownManagerAddress), IntegerEntry(f25(), (v231 + 1)), IntegerEntry(f26(v232), startPrice), IntegerEntry(f33(v232, height, lastBlock.timestamp), startPrice), IntegerEntry(f53(v232), 0), f136(f63(v232), submitLimitsBaseMax, submitLimitsShareMax), v228, ScriptTransfer(addressFromStringValue(topupManagerAddress), v227, v229)] | |
373 | 373 | } | |
374 | 374 | } | |
375 | 375 | ||
376 | 376 | ||
377 | 377 | ||
378 | 378 | @Callable(i) | |
379 | - | func adminUpdateCfg ( | |
380 | - | let | |
379 | + | func adminUpdateCfg (v233,v234,v235) = { | |
380 | + | let v236 = f132(v233) | |
381 | 381 | nil | |
382 | 382 | } | |
383 | 383 | ||
384 | 384 | ||
385 | 385 | ||
386 | 386 | @Callable(i) | |
387 | - | func shutdownSubmits ( | |
388 | - | let | |
389 | - | let | |
390 | - | let | |
391 | - | if ((1 > size( | |
392 | - | then throw("invalid | |
393 | - | else if ((toString(i.caller) != | |
387 | + | func shutdownSubmits (v231) = { | |
388 | + | let v237 = toString(v231) | |
389 | + | let v238 = f0(f41(v231)) | |
390 | + | let v239 = f0(f51(v237)) | |
391 | + | if ((1 > size(v238))) | |
392 | + | then throw("invalid v231") | |
393 | + | else if ((toString(i.caller) != v239)) | |
394 | 394 | then throw("access denied") | |
395 | - | else [BooleanEntry( | |
395 | + | else [BooleanEntry(f49(toString(v231)), true)] | |
396 | 396 | } | |
397 | 397 | ||
398 | 398 | ||
399 | 399 | ||
400 | 400 | @Callable(i) | |
401 | 401 | func submitPut () = { | |
402 | 402 | let pmt = value(i.payments[0]) | |
403 | - | let | |
404 | - | let | |
405 | - | let | |
406 | - | | |
403 | + | let v240 = pmt.amount | |
404 | + | let v241 = value(pmt.assetId) | |
405 | + | let v242 = toBase58String(v241) | |
406 | + | f163("P", i, v240, v241, v242) | |
407 | 407 | } | |
408 | 408 | ||
409 | 409 | ||
410 | 410 | ||
411 | 411 | @Callable(i) | |
412 | 412 | func submitGet () = { | |
413 | 413 | let pmt = value(i.payments[0]) | |
414 | - | let | |
415 | - | let | |
416 | - | let | |
417 | - | let | |
418 | - | | |
414 | + | let v243 = pmt.amount | |
415 | + | let v244 = value(pmt.assetId) | |
416 | + | let v230 = toBase58String(v244) | |
417 | + | let v245 = f0(f45(v230)) | |
418 | + | f163("G", i, v243, v244, v245) | |
419 | 419 | } | |
420 | 420 | ||
421 | 421 | ||
422 | 422 | ||
423 | 423 | @Callable(i) | |
424 | - | func executePut ( | |
424 | + | func executePut (v246,v247,v248) = f186("P", v246, v247, v248) | |
425 | 425 | ||
426 | 426 | ||
427 | 427 | ||
428 | 428 | @Callable(i) | |
429 | - | func executeGet ( | |
429 | + | func executeGet (v249,v250,v251) = f186("G", v249, v250, v251) | |
430 | 430 | ||
431 | 431 | ||
432 | 432 | ||
433 | 433 | @Callable(i) | |
434 | - | func operationsMutex ( | |
435 | - | let | |
436 | - | let | |
437 | - | let | |
438 | - | if ((toString(i.caller) != | |
439 | - | then | |
440 | - | else [ | |
434 | + | func operationsMutex (v252) = { | |
435 | + | let v253 = f132(v252) | |
436 | + | let v254 = v253[v72] | |
437 | + | let v232 = v253[v66] | |
438 | + | if ((toString(i.caller) != v254)) | |
439 | + | then f13(v254) | |
440 | + | else [f139(v232, height)] | |
441 | 441 | } | |
442 | 442 | ||
443 | 443 | ||
444 | 444 | ||
445 | 445 | @Callable(i) | |
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 | |
446 | + | func topUpBalance (v255,v256) = { | |
447 | + | let v221 = fromBase58String(v255) | |
448 | + | let v257 = f132(v255) | |
449 | + | let v229 = fromBase58String(v257[v65]) | |
450 | + | let v258 = parseIntValue(v257[v68]) | |
451 | + | let v259 = parseIntValue(v257[v67]) | |
452 | + | let v260 = parseIntValue(v257[v70]) | |
453 | + | let v261 = parseIntValue(v257[v71]) | |
454 | + | let v232 = v257[v66] | |
455 | + | let v262 = v257[v72] | |
456 | + | let v263 = parseIntValue(v257[v73]) | |
457 | + | let v264 = parseIntValue(v257[v75]) | |
458 | + | let v265 = f53(v232) | |
459 | + | let v266 = f2(v265) | |
460 | + | let v267 = (v266 + 1) | |
461 | + | let v268 = if ((v256 > 0)) | |
462 | 462 | then { | |
463 | 463 | let pmt = value(i.payments[0]) | |
464 | - | let | |
465 | - | if (( | |
466 | - | then throw("attached payment's asset id is NOT matched passed | |
464 | + | let v269 = value(pmt.assetId) | |
465 | + | if ((v221 != v269)) | |
466 | + | then throw("attached payment's asset id is NOT matched passed v255") | |
467 | 467 | else if ((size(i.payments) > 1)) | |
468 | 468 | then throw("only one payment can be attached") | |
469 | - | else if ((pmt.amount != | |
470 | - | then throw("attached payment.amount is NOT matched passed | |
469 | + | else if ((pmt.amount != v256)) | |
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 > v256)) | |
474 | 474 | then { | |
475 | - | let | |
476 | - | let | |
477 | - | if ((-( | |
478 | - | then throw(("topup negative | |
475 | + | let v270 = assetBalance(this, v221) | |
476 | + | let v271 = fraction(v261, v270, v259) | |
477 | + | if ((-(v256) > v271)) | |
478 | + | then throw(("topup negative v256 couldn't be greater than " + toString(v271))) | |
479 | 479 | else true | |
480 | 480 | } | |
481 | - | else throw("zero | |
482 | - | let | |
483 | - | let | |
484 | - | if ((toString(i.caller) != | |
485 | - | then | |
486 | - | else if (!( | |
481 | + | else throw("zero v256 is not allowed") | |
482 | + | let v272 = f55(v232, toString(i.caller)) | |
483 | + | let v273 = valueOrElse(getInteger(this, v272), 0) | |
484 | + | if ((toString(i.caller) != v262)) | |
485 | + | then f13(v262) | |
486 | + | else if (!(v268)) | |
487 | 487 | then throw("validation failed") | |
488 | - | else if (( | |
489 | - | then throw((("1 topup per " + toString( | |
488 | + | else if ((v260 > (height - v273))) | |
489 | + | then throw((("1 topup per " + toString(v260)) + " 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(i.caller, -( | |
491 | + | let v274 = f142(v232, v221, v256, v229, v258)._1 | |
492 | + | let v275 = f94("topup", "", v232, v274, v258, 0, v221, v229) | |
493 | + | let v276 = v275._1 | |
494 | + | let v277 = f28(v232) | |
495 | + | let v278 = valueOrElse(getInteger(this, v277), 0) | |
496 | + | (((((([IntegerEntry(f26(v232), v274), IntegerEntry(f33(v232, height, lastBlock.timestamp), v274), IntegerEntry(f30(v232, v267), v274), IntegerEntry(v265, v267), IntegerEntry(v277, if ((v274 > v278)) | |
497 | + | then v274 | |
498 | + | else v278), IntegerEntry(v272, height)] :+ TotalLockedStringEntry("DECREMENT", f36(v232), v276)) :+ f139(v232, 0)) :+ f136(f63(v232), v263, v264)) :+ Burn(v229, v276[v78])) :+ Reissue(v229, -(v276[v81]), true)) ++ (if ((0 > v256)) | |
499 | + | then [ScriptTransfer(i.caller, -(v256), v221)] | |
500 | 500 | else nil)) | |
501 | 501 | } | |
502 | 502 | } | |
503 | 503 | ||
504 | 504 | ||
505 | 505 | ||
506 | 506 | @Callable(i) | |
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( | |
507 | + | func currentSysParamsREST (v279) = { | |
508 | + | let v280 = f207(v279) | |
509 | + | let v281 = v280._1.value | |
510 | + | let v224 = v280._2.value | |
511 | + | let v226 = v280._3.value | |
512 | + | let v282 = v280._4.value | |
513 | + | let v283 = v280._5.value | |
514 | + | let v284 = v280._6.value | |
515 | + | let v285 = v280._7.value | |
516 | + | let v286 = v280._8.value | |
517 | + | let v287 = v280._9.value | |
518 | + | let v288 = v280._10.value | |
519 | + | let v223 = v280._11.value | |
520 | + | let v289 = v280._12.value | |
521 | + | let v290 = v280._13.value | |
522 | + | let v291 = makeString(["startCurrentSysParamsREST", toString(v281), toString(v224), toString(v226), toString(v282), toString(v283), toString(v284), toString(v285), toString(v286), toString(v287), toString(v288), toString(v223), toString(v289), toString(v290), "endCurrentSysParamsREST"], SEP) | |
523 | + | throw(v291) | |
524 | 524 | } | |
525 | 525 | ||
526 | 526 |
github/deemru/w8io/169f3d6 209.37 ms ◑