tx · BtkuspvVCaJdjgdhX1vixtuPzc1vDobRKPrt5nzzJAi8

3P6dkRGSqgsNpQFbSYn9m8n4Dd8KRaj5TUU:  -0.02000000 Waves

2022.09.15 19:31 [3295953] smart account 3P6dkRGSqgsNpQFbSYn9m8n4Dd8KRaj5TUU > SELF 0.00000000 Waves

{ "type": 13, "id": "BtkuspvVCaJdjgdhX1vixtuPzc1vDobRKPrt5nzzJAi8", "fee": 2000000, "feeAssetId": null, "timestamp": 1663259531010, "version": 2, "chainId": 87, "sender": "3P6dkRGSqgsNpQFbSYn9m8n4Dd8KRaj5TUU", "senderPublicKey": "CsS3XguS73w7QRYkLSTsL7VwoFdeGsyEnf8nWgqMYGuc", "proofs": [ "2ZyYX9iAfWJFeUkQGnkz7kUziqTrjLECxuDzEe4fdR1dPs4VEdp3WUEDndYWcgtGTGHhoqJGM9wKv2NSHseoQyze" ], "script": "base64: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QW1vdW50BAAAAAskdDA0OTgwNTA0NwkBAAAADWdldEFjdHVhbFJhdGUAAAACBQAAAAphc3NldElkU3RyAgAAAAVzUmF0ZQQAAAAFc1JhdGUIBQAAAAskdDA0OTgwNTA0NwAAAAJfMQQAAAARcmF0ZXNSZWNhbGNSZXN1bHQIBQAAAAskdDA0OTgwNTA0NwAAAAJfMgQAAAAGYW1vdW50CQAAawAAAAMFAAAAC2Fzc2V0QW1vdW50BQAAAAdTY2FsZTE2BQAAAAVzUmF0ZQQAAAAHYWRkcmVzcwkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAADWFzc2V0U3VwcGxpZWQJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACAgAAAA90b3RhbF9zdXBwbGllZF8FAAAACmFzc2V0SWRTdHIEAAAADWFzc2V0Qm9ycm93ZWQJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACAgAAAA90b3RhbF9ib3Jyb3dlZF8FAAAACmFzc2V0SWRTdHIEAAAAEXVzZXJBc3NldFN1cHBsaWVkCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgkAASwAAAACBQAAAAdhZGRyZXNzAgAAAApfc3VwcGxpZWRfBQAAAAphc3NldElkU3RyBAAAABF1c2VyQXNzZXRCb3Jyb3dlZAkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAIJAAEsAAAAAgUAAAAHYWRkcmVzcwIAAAAKX2JvcnJvd2VkXwUAAAAKYXNzZXRJZFN0cgMJAQAAAAEhAAAAAQkBAAAADXRyeUdldEJvb2xlYW4AAAABAgAAAAxzZXR1cF9hY3RpdmUJAAACAAAAAQIAAAARbWFya2V0IGlzIHN0b3BwZWQDCQAAZgAAAAIFAAAABmFtb3VudAkAAGUAAAACBQAAAA1hc3NldFN1cHBsaWVkBQAAAA1hc3NldEJvcnJvd2VkCQAAAgAAAAECAAAAKnRoaXMgYW1vdW50IGlzIG5vdCBhdmFpbGFibGUgb24gdGhlIG1hcmtldAMJAABmAAAAAgUAAAAGYW1vdW50CQAAZQAAAAIFAAAAEXVzZXJBc3NldFN1cHBsaWVkBQAAABF1c2VyQXNzZXRCb3Jyb3dlZAkAAAIAAAABAgAAACp0aGlzIGFtb3VudCBpcyBub3QgYXZhaWxhYmxlIGZvciB0aGlzIHVzZXIJAAROAAAAAgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIFAAAAB2FkZHJlc3MCAAAACl9zdXBwbGllZF8FAAAACmFzc2V0SWRTdHIJAABlAAAAAgkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAIJAAEsAAAAAgUAAAAHYWRkcmVzcwIAAAAKX3N1cHBsaWVkXwUAAAAKYXNzZXRJZFN0cgUAAAAGYW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAICAAAAD3RvdGFsX3N1cHBsaWVkXwUAAAAKYXNzZXRJZFN0cgkAAGUAAAACCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgIAAAAPdG90YWxfc3VwcGxpZWRfBQAAAAphc3NldElkU3RyBQAAAAZhbW91bnQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAAZhbW91bnQJAQAAAA1nZXRBc3NldEJ5dGVzAAAAAQUAAAAKYXNzZXRJZFN0cgUAAAADbmlsBQAAABFyYXRlc1JlY2FsY1Jlc3VsdAAAAAFpAQAAAAZib3Jyb3cAAAACAAAACmFzc2V0SWRTdHIAAAALYXNzZXRBbW91bnQEAAAAB2FkZHJlc3MJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAAAskdDA2MTkyNjI1OQkBAAAADWdldEFjdHVhbFJhdGUAAAACBQAAAAphc3NldElkU3RyAgAAAAViUmF0ZQQAAAAFYlJhdGUIBQAAAAskdDA2MTkyNjI1OQAAAAJfMQQAAAARcmF0ZXNSZWNhbGNSZXN1bHQIBQAAAAskdDA2MTkyNjI1OQAAAAJfMgQAAAAGYW1vdW50CQAAawAAAAMFAAAAC2Fzc2V0QW1vdW50BQAAAAdTY2FsZTE2BQAAAAViUmF0ZQQAAAAFcHJpY2UICQEAAAANZ2V0VG9rZW5QcmljZQAAAAEFAAAACmFzc2V0SWRTdHIAAAACXzIEAAAACGRlY2ltYWxzAwkAAAAAAAACBQAAAAphc3NldElk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CAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQEAAAACyR0MDc4MzA3ODk3CQEAAAANZ2V0QWN0dWFsUmF0ZQAAAAIFAAAACmFzc2V0SWRTdHICAAAABWJSYXRlBAAAAAViUmF0ZQgFAAAACyR0MDc4MzA3ODk3AAAAAl8xBAAAABFyYXRlc1JlY2FsY1Jlc3VsdAgFAAAACyR0MDc4MzA3ODk3AAAAAl8yBAAAAAZhbW91bnQJAABrAAAAAwUAAAALYXNzZXRBbW91bnQFAAAAB1NjYWxlMTYFAAAABWJSYXRlBAAAAAdhZGRyZXNzCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAANYXNzZXRTdXBwbGllZAkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAICAAAAD3RvdGFsX3N1cHBsaWVkXwUAAAAKYXNzZXRJZFN0cgQAAAANYXNzZXRCb3Jyb3dlZAkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAICAAAAD3RvdGFsX2JvcnJvd2VkXwUAAAAKYXNzZXRJZFN0cgQAAAARdXNlckFzc2V0Qm9ycm93ZWQJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAIFAAAAB2FkZHJlc3MCAAAACl9ib3Jyb3dlZF8FAAAACmFzc2V0SWRTdHIDCQAAAAAAAAIJAASzAAAAAgkBAAAADHRyeUdldFN0cmluZwAAAAECAAAADHNldHVwX3Rva2VucwUAAAAKYXNzZXRJZFN0cgUAAAAEdW5pdAkAAAIAAAABAgAAACl0aGlzIGFzc2V0IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIG1hcmtldAMJAABmAAAAAgUAAAAGYW1vdW50BQAAABF1c2VyQXNzZXRCb3Jyb3dlZAkAAAIAAAABAgAAADJwYXllZCBhbW91bnQgaXMgYmlnZ2VyIHRoYW4gdXNlcidzIGJvcnJvd2VkIGFtb3VudAkABE4AAAACCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAHYWRkcmVzcwIAAAAKX2JvcnJvd2VkXwUAAAAKYXNzZXRJZFN0cgkAAGUAAAACBQAA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", "height": 3295953, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: A5XnRDk5VpHt8nkg2VHHroL115C2vwFjBF1tHx1utatd Next: 14CuMenXfvpbfgDM6MgpNZCPbdqd14zjnW1zQaa72KZv Diff:
OldNewDifferences
5858 func getInterest (assetIdStr) = {
5959 let ur = getUr(assetIdStr)
6060 let dailyInterest = if ((80000000 >= ur))
61- then fraction(ur, 54794, 80000000)
62- else (54794 + fraction((ur - 80000000), 54794, 20000000))
61+ then fraction(ur, 5479400, 80000000)
62+ else (5479400 + fraction((ur - 80000000), 5479400, 20000000))
6363 max([(fraction(dailyInterest, ur, dayBlocks) / Scale8), 1])
6464 }
6565
165165 else {
166166 let assetIdStr = getAssetString(i.payments[0].assetId)
167167 let assetAmount = i.payments[0].amount
168- let $t043434410 = getActualRate(assetIdStr, "sRate")
169- let sRate = $t043434410._1
170- let ratesRecalcResult = $t043434410._2
168+ let $t043494416 = getActualRate(assetIdStr, "sRate")
169+ let sRate = $t043494416._1
170+ let ratesRecalcResult = $t043494416._2
171171 let amount = fraction(assetAmount, Scale16, sRate)
172172 let address = toString(i.caller)
173173 if ((indexOf(tryGetString("setup_tokens"), assetIdStr) == unit))
179179
180180 @Callable(i)
181181 func withdraw (assetIdStr,assetAmount) = {
182- let $t049745041 = getActualRate(assetIdStr, "sRate")
183- let sRate = $t049745041._1
184- let ratesRecalcResult = $t049745041._2
182+ let $t049805047 = getActualRate(assetIdStr, "sRate")
183+ let sRate = $t049805047._1
184+ let ratesRecalcResult = $t049805047._2
185185 let amount = fraction(assetAmount, Scale16, sRate)
186186 let address = toString(i.caller)
187187 let assetSupplied = tryGetInteger(("total_supplied_" + assetIdStr))
202202 @Callable(i)
203203 func borrow (assetIdStr,assetAmount) = {
204204 let address = toString(i.caller)
205- let $t061866253 = getActualRate(assetIdStr, "bRate")
206- let bRate = $t061866253._1
207- let ratesRecalcResult = $t061866253._2
205+ let $t061926259 = getActualRate(assetIdStr, "bRate")
206+ let bRate = $t061926259._1
207+ let ratesRecalcResult = $t061926259._2
208208 let amount = fraction(assetAmount, Scale16, bRate)
209209 let price = getTokenPrice(assetIdStr)._2
210210 let decimals = if ((assetIdStr == "WAVES"))
247247 else {
248248 let assetIdStr = getAssetString(i.payments[0].assetId)
249249 let assetAmount = i.payments[0].amount
250- let $t078247891 = getActualRate(assetIdStr, "bRate")
251- let bRate = $t078247891._1
252- let ratesRecalcResult = $t078247891._2
250+ let $t078307897 = getActualRate(assetIdStr, "bRate")
251+ let bRate = $t078307897._1
252+ let ratesRecalcResult = $t078307897._2
253253 let amount = fraction(assetAmount, Scale16, bRate)
254254 let address = toString(i.caller)
255255 let assetSupplied = tryGetInteger(("total_supplied_" + assetIdStr))
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 = if ((80000000 >= ur))
61- then fraction(ur, 54794, 80000000)
62- else (54794 + fraction((ur - 80000000), 54794, 20000000))
61+ then fraction(ur, 5479400, 80000000)
62+ else (5479400 + fraction((ur - 80000000), 5479400, 20000000))
6363 max([(fraction(dailyInterest, ur, dayBlocks) / Scale8), 1])
6464 }
6565
6666
6767 func tokenRatesRecalc (assetIdStr) = {
6868 let interest = getInterest(assetIdStr)
6969 let ur = getUr(assetIdStr)
7070 let lastRecalcHeight = tryGetInteger("lastRateHeight")
7171 let lastBRate = max([tryGetInteger((assetIdStr + "_bRate")), Scale16])
7272 let newBRate = (lastBRate + ((height - lastRecalcHeight) * interest))
7373 let lastSRate = max([tryGetInteger((assetIdStr + "_sRate")), Scale16])
7474 let newSRate = (lastSRate + ((height - lastRecalcHeight) * fraction(interest, ur, Scale8)))
7575 [IntegerEntry((assetIdStr + "_sRate"), newSRate), IntegerEntry((assetIdStr + "_bRate"), newBRate), IntegerEntry("lastRateHeight", height)]
7676 }
7777
7878
7979 func getActualRate (assetIdStr,rateType) = {
8080 func f (accum,token) = {
8181 let recalc = tokenRatesRecalc(token)
8282 $Tuple2(if ((token != assetIdStr))
8383 then accum._1
8484 else if ((rateType == "sRate"))
8585 then recalc[0].value
8686 else recalc[1].value, (accum._2 ++ recalc))
8787 }
8888
8989 let $l = getMarketAssets()
9090 let $s = size($l)
9191 let $acc0 = $Tuple2(0, nil)
9292 func $f0_1 ($a,$i) = if (($i >= $s))
9393 then $a
9494 else f($a, $l[$i])
9595
9696 func $f0_2 ($a,$i) = if (($i >= $s))
9797 then $a
9898 else throw("List size exceeds 6")
9999
100100 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6)
101101 }
102102
103103
104104 func ratesRecalc () = {
105105 func f (accum,token) = (accum ++ tokenRatesRecalc(token))
106106
107107 let $l = getMarketAssets()
108108 let $s = size($l)
109109 let $acc0 = nil
110110 func $f0_1 ($a,$i) = if (($i >= $s))
111111 then $a
112112 else f($a, $l[$i])
113113
114114 func $f0_2 ($a,$i) = if (($i >= $s))
115115 then $a
116116 else throw("List size exceeds 6")
117117
118118 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6)
119119 }
120120
121121
122122 func getTokenPrice (assetIdStr) = {
123123 let inv = invoke(addressFromStringValue("3P5BTtdj32Sd1Dyh1Mdw33xQAAckSfMfnKf"), "getTWAP60", [assetIdStr, false], nil)
124124 if ((inv == inv))
125125 then match inv {
126126 case x: (Int, Int) =>
127127 x
128128 case _ =>
129129 throw("error of price oracle")
130130 }
131131 else throw("Strict value is not equal to itself.")
132132 }
133133
134134
135135 @Callable(i)
136136 func preInit (tokens,ltvs,dailyPercent) = {
137137 func f (accum,token) = (accum ++ [IntegerEntry((token + "_bRate"), Scale16), IntegerEntry((token + "_sRate"), Scale16)])
138138
139139 let rates = {
140140 let $l = split(tokens, ",")
141141 let $s = size($l)
142142 let $acc0 = nil
143143 func $f0_1 ($a,$i) = if (($i >= $s))
144144 then $a
145145 else f($a, $l[$i])
146146
147147 func $f0_2 ($a,$i) = if (($i >= $s))
148148 then $a
149149 else throw("List size exceeds 6")
150150
151151 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6)
152152 }
153153 ([StringEntry("setup_tokens", tokens), StringEntry("setup_ltvs", ltvs), IntegerEntry("setup_interest", dailyPercent), BooleanEntry("setup_active", true)] ++ rates)
154154 }
155155
156156
157157
158158 @Callable(i)
159159 func supply () = if (!(tryGetBoolean("setup_active")))
160160 then throw("market is stopped")
161161 else if (if ((size(i.payments) != 1))
162162 then true
163163 else (i.payments[0].amount == 0))
164164 then throw("1 payment has to be attached")
165165 else {
166166 let assetIdStr = getAssetString(i.payments[0].assetId)
167167 let assetAmount = i.payments[0].amount
168- let $t043434410 = getActualRate(assetIdStr, "sRate")
169- let sRate = $t043434410._1
170- let ratesRecalcResult = $t043434410._2
168+ let $t043494416 = getActualRate(assetIdStr, "sRate")
169+ let sRate = $t043494416._1
170+ let ratesRecalcResult = $t043494416._2
171171 let amount = fraction(assetAmount, Scale16, sRate)
172172 let address = toString(i.caller)
173173 if ((indexOf(tryGetString("setup_tokens"), assetIdStr) == unit))
174174 then throw("this asset is not supported by the market")
175175 else ([IntegerEntry(((address + "_supplied_") + assetIdStr), (tryGetInteger(((address + "_supplied_") + assetIdStr)) + amount)), IntegerEntry(("total_supplied_" + assetIdStr), (tryGetInteger(("total_supplied_" + assetIdStr)) + amount))] ++ ratesRecalcResult)
176176 }
177177
178178
179179
180180 @Callable(i)
181181 func withdraw (assetIdStr,assetAmount) = {
182- let $t049745041 = getActualRate(assetIdStr, "sRate")
183- let sRate = $t049745041._1
184- let ratesRecalcResult = $t049745041._2
182+ let $t049805047 = getActualRate(assetIdStr, "sRate")
183+ let sRate = $t049805047._1
184+ let ratesRecalcResult = $t049805047._2
185185 let amount = fraction(assetAmount, Scale16, sRate)
186186 let address = toString(i.caller)
187187 let assetSupplied = tryGetInteger(("total_supplied_" + assetIdStr))
188188 let assetBorrowed = tryGetInteger(("total_borrowed_" + assetIdStr))
189189 let userAssetSupplied = tryGetInteger(((address + "_supplied_") + assetIdStr))
190190 let userAssetBorrowed = tryGetInteger(((address + "_borrowed_") + assetIdStr))
191191 if (!(tryGetBoolean("setup_active")))
192192 then throw("market is stopped")
193193 else if ((amount > (assetSupplied - assetBorrowed)))
194194 then throw("this amount is not available on the market")
195195 else if ((amount > (userAssetSupplied - userAssetBorrowed)))
196196 then throw("this amount is not available for this user")
197197 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)
198198 }
199199
200200
201201
202202 @Callable(i)
203203 func borrow (assetIdStr,assetAmount) = {
204204 let address = toString(i.caller)
205- let $t061866253 = getActualRate(assetIdStr, "bRate")
206- let bRate = $t061866253._1
207- let ratesRecalcResult = $t061866253._2
205+ let $t061926259 = getActualRate(assetIdStr, "bRate")
206+ let bRate = $t061926259._1
207+ let ratesRecalcResult = $t061926259._2
208208 let amount = fraction(assetAmount, Scale16, bRate)
209209 let price = getTokenPrice(assetIdStr)._2
210210 let decimals = if ((assetIdStr == "WAVES"))
211211 then 8
212212 else value(assetInfo(fromBase58String(assetIdStr))).decimals
213213 let assetScale = pow(10, 0, decimals, 0, 0, DOWN)
214214 let usdEquivalent = fraction(amount, price, assetScale)
215215 let collateralValueInv = invoke(this, "getUserCollateral", [false, address, true], nil)
216216 if ((collateralValueInv == collateralValueInv))
217217 then {
218218 let collateralValue = match collateralValueInv {
219219 case x: Int =>
220220 x
221221 case _ =>
222222 throw("can't get user collateral value")
223223 }
224224 if ((usdEquivalent > collateralValue))
225225 then throw("you have to supply more to borrow")
226226 else {
227227 let assetSupplied = tryGetInteger(("total_supplied_" + assetIdStr))
228228 let assetBorrowed = tryGetInteger(("total_borrowed_" + assetIdStr))
229229 let userAssetBorrowed = tryGetInteger(((address + "_borrowed_") + assetIdStr))
230230 if ((amount > (assetSupplied - assetBorrowed)))
231231 then throw("this amount is not available")
232232 else ([IntegerEntry(((address + "_borrowed_") + assetIdStr), (userAssetBorrowed + amount)), IntegerEntry(("total_borrowed_" + assetIdStr), (assetBorrowed + amount)), ScriptTransfer(i.caller, amount, getAssetBytes(assetIdStr))] ++ ratesRecalcResult)
233233 }
234234 }
235235 else throw("Strict value is not equal to itself.")
236236 }
237237
238238
239239
240240 @Callable(i)
241241 func repay () = if (!(tryGetBoolean("setup_active")))
242242 then throw("market is stopped")
243243 else if (if ((size(i.payments) != 1))
244244 then true
245245 else (i.payments[0].amount == 0))
246246 then throw("1 payment has to be attached")
247247 else {
248248 let assetIdStr = getAssetString(i.payments[0].assetId)
249249 let assetAmount = i.payments[0].amount
250- let $t078247891 = getActualRate(assetIdStr, "bRate")
251- let bRate = $t078247891._1
252- let ratesRecalcResult = $t078247891._2
250+ let $t078307897 = getActualRate(assetIdStr, "bRate")
251+ let bRate = $t078307897._1
252+ let ratesRecalcResult = $t078307897._2
253253 let amount = fraction(assetAmount, Scale16, bRate)
254254 let address = toString(i.caller)
255255 let assetSupplied = tryGetInteger(("total_supplied_" + assetIdStr))
256256 let assetBorrowed = tryGetInteger(("total_borrowed_" + assetIdStr))
257257 let userAssetBorrowed = tryGetInteger(((address + "_borrowed_") + assetIdStr))
258258 if ((indexOf(tryGetString("setup_tokens"), assetIdStr) == unit))
259259 then throw("this asset is not supported by the market")
260260 else if ((amount > userAssetBorrowed))
261261 then throw("payed amount is bigger than user's borrowed amount")
262262 else ([IntegerEntry(((address + "_borrowed_") + assetIdStr), (userAssetBorrowed - amount)), IntegerEntry(("total_borrowed_" + assetIdStr), (assetBorrowed - amount))] ++ ratesRecalcResult)
263263 }
264264
265265
266266
267267 @Callable(i)
268268 func calculateUtilizationRatio (assetIdStr,debug) = if (debug)
269269 then throw(toString(getUr(assetIdStr)))
270270 else $Tuple2(nil, getUr(assetIdStr))
271271
272272
273273
274274 @Callable(i)
275275 func calculateTokenRates (debug) = {
276276 func f (accum,assetIdStr) = {
277277 let rates = tokenRatesRecalc(assetIdStr)
278278 ((((accum + toString(rates[1].value)) + "|") + toString(rates[0].value)) + ",")
279279 }
280280
281281 let parameter = {
282282 let $l = getMarketAssets()
283283 let $s = size($l)
284284 let $acc0 = ""
285285 func $f0_1 ($a,$i) = if (($i >= $s))
286286 then $a
287287 else f($a, $l[$i])
288288
289289 func $f0_2 ($a,$i) = if (($i >= $s))
290290 then $a
291291 else throw("List size exceeds 6")
292292
293293 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6)
294294 }
295295 if (debug)
296296 then throw(parameter)
297297 else $Tuple2(nil, parameter)
298298 }
299299
300300
301301
302302 @Callable(i)
303303 func calculateTokensInterest (debug) = {
304304 let dailyInterest = tryGetInteger("setup_interest")
305305 func f (accum,assetIdStr) = {
306306 let ur = getUr(assetIdStr)
307307 let rate = getInterest(assetIdStr)
308308 ((accum + toString(rate)) + ",")
309309 }
310310
311311 let parameter = {
312312 let $l = getMarketAssets()
313313 let $s = size($l)
314314 let $acc0 = ""
315315 func $f0_1 ($a,$i) = if (($i >= $s))
316316 then $a
317317 else f($a, $l[$i])
318318
319319 func $f0_2 ($a,$i) = if (($i >= $s))
320320 then $a
321321 else throw("List size exceeds 6")
322322
323323 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6)
324324 }
325325 if (debug)
326326 then throw(parameter)
327327 else $Tuple2(nil, parameter)
328328 }
329329
330330
331331
332332 @Callable(i)
333333 func getUserCollateral (debug,address,minusBorrowed) = {
334334 let assets = getMarketAssets()
335335 let ltvs = split(tryGetString("setup_ltvs"), ",")
336336 let rates = getActualRate(assets[0], "sRate")._2
337337 func f (accum,next) = if ((next >= size(assets)))
338338 then accum
339339 else {
340340 let decimals = if ((assets[next] == "WAVES"))
341341 then 8
342342 else value(assetInfo(fromBase58String(assets[next]))).decimals
343343 let assetScale = pow(10, 0, decimals, 0, 0, DOWN)
344344 let assetPrice = getTokenPrice(assets[next])
345345 ((accum + fraction(fraction(fraction(tryGetInteger(((address + "_supplied_") + assets[next])), rates[(next * 3)].value, Scale16), parseIntValue(ltvs[next]), Scale8), assetPrice._1, assetScale)) - (if (minusBorrowed)
346346 then fraction(fraction(tryGetInteger(((address + "_borrowed_") + assets[next])), rates[((next * 3) + 1)].value, Scale16), assetPrice._2, assetScale)
347347 else 0))
348348 }
349349
350350 let result = {
351351 let $l = [0, 1, 2, 3, 4, 5]
352352 let $s = size($l)
353353 let $acc0 = 0
354354 func $f0_1 ($a,$i) = if (($i >= $s))
355355 then $a
356356 else f($a, $l[$i])
357357
358358 func $f0_2 ($a,$i) = if (($i >= $s))
359359 then $a
360360 else throw("List size exceeds 6")
361361
362362 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6)
363363 }
364364 if (debug)
365365 then throw(toString(result))
366366 else $Tuple2(rates, result)
367367 }
368368
369369
370370
371371 @Callable(i)
372372 func getPrices (debug) = {
373373 let assets = getMarketAssets()
374374 func f (accum,next) = if ((next >= size(assets)))
375375 then accum
376376 else {
377377 let assetPrice = getTokenPrice(assets[next])
378378 ((((accum + toString(assetPrice._1)) + ",") + toString(assetPrice._2)) + "|")
379379 }
380380
381381 let result = {
382382 let $l = [0, 1, 2, 3, 4, 5]
383383 let $s = size($l)
384384 let $acc0 = ""
385385 func $f0_1 ($a,$i) = if (($i >= $s))
386386 then $a
387387 else f($a, $l[$i])
388388
389389 func $f0_2 ($a,$i) = if (($i >= $s))
390390 then $a
391391 else throw("List size exceeds 6")
392392
393393 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6)
394394 }
395395 if (debug)
396396 then throw(result)
397397 else $Tuple2(nil, result)
398398 }
399399
400400
401401 @Verifier(tx)
402402 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
403403

github/deemru/w8io/3ef1775 
77.07 ms