2022.09.12 18:12 [3291549] smart account 3PEhGDwvjrjVKRPv5kHkjfDLmBJK1dd2frT > SELF 0.00000000 Waves

{ "type": 13, "id": "GZfg9wTpmvyBrhxqGYBVpSZE5QXPu5i7pgzQk1AsVNh", "fee": 2000000, "feeAssetId": null, "timestamp": 1662995554563, "version": 2, "chainId": 87, "sender": "3PEhGDwvjrjVKRPv5kHkjfDLmBJK1dd2frT", "senderPublicKey": "BjDUSXyo3yUJSxVFdH2pYANz31E6xzH7rdyYLBMRvHE2", "proofs": [ "4sxo2o6xtrftWaz6qvHGCZdY5BmPmgKHXENKGPGNjhErpRdvRHgJDcqWH7H4ZZj78ESj6z89wGMKY81fBQqViSKG" ], "script": "base64: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AAAAEXJhdGVzUmVjYWxjUmVzdWx0AAAAAWkBAAAACHdpdGhkcmF3AAAAAgAAAAphc3NldElkU3RyAAAAC2Fzc2V0QW1vdW50BAAAAAskdDA0NTgwNDY0NwkBAAAADWdldEFjdHVhbFJhdGUAAAACBQAAAAphc3NldElkU3RyAgAAAAVzUmF0ZQQAAAAFc1JhdGUIBQAAAAskdDA0NTgwNDY0NwAAAAJfMQQAAAARcmF0ZXNSZWNhbGNSZXN1bHQIBQAAAAskdDA0NTgwNDY0NwAAAAJfMgQAAAAGYW1vdW50CQAAawAAAAMFAAAAC2Fzc2V0QW1vdW50BQAAAAdTY2FsZTE2BQAAAAVzUmF0ZQQAAAAHYWRkcmVzcwkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAADWFzc2V0U3VwcGxpZWQJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACAgAAAA90b3RhbF9zdXBwbGllZF8FAAAACmFzc2V0SWRTdHIEAAAADWFzc2V0Qm9ycm93ZWQJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACAgAAAA90b3RhbF9ib3Jyb3dlZF8FAAAACmFzc2V0SWRTdHIEAAAAEXVzZXJBc3NldFN1cHBsaWVkCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgkAASwAAAACBQAAAAdhZGRyZXNzAgAAAApfc3VwcGxpZWRfBQAAAAphc3NldElkU3RyBAAAABF1c2VyQXNzZXRCb3Jyb3dlZAkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAIJAAEsAAAAAgUAAAAHYWRkcmVzcwIAAAAKX2JvcnJvd2VkXwUAAAAKYXNzZXRJZFN0cgMJAQAAAAEhAAAAAQkBAAAADXRyeUdldEJvb2xlYW4AAAABAgAAAAxzZXR1cF9hY3RpdmUJAAACAAAAAQIAAAARbWFya2V0IGlzIHN0b3BwZWQDCQAAZgAAAAIFAAAABmFtb3VudAkAAGUAAAACBQAAAA1hc3NldFN1cHBsaWVkBQAAAA1hc3NldEJvcnJvd2VkCQAAAgAAAAECAAAAKnRoaXMgYW1vdW50IGlzIG5vdCBhdmFpbGFibGUgb24gdGhlIG1hcmtldAMJAABmAAAAAgUAAAAGYW1vdW50CQAAZQAAAAIFAAAAEXVzZXJBc3NldFN1cHBsaWVkBQAAABF1c2VyQXNzZXRCb3Jyb3dlZAkAAAIAAAABAgAAACp0aGlzIGFtb3VudCBpcyBub3QgYXZhaWxhYmxlIGZvciB0aGlzIHVzZXIJAAROAAAAAgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIFAAAAB2FkZHJlc3MCAAAACl9zdXBwbGllZF8FAAAACmFzc2V0SWRTdHIJAABlAAAAAgkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAIJAAEsAAAAAgUAAAAHYWRkcmVzcwIAAAAKX3N1cHBsaWVkXwUAAAAKYXNzZXRJZFN0cgUAAAAGYW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAICAAAAD3RvdGFsX3N1cHBsaWVkXwUAAAAKYXNzZXRJZFN0cgkAAGUAAAACCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgIAAAAPdG90YWxfc3VwcGxpZWRfBQAAAAphc3NldElkU3RyBQAAAAZhbW91bnQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAAZhbW91bnQJAQAAAA1nZXRBc3NldEJ5dGVzAAAAAQUAAAAKYXNzZXRJZFN0cgUAAAADbmlsBQAAABFyYXRlc1JlY2FsY1Jlc3VsdAAAAAFpAQAAAAZib3Jyb3cAAAACAAAACmFzc2V0SWRTdHIAAAALYXNzZXRBbW91bnQEAAAAB2FkZHJlc3MJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAAAskdDA1NzkyNTg1OQkBAAAADWdldEFjdHVhbFJhdGUAAAACBQAAAAphc3NldElkU3RyAgAAAAViUmF0ZQQAAAAFYlJhdGUIBQAAAAskdDA1NzkyNTg1OQAAAAJfMQQAAAARcmF0ZXNSZWNhbGNSZXN1bHQIBQAAAAskdDA1NzkyNTg1OQAAAAJfMgQAAAAGYW1vdW50CQAAawAAAAMFAAAAC2Fzc2V0QW1vdW50BQAAAAdTY2FsZTE2BQAAAAViUmF0ZQQAAAAFcHJpY2UICQEAAAANZ2V0VG9r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AAEICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAAB2Fzc2V0SWQEAAAAC2Fzc2V0QW1vdW50CAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQEAAAACyR0MDc0MzA3NDk3CQEAAAANZ2V0QWN0dWFsUmF0ZQAAAAIFAAAACmFzc2V0SWRTdHICAAAABWJSYXRlBAAAAAViUmF0ZQgFAAAACyR0MDc0MzA3NDk3AAAAAl8xBAAAABFyYXRlc1JlY2FsY1Jlc3VsdAgFAAAACyR0MDc0MzA3NDk3AAAAAl8yBAAAAAZhbW91bnQJAABrAAAAAwUAAAALYXNzZXRBbW91bnQFAAAAB1NjYWxlMTYFAAAABWJSYXRlBAAAAAdhZGRyZXNzCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAANYXNzZXRTdXBwbGllZAkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAICAAAAD3RvdGFsX3N1cHBsaWVkXwUAAAAKYXNzZXRJZFN0cgQAAAANYXNzZXRCb3Jyb3dlZAkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAICAAAAD3RvdGFsX2JvcnJvd2VkXwUAAAAKYXNzZXRJZFN0cgQAAAARdXNlckFzc2V0Qm9ycm93ZWQJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAIFAAAAB2FkZHJlc3MCAAAACl9ib3Jyb3dlZF8FAAAACmFzc2V0SWRTdHIDCQAAAAAAAAIJAASzAAAAAgkBAAAADHRyeUdldFN0cmluZwAAAAECAAAADHNldHVwX3Rva2VucwUAAAAKYXNzZXRJZFN0cgUAAAAEdW5pdAkAAAIAAAABAgAAACl0aGlzIGFzc2V0IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIG1hcmtldAMJAABmAAAAAgUAAAAGYW1vdW50BQAAABF1c2VyQXNzZXRCb3Jyb3dlZAkAAAIAAAABAgAAADJwYXllZCBhbW91bnQgaXMgYmlnZ2VyIHRoYW4gdXNlcidzIGJvcnJvd2VkIGFtb3VudAkABE4AAAACCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQAB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", "height": 3291549, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2CFoF9fYGsUPz9S28qn443bm8Wa5ont8M9BiqMiNJ9Xr Next: GWoszeizZzbB46BwzBybGu5JPGNtRYsTt2pKVZaQGVgD Diff:
OldNewDifferences
4949 func getMarketAssets () = split(tryGetString("setup_tokens"), ",")
5050
5151
52-func getUr (assetIdStr) = toInt(fraction(toBigInt(Scale8), (toBigInt(tryGetInteger(("total_borrowed_" + assetIdStr))) * toBigInt(tryGetInteger((assetIdStr + "_bRate")))), (toBigInt(tryGetInteger(("total_supplied_" + assetIdStr))) * toBigInt(tryGetInteger((assetIdStr + "_sRate"))))))
52+func getUr (assetIdStr) = {
53+ let down = max([fraction(tryGetInteger(("total_supplied_" + assetIdStr)), tryGetInteger((assetIdStr + "_sRate")), Scale16), Scale8])
54+ fraction(Scale8, fraction(tryGetInteger(("total_borrowed_" + assetIdStr)), tryGetInteger((assetIdStr + "_bRate")), Scale16), down)
55+ }
5356
5457
5558 func getInterest (assetIdStr) = {
6366 let interest = getInterest(assetIdStr)
6467 let ur = getUr(assetIdStr)
6568 let lastRecalcHeight = tryGetInteger("lastRateHeight")
66- let lastBRate = tryGetInteger((assetIdStr + "_bRate"))
69+ let lastBRate = max([tryGetInteger((assetIdStr + "_bRate")), Scale16])
6770 let newBRate = (lastBRate + ((height - lastRecalcHeight) * interest))
68- let lastSRate = tryGetInteger((assetIdStr + "_sRate"))
71+ let lastSRate = max([tryGetInteger((assetIdStr + "_sRate")), Scale16])
6972 let newSRate = (lastSRate + ((height - lastRecalcHeight) * fraction(interest, ur, Scale8)))
7073 [IntegerEntry((assetIdStr + "_sRate"), newSRate), IntegerEntry((assetIdStr + "_bRate"), newBRate), IntegerEntry("lastRateHeight", height)]
7174 }
160163 else {
161164 let assetIdStr = getAssetString(i.payments[0].assetId)
162165 let assetAmount = i.payments[0].amount
163- let $t039113978 = getActualRate(assetIdStr, "sRate")
164- let sRate = $t039113978._1
165- let ratesRecalcResult = $t039113978._2
166+ let $t039494016 = getActualRate(assetIdStr, "sRate")
167+ let sRate = $t039494016._1
168+ let ratesRecalcResult = $t039494016._2
166169 let amount = fraction(assetAmount, Scale16, sRate)
167170 let address = toString(i.caller)
168171 if ((indexOf(tryGetString("setup_tokens"), assetIdStr) == unit))
174177
175178 @Callable(i)
176179 func withdraw (assetIdStr,assetAmount) = {
177- let $t045424609 = getActualRate(assetIdStr, "sRate")
178- let sRate = $t045424609._1
179- let ratesRecalcResult = $t045424609._2
180+ let $t045804647 = getActualRate(assetIdStr, "sRate")
181+ let sRate = $t045804647._1
182+ let ratesRecalcResult = $t045804647._2
180183 let amount = fraction(assetAmount, Scale16, sRate)
181184 let address = toString(i.caller)
182185 let assetSupplied = tryGetInteger(("total_supplied_" + assetIdStr))
197200 @Callable(i)
198201 func borrow (assetIdStr,assetAmount) = {
199202 let address = toString(i.caller)
200- let $t057545821 = getActualRate(assetIdStr, "bRate")
201- let bRate = $t057545821._1
202- let ratesRecalcResult = $t057545821._2
203+ let $t057925859 = getActualRate(assetIdStr, "bRate")
204+ let bRate = $t057925859._1
205+ let ratesRecalcResult = $t057925859._2
203206 let amount = fraction(assetAmount, Scale16, bRate)
204207 let price = getTokenPrice(assetIdStr)._2
205- let assetScale = pow(10, 0, value(assetInfo(fromBase58String(assetIdStr))).decimals, 0, 0, DOWN)
208+ let decimals = if ((assetIdStr == "WAVES"))
209+ then 8
210+ else value(assetInfo(fromBase58String(assetIdStr))).decimals
211+ let assetScale = pow(10, 0, decimals, 0, 0, DOWN)
206212 let usdEquivalent = fraction(amount, price, assetScale)
207213 let collateralValueInv = invoke(this, "getUserCollateral", [false, address, true], nil)
208214 if ((collateralValueInv == collateralValueInv))
239245 else {
240246 let assetIdStr = getAssetString(i.payments[0].assetId)
241247 let assetAmount = i.payments[0].amount
242- let $t073237390 = getActualRate(assetIdStr, "bRate")
243- let bRate = $t073237390._1
244- let ratesRecalcResult = $t073237390._2
248+ let $t074307497 = getActualRate(assetIdStr, "bRate")
249+ let bRate = $t074307497._1
250+ let ratesRecalcResult = $t074307497._2
245251 let amount = fraction(assetAmount, Scale16, bRate)
246252 let address = toString(i.caller)
247253 let assetSupplied = tryGetInteger(("total_supplied_" + assetIdStr))
329335 func f (accum,next) = if ((next >= size(assets)))
330336 then accum
331337 else {
332- let assetScale = pow(10, 0, value(assetInfo(fromBase58String(assets[next]))).decimals, 0, 0, DOWN)
338+ let decimals = if ((assets[next] == "WAVES"))
339+ then 8
340+ else value(assetInfo(fromBase58String(assets[next]))).decimals
341+ let assetScale = pow(10, 0, decimals, 0, 0, DOWN)
333342 let assetPrice = getTokenPrice(assets[next])
334343 ((accum + fraction(fraction(fraction(tryGetInteger(((address + "_supplied_") + assets[next])), rates[(next * 3)].value, Scale16), parseIntValue(ltvs[next]), Scale8), assetPrice._1, assetScale)) - (if (minusBorrowed)
335344 then fraction(fraction(tryGetInteger(((address + "_borrowed_") + assets[next])), rates[((next * 3) + 1)].value, Scale16), assetPrice._2, assetScale)
356365 }
357366
358367
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+
359399 @Verifier(tx)
360400 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
361401
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
52-func getUr (assetIdStr) = toInt(fraction(toBigInt(Scale8), (toBigInt(tryGetInteger(("total_borrowed_" + assetIdStr))) * toBigInt(tryGetInteger((assetIdStr + "_bRate")))), (toBigInt(tryGetInteger(("total_supplied_" + assetIdStr))) * toBigInt(tryGetInteger((assetIdStr + "_sRate"))))))
52+func getUr (assetIdStr) = {
53+ let down = max([fraction(tryGetInteger(("total_supplied_" + assetIdStr)), tryGetInteger((assetIdStr + "_sRate")), Scale16), Scale8])
54+ fraction(Scale8, fraction(tryGetInteger(("total_borrowed_" + assetIdStr)), tryGetInteger((assetIdStr + "_bRate")), Scale16), down)
55+ }
5356
5457
5558 func getInterest (assetIdStr) = {
5659 let ur = getUr(assetIdStr)
5760 let dailyInterest = tryGetInteger("setup_interest")
5861 max([(fraction(dailyInterest, ur, dayBlocks) / Scale8), 1])
5962 }
6063
6164
6265 func tokenRatesRecalc (assetIdStr) = {
6366 let interest = getInterest(assetIdStr)
6467 let ur = getUr(assetIdStr)
6568 let lastRecalcHeight = tryGetInteger("lastRateHeight")
66- let lastBRate = tryGetInteger((assetIdStr + "_bRate"))
69+ let lastBRate = max([tryGetInteger((assetIdStr + "_bRate")), Scale16])
6770 let newBRate = (lastBRate + ((height - lastRecalcHeight) * interest))
68- let lastSRate = tryGetInteger((assetIdStr + "_sRate"))
71+ let lastSRate = max([tryGetInteger((assetIdStr + "_sRate")), Scale16])
6972 let newSRate = (lastSRate + ((height - lastRecalcHeight) * fraction(interest, ur, Scale8)))
7073 [IntegerEntry((assetIdStr + "_sRate"), newSRate), IntegerEntry((assetIdStr + "_bRate"), newBRate), IntegerEntry("lastRateHeight", height)]
7174 }
7275
7376
7477 func getActualRate (assetIdStr,rateType) = {
7578 func f (accum,token) = {
7679 let recalc = tokenRatesRecalc(token)
7780 $Tuple2(if ((token != assetIdStr))
7881 then accum._1
7982 else if ((rateType == "sRate"))
8083 then recalc[0].value
8184 else recalc[1].value, (accum._2 ++ recalc))
8285 }
8386
8487 let $l = getMarketAssets()
8588 let $s = size($l)
8689 let $acc0 = $Tuple2(0, nil)
8790 func $f0_1 ($a,$i) = if (($i >= $s))
8891 then $a
8992 else f($a, $l[$i])
9093
9194 func $f0_2 ($a,$i) = if (($i >= $s))
9295 then $a
9396 else throw("List size exceeds 6")
9497
9598 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6)
9699 }
97100
98101
99102 func ratesRecalc () = {
100103 func f (accum,token) = (accum ++ tokenRatesRecalc(token))
101104
102105 let $l = getMarketAssets()
103106 let $s = size($l)
104107 let $acc0 = nil
105108 func $f0_1 ($a,$i) = if (($i >= $s))
106109 then $a
107110 else f($a, $l[$i])
108111
109112 func $f0_2 ($a,$i) = if (($i >= $s))
110113 then $a
111114 else throw("List size exceeds 6")
112115
113116 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6)
114117 }
115118
116119
117120 func getTokenPrice (assetIdStr) = if ((assetIdStr == "HEB8Qaw9xrWpWs8tHsiATYGBWDBtP2S7kcPALrMu43AS"))
118121 then $Tuple2(15000000, 15000000)
119122 else if ((assetIdStr == "WAVES"))
120123 then $Tuple2(5000000, 5000000)
121124 else if ((assetIdStr == "Ajso6nTTjptu2UHLx6hfSXVtHFtRBJCkKYd5SAyj7zf5"))
122125 then $Tuple2(2000000, 2000000)
123126 else if ((assetIdStr == "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ"))
124127 then $Tuple2(1000000, 1000000)
125128 else if ((assetIdStr == "6XtHjpXbs9RRJP2Sr9GUyVqzACcby9TkThHXnjVC5CDJ"))
126129 then $Tuple2(1000000, 1000000)
127130 else $Tuple2(950000, 950000)
128131
129132
130133 @Callable(i)
131134 func preInit (tokens,ltvs,dailyPercent) = {
132135 func f (accum,token) = (accum ++ [IntegerEntry((token + "_bRate"), Scale16), IntegerEntry((token + "_sRate"), Scale16)])
133136
134137 let rates = {
135138 let $l = split(tokens, ",")
136139 let $s = size($l)
137140 let $acc0 = nil
138141 func $f0_1 ($a,$i) = if (($i >= $s))
139142 then $a
140143 else f($a, $l[$i])
141144
142145 func $f0_2 ($a,$i) = if (($i >= $s))
143146 then $a
144147 else throw("List size exceeds 6")
145148
146149 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6)
147150 }
148151 ([StringEntry("setup_tokens", tokens), StringEntry("setup_ltvs", ltvs), IntegerEntry("setup_interest", dailyPercent), BooleanEntry("setup_active", true)] ++ rates)
149152 }
150153
151154
152155
153156 @Callable(i)
154157 func supply () = if (!(tryGetBoolean("setup_active")))
155158 then throw("market is stopped")
156159 else if (if ((size(i.payments) != 1))
157160 then true
158161 else (i.payments[0].amount == 0))
159162 then throw("1 payment has to be attached")
160163 else {
161164 let assetIdStr = getAssetString(i.payments[0].assetId)
162165 let assetAmount = i.payments[0].amount
163- let $t039113978 = getActualRate(assetIdStr, "sRate")
164- let sRate = $t039113978._1
165- let ratesRecalcResult = $t039113978._2
166+ let $t039494016 = getActualRate(assetIdStr, "sRate")
167+ let sRate = $t039494016._1
168+ let ratesRecalcResult = $t039494016._2
166169 let amount = fraction(assetAmount, Scale16, sRate)
167170 let address = toString(i.caller)
168171 if ((indexOf(tryGetString("setup_tokens"), assetIdStr) == unit))
169172 then throw("this asset is not supported by the market")
170173 else ([IntegerEntry(((address + "_supplied_") + assetIdStr), (tryGetInteger(((address + "_supplied_") + assetIdStr)) + amount)), IntegerEntry(("total_supplied_" + assetIdStr), (tryGetInteger(("total_supplied_" + assetIdStr)) + amount))] ++ ratesRecalcResult)
171174 }
172175
173176
174177
175178 @Callable(i)
176179 func withdraw (assetIdStr,assetAmount) = {
177- let $t045424609 = getActualRate(assetIdStr, "sRate")
178- let sRate = $t045424609._1
179- let ratesRecalcResult = $t045424609._2
180+ let $t045804647 = getActualRate(assetIdStr, "sRate")
181+ let sRate = $t045804647._1
182+ let ratesRecalcResult = $t045804647._2
180183 let amount = fraction(assetAmount, Scale16, sRate)
181184 let address = toString(i.caller)
182185 let assetSupplied = tryGetInteger(("total_supplied_" + assetIdStr))
183186 let assetBorrowed = tryGetInteger(("total_borrowed_" + assetIdStr))
184187 let userAssetSupplied = tryGetInteger(((address + "_supplied_") + assetIdStr))
185188 let userAssetBorrowed = tryGetInteger(((address + "_borrowed_") + assetIdStr))
186189 if (!(tryGetBoolean("setup_active")))
187190 then throw("market is stopped")
188191 else if ((amount > (assetSupplied - assetBorrowed)))
189192 then throw("this amount is not available on the market")
190193 else if ((amount > (userAssetSupplied - userAssetBorrowed)))
191194 then throw("this amount is not available for this user")
192195 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)
193196 }
194197
195198
196199
197200 @Callable(i)
198201 func borrow (assetIdStr,assetAmount) = {
199202 let address = toString(i.caller)
200- let $t057545821 = getActualRate(assetIdStr, "bRate")
201- let bRate = $t057545821._1
202- let ratesRecalcResult = $t057545821._2
203+ let $t057925859 = getActualRate(assetIdStr, "bRate")
204+ let bRate = $t057925859._1
205+ let ratesRecalcResult = $t057925859._2
203206 let amount = fraction(assetAmount, Scale16, bRate)
204207 let price = getTokenPrice(assetIdStr)._2
205- let assetScale = pow(10, 0, value(assetInfo(fromBase58String(assetIdStr))).decimals, 0, 0, DOWN)
208+ let decimals = if ((assetIdStr == "WAVES"))
209+ then 8
210+ else value(assetInfo(fromBase58String(assetIdStr))).decimals
211+ let assetScale = pow(10, 0, decimals, 0, 0, DOWN)
206212 let usdEquivalent = fraction(amount, price, assetScale)
207213 let collateralValueInv = invoke(this, "getUserCollateral", [false, address, true], nil)
208214 if ((collateralValueInv == collateralValueInv))
209215 then {
210216 let collateralValue = match collateralValueInv {
211217 case x: Int =>
212218 x
213219 case _ =>
214220 throw("can't get user collateral value")
215221 }
216222 if ((usdEquivalent > collateralValue))
217223 then throw("you have to supply more to borrow")
218224 else {
219225 let assetSupplied = tryGetInteger(("total_supplied_" + assetIdStr))
220226 let assetBorrowed = tryGetInteger(("total_borrowed_" + assetIdStr))
221227 let userAssetBorrowed = tryGetInteger(((address + "_borrowed_") + assetIdStr))
222228 if ((amount > (assetSupplied - assetBorrowed)))
223229 then throw("this amount is not available")
224230 else ([IntegerEntry(((address + "_borrowed_") + assetIdStr), (userAssetBorrowed + amount)), IntegerEntry(("total_borrowed_" + assetIdStr), (assetBorrowed + amount)), ScriptTransfer(i.caller, amount, getAssetBytes(assetIdStr))] ++ ratesRecalcResult)
225231 }
226232 }
227233 else throw("Strict value is not equal to itself.")
228234 }
229235
230236
231237
232238 @Callable(i)
233239 func repay () = if (!(tryGetBoolean("setup_active")))
234240 then throw("market is stopped")
235241 else if (if ((size(i.payments) != 1))
236242 then true
237243 else (i.payments[0].amount == 0))
238244 then throw("1 payment has to be attached")
239245 else {
240246 let assetIdStr = getAssetString(i.payments[0].assetId)
241247 let assetAmount = i.payments[0].amount
242- let $t073237390 = getActualRate(assetIdStr, "bRate")
243- let bRate = $t073237390._1
244- let ratesRecalcResult = $t073237390._2
248+ let $t074307497 = getActualRate(assetIdStr, "bRate")
249+ let bRate = $t074307497._1
250+ let ratesRecalcResult = $t074307497._2
245251 let amount = fraction(assetAmount, Scale16, bRate)
246252 let address = toString(i.caller)
247253 let assetSupplied = tryGetInteger(("total_supplied_" + assetIdStr))
248254 let assetBorrowed = tryGetInteger(("total_borrowed_" + assetIdStr))
249255 let userAssetBorrowed = tryGetInteger(((address + "_borrowed_") + assetIdStr))
250256 if ((indexOf(tryGetString("setup_tokens"), assetIdStr) == unit))
251257 then throw("this asset is not supported by the market")
252258 else if ((amount > userAssetBorrowed))
253259 then throw("payed amount is bigger than user's borrowed amount")
254260 else ([IntegerEntry(((address + "_borrowed_") + assetIdStr), (userAssetBorrowed - amount)), IntegerEntry(("total_borrowed_" + assetIdStr), (assetBorrowed - amount))] ++ ratesRecalcResult)
255261 }
256262
257263
258264
259265 @Callable(i)
260266 func calculateUtilizationRatio (assetIdStr,debug) = if (debug)
261267 then throw(toString(getUr(assetIdStr)))
262268 else $Tuple2(nil, getUr(assetIdStr))
263269
264270
265271
266272 @Callable(i)
267273 func calculateTokenRates (debug) = {
268274 func f (accum,assetIdStr) = {
269275 let rates = tokenRatesRecalc(assetIdStr)
270276 ((((accum + toString(rates[1].value)) + "|") + toString(rates[0].value)) + ",")
271277 }
272278
273279 let parameter = {
274280 let $l = getMarketAssets()
275281 let $s = size($l)
276282 let $acc0 = ""
277283 func $f0_1 ($a,$i) = if (($i >= $s))
278284 then $a
279285 else f($a, $l[$i])
280286
281287 func $f0_2 ($a,$i) = if (($i >= $s))
282288 then $a
283289 else throw("List size exceeds 6")
284290
285291 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6)
286292 }
287293 if (debug)
288294 then throw(parameter)
289295 else $Tuple2(nil, parameter)
290296 }
291297
292298
293299
294300 @Callable(i)
295301 func calculateTokensInterest (debug) = {
296302 let dailyInterest = tryGetInteger("setup_interest")
297303 func f (accum,assetIdStr) = {
298304 let ur = getUr(assetIdStr)
299305 let rate = max([fraction(dailyInterest, ur, Scale8), dayBlocks])
300306 ((accum + toString(rate)) + ",")
301307 }
302308
303309 let parameter = {
304310 let $l = getMarketAssets()
305311 let $s = size($l)
306312 let $acc0 = ""
307313 func $f0_1 ($a,$i) = if (($i >= $s))
308314 then $a
309315 else f($a, $l[$i])
310316
311317 func $f0_2 ($a,$i) = if (($i >= $s))
312318 then $a
313319 else throw("List size exceeds 6")
314320
315321 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6)
316322 }
317323 if (debug)
318324 then throw(parameter)
319325 else $Tuple2(nil, parameter)
320326 }
321327
322328
323329
324330 @Callable(i)
325331 func getUserCollateral (debug,address,minusBorrowed) = {
326332 let assets = getMarketAssets()
327333 let ltvs = split(tryGetString("setup_ltvs"), ",")
328334 let rates = getActualRate(assets[0], "sRate")._2
329335 func f (accum,next) = if ((next >= size(assets)))
330336 then accum
331337 else {
332- let assetScale = pow(10, 0, value(assetInfo(fromBase58String(assets[next]))).decimals, 0, 0, DOWN)
338+ let decimals = if ((assets[next] == "WAVES"))
339+ then 8
340+ else value(assetInfo(fromBase58String(assets[next]))).decimals
341+ let assetScale = pow(10, 0, decimals, 0, 0, DOWN)
333342 let assetPrice = getTokenPrice(assets[next])
334343 ((accum + fraction(fraction(fraction(tryGetInteger(((address + "_supplied_") + assets[next])), rates[(next * 3)].value, Scale16), parseIntValue(ltvs[next]), Scale8), assetPrice._1, assetScale)) - (if (minusBorrowed)
335344 then fraction(fraction(tryGetInteger(((address + "_borrowed_") + assets[next])), rates[((next * 3) + 1)].value, Scale16), assetPrice._2, assetScale)
336345 else 0))
337346 }
338347
339348 let result = {
340349 let $l = [0, 1, 2, 3, 4, 5]
341350 let $s = size($l)
342351 let $acc0 = 0
343352 func $f0_1 ($a,$i) = if (($i >= $s))
344353 then $a
345354 else f($a, $l[$i])
346355
347356 func $f0_2 ($a,$i) = if (($i >= $s))
348357 then $a
349358 else throw("List size exceeds 6")
350359
351360 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6)
352361 }
353362 if (debug)
354363 then throw(toString(result))
355364 else $Tuple2(rates, result)
356365 }
357366
358367
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+
359399 @Verifier(tx)
360400 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
361401

github/deemru/w8io/786bc32 
57.70 ms