tx · JAqfr1F3Qc8rKbvrNFCBpPZR1k78KBfx6qEo7staTcQD

3P8dfxANHUt1ReR6EVj3Yvf7HxBhuxV9po3:  -0.01000000 Waves

2022.03.09 18:24 [3021719] smart account 3P8dfxANHUt1ReR6EVj3Yvf7HxBhuxV9po3 > SELF 0.00000000 Waves

{ "type": 13, "id": "JAqfr1F3Qc8rKbvrNFCBpPZR1k78KBfx6qEo7staTcQD", "fee": 1000000, "feeAssetId": null, "timestamp": 1646839480143, "version": 1, "sender": "3P8dfxANHUt1ReR6EVj3Yvf7HxBhuxV9po3", "senderPublicKey": "Hiai8DZx1MZ3CvqfqgH2dwDCSyXNhsehPmHUVN66c8mc", "proofs": [ "3qUbGqHofXtdFgFV4mkYWBt2suRTbGkkhTuhVT55LPJcjVqincKqBHvP3e9s68ddjv9dzuuUEhgp7TvygeJrH69S" ], "script": "base64:AAIFAAAAAAAAAAIIAgAAAAkBAAAABWFzSW50AAAAAQAAAAV2YWx1ZQQAAAAHJG1hdGNoMAUAAAAFdmFsdWUDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAADaW50BQAAAAckbWF0Y2gwBQAAAANpbnQJAAACAAAAAQIAAAAZd3JvbmcgdHlwZSwgZXhwZWN0ZWQ6IEludAEAAAAIYXNTdHJpbmcAAAABAAAABXZhbHVlBAAAAAckbWF0Y2gwBQAAAAV2YWx1ZQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFzBQAAAAckbWF0Y2gwBQAAAAFzCQAAAgAAAAECAAAAHHdyb25nIHR5cGUsIGV4cGVjdGVkOiBTdHJpbmcAAAAABFVTRE4CAAAALERHMnhGa1BkRHdLVW9Ca3pHQWhRdExwU0d6ZlhMaUNZUEV6ZUtIMkFkMjRwAAAAAARFVVJOAgAAACxEVWsyWVR4aFJvQXFNSkx1czRHMmIzZlI4aE1IVmg2ZWl5Rng1cjI5VlI2dAAAAAAMd2F2ZXNMZWFzaW5nCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMCAAAADHdhdmVzTGVhc2luZwAAAAAAAAAAKAEAAAAXZ2V0SW50ZXJlc3RSZXNlcnZlUmF0aW8AAAABAAAAB2Fzc2V0SWQKAQAAAA5nZXREaXN0cmlidXRvcgAAAAEAAAAHYXNzZXRJZAMJAAAAAAAAAgUAAAAHYXNzZXRJZAIAAAAFV0FWRVMJAAQmAAAAAQIAAAAjM1A5TEs4MkRud2h2aHloTFhtVVNCR1h5dzZTZHp5Y0RFckUDCQAAAAAAAAIFAAAAB2Fzc2V0SWQFAAAABFVTRE4JAAQmAAAAAQIAAAAjM1BDY215S3hQYk51cjd6UVBnYWY5dWN6YjhRWXRFNzFqb3UDCQAAAAAAAAIFAAAAB2Fzc2V0SWQFAAAABEVVUk4JAAQmAAAAAQIAAAAjM1BMVkdZRmRCbndDQlFRbnc4b0VmSzZXVlFQZVRxNjJQaFMFAAAABHVuaXQEAAAAByRtYXRjaDAJAQAAAA5nZXREaXN0cmlidXRvcgAAAAEFAAAAB2Fzc2V0SWQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAB0FkZHJl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", "chainId": 87, "height": 3021719, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BujR5WrccLHfQ5Lc7vmgWtbpn2qYE8zqXojAz6bEJuB1 Next: 78dNfFiP8PFSpqiX3o3rhPM7ueqvi8NtXMdGfEkeojsF Diff:
OldNewDifferences
4141 }
4242
4343
44-func getReserveInfo (reserve) = {
44+func getReserveInfo (reserve,oracle) = {
4545 let reserveAddr = addressFromStringValue(reserve)
46- let oracleStore = "oracleAddress"
47- let configAddressStore = "configAddress"
4846 let assetIdStore = "assetId"
4947 let aTokenIdStore = "aTokenId"
50- let oracle = getStringValue(reserveAddr, oracleStore)
51- if ((oracle == oracle))
48+ let assetId = getStringValue(reserveAddr, assetIdStore)
49+ if ((assetId == assetId))
5250 then {
53- let assetId = getStringValue(reserveAddr, assetIdStore)
54- if ((assetId == assetId))
51+ let aTokenId = getStringValue(reserveAddr, aTokenIdStore)
52+ if ((aTokenId == aTokenId))
5553 then {
56- let aTokenId = getStringValue(reserveAddr, aTokenIdStore)
57- if ((aTokenId == aTokenId))
54+ let price = asInt(invoke(oracle, "price", [assetId], nil))
55+ if ((price == price))
5856 then {
59- let price = asInt(invoke(addressFromStringValue(oracle), "price", [assetId], nil))
60- if ((price == price))
61- then {
62- let data = asString(invoke(reserveAddr, "advise", nil, nil))
63- if ((data == data))
64- then (((((((("price: " + toString(price)) + ", assetId: ") + assetId) + ", aTokenId: ") + aTokenId) + getInterestReserveRatio(assetId)) + ", ") + data)
65- else throw("Strict value is not equal to itself.")
66- }
57+ let data = asString(invoke(reserveAddr, "advise", nil, nil))
58+ if ((data == data))
59+ then (((((((("price: " + toString(price)) + ", assetId: ") + assetId) + ", aTokenId: ") + aTokenId) + getInterestReserveRatio(assetId)) + ", ") + data)
6760 else throw("Strict value is not equal to itself.")
6861 }
6962 else throw("Strict value is not equal to itself.")
7669
7770 func advise (main) = {
7871 let mainAddress = valueOrErrorMessage(addressFromString(main), "bad main")
79- let reservesStore = "reserves"
80- let configStore = "config"
81- let reserves = split(valueOrErrorMessage(getString(mainAddress, reservesStore), "no reserves"), "|")
82- let configAddr = addressFromStringValue(valueOrErrorMessage(getString(mainAddress, configStore), "no config in main"))
72+ let configAddr = addressFromStringValue(valueOrErrorMessage(getString(mainAddress, "config"), "eval.advise: no config in main"))
73+ let oracle = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(configAddr, "oracle_address"), "no oracle in config")), "bad oracle address")
74+ let reserves = split(valueOrErrorMessage(getString(configAddr, "primary_reserves"), "eval: no primary reserves"), "|")
8375 let general = ((((((((("height: " + toString(height)) + ", accountHealthThreshold: ") + toString(getIntegerValue(configAddr, "account_health_threshold"))) + ", accountHealthOverlap: ") + toString(getIntegerValue(configAddr, "account_health_overlap"))) + ", collapsePenalty: ") + toString(getIntegerValue(configAddr, "collapse_penalty"))) + ", wavesLeasing: ") + toString(wavesLeasing))
8476 let reserveData = {
85- func fold (totals,reserve) = (((totals + ", [ ") + getReserveInfo(reserve)) + " ] ")
77+ func fold (totals,reserve) = (((totals + ", [ ") + getReserveInfo(reserve, oracle)) + " ] ")
8678
87- let $list27372764 = reserves
88- let $size27372764 = size($list27372764)
89- let $acc027372764 = ""
90- if (($size27372764 == 0))
91- then $acc027372764
92- else {
93- let $acc127372764 = fold($acc027372764, $list27372764[0])
94- if (($size27372764 == 1))
95- then $acc127372764
96- else {
97- let $acc227372764 = fold($acc127372764, $list27372764[1])
98- if (($size27372764 == 2))
99- then $acc227372764
100- else {
101- let $acc327372764 = fold($acc227372764, $list27372764[2])
102- if (($size27372764 == 3))
103- then $acc327372764
104- else {
105- let $acc427372764 = fold($acc327372764, $list27372764[3])
106- if (($size27372764 == 4))
107- then $acc427372764
108- else {
109- let $acc527372764 = fold($acc427372764, $list27372764[4])
110- if (($size27372764 == 5))
111- then $acc527372764
112- else {
113- let $acc627372764 = fold($acc527372764, $list27372764[5])
114- if (($size27372764 == 6))
115- then $acc627372764
116- else {
117- let $acc727372764 = fold($acc627372764, $list27372764[6])
118- if (($size27372764 == 7))
119- then $acc727372764
120- else {
121- let $acc827372764 = fold($acc727372764, $list27372764[7])
122- throw("List size exceed 7")
123- }
124- }
125- }
126- }
127- }
128- }
129- }
130- }
79+ let $l = reserves
80+ let $s = size($l)
81+ let $acc0 = ""
82+ func $f0_1 ($a,$i) = if (($i >= $s))
83+ then $a
84+ else fold($a, $l[$i])
85+
86+ func $f0_2 ($a,$i) = if (($i >= $s))
87+ then $a
88+ else throw("List size exceeds 7")
89+
90+ $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)
13191 }
13292 (general + reserveData)
13393 }
13595
13696 func adviseUser (main,user) = {
13797 let mainAddress = valueOrErrorMessage(addressFromString(main), "bad main")
138- let reservesStore = "reserves"
139- let configStore = "config"
140- let reserves = split(valueOrErrorMessage(getString(mainAddress, reservesStore), "no reserves"), "|")
98+ let reserves = split(valueOrErrorMessage(getString(valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(mainAddress, "config"), "eval.adviseUser: no config in main")), "eval.adviseUser: bad config in main"), "primary_reserves"), "eval: no primary reserves"), "|")
14199 let general = ((("height: " + toString(height)) + ", user: ") + user)
142100 func fold (totals,reserve) = {
143101 let userInfo = asString(invoke(addressFromStringValue(reserve), "adviseUser", [user], nil))
146104 else throw("Strict value is not equal to itself.")
147105 }
148106
149- let $list33853417 = reserves
150- let $size33853417 = size($list33853417)
151- let $acc033853417 = general
152- if (($size33853417 == 0))
153- then $acc033853417
154- else {
155- let $acc133853417 = fold($acc033853417, $list33853417[0])
156- if (($size33853417 == 1))
157- then $acc133853417
158- else {
159- let $acc233853417 = fold($acc133853417, $list33853417[1])
160- if (($size33853417 == 2))
161- then $acc233853417
162- else {
163- let $acc333853417 = fold($acc233853417, $list33853417[2])
164- if (($size33853417 == 3))
165- then $acc333853417
166- else {
167- let $acc433853417 = fold($acc333853417, $list33853417[3])
168- if (($size33853417 == 4))
169- then $acc433853417
170- else {
171- let $acc533853417 = fold($acc433853417, $list33853417[4])
172- if (($size33853417 == 5))
173- then $acc533853417
174- else {
175- let $acc633853417 = fold($acc533853417, $list33853417[5])
176- if (($size33853417 == 6))
177- then $acc633853417
178- else {
179- let $acc733853417 = fold($acc633853417, $list33853417[6])
180- if (($size33853417 == 7))
181- then $acc733853417
182- else {
183- let $acc833853417 = fold($acc733853417, $list33853417[7])
184- throw("List size exceed 7")
185- }
186- }
187- }
188- }
189- }
190- }
191- }
192- }
107+ let $l = reserves
108+ let $s = size($l)
109+ let $acc0 = general
110+ func $f0_1 ($a,$i) = if (($i >= $s))
111+ then $a
112+ else fold($a, $l[$i])
113+
114+ func $f0_2 ($a,$i) = if (($i >= $s))
115+ then $a
116+ else throw("List size exceeds 7")
117+
118+ $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)
193119 }
194120
195121
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func asInt (value) = match value {
55 case int: Int =>
66 int
77 case _ =>
88 throw("wrong type, expected: Int")
99 }
1010
1111
1212 func asString (value) = match value {
1313 case s: String =>
1414 s
1515 case _ =>
1616 throw("wrong type, expected: String")
1717 }
1818
1919
2020 let USDN = "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p"
2121
2222 let EURN = "DUk2YTxhRoAqMJLus4G2b3fR8hMHVh6eiyFx5r29VR6t"
2323
2424 let wavesLeasing = valueOrElse(getInteger(this, "wavesLeasing"), 40)
2525
2626 func getInterestReserveRatio (assetId) = {
2727 func getDistributor (assetId) = if ((assetId == "WAVES"))
2828 then addressFromString("3P9LK82DnwhvhyhLXmUSBGXyw6SdzycDErE")
2929 else if ((assetId == USDN))
3030 then addressFromString("3PCcmyKxPbNur7zQPgaf9uczb8QYtE71jou")
3131 else if ((assetId == EURN))
3232 then addressFromString("3PLVGYFdBnwCBQQnw8oEfK6WVQPeTq62PhS")
3333 else unit
3434
3535 match getDistributor(assetId) {
3636 case d: Address =>
3737 (", interestReserveRatio: " + toString(valueOrElse(getInteger(d, "ratio"), 0)))
3838 case _ =>
3939 ""
4040 }
4141 }
4242
4343
44-func getReserveInfo (reserve) = {
44+func getReserveInfo (reserve,oracle) = {
4545 let reserveAddr = addressFromStringValue(reserve)
46- let oracleStore = "oracleAddress"
47- let configAddressStore = "configAddress"
4846 let assetIdStore = "assetId"
4947 let aTokenIdStore = "aTokenId"
50- let oracle = getStringValue(reserveAddr, oracleStore)
51- if ((oracle == oracle))
48+ let assetId = getStringValue(reserveAddr, assetIdStore)
49+ if ((assetId == assetId))
5250 then {
53- let assetId = getStringValue(reserveAddr, assetIdStore)
54- if ((assetId == assetId))
51+ let aTokenId = getStringValue(reserveAddr, aTokenIdStore)
52+ if ((aTokenId == aTokenId))
5553 then {
56- let aTokenId = getStringValue(reserveAddr, aTokenIdStore)
57- if ((aTokenId == aTokenId))
54+ let price = asInt(invoke(oracle, "price", [assetId], nil))
55+ if ((price == price))
5856 then {
59- let price = asInt(invoke(addressFromStringValue(oracle), "price", [assetId], nil))
60- if ((price == price))
61- then {
62- let data = asString(invoke(reserveAddr, "advise", nil, nil))
63- if ((data == data))
64- then (((((((("price: " + toString(price)) + ", assetId: ") + assetId) + ", aTokenId: ") + aTokenId) + getInterestReserveRatio(assetId)) + ", ") + data)
65- else throw("Strict value is not equal to itself.")
66- }
57+ let data = asString(invoke(reserveAddr, "advise", nil, nil))
58+ if ((data == data))
59+ then (((((((("price: " + toString(price)) + ", assetId: ") + assetId) + ", aTokenId: ") + aTokenId) + getInterestReserveRatio(assetId)) + ", ") + data)
6760 else throw("Strict value is not equal to itself.")
6861 }
6962 else throw("Strict value is not equal to itself.")
7063 }
7164 else throw("Strict value is not equal to itself.")
7265 }
7366 else throw("Strict value is not equal to itself.")
7467 }
7568
7669
7770 func advise (main) = {
7871 let mainAddress = valueOrErrorMessage(addressFromString(main), "bad main")
79- let reservesStore = "reserves"
80- let configStore = "config"
81- let reserves = split(valueOrErrorMessage(getString(mainAddress, reservesStore), "no reserves"), "|")
82- let configAddr = addressFromStringValue(valueOrErrorMessage(getString(mainAddress, configStore), "no config in main"))
72+ let configAddr = addressFromStringValue(valueOrErrorMessage(getString(mainAddress, "config"), "eval.advise: no config in main"))
73+ let oracle = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(configAddr, "oracle_address"), "no oracle in config")), "bad oracle address")
74+ let reserves = split(valueOrErrorMessage(getString(configAddr, "primary_reserves"), "eval: no primary reserves"), "|")
8375 let general = ((((((((("height: " + toString(height)) + ", accountHealthThreshold: ") + toString(getIntegerValue(configAddr, "account_health_threshold"))) + ", accountHealthOverlap: ") + toString(getIntegerValue(configAddr, "account_health_overlap"))) + ", collapsePenalty: ") + toString(getIntegerValue(configAddr, "collapse_penalty"))) + ", wavesLeasing: ") + toString(wavesLeasing))
8476 let reserveData = {
85- func fold (totals,reserve) = (((totals + ", [ ") + getReserveInfo(reserve)) + " ] ")
77+ func fold (totals,reserve) = (((totals + ", [ ") + getReserveInfo(reserve, oracle)) + " ] ")
8678
87- let $list27372764 = reserves
88- let $size27372764 = size($list27372764)
89- let $acc027372764 = ""
90- if (($size27372764 == 0))
91- then $acc027372764
92- else {
93- let $acc127372764 = fold($acc027372764, $list27372764[0])
94- if (($size27372764 == 1))
95- then $acc127372764
96- else {
97- let $acc227372764 = fold($acc127372764, $list27372764[1])
98- if (($size27372764 == 2))
99- then $acc227372764
100- else {
101- let $acc327372764 = fold($acc227372764, $list27372764[2])
102- if (($size27372764 == 3))
103- then $acc327372764
104- else {
105- let $acc427372764 = fold($acc327372764, $list27372764[3])
106- if (($size27372764 == 4))
107- then $acc427372764
108- else {
109- let $acc527372764 = fold($acc427372764, $list27372764[4])
110- if (($size27372764 == 5))
111- then $acc527372764
112- else {
113- let $acc627372764 = fold($acc527372764, $list27372764[5])
114- if (($size27372764 == 6))
115- then $acc627372764
116- else {
117- let $acc727372764 = fold($acc627372764, $list27372764[6])
118- if (($size27372764 == 7))
119- then $acc727372764
120- else {
121- let $acc827372764 = fold($acc727372764, $list27372764[7])
122- throw("List size exceed 7")
123- }
124- }
125- }
126- }
127- }
128- }
129- }
130- }
79+ let $l = reserves
80+ let $s = size($l)
81+ let $acc0 = ""
82+ func $f0_1 ($a,$i) = if (($i >= $s))
83+ then $a
84+ else fold($a, $l[$i])
85+
86+ func $f0_2 ($a,$i) = if (($i >= $s))
87+ then $a
88+ else throw("List size exceeds 7")
89+
90+ $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)
13191 }
13292 (general + reserveData)
13393 }
13494
13595
13696 func adviseUser (main,user) = {
13797 let mainAddress = valueOrErrorMessage(addressFromString(main), "bad main")
138- let reservesStore = "reserves"
139- let configStore = "config"
140- let reserves = split(valueOrErrorMessage(getString(mainAddress, reservesStore), "no reserves"), "|")
98+ let reserves = split(valueOrErrorMessage(getString(valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(mainAddress, "config"), "eval.adviseUser: no config in main")), "eval.adviseUser: bad config in main"), "primary_reserves"), "eval: no primary reserves"), "|")
14199 let general = ((("height: " + toString(height)) + ", user: ") + user)
142100 func fold (totals,reserve) = {
143101 let userInfo = asString(invoke(addressFromStringValue(reserve), "adviseUser", [user], nil))
144102 if ((userInfo == userInfo))
145103 then (((totals + ", [ ") + userInfo) + " ] ")
146104 else throw("Strict value is not equal to itself.")
147105 }
148106
149- let $list33853417 = reserves
150- let $size33853417 = size($list33853417)
151- let $acc033853417 = general
152- if (($size33853417 == 0))
153- then $acc033853417
154- else {
155- let $acc133853417 = fold($acc033853417, $list33853417[0])
156- if (($size33853417 == 1))
157- then $acc133853417
158- else {
159- let $acc233853417 = fold($acc133853417, $list33853417[1])
160- if (($size33853417 == 2))
161- then $acc233853417
162- else {
163- let $acc333853417 = fold($acc233853417, $list33853417[2])
164- if (($size33853417 == 3))
165- then $acc333853417
166- else {
167- let $acc433853417 = fold($acc333853417, $list33853417[3])
168- if (($size33853417 == 4))
169- then $acc433853417
170- else {
171- let $acc533853417 = fold($acc433853417, $list33853417[4])
172- if (($size33853417 == 5))
173- then $acc533853417
174- else {
175- let $acc633853417 = fold($acc533853417, $list33853417[5])
176- if (($size33853417 == 6))
177- then $acc633853417
178- else {
179- let $acc733853417 = fold($acc633853417, $list33853417[6])
180- if (($size33853417 == 7))
181- then $acc733853417
182- else {
183- let $acc833853417 = fold($acc733853417, $list33853417[7])
184- throw("List size exceed 7")
185- }
186- }
187- }
188- }
189- }
190- }
191- }
192- }
107+ let $l = reserves
108+ let $s = size($l)
109+ let $acc0 = general
110+ func $f0_1 ($a,$i) = if (($i >= $s))
111+ then $a
112+ else fold($a, $l[$i])
113+
114+ func $f0_2 ($a,$i) = if (($i >= $s))
115+ then $a
116+ else throw("List size exceeds 7")
117+
118+ $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)
193119 }
194120
195121
196122

github/deemru/w8io/873ac7e 
39.68 ms