tx · 2CFoF9fYGsUPz9S28qn443bm8Wa5ont8M9BiqMiNJ9Xr

3PEhGDwvjrjVKRPv5kHkjfDLmBJK1dd2frT:  -0.01900000 Waves

2022.09.03 03:25 [3277731] smart account 3PEhGDwvjrjVKRPv5kHkjfDLmBJK1dd2frT > SELF 0.00000000 Waves

{ "type": 13, "id": "2CFoF9fYGsUPz9S28qn443bm8Wa5ont8M9BiqMiNJ9Xr", "fee": 1900000, "feeAssetId": null, "timestamp": 1662164753057, "version": 2, "chainId": 87, "sender": "3PEhGDwvjrjVKRPv5kHkjfDLmBJK1dd2frT", "senderPublicKey": "BjDUSXyo3yUJSxVFdH2pYANz31E6xzH7rdyYLBMRvHE2", "proofs": [ "54Wc5KrjyTwgCP3BWE48pBuHJJ4Ra1ZsJQ1uRResX39Eu53m2nZNm3PrYzAaTqH8XPZFBQWVFMpMz97F8dqwGPKe" ], "script": "base64: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BXNSYXRlBAAAAAVzUmF0ZQgFAAAACyR0MDQ1NDI0NjA5AAAAAl8xBAAAABFyYXRlc1JlY2FsY1Jlc3VsdAgFAAAACyR0MDQ1NDI0NjA5AAAAAl8yBAAAAAZhbW91bnQJAABrAAAAAwUAAAALYXNzZXRBbW91bnQFAAAAB1NjYWxlMTYFAAAABXNSYXRlBAAAAAdhZGRyZXNzCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAANYXNzZXRTdXBwbGllZAkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAICAAAAD3RvdGFsX3N1cHBsaWVkXwUAAAAKYXNzZXRJZFN0cgQAAAANYXNzZXRCb3Jyb3dlZAkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAICAAAAD3RvdGFsX2JvcnJvd2VkXwUAAAAKYXNzZXRJZFN0cgQAAAARdXNlckFzc2V0U3VwcGxpZWQJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAIFAAAAB2FkZHJlc3MCAAAACl9zdXBwbGllZF8FAAAACmFzc2V0SWRTdHIEAAAAEXVzZXJBc3NldEJvcnJvd2VkCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgkAASwAAAACBQAAAAdhZGRyZXNzAgAAAApfYm9ycm93ZWRfBQAAAAphc3NldElkU3RyAwkBAAAAASEAAAABCQEAAAANdHJ5R2V0Qm9vbGVhbgAAAAECAAAADHNldHVwX2FjdGl2ZQkAAAIAAAABAgAAABFtYXJrZXQgaXMgc3RvcHBlZAMJAABmAAAAAgUAAAAGYW1vdW50CQAAZQAAAAIFAAAADWFzc2V0U3VwcGxpZWQFAAAADWFzc2V0Qm9ycm93ZWQJAAACAAAAAQIAAAAqdGhpcyBhbW91bnQgaXMgbm90IGF2YWlsYWJsZSBvbiB0aGUgbWFya2V0AwkAAGYAAAACBQAAAAZhbW91bnQJAABlAAAAAgUAAAARdXNlckFzc2V0U3VwcGxpZWQFAAAAEXVzZXJBc3NldEJvcnJvd2VkCQAAAgAAAAECAAAAKnRoaXMgYW1vdW50IGlzIG5vdCBhdmFpbGFibGUgZm9yIHRoaXMgdXNlcgkABE4AAAACCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAHYWRkcmVzcwIAAAAKX3N1cHBsaWVkXwUAAAAKYXNzZXRJZFN0cgkAAGUAAAACCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgkAASwAAAACBQAAAAdhZGRyZXNzAgAAAApfc3VwcGxpZWRfBQAAAAphc3NldElkU3RyBQAAAAZhbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgIAAAAPdG90YWxfc3VwcGxpZWRfBQAAAAphc3NldElkU3RyCQAAZQAAAAIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACAgAAAA90b3RhbF9zdXBwbGllZF8FAAAACmFzc2V0SWRTdHIFAAAABmFtb3VudAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAABmFtb3VudAkBAAAADWdldEFzc2V0Qnl0ZXMAAAABBQAAAAphc3NldElkU3RyBQAAAANuaWwFAAAAEXJhdGVzUmVjYWxjUmVzdWx0AAAAAWkBAAAABmJvcnJvdwAAAAIAAAAKYXNzZXRJZFN0cgAAAAthc3NldEFtb3VudAQAAAAHYWRkcmVzcwkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAACyR0MDU3NTQ1ODIxCQEAAAANZ2V0QWN0dWFsUmF0ZQAAAAIFAAAACmFzc2V0SWRTdHICAAAABWJSYXRlBAAAAAViUmF0ZQgFAAAACyR0MDU3NTQ1ODIxAAAAAl8xBAAAABFyYXRlc1JlY2FsY1Jlc3VsdAgFAAAACyR0MDU3NTQ1ODIxAAAAAl8yBAAAAAZhbW91bnQJAABrAAAAAwUAAAALYXNzZXRBbW91bnQFAAAAB1NjYWxlMTYFAAAABWJSYXRlBAAAAAVwcmljZQgJAQAAAA1nZXRUb2tlblByaWNlAAAAAQUAAAAKYXNzZXRJZFN0cgAAAAJfMgQAAAAKYXNzZXRTY2FsZQkAAGwAAAAGAAAAAAAAAAAKAAAAAAAAAAAACAkBAAAABXZhbHVlAAAAAQkAA+wAAAABCQACWQAAAAEFAAAACmFzc2V0SWRTdHIAAAAIZGVjaW1hbHMAAAAAAAAAAAAAAAAAAAAAAAAFAAAABERPV04EAAAADXVzZEVxdWl2YWxlbnQJAABrAAAAAwUAAAAGYW1vdW50BQAAAAVwcmljZQUAAAAKYXNzZXRTY2FsZQQAAAASY29sbGF0ZXJhbFZhbHVlSW52CQAD/AAAAAQFAAAABHRoaXMCAAAAEWdldFVzZXJDb2xsYXRlcmFsCQAETAAAAAIHCQAETAAAAAIFAAAAB2FkZHJlc3MJAARMAAAAAgYFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAABJjb2xsYXRlcmFsVmFsdWVJbnYFAAAAEmNvbGxhdGVyYWxWYWx1ZUludgQAAAAPY29sbGF0ZXJhbFZhbHVlBAAAAAckbWF0Y2gwBQAAABJjb2xsYXRlcmFsVmFsdWVJbnYDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABeAUAAAAHJG1hdGNoMAUAAAABeAkAAAIAAAABAgAAAB9jYW4ndCBnZXQgdXNlciBjb2xsYXRlcmFsIHZhbHVlAwkAAGYAAAACBQAAAA11c2RFcXVpdmFsZW50BQAAAA9jb2xsYXRlcmFsVmFsdWUJAAACAAAAAQIAAAAheW91IGhhdmUgdG8gc3VwcGx5IG1vcmUgdG8gYm9ycm93BAAAAA1hc3NldFN1cHBsaWVkCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgIAAAAPdG90YWxfc3VwcGxpZWRfBQAAAAphc3NldElkU3RyBAAAAA1hc3NldEJvcnJvd2VkCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgIAAAAPdG90YWxfYm9ycm93ZWRfBQAAAAphc3NldElkU3RyBAAAABF1c2VyQXNzZXRCb3Jyb3dlZAkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAIJAAEsAAAAAgUAAAAHYWRkcmVzcwIAAAAKX2JvcnJvd2VkXwUAAAAKYXNzZXRJZFN0cgMJAABmAAAAAgUAAAAGYW1vdW50CQAAZQAAAAIFAAAADWFzc2V0U3VwcGxpZWQFAAAADWFzc2V0Qm9ycm93ZWQJAAACAAAAAQIAAAAcdGhpcyBhbW91bnQgaXMgbm90IGF2YWlsYWJsZQkABE4AAAACCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAHYWRkcmVzcwIAAAAKX2JvcnJvd2VkXwUAAAAKYXNzZXRJZFN0cgkAAGQAAAACBQAAABF1c2VyQXNzZXRCb3Jyb3dlZAUAAAAGYW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAICAAAAD3RvdGFsX2JvcnJvd2VkXwUAAAAKYXNzZXRJZFN0cgkAAGQAAAACBQAAAA1hc3NldEJvcnJvd2VkBQAAAAZhbW91bnQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAAZhbW91bnQJAQAAAA1nZXRBc3NldEJ5dGVzAAAAAQUAAAAKYXNzZXRJZFN0cgUAAAADbmlsBQAAABFyYXRlc1JlY2FsY1Jlc3VsdAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAFcmVwYXkAAAAAAwkBAAAAASEAAAABCQEAAAANdHJ5R2V0Qm9vbGVhbgAAAAECAAAADHNldHVwX2FjdGl2ZQkAAAIAAAABAgAAABFtYXJrZXQgaXMgc3RvcHBlZAMDCQEAAAACIT0AAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABBgkAAAAAAAACCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQAAAAAAAAAAAAJAAACAAAAAQIAAAAcMSBwYXltZW50IGhhcyB0byBiZSBhdHRhY2hlZAQAAAAKYXNzZXRJZFN0cgkBAAAADmdldEFzc2V0U3RyaW5nAAAAAQgJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAHYXNzZXRJZAQAAAALYXNzZXRBbW91bnQICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAABmFtb3VudAQAAAALJHQwNzMyMzczOTAJAQAAAA1nZXRBY3R1YWxSYXRlAAAAAgUAAAAKYXNzZXRJZFN0cgIAAAAFYlJhdGUEAAAABWJSYXRlCAUAAAALJHQwNzMyMzczOTAAAAACXzEEAAAAEXJhdGVzUmVjYWxjUmVzdWx0CAUAAAALJHQwNzMyMzczOTAAAAACXzIEAAAABmFtb3VudAkAAGsAAAADBQAAAAthc3NldEFtb3VudAUAAAAHU2NhbGUxNgUAAAAFYlJhdGUEAAAAB2FkZHJlc3MJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAAA1hc3NldFN1cHBsaWVkCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgIAAAAPdG90YWxfc3VwcGxpZWRfBQAAAAphc3NldElkU3RyBAAAAA1hc3NldEJvcnJvd2VkCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgIAAAAPdG90YWxfYm9ycm93ZWRfBQAAAAphc3NldElkU3RyBAAAABF1c2VyQXNzZXRCb3Jyb3dlZAkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAIJAAEsAAAAAgUAAAAHYWRkcmVzcwIAAAAKX2JvcnJvd2VkXwUAAAAKYXNzZXRJZFN0cgMJAAAAAAAAAgkABLMAAAACCQEAAAAMdHJ5R2V0U3RyaW5nAAAAAQIAAAAMc2V0dXBfdG9rZW5zBQAAAAphc3NldElkU3RyBQAAAAR1bml0CQAAAgAAAAECAAAAKXRoaXMgYXNzZXQgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgbWFya2V0AwkAAGYAAAACBQAAAAZhbW91bnQFAAAAEXVzZXJBc3NldEJvcnJvd2VkCQAAAgAAAAECAAAAMnBheWVkIGFtb3VudCBpcyBiaWdnZXIgdGhhbiB1c2VyJ3MgYm9ycm93ZWQgYW1vdW50CQAETgAAAAIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACBQAAAAdhZGRyZXNzAgAAAApfYm9ycm93ZWRfBQAAAAphc3NldElkU3RyCQAAZQAAAAIFAAAAEXVzZXJBc3NldEJvcnJvd2VkBQAAAAZhbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgIAAAAPdG90YWxfYm9ycm93ZWRfBQAAAAphc3NldElkU3RyCQAAZQAAAAIFAAAADWFzc2V0Qm9ycm93ZWQFAAAA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", "height": 3277731, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Hk1QfMJW8SM95G5F5naXfbrY79bzSp7MG6zi1qztNJRH Next: GZfg9wTpmvyBrhxqGYBVpSZE5QXPu5i7pgzQk1AsVNh Diff:
OldNewDifferences
118118 then $Tuple2(15000000, 15000000)
119119 else if ((assetIdStr == "WAVES"))
120120 then $Tuple2(5000000, 5000000)
121- else $Tuple2(1000000, 1000000)
121+ else if ((assetIdStr == "Ajso6nTTjptu2UHLx6hfSXVtHFtRBJCkKYd5SAyj7zf5"))
122+ then $Tuple2(2000000, 2000000)
123+ else if ((assetIdStr == "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ"))
124+ then $Tuple2(1000000, 1000000)
125+ else if ((assetIdStr == "6XtHjpXbs9RRJP2Sr9GUyVqzACcby9TkThHXnjVC5CDJ"))
126+ then $Tuple2(1000000, 1000000)
127+ else $Tuple2(950000, 950000)
122128
123129
124130 @Callable(i)
154160 else {
155161 let assetIdStr = getAssetString(i.payments[0].assetId)
156162 let assetAmount = i.payments[0].amount
157- let $t036193686 = getActualRate(assetIdStr, "sRate")
158- let sRate = $t036193686._1
159- let ratesRecalcResult = $t036193686._2
163+ let $t039113978 = getActualRate(assetIdStr, "sRate")
164+ let sRate = $t039113978._1
165+ let ratesRecalcResult = $t039113978._2
160166 let amount = fraction(assetAmount, Scale16, sRate)
161167 let address = toString(i.caller)
162168 if ((indexOf(tryGetString("setup_tokens"), assetIdStr) == unit))
168174
169175 @Callable(i)
170176 func withdraw (assetIdStr,assetAmount) = {
171- let $t042504317 = getActualRate(assetIdStr, "sRate")
172- let sRate = $t042504317._1
173- let ratesRecalcResult = $t042504317._2
177+ let $t045424609 = getActualRate(assetIdStr, "sRate")
178+ let sRate = $t045424609._1
179+ let ratesRecalcResult = $t045424609._2
174180 let amount = fraction(assetAmount, Scale16, sRate)
175181 let address = toString(i.caller)
176182 let assetSupplied = tryGetInteger(("total_supplied_" + assetIdStr))
191197 @Callable(i)
192198 func borrow (assetIdStr,assetAmount) = {
193199 let address = toString(i.caller)
194- let $t054625529 = getActualRate(assetIdStr, "bRate")
195- let bRate = $t054625529._1
196- let ratesRecalcResult = $t054625529._2
200+ let $t057545821 = getActualRate(assetIdStr, "bRate")
201+ let bRate = $t057545821._1
202+ let ratesRecalcResult = $t057545821._2
197203 let amount = fraction(assetAmount, Scale16, bRate)
198204 let price = getTokenPrice(assetIdStr)._2
199205 let assetScale = pow(10, 0, value(assetInfo(fromBase58String(assetIdStr))).decimals, 0, 0, DOWN)
233239 else {
234240 let assetIdStr = getAssetString(i.payments[0].assetId)
235241 let assetAmount = i.payments[0].amount
236- let $t070317098 = getActualRate(assetIdStr, "bRate")
237- let bRate = $t070317098._1
238- let ratesRecalcResult = $t070317098._2
242+ let $t073237390 = getActualRate(assetIdStr, "bRate")
243+ let bRate = $t073237390._1
244+ let ratesRecalcResult = $t073237390._2
239245 let amount = fraction(assetAmount, Scale16, bRate)
240246 let address = toString(i.caller)
241247 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) = toInt(fraction(toBigInt(Scale8), (toBigInt(tryGetInteger(("total_borrowed_" + assetIdStr))) * toBigInt(tryGetInteger((assetIdStr + "_bRate")))), (toBigInt(tryGetInteger(("total_supplied_" + assetIdStr))) * toBigInt(tryGetInteger((assetIdStr + "_sRate"))))))
5353
5454
5555 func getInterest (assetIdStr) = {
5656 let ur = getUr(assetIdStr)
5757 let dailyInterest = tryGetInteger("setup_interest")
5858 max([(fraction(dailyInterest, ur, dayBlocks) / Scale8), 1])
5959 }
6060
6161
6262 func tokenRatesRecalc (assetIdStr) = {
6363 let interest = getInterest(assetIdStr)
6464 let ur = getUr(assetIdStr)
6565 let lastRecalcHeight = tryGetInteger("lastRateHeight")
6666 let lastBRate = tryGetInteger((assetIdStr + "_bRate"))
6767 let newBRate = (lastBRate + ((height - lastRecalcHeight) * interest))
6868 let lastSRate = tryGetInteger((assetIdStr + "_sRate"))
6969 let newSRate = (lastSRate + ((height - lastRecalcHeight) * fraction(interest, ur, Scale8)))
7070 [IntegerEntry((assetIdStr + "_sRate"), newSRate), IntegerEntry((assetIdStr + "_bRate"), newBRate), IntegerEntry("lastRateHeight", height)]
7171 }
7272
7373
7474 func getActualRate (assetIdStr,rateType) = {
7575 func f (accum,token) = {
7676 let recalc = tokenRatesRecalc(token)
7777 $Tuple2(if ((token != assetIdStr))
7878 then accum._1
7979 else if ((rateType == "sRate"))
8080 then recalc[0].value
8181 else recalc[1].value, (accum._2 ++ recalc))
8282 }
8383
8484 let $l = getMarketAssets()
8585 let $s = size($l)
8686 let $acc0 = $Tuple2(0, nil)
8787 func $f0_1 ($a,$i) = if (($i >= $s))
8888 then $a
8989 else f($a, $l[$i])
9090
9191 func $f0_2 ($a,$i) = if (($i >= $s))
9292 then $a
9393 else throw("List size exceeds 6")
9494
9595 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6)
9696 }
9797
9898
9999 func ratesRecalc () = {
100100 func f (accum,token) = (accum ++ tokenRatesRecalc(token))
101101
102102 let $l = getMarketAssets()
103103 let $s = size($l)
104104 let $acc0 = nil
105105 func $f0_1 ($a,$i) = if (($i >= $s))
106106 then $a
107107 else f($a, $l[$i])
108108
109109 func $f0_2 ($a,$i) = if (($i >= $s))
110110 then $a
111111 else throw("List size exceeds 6")
112112
113113 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6)
114114 }
115115
116116
117117 func getTokenPrice (assetIdStr) = if ((assetIdStr == "HEB8Qaw9xrWpWs8tHsiATYGBWDBtP2S7kcPALrMu43AS"))
118118 then $Tuple2(15000000, 15000000)
119119 else if ((assetIdStr == "WAVES"))
120120 then $Tuple2(5000000, 5000000)
121- else $Tuple2(1000000, 1000000)
121+ else if ((assetIdStr == "Ajso6nTTjptu2UHLx6hfSXVtHFtRBJCkKYd5SAyj7zf5"))
122+ then $Tuple2(2000000, 2000000)
123+ else if ((assetIdStr == "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ"))
124+ then $Tuple2(1000000, 1000000)
125+ else if ((assetIdStr == "6XtHjpXbs9RRJP2Sr9GUyVqzACcby9TkThHXnjVC5CDJ"))
126+ then $Tuple2(1000000, 1000000)
127+ else $Tuple2(950000, 950000)
122128
123129
124130 @Callable(i)
125131 func preInit (tokens,ltvs,dailyPercent) = {
126132 func f (accum,token) = (accum ++ [IntegerEntry((token + "_bRate"), Scale16), IntegerEntry((token + "_sRate"), Scale16)])
127133
128134 let rates = {
129135 let $l = split(tokens, ",")
130136 let $s = size($l)
131137 let $acc0 = nil
132138 func $f0_1 ($a,$i) = if (($i >= $s))
133139 then $a
134140 else f($a, $l[$i])
135141
136142 func $f0_2 ($a,$i) = if (($i >= $s))
137143 then $a
138144 else throw("List size exceeds 6")
139145
140146 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6)
141147 }
142148 ([StringEntry("setup_tokens", tokens), StringEntry("setup_ltvs", ltvs), IntegerEntry("setup_interest", dailyPercent), BooleanEntry("setup_active", true)] ++ rates)
143149 }
144150
145151
146152
147153 @Callable(i)
148154 func supply () = if (!(tryGetBoolean("setup_active")))
149155 then throw("market is stopped")
150156 else if (if ((size(i.payments) != 1))
151157 then true
152158 else (i.payments[0].amount == 0))
153159 then throw("1 payment has to be attached")
154160 else {
155161 let assetIdStr = getAssetString(i.payments[0].assetId)
156162 let assetAmount = i.payments[0].amount
157- let $t036193686 = getActualRate(assetIdStr, "sRate")
158- let sRate = $t036193686._1
159- let ratesRecalcResult = $t036193686._2
163+ let $t039113978 = getActualRate(assetIdStr, "sRate")
164+ let sRate = $t039113978._1
165+ let ratesRecalcResult = $t039113978._2
160166 let amount = fraction(assetAmount, Scale16, sRate)
161167 let address = toString(i.caller)
162168 if ((indexOf(tryGetString("setup_tokens"), assetIdStr) == unit))
163169 then throw("this asset is not supported by the market")
164170 else ([IntegerEntry(((address + "_supplied_") + assetIdStr), (tryGetInteger(((address + "_supplied_") + assetIdStr)) + amount)), IntegerEntry(("total_supplied_" + assetIdStr), (tryGetInteger(("total_supplied_" + assetIdStr)) + amount))] ++ ratesRecalcResult)
165171 }
166172
167173
168174
169175 @Callable(i)
170176 func withdraw (assetIdStr,assetAmount) = {
171- let $t042504317 = getActualRate(assetIdStr, "sRate")
172- let sRate = $t042504317._1
173- let ratesRecalcResult = $t042504317._2
177+ let $t045424609 = getActualRate(assetIdStr, "sRate")
178+ let sRate = $t045424609._1
179+ let ratesRecalcResult = $t045424609._2
174180 let amount = fraction(assetAmount, Scale16, sRate)
175181 let address = toString(i.caller)
176182 let assetSupplied = tryGetInteger(("total_supplied_" + assetIdStr))
177183 let assetBorrowed = tryGetInteger(("total_borrowed_" + assetIdStr))
178184 let userAssetSupplied = tryGetInteger(((address + "_supplied_") + assetIdStr))
179185 let userAssetBorrowed = tryGetInteger(((address + "_borrowed_") + assetIdStr))
180186 if (!(tryGetBoolean("setup_active")))
181187 then throw("market is stopped")
182188 else if ((amount > (assetSupplied - assetBorrowed)))
183189 then throw("this amount is not available on the market")
184190 else if ((amount > (userAssetSupplied - userAssetBorrowed)))
185191 then throw("this amount is not available for this user")
186192 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)
187193 }
188194
189195
190196
191197 @Callable(i)
192198 func borrow (assetIdStr,assetAmount) = {
193199 let address = toString(i.caller)
194- let $t054625529 = getActualRate(assetIdStr, "bRate")
195- let bRate = $t054625529._1
196- let ratesRecalcResult = $t054625529._2
200+ let $t057545821 = getActualRate(assetIdStr, "bRate")
201+ let bRate = $t057545821._1
202+ let ratesRecalcResult = $t057545821._2
197203 let amount = fraction(assetAmount, Scale16, bRate)
198204 let price = getTokenPrice(assetIdStr)._2
199205 let assetScale = pow(10, 0, value(assetInfo(fromBase58String(assetIdStr))).decimals, 0, 0, DOWN)
200206 let usdEquivalent = fraction(amount, price, assetScale)
201207 let collateralValueInv = invoke(this, "getUserCollateral", [false, address, true], nil)
202208 if ((collateralValueInv == collateralValueInv))
203209 then {
204210 let collateralValue = match collateralValueInv {
205211 case x: Int =>
206212 x
207213 case _ =>
208214 throw("can't get user collateral value")
209215 }
210216 if ((usdEquivalent > collateralValue))
211217 then throw("you have to supply more to borrow")
212218 else {
213219 let assetSupplied = tryGetInteger(("total_supplied_" + assetIdStr))
214220 let assetBorrowed = tryGetInteger(("total_borrowed_" + assetIdStr))
215221 let userAssetBorrowed = tryGetInteger(((address + "_borrowed_") + assetIdStr))
216222 if ((amount > (assetSupplied - assetBorrowed)))
217223 then throw("this amount is not available")
218224 else ([IntegerEntry(((address + "_borrowed_") + assetIdStr), (userAssetBorrowed + amount)), IntegerEntry(("total_borrowed_" + assetIdStr), (assetBorrowed + amount)), ScriptTransfer(i.caller, amount, getAssetBytes(assetIdStr))] ++ ratesRecalcResult)
219225 }
220226 }
221227 else throw("Strict value is not equal to itself.")
222228 }
223229
224230
225231
226232 @Callable(i)
227233 func repay () = if (!(tryGetBoolean("setup_active")))
228234 then throw("market is stopped")
229235 else if (if ((size(i.payments) != 1))
230236 then true
231237 else (i.payments[0].amount == 0))
232238 then throw("1 payment has to be attached")
233239 else {
234240 let assetIdStr = getAssetString(i.payments[0].assetId)
235241 let assetAmount = i.payments[0].amount
236- let $t070317098 = getActualRate(assetIdStr, "bRate")
237- let bRate = $t070317098._1
238- let ratesRecalcResult = $t070317098._2
242+ let $t073237390 = getActualRate(assetIdStr, "bRate")
243+ let bRate = $t073237390._1
244+ let ratesRecalcResult = $t073237390._2
239245 let amount = fraction(assetAmount, Scale16, bRate)
240246 let address = toString(i.caller)
241247 let assetSupplied = tryGetInteger(("total_supplied_" + assetIdStr))
242248 let assetBorrowed = tryGetInteger(("total_borrowed_" + assetIdStr))
243249 let userAssetBorrowed = tryGetInteger(((address + "_borrowed_") + assetIdStr))
244250 if ((indexOf(tryGetString("setup_tokens"), assetIdStr) == unit))
245251 then throw("this asset is not supported by the market")
246252 else if ((amount > userAssetBorrowed))
247253 then throw("payed amount is bigger than user's borrowed amount")
248254 else ([IntegerEntry(((address + "_borrowed_") + assetIdStr), (userAssetBorrowed - amount)), IntegerEntry(("total_borrowed_" + assetIdStr), (assetBorrowed - amount))] ++ ratesRecalcResult)
249255 }
250256
251257
252258
253259 @Callable(i)
254260 func calculateUtilizationRatio (assetIdStr,debug) = if (debug)
255261 then throw(toString(getUr(assetIdStr)))
256262 else $Tuple2(nil, getUr(assetIdStr))
257263
258264
259265
260266 @Callable(i)
261267 func calculateTokenRates (debug) = {
262268 func f (accum,assetIdStr) = {
263269 let rates = tokenRatesRecalc(assetIdStr)
264270 ((((accum + toString(rates[1].value)) + "|") + toString(rates[0].value)) + ",")
265271 }
266272
267273 let parameter = {
268274 let $l = getMarketAssets()
269275 let $s = size($l)
270276 let $acc0 = ""
271277 func $f0_1 ($a,$i) = if (($i >= $s))
272278 then $a
273279 else f($a, $l[$i])
274280
275281 func $f0_2 ($a,$i) = if (($i >= $s))
276282 then $a
277283 else throw("List size exceeds 6")
278284
279285 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6)
280286 }
281287 if (debug)
282288 then throw(parameter)
283289 else $Tuple2(nil, parameter)
284290 }
285291
286292
287293
288294 @Callable(i)
289295 func calculateTokensInterest (debug) = {
290296 let dailyInterest = tryGetInteger("setup_interest")
291297 func f (accum,assetIdStr) = {
292298 let ur = getUr(assetIdStr)
293299 let rate = max([fraction(dailyInterest, ur, Scale8), dayBlocks])
294300 ((accum + toString(rate)) + ",")
295301 }
296302
297303 let parameter = {
298304 let $l = getMarketAssets()
299305 let $s = size($l)
300306 let $acc0 = ""
301307 func $f0_1 ($a,$i) = if (($i >= $s))
302308 then $a
303309 else f($a, $l[$i])
304310
305311 func $f0_2 ($a,$i) = if (($i >= $s))
306312 then $a
307313 else throw("List size exceeds 6")
308314
309315 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6)
310316 }
311317 if (debug)
312318 then throw(parameter)
313319 else $Tuple2(nil, parameter)
314320 }
315321
316322
317323
318324 @Callable(i)
319325 func getUserCollateral (debug,address,minusBorrowed) = {
320326 let assets = getMarketAssets()
321327 let ltvs = split(tryGetString("setup_ltvs"), ",")
322328 let rates = getActualRate(assets[0], "sRate")._2
323329 func f (accum,next) = if ((next >= size(assets)))
324330 then accum
325331 else {
326332 let assetScale = pow(10, 0, value(assetInfo(fromBase58String(assets[next]))).decimals, 0, 0, DOWN)
327333 let assetPrice = getTokenPrice(assets[next])
328334 ((accum + fraction(fraction(fraction(tryGetInteger(((address + "_supplied_") + assets[next])), rates[(next * 3)].value, Scale16), parseIntValue(ltvs[next]), Scale8), assetPrice._1, assetScale)) - (if (minusBorrowed)
329335 then fraction(fraction(tryGetInteger(((address + "_borrowed_") + assets[next])), rates[((next * 3) + 1)].value, Scale16), assetPrice._2, assetScale)
330336 else 0))
331337 }
332338
333339 let result = {
334340 let $l = [0, 1, 2, 3, 4, 5]
335341 let $s = size($l)
336342 let $acc0 = 0
337343 func $f0_1 ($a,$i) = if (($i >= $s))
338344 then $a
339345 else f($a, $l[$i])
340346
341347 func $f0_2 ($a,$i) = if (($i >= $s))
342348 then $a
343349 else throw("List size exceeds 6")
344350
345351 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6)
346352 }
347353 if (debug)
348354 then throw(toString(result))
349355 else $Tuple2(rates, result)
350356 }
351357
352358
353359 @Verifier(tx)
354360 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
355361

github/deemru/w8io/6500d08 
69.70 ms