tx · Ut6gcDM4sC4PHM5vpuT4F7J1WkmERDVTgrVrD9HefAS

3P6dkRGSqgsNpQFbSYn9m8n4Dd8KRaj5TUU:  -0.02000000 Waves

2022.09.12 18:11 [3291548] smart account 3P6dkRGSqgsNpQFbSYn9m8n4Dd8KRaj5TUU > SELF 0.00000000 Waves

{ "type": 13, "id": "Ut6gcDM4sC4PHM5vpuT4F7J1WkmERDVTgrVrD9HefAS", "fee": 2000000, "feeAssetId": null, "timestamp": 1662995549724, "version": 2, "chainId": 87, "sender": "3P6dkRGSqgsNpQFbSYn9m8n4Dd8KRaj5TUU", "senderPublicKey": "CsS3XguS73w7QRYkLSTsL7VwoFdeGsyEnf8nWgqMYGuc", "proofs": [ "2Y7PJp66u2Ucv2x3fkuzUakNMaMcQjsZN2CwiPnrxDLmV27QzcijbhKEu1FRvVGMy6Xv5dnNCV36rctPcA1uj5yv" ], "script": "base64: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AAAAEXJhdGVzUmVjYWxjUmVzdWx0AAAAAWkBAAAACHdpdGhkcmF3AAAAAgAAAAphc3NldElkU3RyAAAAC2Fzc2V0QW1vdW50BAAAAAskdDA0NTgwNDY0NwkBAAAADWdldEFjdHVhbFJhdGUAAAACBQAAAAphc3NldElkU3RyAgAAAAVzUmF0ZQQAAAAFc1JhdGUIBQAAAAskdDA0NTgwNDY0NwAAAAJfMQQAAAARcmF0ZXNSZWNhbGNSZXN1bHQIBQAAAAskdDA0NTgwNDY0NwAAAAJfMgQAAAAGYW1vdW50CQAAawAAAAMFAAAAC2Fzc2V0QW1vdW50BQAAAAdTY2FsZTE2BQAAAAVzUmF0ZQQAAAAHYWRkcmVzcwkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAADWFzc2V0U3VwcGxpZWQJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACAgAAAA90b3RhbF9zdXBwbGllZF8FAAAACmFzc2V0SWRTdHIEAAAADWFzc2V0Qm9ycm93ZWQJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACAgAAAA90b3RhbF9ib3Jyb3dlZF8FAAAACmFzc2V0SWRTdHIEAAAAEXVzZXJBc3NldFN1cHBsaWVkCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgkAASwAAAACBQAAAAdhZGRyZXNzAgAAAApfc3VwcGxpZWRfBQAAAAphc3NldElkU3RyBAAAABF1c2VyQXNzZXRCb3Jyb3dlZAkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAIJAAEsAAAAAgUAAAAHYWRkcmVzcwIAAAAKX2JvcnJvd2VkXwUAAAAKYXNzZXRJZFN0cgMJAQAAAAEhAAAAAQkBAAAADXRyeUdldEJvb2xlYW4AAAABAgAAAAxzZXR1cF9hY3RpdmUJAAACAAAAAQIAAAARbWFya2V0IGlzIHN0b3BwZWQDCQAAZgAAAAIFAAAABmFtb3VudAkAAGUAAAACBQAAAA1hc3NldFN1cHBsaWVkBQAAAA1hc3NldEJvcnJvd2VkCQAAAgAAAAECAAAAKnRoaXMgYW1vdW50IGlzIG5vdCBhdmFpbGFibGUgb24gdGhlIG1hcmtldAMJAABmAAAAAgUAAAAGYW1vdW50CQAAZQAAAAIFAAAAEXVzZXJBc3NldFN1cHBsaWVkBQAAABF1c2VyQXNzZXRCb3Jyb3dlZAkAAAIAAAABAgAAACp0aGlzIGFtb3VudCBpcyBub3QgYXZhaWxhYmxlIGZvciB0aGlzIHVzZXIJAAROAAAAAgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIFAAAAB2FkZHJlc3MCAAAACl9zdXBwbGllZF8FAAAACmFzc2V0SWRTdHIJAABlAAAAAgkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAIJAAEsAAAAAgUAAAAHYWRkcmVzcwIAAAAKX3N1cHBsaWVkXwUAAAAKYXNzZXRJZFN0cgUAAAAGYW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAICAAAAD3RvdGFsX3N1cHBsaWVkXwUAAAAKYXNzZXRJZFN0cgkAAGUAAAACCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgIAAAAPdG90YWxfc3VwcGxpZWRfBQAAAAphc3NldElkU3RyBQAAAAZhbW91bnQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAAZhbW91bnQJAQAAAA1nZXRBc3NldEJ5dGVzAAAAAQUAAAAKYXNzZXRJZFN0cgUAAAADbmlsBQAAABFyYXRlc1JlY2FsY1Jlc3VsdAAAAAFpAQAAAAZib3Jyb3cAAAACAAAACmFzc2V0SWRTdHIAAAALYXNzZXRBbW91bnQEAAAAB2FkZHJlc3MJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAAAskdDA1NzkyNTg1OQkBAAAADWdldEFjdHVhbFJhdGUAAAACBQAAAAphc3NldElkU3RyAgAAAAViUmF0ZQQAAAAFYlJhdGUIBQAAAAskdDA1NzkyNTg1OQAAAAJfMQQAAAARcmF0ZXNSZWNhbGNSZXN1bHQIBQAAAAskdDA1NzkyNTg1OQAAAAJfMgQAAAAGYW1vdW50CQAAawAAAAMFAAAAC2Fzc2V0QW1vdW50BQAAAAdTY2FsZTE2BQAAAAViUmF0ZQQAAAAFcHJpY2UICQEAAAANZ2V0VG9r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AAEICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAAB2Fzc2V0SWQEAAAAC2Fzc2V0QW1vdW50CAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQEAAAACyR0MDc0MzA3NDk3CQEAAAANZ2V0QWN0dWFsUmF0ZQAAAAIFAAAACmFzc2V0SWRTdHICAAAABWJSYXRlBAAAAAViUmF0ZQgFAAAACyR0MDc0MzA3NDk3AAAAAl8xBAAAABFyYXRlc1JlY2FsY1Jlc3VsdAgFAAAACyR0MDc0MzA3NDk3AAAAAl8yBAAAAAZhbW91bnQJAABrAAAAAwUAAAALYXNzZXRBbW91bnQFAAAAB1NjYWxlMTYFAAAABWJSYXRlBAAAAAdhZGRyZXNzCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAANYXNzZXRTdXBwbGllZAkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAICAAAAD3RvdGFsX3N1cHBsaWVkXwUAAAAKYXNzZXRJZFN0cgQAAAANYXNzZXRCb3Jyb3dlZAkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAICAAAAD3RvdGFsX2JvcnJvd2VkXwUAAAAKYXNzZXRJZFN0cgQAAAARdXNlckFzc2V0Qm9ycm93ZWQJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAIFAAAAB2FkZHJlc3MCAAAACl9ib3Jyb3dlZF8FAAAACmFzc2V0SWRTdHIDCQAAAAAAAAIJAASzAAAAAgkBAAAADHRyeUdldFN0cmluZwAAAAECAAAADHNldHVwX3Rva2VucwUAAAAKYXNzZXRJZFN0cgUAAAAEdW5pdAkAAAIAAAABAgAAACl0aGlzIGFzc2V0IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIG1hcmtldAMJAABmAAAAAgUAAAAGYW1vdW50BQAAABF1c2VyQXNzZXRCb3Jyb3dlZAkAAAIAAAABAgAAADJwYXllZCBhbW91bnQgaXMgYmlnZ2VyIHRoYW4gdXNlcidzIGJvcnJvd2VkIGFtb3VudAkABE4AAAACCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQAB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", "height": 3291548, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 52iRxyUFxM3ziGVAcJb7QePkjJFQ7pXG7S8xtPGmjqAL Next: FMieUvkaJK7f5ki44hZ8t9PpUojuLBokkLBsakLmqUwu Diff:
OldNewDifferences
365365 }
366366
367367
368+
369+@Callable(i)
370+func getPrices (debug) = {
371+ let assets = getMarketAssets()
372+ func f (accum,next) = if ((next >= size(assets)))
373+ then accum
374+ else {
375+ let assetPrice = getTokenPrice(assets[next])
376+ ((((accum + toString(assetPrice._1)) + ",") + toString(assetPrice._2)) + "|")
377+ }
378+
379+ let result = {
380+ let $l = [0, 1, 2, 3, 4, 5]
381+ let $s = size($l)
382+ let $acc0 = ""
383+ func $f0_1 ($a,$i) = if (($i >= $s))
384+ then $a
385+ else f($a, $l[$i])
386+
387+ func $f0_2 ($a,$i) = if (($i >= $s))
388+ then $a
389+ else throw("List size exceeds 6")
390+
391+ $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6)
392+ }
393+ if (debug)
394+ then throw(result)
395+ else $Tuple2(nil, result)
396+ }
397+
398+
368399 @Verifier(tx)
369400 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
370401
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let Scale8 = 100000000
55
66 let Scale10 = 10000000000
77
88 let Scale16 = (Scale8 * Scale8)
99
1010 let dayBlocks = 1440
1111
1212 func tryGetInteger (key) = match getInteger(this, key) {
1313 case b: Int =>
1414 b
1515 case _ =>
1616 0
1717 }
1818
1919
2020 func tryGetBoolean (key) = match getBoolean(this, key) {
2121 case b: Boolean =>
2222 b
2323 case _ =>
2424 false
2525 }
2626
2727
2828 func tryGetString (key) = match getString(this, key) {
2929 case b: String =>
3030 b
3131 case _ =>
3232 ""
3333 }
3434
3535
3636 func getAssetString (assetId) = match assetId {
3737 case b: ByteVector =>
3838 toBase58String(b)
3939 case _ =>
4040 "WAVES"
4141 }
4242
4343
4444 func getAssetBytes (assetIdStr) = if ((assetIdStr == "WAVES"))
4545 then unit
4646 else fromBase58String(assetIdStr)
4747
4848
4949 func getMarketAssets () = split(tryGetString("setup_tokens"), ",")
5050
5151
5252 func getUr (assetIdStr) = {
5353 let down = max([fraction(tryGetInteger(("total_supplied_" + assetIdStr)), tryGetInteger((assetIdStr + "_sRate")), Scale16), Scale8])
5454 fraction(Scale8, fraction(tryGetInteger(("total_borrowed_" + assetIdStr)), tryGetInteger((assetIdStr + "_bRate")), Scale16), down)
5555 }
5656
5757
5858 func getInterest (assetIdStr) = {
5959 let ur = getUr(assetIdStr)
6060 let dailyInterest = tryGetInteger("setup_interest")
6161 max([(fraction(dailyInterest, ur, dayBlocks) / Scale8), 1])
6262 }
6363
6464
6565 func tokenRatesRecalc (assetIdStr) = {
6666 let interest = getInterest(assetIdStr)
6767 let ur = getUr(assetIdStr)
6868 let lastRecalcHeight = tryGetInteger("lastRateHeight")
6969 let lastBRate = max([tryGetInteger((assetIdStr + "_bRate")), Scale16])
7070 let newBRate = (lastBRate + ((height - lastRecalcHeight) * interest))
7171 let lastSRate = max([tryGetInteger((assetIdStr + "_sRate")), Scale16])
7272 let newSRate = (lastSRate + ((height - lastRecalcHeight) * fraction(interest, ur, Scale8)))
7373 [IntegerEntry((assetIdStr + "_sRate"), newSRate), IntegerEntry((assetIdStr + "_bRate"), newBRate), IntegerEntry("lastRateHeight", height)]
7474 }
7575
7676
7777 func getActualRate (assetIdStr,rateType) = {
7878 func f (accum,token) = {
7979 let recalc = tokenRatesRecalc(token)
8080 $Tuple2(if ((token != assetIdStr))
8181 then accum._1
8282 else if ((rateType == "sRate"))
8383 then recalc[0].value
8484 else recalc[1].value, (accum._2 ++ recalc))
8585 }
8686
8787 let $l = getMarketAssets()
8888 let $s = size($l)
8989 let $acc0 = $Tuple2(0, nil)
9090 func $f0_1 ($a,$i) = if (($i >= $s))
9191 then $a
9292 else f($a, $l[$i])
9393
9494 func $f0_2 ($a,$i) = if (($i >= $s))
9595 then $a
9696 else throw("List size exceeds 6")
9797
9898 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6)
9999 }
100100
101101
102102 func ratesRecalc () = {
103103 func f (accum,token) = (accum ++ tokenRatesRecalc(token))
104104
105105 let $l = getMarketAssets()
106106 let $s = size($l)
107107 let $acc0 = nil
108108 func $f0_1 ($a,$i) = if (($i >= $s))
109109 then $a
110110 else f($a, $l[$i])
111111
112112 func $f0_2 ($a,$i) = if (($i >= $s))
113113 then $a
114114 else throw("List size exceeds 6")
115115
116116 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6)
117117 }
118118
119119
120120 func getTokenPrice (assetIdStr) = if ((assetIdStr == "HEB8Qaw9xrWpWs8tHsiATYGBWDBtP2S7kcPALrMu43AS"))
121121 then $Tuple2(15000000, 15000000)
122122 else if ((assetIdStr == "WAVES"))
123123 then $Tuple2(5000000, 5000000)
124124 else if ((assetIdStr == "Ajso6nTTjptu2UHLx6hfSXVtHFtRBJCkKYd5SAyj7zf5"))
125125 then $Tuple2(2000000, 2000000)
126126 else if ((assetIdStr == "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ"))
127127 then $Tuple2(1000000, 1000000)
128128 else if ((assetIdStr == "6XtHjpXbs9RRJP2Sr9GUyVqzACcby9TkThHXnjVC5CDJ"))
129129 then $Tuple2(1000000, 1000000)
130130 else $Tuple2(950000, 950000)
131131
132132
133133 @Callable(i)
134134 func preInit (tokens,ltvs,dailyPercent) = {
135135 func f (accum,token) = (accum ++ [IntegerEntry((token + "_bRate"), Scale16), IntegerEntry((token + "_sRate"), Scale16)])
136136
137137 let rates = {
138138 let $l = split(tokens, ",")
139139 let $s = size($l)
140140 let $acc0 = nil
141141 func $f0_1 ($a,$i) = if (($i >= $s))
142142 then $a
143143 else f($a, $l[$i])
144144
145145 func $f0_2 ($a,$i) = if (($i >= $s))
146146 then $a
147147 else throw("List size exceeds 6")
148148
149149 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6)
150150 }
151151 ([StringEntry("setup_tokens", tokens), StringEntry("setup_ltvs", ltvs), IntegerEntry("setup_interest", dailyPercent), BooleanEntry("setup_active", true)] ++ rates)
152152 }
153153
154154
155155
156156 @Callable(i)
157157 func supply () = if (!(tryGetBoolean("setup_active")))
158158 then throw("market is stopped")
159159 else if (if ((size(i.payments) != 1))
160160 then true
161161 else (i.payments[0].amount == 0))
162162 then throw("1 payment has to be attached")
163163 else {
164164 let assetIdStr = getAssetString(i.payments[0].assetId)
165165 let assetAmount = i.payments[0].amount
166166 let $t039494016 = getActualRate(assetIdStr, "sRate")
167167 let sRate = $t039494016._1
168168 let ratesRecalcResult = $t039494016._2
169169 let amount = fraction(assetAmount, Scale16, sRate)
170170 let address = toString(i.caller)
171171 if ((indexOf(tryGetString("setup_tokens"), assetIdStr) == unit))
172172 then throw("this asset is not supported by the market")
173173 else ([IntegerEntry(((address + "_supplied_") + assetIdStr), (tryGetInteger(((address + "_supplied_") + assetIdStr)) + amount)), IntegerEntry(("total_supplied_" + assetIdStr), (tryGetInteger(("total_supplied_" + assetIdStr)) + amount))] ++ ratesRecalcResult)
174174 }
175175
176176
177177
178178 @Callable(i)
179179 func withdraw (assetIdStr,assetAmount) = {
180180 let $t045804647 = getActualRate(assetIdStr, "sRate")
181181 let sRate = $t045804647._1
182182 let ratesRecalcResult = $t045804647._2
183183 let amount = fraction(assetAmount, Scale16, sRate)
184184 let address = toString(i.caller)
185185 let assetSupplied = tryGetInteger(("total_supplied_" + assetIdStr))
186186 let assetBorrowed = tryGetInteger(("total_borrowed_" + assetIdStr))
187187 let userAssetSupplied = tryGetInteger(((address + "_supplied_") + assetIdStr))
188188 let userAssetBorrowed = tryGetInteger(((address + "_borrowed_") + assetIdStr))
189189 if (!(tryGetBoolean("setup_active")))
190190 then throw("market is stopped")
191191 else if ((amount > (assetSupplied - assetBorrowed)))
192192 then throw("this amount is not available on the market")
193193 else if ((amount > (userAssetSupplied - userAssetBorrowed)))
194194 then throw("this amount is not available for this user")
195195 else ([IntegerEntry(((address + "_supplied_") + assetIdStr), (tryGetInteger(((address + "_supplied_") + assetIdStr)) - amount)), IntegerEntry(("total_supplied_" + assetIdStr), (tryGetInteger(("total_supplied_" + assetIdStr)) - amount)), ScriptTransfer(i.caller, amount, getAssetBytes(assetIdStr))] ++ ratesRecalcResult)
196196 }
197197
198198
199199
200200 @Callable(i)
201201 func borrow (assetIdStr,assetAmount) = {
202202 let address = toString(i.caller)
203203 let $t057925859 = getActualRate(assetIdStr, "bRate")
204204 let bRate = $t057925859._1
205205 let ratesRecalcResult = $t057925859._2
206206 let amount = fraction(assetAmount, Scale16, bRate)
207207 let price = getTokenPrice(assetIdStr)._2
208208 let decimals = if ((assetIdStr == "WAVES"))
209209 then 8
210210 else value(assetInfo(fromBase58String(assetIdStr))).decimals
211211 let assetScale = pow(10, 0, decimals, 0, 0, DOWN)
212212 let usdEquivalent = fraction(amount, price, assetScale)
213213 let collateralValueInv = invoke(this, "getUserCollateral", [false, address, true], nil)
214214 if ((collateralValueInv == collateralValueInv))
215215 then {
216216 let collateralValue = match collateralValueInv {
217217 case x: Int =>
218218 x
219219 case _ =>
220220 throw("can't get user collateral value")
221221 }
222222 if ((usdEquivalent > collateralValue))
223223 then throw("you have to supply more to borrow")
224224 else {
225225 let assetSupplied = tryGetInteger(("total_supplied_" + assetIdStr))
226226 let assetBorrowed = tryGetInteger(("total_borrowed_" + assetIdStr))
227227 let userAssetBorrowed = tryGetInteger(((address + "_borrowed_") + assetIdStr))
228228 if ((amount > (assetSupplied - assetBorrowed)))
229229 then throw("this amount is not available")
230230 else ([IntegerEntry(((address + "_borrowed_") + assetIdStr), (userAssetBorrowed + amount)), IntegerEntry(("total_borrowed_" + assetIdStr), (assetBorrowed + amount)), ScriptTransfer(i.caller, amount, getAssetBytes(assetIdStr))] ++ ratesRecalcResult)
231231 }
232232 }
233233 else throw("Strict value is not equal to itself.")
234234 }
235235
236236
237237
238238 @Callable(i)
239239 func repay () = if (!(tryGetBoolean("setup_active")))
240240 then throw("market is stopped")
241241 else if (if ((size(i.payments) != 1))
242242 then true
243243 else (i.payments[0].amount == 0))
244244 then throw("1 payment has to be attached")
245245 else {
246246 let assetIdStr = getAssetString(i.payments[0].assetId)
247247 let assetAmount = i.payments[0].amount
248248 let $t074307497 = getActualRate(assetIdStr, "bRate")
249249 let bRate = $t074307497._1
250250 let ratesRecalcResult = $t074307497._2
251251 let amount = fraction(assetAmount, Scale16, bRate)
252252 let address = toString(i.caller)
253253 let assetSupplied = tryGetInteger(("total_supplied_" + assetIdStr))
254254 let assetBorrowed = tryGetInteger(("total_borrowed_" + assetIdStr))
255255 let userAssetBorrowed = tryGetInteger(((address + "_borrowed_") + assetIdStr))
256256 if ((indexOf(tryGetString("setup_tokens"), assetIdStr) == unit))
257257 then throw("this asset is not supported by the market")
258258 else if ((amount > userAssetBorrowed))
259259 then throw("payed amount is bigger than user's borrowed amount")
260260 else ([IntegerEntry(((address + "_borrowed_") + assetIdStr), (userAssetBorrowed - amount)), IntegerEntry(("total_borrowed_" + assetIdStr), (assetBorrowed - amount))] ++ ratesRecalcResult)
261261 }
262262
263263
264264
265265 @Callable(i)
266266 func calculateUtilizationRatio (assetIdStr,debug) = if (debug)
267267 then throw(toString(getUr(assetIdStr)))
268268 else $Tuple2(nil, getUr(assetIdStr))
269269
270270
271271
272272 @Callable(i)
273273 func calculateTokenRates (debug) = {
274274 func f (accum,assetIdStr) = {
275275 let rates = tokenRatesRecalc(assetIdStr)
276276 ((((accum + toString(rates[1].value)) + "|") + toString(rates[0].value)) + ",")
277277 }
278278
279279 let parameter = {
280280 let $l = getMarketAssets()
281281 let $s = size($l)
282282 let $acc0 = ""
283283 func $f0_1 ($a,$i) = if (($i >= $s))
284284 then $a
285285 else f($a, $l[$i])
286286
287287 func $f0_2 ($a,$i) = if (($i >= $s))
288288 then $a
289289 else throw("List size exceeds 6")
290290
291291 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6)
292292 }
293293 if (debug)
294294 then throw(parameter)
295295 else $Tuple2(nil, parameter)
296296 }
297297
298298
299299
300300 @Callable(i)
301301 func calculateTokensInterest (debug) = {
302302 let dailyInterest = tryGetInteger("setup_interest")
303303 func f (accum,assetIdStr) = {
304304 let ur = getUr(assetIdStr)
305305 let rate = max([fraction(dailyInterest, ur, Scale8), dayBlocks])
306306 ((accum + toString(rate)) + ",")
307307 }
308308
309309 let parameter = {
310310 let $l = getMarketAssets()
311311 let $s = size($l)
312312 let $acc0 = ""
313313 func $f0_1 ($a,$i) = if (($i >= $s))
314314 then $a
315315 else f($a, $l[$i])
316316
317317 func $f0_2 ($a,$i) = if (($i >= $s))
318318 then $a
319319 else throw("List size exceeds 6")
320320
321321 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6)
322322 }
323323 if (debug)
324324 then throw(parameter)
325325 else $Tuple2(nil, parameter)
326326 }
327327
328328
329329
330330 @Callable(i)
331331 func getUserCollateral (debug,address,minusBorrowed) = {
332332 let assets = getMarketAssets()
333333 let ltvs = split(tryGetString("setup_ltvs"), ",")
334334 let rates = getActualRate(assets[0], "sRate")._2
335335 func f (accum,next) = if ((next >= size(assets)))
336336 then accum
337337 else {
338338 let decimals = if ((assets[next] == "WAVES"))
339339 then 8
340340 else value(assetInfo(fromBase58String(assets[next]))).decimals
341341 let assetScale = pow(10, 0, decimals, 0, 0, DOWN)
342342 let assetPrice = getTokenPrice(assets[next])
343343 ((accum + fraction(fraction(fraction(tryGetInteger(((address + "_supplied_") + assets[next])), rates[(next * 3)].value, Scale16), parseIntValue(ltvs[next]), Scale8), assetPrice._1, assetScale)) - (if (minusBorrowed)
344344 then fraction(fraction(tryGetInteger(((address + "_borrowed_") + assets[next])), rates[((next * 3) + 1)].value, Scale16), assetPrice._2, assetScale)
345345 else 0))
346346 }
347347
348348 let result = {
349349 let $l = [0, 1, 2, 3, 4, 5]
350350 let $s = size($l)
351351 let $acc0 = 0
352352 func $f0_1 ($a,$i) = if (($i >= $s))
353353 then $a
354354 else f($a, $l[$i])
355355
356356 func $f0_2 ($a,$i) = if (($i >= $s))
357357 then $a
358358 else throw("List size exceeds 6")
359359
360360 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6)
361361 }
362362 if (debug)
363363 then throw(toString(result))
364364 else $Tuple2(rates, result)
365365 }
366366
367367
368+
369+@Callable(i)
370+func getPrices (debug) = {
371+ let assets = getMarketAssets()
372+ func f (accum,next) = if ((next >= size(assets)))
373+ then accum
374+ else {
375+ let assetPrice = getTokenPrice(assets[next])
376+ ((((accum + toString(assetPrice._1)) + ",") + toString(assetPrice._2)) + "|")
377+ }
378+
379+ let result = {
380+ let $l = [0, 1, 2, 3, 4, 5]
381+ let $s = size($l)
382+ let $acc0 = ""
383+ func $f0_1 ($a,$i) = if (($i >= $s))
384+ then $a
385+ else f($a, $l[$i])
386+
387+ func $f0_2 ($a,$i) = if (($i >= $s))
388+ then $a
389+ else throw("List size exceeds 6")
390+
391+ $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6)
392+ }
393+ if (debug)
394+ then throw(result)
395+ else $Tuple2(nil, result)
396+ }
397+
398+
368399 @Verifier(tx)
369400 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
370401

github/deemru/w8io/6500d08 
61.26 ms