tx · AhnVfMR7YmnBDmD9wsf9mr4MvaPZDNhUxfcyF6ZeZM8i

3P49faT5341AZsQJzbp6KEhh8Rz9h2Vq92q:  -0.01400000 Waves

2022.03.14 21:50 [3029143] smart account 3P49faT5341AZsQJzbp6KEhh8Rz9h2Vq92q > SELF 0.00000000 Waves

{ "type": 13, "id": "AhnVfMR7YmnBDmD9wsf9mr4MvaPZDNhUxfcyF6ZeZM8i", "fee": 1400000, "feeAssetId": null, "timestamp": 1647283857348, "version": 2, "chainId": 87, "sender": "3P49faT5341AZsQJzbp6KEhh8Rz9h2Vq92q", "senderPublicKey": "A7jFsmc1umRUgXzKYfq57iAbKjNw7PcqXjKNSCroApnu", "proofs": [ "5iJiSkzBZzdjmJJow4D99c97wVW3evZTJuMWiatq2aGvkSgNYccPeMMoiBrcjz3rMiDtL9CtYuppF4oksVtK6qgi" ], "script": "base64:AAIFAAAAAAAAAAcIAhIDCgEIAAAADQAAAAALZmFjdG9yc0Jhc2UAAAAAAAAAA+gBAAAADGZyYWN0aW9uQ2VpbAAAAAMAAAAFdmFsdWUAAAAJbnVtZXJhdG9yAAAAC2Rlbm9taW5hdG9yBAAAAARjYW5kCQAAawAAAAMFAAAABXZhbHVlBQAAAAludW1lcmF0b3IFAAAAC2Rlbm9taW5hdG9yBAAAAAFEAAAAAAC1BPMzBAAAAAVleGFjdAkAAAAAAAACCQAAagAAAAIJAABoAAAAAgkAAGoAAAACBQAAAARjYW5kBQAAAAFECQAAagAAAAIFAAAAC2Rlbm9taW5hdG9yBQAAAAFEBQAAAAFECQAAagAAAAIJAABoAAAAAgkAAGoAAAACBQAAAAV2YWx1ZQUAAAABRAkAAGoAAAACBQAAAAludW1lcmF0b3IFAAAAAUQFAAAAAUQDBQAAAAVleGFjdAUAAAAEY2FuZAkAAGQAAAACBQAAAARjYW5kAAAAAAAAAAABAQAAABFhc1VzZXJCYWxhbmNlRGF0YQAAAAEAAAAFdmFsdWUEAAAAByRtYXRjaDAFAAAABXZhbHVlAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAACIoSW50LCBJbnQsIEludCwgSW50LCBJbnQsIEJvb2xlYW4pBAAAAAF4BQAAAAckbWF0Y2gwBQAAAAF4BAAAAAF0BQAAAAckbWF0Y2gwCQAAAgAAAAECAAAAFWV4cGVjdGVkIGludDUmYm9vbGVhbgAAAAANcmVzZXJ2ZXNTdG9yZQIAAAAQcHJpbWFyeV9yZXNlcnZlcwAAAAAMYXNzZXRJZFN0b3JlAgAAAAdhc3NldElkAAAAAAZjb25maWcJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAECAAAAIzNQMnJKR2ZiNU1iZWl2Wk5TcWRWbXNEMVkyTXo4eTZKcjNaAAAAAAtyZXNlcnZlc1N0cgkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAABmNvbmZpZwUAAAANcmVzZXJ2ZXNTdG9yZQIAAAAWbm8gcmVzZXJ2ZXMgcmVnaXN0ZXJlZAAAAAAIcmVzZXJ2ZXMJAAS1AAAAAgUAAAALcmVzZXJ2ZXNTdHICAAAAAXwAAAAAFGFjY291bnRIZWFsdGhPdmVybGFwCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAGY29uZmlnAgAAABZhY2NvdW50X2hlYWx0aF9vdmVybGFwAgAAABlubyBhY2NvdW50X2hlYWx0aF9vdmVybGFwAQAAABBhc3NldElkT2ZSZXNlcnZlAAAAAQAAAAdyZXNlcnZlCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAHcmVzZXJ2ZQUAAAAMYXNzZXRJZFN0b3JlAgAAABVubyBhc3NldElkIGluIHJlc2VydmUBAAAAEGNvbGxhdGVyYWxGYWN0b3IAAAABAAAAB3Jlc2VydmUJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAAZjb25maWcJAAEsAAAAAgkBAAAAEGFzc2V0SWRPZlJlc2VydmUAAAABBQAAAAdyZXNlcnZlAgAAABFfQ29sbGF0ZXJhbEZhY3RvcgIAAAAdbm8gQ29sbGF0ZXJhbEZhY3RvciBpbiBjb25maWcBAAAAFGxpcXVpZGF0aW9uVGhyZXNob2xkAAAAAQAAAAdyZXNlcnZlCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAGY29uZmlnCQABLAAAAAIJAQAAABBhc3NldElkT2ZSZXNlcnZlAAAAAQUAAAAHcmVzZXJ2ZQIAAAAVX0xpcXVpZGF0aW9uVGhyZXNob2xkAgAAACFubyBMaXF1aWRhdGlvblRocmVzaG9sZCBpbiBjb25maWcBAAAAC3VzZXJCYWxhbmNlAAAAAgAAAAdyZXNlcnZlAAAABHVzZXIJAQAAABFhc1VzZXJCYWxhbmNlRGF0YQAAAAEJAAP8AAAABAUAAAAHcmVzZXJ2ZQIAAAALdXNlckJhbGFuY2UJAARMAAAAAgUAAAAEdXNlcgUAAAADbmlsBQAAAANuaWwAAAABAAAAAWkBAAAACXVzZXJQb3dlcgAAAAEAAAAEdXNlcgoBAAAABGZvbGQAAAACAAAABnRvdGFscwAAAAFyBAAAAAskdDAxNTkxMTYyMAUAAAAGdG90YWxzBAAAAAZ0b3RhbEQIBQAAAAskdDAxNTkxMTYyMAAAAAJfMQQAAAAGdG90YWxCCAUAAAALJHQwMTU5MTE2MjAAAAACXzIEAAAAB3Jlc2VydmUJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCYAAAABBQAAAAFyAgAAABNyZXNlcnZlIGJhZCBhZGRyZXNzBAAAAAJjZgkBAAAAEGNvbGxhdGVyYWxGYWN0b3IAAAABBQAAAAdyZXNlcnZlBAAAAAJsdAkBAAAAFGxpcXVpZGF0aW9uVGhyZXNob2xkAAAAAQUAAAAHcmVzZXJ2ZQQAAAALJHQwMTc5MTE4NzkJAQAAAAt1c2VyQmFsYW5jZQAAAAIFAAAAB3Jlc2VydmUFAAAABHVzZXIEAAAABXRva2VuCAUAAAALJHQwMTc5MTE4NzkAAAACXzEEAAAABWFzc2V0CAUAAAALJHQwMTc5MTE4NzkAAAACXzIEAAAACmRlcG9zaXRVc2QIBQAAAAskdDAxNzkxMTg3OQAAAAJfMwQAAAAEZGVidAgFAAAACyR0MDE3OTExODc5AAAAAl80BAAAAAdkZWJ0VXNkCAUAAAALJHQwMTc5MTE4NzkAAAACXzUEAAAADGFzQ29sbGF0ZXJhbAgFAAAACyR0MDE3OTExODc5AAAAAl82BAAAABNlZmZlY3RpdmVEZXBvc2l0VXNkAwUAAAAMYXNDb2xsYXRlcmFsBQAAAApkZXBvc2l0VXNkAAAAAAAAAAAABAAAAApvdmVybGFwVXNkCQABlwAAAAEJAARMAAAAAgUAAAAHZGVidFVzZAkABEwAAAACBQAAABNlZmZlY3RpdmVEZXBvc2l0VXNkBQAAAANuaWwEAAAADW92ZXJsYXBDaGFyZ2UJAQAAAAxmcmFjdGlvbkNlaWwAAAADBQAAAApvdmVybGFwVXNkBQAAABRhY2NvdW50SGVhbHRoT3ZlcmxhcAUAAAALZmFjdG9yc0Jhc2UDCQAAZgAAAAIFAAAAB2RlYnRVc2QFAAAAE2VmZmVjdGl2ZURlcG9zaXRVc2QJAAUUAAAAAgUAAAAGdG90YWxECQAAZAAAAAIJAABkAAAAAgUAAAAGdG90YWxCCQAAawAAAAMJAABlAAAAAgUAAAAHZGVidFVzZAUAAAATZWZmZWN0aXZlRGVwb3NpdFVzZAUAAAALZmFjdG9yc0Jhc2UFAAAAAmx0BQAAAA1vdmVybGFwQ2hhcmdlCQAFFAAAAAIJAABkAAAAAgUAAAAGdG90YWxECQAAawAAAAMJAABlAAAAAgUAAAATZWZmZWN0aXZlRGVwb3NpdFVzZAUAAAAHZGVidFVzZAUAAAACY2YFAAAAC2ZhY3RvcnNCYXNlCQAAZAAAAAIFAAAABnRvdGFsQgUAAAANb3ZlcmxhcENoYXJnZQkABRQAAAACBQAAAANuaWwKAAAAAAIkbAUAAAAIcmVzZXJ2ZXMKAAAAAAIkcwkAAZAAAAABBQAAAAIkbAoAAAAABSRhY2MwCQAFFAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAKAQAAAAUkZjBfMQAAAAIAAAACJGEAAAACJGkDCQAAZwAAAAIFAAAAAiRpBQAAAAIkcwUAAAACJGEJAQAAAARmb2xkAAAAAgUAAAACJGEJAAGRAAAAAgUAAAACJGwFAAAAAiRpCgEAAAAFJGYwXzIAAAACAAAAAiRhAAAAAiRpAwkAAGcAAAACBQAAAAIkaQUAAAACJHMFAAAAAiRhCQAAAgAAAAECAAAAE0xpc3Qgc2l6ZSBleGNlZWRzIDcJAQAAAAUkZjBfMgAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIFAAAABSRhY2MwAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAACAAAAAAAAAAADAAAAAAAAAAAEAAAAAAAAAAAFAAAAAAAAAAAGAAAAAAAAAAAHAAAAAMFx9Fk=", "height": 3029143, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2vUs2sr7FDu1NM9zoqmdF3xovD4uPb2rhTufBxcf1nfB Next: none Diff:
OldNewDifferences
2121 }
2222
2323
24-let reservesStore = "reserves"
25-
26-let configStore = "config"
24+let reservesStore = "primary_reserves"
2725
2826 let assetIdStore = "assetId"
2927
30-let viresMain = addressFromStringValue("3PAZv9tgK1PX7dKR7b4kchq5qdpUS3G5sYT")
28+let config = addressFromStringValue("3P2rJGfb5MbeivZNSqdVmsD1Y2Mz8y6Jr3Z")
3129
32-let config = addressFromStringValue(getStringValue(viresMain, configStore))
33-
34-let reservesStr = valueOrErrorMessage(getString(viresMain, reservesStore), "no reserves registered")
30+let reservesStr = valueOrErrorMessage(getString(config, reservesStore), "no reserves registered")
3531
3632 let reserves = split(reservesStr, "|")
3733
5248 @Callable(i)
5349 func userPower (user) = {
5450 func fold (totals,r) = {
55- let $t016911720 = totals
56- let totalD = $t016911720._1
57- let totalB = $t016911720._2
51+ let $t015911620 = totals
52+ let totalD = $t015911620._1
53+ let totalB = $t015911620._2
5854 let reserve = valueOrErrorMessage(addressFromString(r), "reserve bad address")
5955 let cf = collateralFactor(reserve)
6056 let lt = liquidationThreshold(reserve)
61- let $t018911979 = userBalance(reserve, user)
62- let token = $t018911979._1
63- let asset = $t018911979._2
64- let depositUsd = $t018911979._3
65- let debt = $t018911979._4
66- let debtUsd = $t018911979._5
67- let asCollateral = $t018911979._6
57+ let $t017911879 = userBalance(reserve, user)
58+ let token = $t017911879._1
59+ let asset = $t017911879._2
60+ let depositUsd = $t017911879._3
61+ let debt = $t017911879._4
62+ let debtUsd = $t017911879._5
63+ let asCollateral = $t017911879._6
6864 let effectiveDepositUsd = if (asCollateral)
6965 then depositUsd
7066 else 0
7975 let $l = reserves
8076 let $s = size($l)
8177 let $acc0 = $Tuple2(0, 0)
82- func 1 ($a,$i) = if (($i >= $s))
78+ func $f0_1 ($a,$i) = if (($i >= $s))
8379 then $a
8480 else fold($a, $l[$i])
8581
86- func 2 ($a,$i) = if (($i >= $s))
82+ func $f0_2 ($a,$i) = if (($i >= $s))
8783 then $a
8884 else throw("List size exceeds 7")
8985
90- 2(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7)
86+ $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7)
9187 })
9288 }
9389
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let factorsBase = 1000
55
66 func fractionCeil (value,numerator,denominator) = {
77 let cand = fraction(value, numerator, denominator)
88 let D = 3037000499
99 let exact = ((((cand % D) * (denominator % D)) % D) == (((value % D) * (numerator % D)) % D))
1010 if (exact)
1111 then cand
1212 else (cand + 1)
1313 }
1414
1515
1616 func asUserBalanceData (value) = match value {
1717 case x: (Int, Int, Int, Int, Int, Boolean) =>
1818 x
1919 case t =>
2020 throw("expected int5&boolean")
2121 }
2222
2323
24-let reservesStore = "reserves"
25-
26-let configStore = "config"
24+let reservesStore = "primary_reserves"
2725
2826 let assetIdStore = "assetId"
2927
30-let viresMain = addressFromStringValue("3PAZv9tgK1PX7dKR7b4kchq5qdpUS3G5sYT")
28+let config = addressFromStringValue("3P2rJGfb5MbeivZNSqdVmsD1Y2Mz8y6Jr3Z")
3129
32-let config = addressFromStringValue(getStringValue(viresMain, configStore))
33-
34-let reservesStr = valueOrErrorMessage(getString(viresMain, reservesStore), "no reserves registered")
30+let reservesStr = valueOrErrorMessage(getString(config, reservesStore), "no reserves registered")
3531
3632 let reserves = split(reservesStr, "|")
3733
3834 let accountHealthOverlap = valueOrErrorMessage(getInteger(config, "account_health_overlap"), "no account_health_overlap")
3935
4036 func assetIdOfReserve (reserve) = valueOrErrorMessage(getString(reserve, assetIdStore), "no assetId in reserve")
4137
4238
4339 func collateralFactor (reserve) = valueOrErrorMessage(getInteger(config, (assetIdOfReserve(reserve) + "_CollateralFactor")), "no CollateralFactor in config")
4440
4541
4642 func liquidationThreshold (reserve) = valueOrErrorMessage(getInteger(config, (assetIdOfReserve(reserve) + "_LiquidationThreshold")), "no LiquidationThreshold in config")
4743
4844
4945 func userBalance (reserve,user) = asUserBalanceData(invoke(reserve, "userBalance", [user], nil))
5046
5147
5248 @Callable(i)
5349 func userPower (user) = {
5450 func fold (totals,r) = {
55- let $t016911720 = totals
56- let totalD = $t016911720._1
57- let totalB = $t016911720._2
51+ let $t015911620 = totals
52+ let totalD = $t015911620._1
53+ let totalB = $t015911620._2
5854 let reserve = valueOrErrorMessage(addressFromString(r), "reserve bad address")
5955 let cf = collateralFactor(reserve)
6056 let lt = liquidationThreshold(reserve)
61- let $t018911979 = userBalance(reserve, user)
62- let token = $t018911979._1
63- let asset = $t018911979._2
64- let depositUsd = $t018911979._3
65- let debt = $t018911979._4
66- let debtUsd = $t018911979._5
67- let asCollateral = $t018911979._6
57+ let $t017911879 = userBalance(reserve, user)
58+ let token = $t017911879._1
59+ let asset = $t017911879._2
60+ let depositUsd = $t017911879._3
61+ let debt = $t017911879._4
62+ let debtUsd = $t017911879._5
63+ let asCollateral = $t017911879._6
6864 let effectiveDepositUsd = if (asCollateral)
6965 then depositUsd
7066 else 0
7167 let overlapUsd = min([debtUsd, effectiveDepositUsd])
7268 let overlapCharge = fractionCeil(overlapUsd, accountHealthOverlap, factorsBase)
7369 if ((debtUsd > effectiveDepositUsd))
7470 then $Tuple2(totalD, ((totalB + fraction((debtUsd - effectiveDepositUsd), factorsBase, lt)) + overlapCharge))
7571 else $Tuple2((totalD + fraction((effectiveDepositUsd - debtUsd), cf, factorsBase)), (totalB + overlapCharge))
7672 }
7773
7874 $Tuple2(nil, {
7975 let $l = reserves
8076 let $s = size($l)
8177 let $acc0 = $Tuple2(0, 0)
82- func 1 ($a,$i) = if (($i >= $s))
78+ func $f0_1 ($a,$i) = if (($i >= $s))
8379 then $a
8480 else fold($a, $l[$i])
8581
86- func 2 ($a,$i) = if (($i >= $s))
82+ func $f0_2 ($a,$i) = if (($i >= $s))
8783 then $a
8884 else throw("List size exceeds 7")
8985
90- 2(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7)
86+ $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7)
9187 })
9288 }
9389
9490

github/deemru/w8io/3ef1775 
72.53 ms