tx · AdmBAf6Vo2nrdAZ8A5yXQyqk3rxgpoaUjvy8ZcQQiitf 3PGbr9TgVSUUoGTesusWbpGPedA6PphCwzD: -0.01000000 Waves 2021.10.12 18:06 [2808194] smart account 3PGbr9TgVSUUoGTesusWbpGPedA6PphCwzD > SELF 0.00000000 Waves
{ "type": 13, "id": "AdmBAf6Vo2nrdAZ8A5yXQyqk3rxgpoaUjvy8ZcQQiitf", "fee": 1000000, "feeAssetId": null, "timestamp": 1634051232422, "version": 1, "sender": "3PGbr9TgVSUUoGTesusWbpGPedA6PphCwzD", "senderPublicKey": "AMuaZeG2RVAS77K61TuNYAX6b2qTeGxkQkZEXZmU4Kvx", "proofs": [ "3bXjd7upXzm1PEd1aFmdCnqbvfokHUd2o5qHBNfdpQerbtoSszjSz3WZ5s4ZvkyZJBTRLmgUZKXbnfvE68w9fp3D" ], "script": "base64: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", "chainId": 87, "height": 2808194, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: AEyeVbLM6cBQz1AwAKEUmTCJaKcSUtykw2eeD7K6g1pL Full:
Old | New | Differences | |
---|---|---|---|
1 | - | # no script | |
1 | + | {-# STDLIB_VERSION 5 #-} | |
2 | + | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | + | {-# CONTENT_TYPE DAPP #-} | |
4 | + | func asInt (value) = match value { | |
5 | + | case int: Int => | |
6 | + | int | |
7 | + | case _ => | |
8 | + | throw("wrong type, expected: Int") | |
9 | + | } | |
10 | + | ||
11 | + | ||
12 | + | func asString (value) = match value { | |
13 | + | case s: String => | |
14 | + | s | |
15 | + | case _ => | |
16 | + | throw("wrong type, expected: String") | |
17 | + | } | |
18 | + | ||
19 | + | ||
20 | + | func advise (main) = { | |
21 | + | let m = valueOrErrorMessage(addressFromString(main), "bad main") | |
22 | + | let config = addressFromStringValue(valueOrErrorMessage(getString(m, "config"), "no config in main")) | |
23 | + | let staker = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(config, "vires_staker"), "no staker in config")), "bad staker") | |
24 | + | let viresMinter = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(config, "vires_minter"), "no viresMinter")), "invalid viresMinter") | |
25 | + | let viresAssetId = valueOrErrorMessage(getString(viresMinter, "assetId"), "no viresAssetId") | |
26 | + | let distributor = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(config, "vires_distributor"), "no distributor in config")), "bad distributor") | |
27 | + | let oracle = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(distributor, "oracleAddress"), "no oracle in distributor")), "bad oracle") | |
28 | + | let viresPrice = asInt(invoke(oracle, "price", [viresAssetId], nil)) | |
29 | + | let stakerInfo = asString(invoke(staker, "advise", nil, nil)) | |
30 | + | let general = ((((("height: " + toString(height)) + ", viresAssetId: ") + viresAssetId) + ", viresPrice: ") + toString(viresPrice)) | |
31 | + | let reserves = asString(invoke(distributor, "advise", nil, nil)) | |
32 | + | (((general + ", ") + stakerInfo) + reserves) | |
33 | + | } | |
34 | + | ||
35 | + | ||
36 | + | func adviseUser (main,user) = { | |
37 | + | let m = valueOrErrorMessage(addressFromString(main), "bad main") | |
38 | + | let reserves = split(valueOrErrorMessage(getString(m, "reserves"), "no reserves"), "|") | |
39 | + | let config = addressFromStringValue(valueOrErrorMessage(getString(m, "config"), "no config in main")) | |
40 | + | let ebRewards = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(config, "eb_rewards"), "no eb_rewards in config")), "bad eb_rewards") | |
41 | + | let staker = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(config, "vires_staker"), "no staker in config")), "bad staker") | |
42 | + | let distributor = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(config, "vires_distributor"), "no distributor in config")), "bad distributor") | |
43 | + | let ebUser = asString(invoke(ebRewards, "adviseUser", [user], nil)) | |
44 | + | let stkUser = asString(invoke(staker, "adviseUser", [user], nil)) | |
45 | + | let reservesData = { | |
46 | + | func fold (totals,reserve) = ((((((totals + ", [ ") + "reserveAddress: ") + reserve) + ",") + asString(invoke(distributor, "adviseUser", [reserve, user], nil))) + " ]") | |
47 | + | ||
48 | + | let $l = reserves | |
49 | + | let $s = size($l) | |
50 | + | let $acc0 = "" | |
51 | + | func 1 ($a,$i) = if (($i >= $s)) | |
52 | + | then $a | |
53 | + | else fold($a, $l[$i]) | |
54 | + | ||
55 | + | func 2 ($a,$i) = if (($i >= $s)) | |
56 | + | then $a | |
57 | + | else throw("List size exceeds 7") | |
58 | + | ||
59 | + | 2(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7) | |
60 | + | } | |
61 | + | (((ebUser + ", ") + stkUser) + reservesData) | |
62 | + | } | |
63 | + | ||
64 | + | ||
65 | + |
github/deemru/w8io/3ef1775 20.27 ms ◑