tx · 78dNfFiP8PFSpqiX3o3rhPM7ueqvi8NtXMdGfEkeojsF

3P8dfxANHUt1ReR6EVj3Yvf7HxBhuxV9po3:  -0.01000000 Waves

2022.03.11 11:43 [3024189] smart account 3P8dfxANHUt1ReR6EVj3Yvf7HxBhuxV9po3 > SELF 0.00000000 Waves

{ "type": 13, "id": "78dNfFiP8PFSpqiX3o3rhPM7ueqvi8NtXMdGfEkeojsF", "fee": 1000000, "feeAssetId": null, "timestamp": 1646988228174, "version": 1, "sender": "3P8dfxANHUt1ReR6EVj3Yvf7HxBhuxV9po3", "senderPublicKey": "Hiai8DZx1MZ3CvqfqgH2dwDCSyXNhsehPmHUVN66c8mc", "proofs": [ "3f2Q4Y3VcUae264kekwZBCDcqY6iZcJ6JAix4WFSVYKPa95HPV5p8bHNUimr726nzghgt18TTPJStAvgK2htcSKF" ], "script": "base64:AAIFAAAAAAAAAAIIAgAAAAkBAAAABWFzSW50AAAAAQAAAAV2YWx1ZQQAAAAHJG1hdGNoMAUAAAAFdmFsdWUDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAADaW50BQAAAAckbWF0Y2gwBQAAAANpbnQJAAACAAAAAQIAAAAZd3JvbmcgdHlwZSwgZXhwZWN0ZWQ6IEludAEAAAAIYXNTdHJpbmcAAAABAAAABXZhbHVlBAAAAAckbWF0Y2gwBQAAAAV2YWx1ZQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFzBQAAAAckbWF0Y2gwBQAAAAFzCQAAAgAAAAECAAAAHHdyb25nIHR5cGUsIGV4cGVjdGVkOiBTdHJpbmcAAAAABFVTRE4CAAAALERHMnhGa1BkRHdLVW9Ca3pHQWhRdExwU0d6ZlhMaUNZUEV6ZUtIMkFkMjRwAAAAAARFVVJOAgAAACxEVWsyWVR4aFJvQXFNSkx1czRHMmIzZlI4aE1IVmg2ZWl5Rng1cjI5VlI2dAAAAAAMd2F2ZXNMZWFzaW5nCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMCAAAADHdhdmVzTGVhc2luZwAAAAAAAAAAKAEAAAAXZ2V0SW50ZXJlc3RSZXNlcnZlUmF0aW8AAAACAAAACmNvbmZpZ0FkZHIAAAAHYXNzZXRJZAoBAAAADmdldERpc3RyaWJ1dG9yAAAAAQAAAAdhc3NldElkAwkAAAAAAAACBQAAAAdhc3NldElkAgAAAAVXQVZFUwIAAAAjM1A5TEs4MkRud2h2aHloTFhtVVNCR1h5dzZTZHp5Y0RFckUDCQAAAAAAAAIFAAAAB2Fzc2V0SWQFAAAABFVTRE4CAAAAIzNQQ2NteUt4UGJOdXI3elFQZ2FmOXVjemI4UVl0RTcxam91AwkAAAAAAAACBQAAAAdhc3NldElkBQAAAARFVVJOAgAAACMzUExWR1lGZEJud0NCUVFudzhvRWZLNldWUVBlVHE2MlBoUwUAAAAEdW5pdAQAAAAHJG1hdGNoMAkBAAAADmdldERpc3RyaWJ1dG9yAAAAAQUAAAAHYXNzZXRJZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFkBQAAAAckbWF0Y2gwCQABLAAAAAICAAAAGCwgaW50ZXJlc3RSZXNlcnZlUmF0aW86IAkAAZEAAAACCQAEtQAAAAIJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAKY29uZmlnQWRkcgkAASwAAAACAgAAAAphZGRlcl9jZmdfBQAAAAFkAgAAAAUwfG5pbAIAAAABfAAAAAAAAAAAAAIAAAAAAQAAAA5nZXRSZXNlcnZlSW5mbwAAAAMAAAANY29uZmlnQWRkcmVzcwAAAAdyZXNlcnZlAAAABm9yYWNsZQQAAAALcmVzZXJ2ZUFkZHIJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAAB3Jlc2VydmUEAAAADGFzc2V0SWRTdG9yZQIAAAAHYXNzZXRJZAQAAAANYVRva2VuSWRTdG9yZQIAAAAIYVRva2VuSWQEAAAAB2Fzc2V0SWQJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAAC3Jlc2VydmVBZGRyBQAAAAxhc3NldElkU3RvcmUDCQAAAAAAAAIFAAAAB2Fzc2V0SWQFAAAAB2Fzc2V0SWQEAAAACGFUb2tlbklkCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAtyZXNlcnZlQWRkcgUAAAANYVRva2VuSWRTdG9yZQMJAAAAAAAAAgUAAAAIYVRva2VuSWQFAAAACGFUb2tlbklkBAAAAAVwcmljZQkBAAAABWFzSW50AAAAAQkAA/wAAAAEBQAAAAZvcmFjbGUCAAAABXByaWNlCQAETAAAAAIFAAAAB2Fzc2V0SWQFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAAAVwcmljZQUAAAAFcHJpY2UEAAAABGRhdGEJAQAAAAhhc1N0cmluZwAAAAEJAAP8AAAABAUAAAALcmVzZXJ2ZUFkZHICAAAABmFkdmlzZQUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAABGRhdGEFAAAABGRhdGEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAdwcmljZTogCQABpAAAAAEFAAAABXByaWNlAgAAAAssIGFzc2V0SWQ6IAUAAAAHYXNzZXRJZAIAAAAMLCBhVG9rZW5JZDogBQAAAAhhVG9rZW5JZAkBAAAAF2dldEludGVyZXN0UmVzZXJ2ZVJhdGlvAAAAAgUAAAANY29uZmlnQWRkcmVzcwUAAAAHYXNzZXRJZAIAAAACLCAFAAAABGRhdGEJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQAAAAZhZHZpc2UAAAABAAAABG1haW4EAAAAC21haW5BZGRyZXNzCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQmAAAAAQUAAAAEbWFpbgIAAAAIYmFkIG1haW4EAAAACmNvbmZpZ0FkZHIJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAAttYWluQWRkcmVzcwIAAAAGY29uZmlnAgAAAB5ldmFsLmFkdmlzZTogbm8gY29uZmlnIGluIG1haW4EAAAABm9yYWNsZQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEJgAAAAEJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAApjb25maWdBZGRyAgAAAA5vcmFjbGVfYWRkcmVzcwIAAAATbm8gb3JhY2xlIGluIGNvbmZpZwIAAAASYmFkIG9yYWNsZSBhZGRyZXNzBAAAAAhyZXNlcnZlcwkABLUAAAACCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAKY29uZmlnQWRkcgIAAAAQcHJpbWFyeV9yZXNlcnZlcwIAAAAZZXZhbDogbm8gcHJpbWFyeSByZXNlcnZlcwIAAAABfAQAAAAHZ2VuZXJhbAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIaGVpZ2h0OiAJAAGkAAAAAQUAAAAGaGVpZ2h0AgAAABosIGFjY291bnRIZWFsdGhUaHJlc2hvbGQ6IAkAAaQAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAApjb25maWdBZGRyAgAAABhhY2NvdW50X2hlYWx0aF90aHJlc2hvbGQCAAAAGCwgYWNjb3VudEhlYWx0aE92ZXJsYXA6IAkAAaQAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAApjb25maWdBZGRyAgAAABZhY2NvdW50X2hlYWx0aF9vdmVybGFwAgAAABMsIGNvbGxhcHNlUGVuYWx0eTogCQABpAAAAAEJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAACmNvbmZpZ0FkZHICAAAAEGNvbGxhcHNlX3BlbmFsdHkCAAAAECwgd2F2ZXNMZWFzaW5nOiAJAAGkAAAAAQUAAAAMd2F2ZXNMZWFzaW5nBAAAAAtyZXNlcnZlRGF0YQoBAAAABGZvbGQAAAACAAAABnRvdGFscwAAAAdyZXNlcnZlCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAAZ0b3RhbHMCAAAABCwgWyAJAQAAAA5nZXRSZXNlcnZlSW5mbwAAAAMFAAAACmNvbmZpZ0FkZHIFAAAAB3Jlc2VydmUFAAAABm9yYWNsZQIAAAADIF0gCgAAAAACJGwFAAAACHJlc2VydmVzCgAAAAACJHMJAAGQAAAAAQUAAAACJGwKAAAAAAUkYWNjMAIAAAAACgEAAAAFJGYwXzEAAAACAAAAAiRhAAAAAiRpAwkAAGcAAAACBQAAAAIkaQUAAAACJHMFAAAAAiRhCQEAAAAEZm9sZAAAAAIFAAAAAiRhCQABkQAAAAIFAAAAAiRsBQAAAAIkaQoBAAAABSRmMF8yAAAAAgAAAAIkYQAAAAIkaQMJAABnAAAAAgUAAAACJGkFAAAAAiRzBQAAAAIkYQkAAAIAAAABAgAAABNMaXN0IHNpemUgZXhjZWVkcyA3CQEAAAAFJGYwXzIAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACBQAAAAUkYWNjMAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAgAAAAAAAAAAAwAAAAAAAAAABAAAAAAAAAAABQAAAAAAAAAABgAAAAAAAAAABwkAASwAAAACBQAAAAdnZW5lcmFsBQAAAAtyZXNlcnZlRGF0YQEAAAAKYWR2aXNlVXNlcgAAAAIAAAAEbWFpbgAAAAR1c2VyBAAAAAttYWluQWRkcmVzcwkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEJgAAAAEFAAAABG1haW4CAAAACGJhZCBtYWluBAAAAAhyZXNlcnZlcwkABLUAAAACCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEJgAAAAEJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAAttYWluQWRkcmVzcwIAAAAGY29uZmlnAgAAACJldmFsLmFkdmlzZVVzZXI6IG5vIGNvbmZpZyBpbiBtYWluAgAAACNldmFsLmFkdmlzZVVzZXI6IGJhZCBjb25maWcgaW4gbWFpbgIAAAAQcHJpbWFyeV9yZXNlcnZlcwIAAAAZZXZhbDogbm8gcHJpbWFyeSByZXNlcnZlcwIAAAABfAQAAAAHZ2VuZXJhbAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIaGVpZ2h0OiAJAAGkAAAAAQUAAAAGaGVpZ2h0AgAAAAgsIHVzZXI6IAUAAAAEdXNlcgoBAAAABGZvbGQAAAACAAAABnRvdGFscwAAAAdyZXNlcnZlBAAAAAh1c2VySW5mbwkBAAAACGFzU3RyaW5nAAAAAQkAA/wAAAAECQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABBQAAAAdyZXNlcnZlAgAAAAphZHZpc2VVc2VyCQAETAAAAAIFAAAABHVzZXIFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAAAh1c2VySW5mbwUAAAAIdXNlckluZm8JAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABnRvdGFscwIAAAAELCBbIAUAAAAIdXNlckluZm8CAAAAAyBdIAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4KAAAAAAIkbAUAAAAIcmVzZXJ2ZXMKAAAAAAIkcwkAAZAAAAABBQAAAAIkbAoAAAAABSRhY2MwBQAAAAdnZW5lcmFsCgEAAAAFJGYwXzEAAAACAAAAAiRhAAAAAiRpAwkAAGcAAAACBQAAAAIkaQUAAAACJHMFAAAAAiRhCQEAAAAEZm9sZAAAAAIFAAAAAiRhCQABkQAAAAIFAAAAAiRsBQAAAAIkaQoBAAAABSRmMF8yAAAAAgAAAAIkYQAAAAIkaQMJAABnAAAAAgUAAAACJGkFAAAAAiRzBQAAAAIkYQkAAAIAAAABAgAAABNMaXN0IHNpemUgZXhjZWVkcyA3CQEAAAAFJGYwXzIAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACBQAAAAUkYWNjMAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAgAAAAAAAAAAAwAAAAAAAAAABAAAAAAAAAAABQAAAAAAAAAABgAAAAAAAAAABwAAAAAAAAAAXXdCBw==", "chainId": 87, "height": 3024189, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: JAqfr1F3Qc8rKbvrNFCBpPZR1k78KBfx6qEo7staTcQD Next: H9Ub2sVzPMCj6hvprhW1PTKDHzmdc4GzvQigztdJvoap Diff:
OldNewDifferences
2323
2424 let wavesLeasing = valueOrElse(getInteger(this, "wavesLeasing"), 40)
2525
26-func getInterestReserveRatio (assetId) = {
26+func getInterestReserveRatio (configAddr,assetId) = {
2727 func getDistributor (assetId) = if ((assetId == "WAVES"))
28- then addressFromString("3P9LK82DnwhvhyhLXmUSBGXyw6SdzycDErE")
28+ then "3P9LK82DnwhvhyhLXmUSBGXyw6SdzycDErE"
2929 else if ((assetId == USDN))
30- then addressFromString("3PCcmyKxPbNur7zQPgaf9uczb8QYtE71jou")
30+ then "3PCcmyKxPbNur7zQPgaf9uczb8QYtE71jou"
3131 else if ((assetId == EURN))
32- then addressFromString("3PLVGYFdBnwCBQQnw8oEfK6WVQPeTq62PhS")
32+ then "3PLVGYFdBnwCBQQnw8oEfK6WVQPeTq62PhS"
3333 else unit
3434
3535 match getDistributor(assetId) {
36- case d: Address =>
37- (", interestReserveRatio: " + toString(valueOrElse(getInteger(d, "ratio"), 0)))
36+ case d: String =>
37+ (", interestReserveRatio: " + split(valueOrElse(getString(configAddr, ("adder_cfg_" + d)), "0|nil"), "|")[0])
3838 case _ =>
3939 ""
4040 }
4141 }
4242
4343
44-func getReserveInfo (reserve,oracle) = {
44+func getReserveInfo (configAddress,reserve,oracle) = {
4545 let reserveAddr = addressFromStringValue(reserve)
4646 let assetIdStore = "assetId"
4747 let aTokenIdStore = "aTokenId"
5656 then {
5757 let data = asString(invoke(reserveAddr, "advise", nil, nil))
5858 if ((data == data))
59- then (((((((("price: " + toString(price)) + ", assetId: ") + assetId) + ", aTokenId: ") + aTokenId) + getInterestReserveRatio(assetId)) + ", ") + data)
59+ then (((((((("price: " + toString(price)) + ", assetId: ") + assetId) + ", aTokenId: ") + aTokenId) + getInterestReserveRatio(configAddress, assetId)) + ", ") + data)
6060 else throw("Strict value is not equal to itself.")
6161 }
6262 else throw("Strict value is not equal to itself.")
7474 let reserves = split(valueOrErrorMessage(getString(configAddr, "primary_reserves"), "eval: no primary reserves"), "|")
7575 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))
7676 let reserveData = {
77- func fold (totals,reserve) = (((totals + ", [ ") + getReserveInfo(reserve, oracle)) + " ] ")
77+ func fold (totals,reserve) = (((totals + ", [ ") + getReserveInfo(configAddr, reserve, oracle)) + " ] ")
7878
7979 let $l = reserves
8080 let $s = size($l)
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
26-func getInterestReserveRatio (assetId) = {
26+func getInterestReserveRatio (configAddr,assetId) = {
2727 func getDistributor (assetId) = if ((assetId == "WAVES"))
28- then addressFromString("3P9LK82DnwhvhyhLXmUSBGXyw6SdzycDErE")
28+ then "3P9LK82DnwhvhyhLXmUSBGXyw6SdzycDErE"
2929 else if ((assetId == USDN))
30- then addressFromString("3PCcmyKxPbNur7zQPgaf9uczb8QYtE71jou")
30+ then "3PCcmyKxPbNur7zQPgaf9uczb8QYtE71jou"
3131 else if ((assetId == EURN))
32- then addressFromString("3PLVGYFdBnwCBQQnw8oEfK6WVQPeTq62PhS")
32+ then "3PLVGYFdBnwCBQQnw8oEfK6WVQPeTq62PhS"
3333 else unit
3434
3535 match getDistributor(assetId) {
36- case d: Address =>
37- (", interestReserveRatio: " + toString(valueOrElse(getInteger(d, "ratio"), 0)))
36+ case d: String =>
37+ (", interestReserveRatio: " + split(valueOrElse(getString(configAddr, ("adder_cfg_" + d)), "0|nil"), "|")[0])
3838 case _ =>
3939 ""
4040 }
4141 }
4242
4343
44-func getReserveInfo (reserve,oracle) = {
44+func getReserveInfo (configAddress,reserve,oracle) = {
4545 let reserveAddr = addressFromStringValue(reserve)
4646 let assetIdStore = "assetId"
4747 let aTokenIdStore = "aTokenId"
4848 let assetId = getStringValue(reserveAddr, assetIdStore)
4949 if ((assetId == assetId))
5050 then {
5151 let aTokenId = getStringValue(reserveAddr, aTokenIdStore)
5252 if ((aTokenId == aTokenId))
5353 then {
5454 let price = asInt(invoke(oracle, "price", [assetId], nil))
5555 if ((price == price))
5656 then {
5757 let data = asString(invoke(reserveAddr, "advise", nil, nil))
5858 if ((data == data))
59- then (((((((("price: " + toString(price)) + ", assetId: ") + assetId) + ", aTokenId: ") + aTokenId) + getInterestReserveRatio(assetId)) + ", ") + data)
59+ then (((((((("price: " + toString(price)) + ", assetId: ") + assetId) + ", aTokenId: ") + aTokenId) + getInterestReserveRatio(configAddress, assetId)) + ", ") + data)
6060 else throw("Strict value is not equal to itself.")
6161 }
6262 else throw("Strict value is not equal to itself.")
6363 }
6464 else throw("Strict value is not equal to itself.")
6565 }
6666 else throw("Strict value is not equal to itself.")
6767 }
6868
6969
7070 func advise (main) = {
7171 let mainAddress = valueOrErrorMessage(addressFromString(main), "bad main")
7272 let configAddr = addressFromStringValue(valueOrErrorMessage(getString(mainAddress, "config"), "eval.advise: no config in main"))
7373 let oracle = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(configAddr, "oracle_address"), "no oracle in config")), "bad oracle address")
7474 let reserves = split(valueOrErrorMessage(getString(configAddr, "primary_reserves"), "eval: no primary reserves"), "|")
7575 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))
7676 let reserveData = {
77- func fold (totals,reserve) = (((totals + ", [ ") + getReserveInfo(reserve, oracle)) + " ] ")
77+ func fold (totals,reserve) = (((totals + ", [ ") + getReserveInfo(configAddr, reserve, oracle)) + " ] ")
7878
7979 let $l = reserves
8080 let $s = size($l)
8181 let $acc0 = ""
8282 func $f0_1 ($a,$i) = if (($i >= $s))
8383 then $a
8484 else fold($a, $l[$i])
8585
8686 func $f0_2 ($a,$i) = if (($i >= $s))
8787 then $a
8888 else throw("List size exceeds 7")
8989
9090 $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)
9191 }
9292 (general + reserveData)
9393 }
9494
9595
9696 func adviseUser (main,user) = {
9797 let mainAddress = valueOrErrorMessage(addressFromString(main), "bad main")
9898 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"), "|")
9999 let general = ((("height: " + toString(height)) + ", user: ") + user)
100100 func fold (totals,reserve) = {
101101 let userInfo = asString(invoke(addressFromStringValue(reserve), "adviseUser", [user], nil))
102102 if ((userInfo == userInfo))
103103 then (((totals + ", [ ") + userInfo) + " ] ")
104104 else throw("Strict value is not equal to itself.")
105105 }
106106
107107 let $l = reserves
108108 let $s = size($l)
109109 let $acc0 = general
110110 func $f0_1 ($a,$i) = if (($i >= $s))
111111 then $a
112112 else fold($a, $l[$i])
113113
114114 func $f0_2 ($a,$i) = if (($i >= $s))
115115 then $a
116116 else throw("List size exceeds 7")
117117
118118 $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)
119119 }
120120
121121
122122

github/deemru/w8io/3ef1775 
37.39 ms