2022.10.06 14:49 [3325908] smart account 3PFHm5TYKw4vVzj4rW8s3Yso88aD73Dai1C > SELF 0.00000000 Waves
{ "type": 13, "id": "F1ANSchE8F642kAZ3BLzrnvmsEtTjtzMPTmQyFF3zJPb", "fee": 300000, "feeAssetId": null, "timestamp": 1665056981487, "version": 1, "sender": "3PFHm5TYKw4vVzj4rW8s3Yso88aD73Dai1C", "senderPublicKey": "EGZr2MRyXu5ukMZP1QZQpcVQikDiWHfk8YDwD4pnHWXH", "proofs": [ "j6g8Cxz2qrUaBiFT7QGzHkq67e3AGxaLDLNhot549DyadFtcgksDueQw6g1mwZTLzM5dThwNc1z44JQTokjtvTx" ], "script": "base64:AAIFAAAAAAAAABIIAhIDCgEIEgMKAQgSBAoCCAEAAAAOAAAAAANidGMCAAAALDhMUVc4ZjdQNWQ1UFpNN0d0WkVCZ2FxUlBHU3pTM0RmUHVpWHJVUko0QUpTAAAAAANldGgCAAAALDQ3NGpUZVl4MnIyVmEzNTc5NHRDU2NBWFdKRzloVTJIY2d4ek1vd2FaVW51AAAAAAR1c2R0AgAAACwzNE45WWNFRVRMV245M3FZUTY0RXNQMXg4OXRTcnVKVTQ0UnJFTVNYWEVQSgAAAAAEdXNkYwIAAAAsNlh0SGpwWGJzOVJSSlAyU3I5R1V5VnF6QUNjYnk5VGtUaEhYbmpWQzVDREoAAAAABHVzZG4CAAAALERHMnhGa1BkRHdLVW9Ca3pHQWhRdExwU0d6ZlhMaUNZUEV6ZUtIMkFkMjRwAAAAAARldXJuAgAAACxEVWsyWVR4aFJvQXFNSkx1czRHMmIzZlI4aE1IVmg2ZWl5Rng1cjI5VlI2dAAAAAAFd2F2ZXMCAAAABVdBVkVTAAAAAAV2aXJlcwIAAAAsRFNiYmhMc1NUZURnNUxzaXVmazJBbmVoM0RqVnFKdVByMk05dVUxZ3d5NXAAAAAAA2RhaQIAAAAsOHpVWWJkQjhRNm1EaHBjWFl2NTJqaTh5Y2ZqNFNEWDRnSlhTN1lZM2RBNFIAAAAABGJ1c2QCAAAALDhETGlZWmpvM1VVYVJCVEhVN0F5b3FnNGlod2I2WUgxQWZYcnJoZGpRN0sxAAAAAAZvcmFjbGUJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVfDie6J0VNaFBRlO8j93/SEhv32EQCrlFgAAAAACWV1ck9yYWNsZQkBAAAAB0FkZHJlc3MAAAABAQAAABoBV0u6oXE63UA2IgEgsjTTyOjtmSXCPSGaSAAAAAAGZG9sbGFyAAAAAAAAD0JAAQAAAA1nZXRWaXJlc1ByaWNlAAAAAAQAAAAKc3dvcGZpUGFpcgkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQIAAAAjM1BKNDhQM3Ayd3ZXVWpnUWFRaVoyY0ZicjhxbXhNb2tCR2QEAAAAC2tleUJhbGFuY2VBAgAAAA9BX2Fzc2V0X2JhbGFuY2UEAAAAC2tleUJhbGFuY2VCAgAAAA9CX2Fzc2V0X2JhbGFuY2UEAAAACGJhbGFu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", "chainId": 87, "height": 3325908, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: H4xbKFA1up88sUU4pCqCc9Ra22SEvAVdhqsnW1jVfsNb Next: none Diff:
Old | New | Differences | |
---|---|---|---|
45 | 45 | ||
46 | 46 | ||
47 | 47 | @Callable(i) | |
48 | - | func price (tokenId) = { | |
48 | + | func price (t) = { | |
49 | + | let tokenId = split(t, "_")[0] | |
49 | 50 | let price = match getInteger(this, (tokenId + "_override")) { | |
50 | 51 | case p: Int => | |
51 | 52 | p |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let btc = "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS" | |
5 | 5 | ||
6 | 6 | let eth = "474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu" | |
7 | 7 | ||
8 | 8 | let usdt = "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ" | |
9 | 9 | ||
10 | 10 | let usdc = "6XtHjpXbs9RRJP2Sr9GUyVqzACcby9TkThHXnjVC5CDJ" | |
11 | 11 | ||
12 | 12 | let usdn = "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p" | |
13 | 13 | ||
14 | 14 | let eurn = "DUk2YTxhRoAqMJLus4G2b3fR8hMHVh6eiyFx5r29VR6t" | |
15 | 15 | ||
16 | 16 | let waves = "WAVES" | |
17 | 17 | ||
18 | 18 | let vires = "DSbbhLsSTeDg5Lsiufk2Aneh3DjVqJuPr2M9uU1gwy5p" | |
19 | 19 | ||
20 | 20 | let dai = "8zUYbdB8Q6mDhpcXYv52ji8ycfj4SDX4gJXS7YY3dA4R" | |
21 | 21 | ||
22 | 22 | let busd = "8DLiYZjo3UUaRBTHU7Ayoqg4ihwb6YH1AfXrrhdjQ7K1" | |
23 | 23 | ||
24 | 24 | let oracle = Address(base58'3PKkojKdd6BBzTf1RXbQVfUDraNFXXHKzQF') | |
25 | 25 | ||
26 | 26 | let eurOracle = Address(base58'3P8qJyxUqizCWWtEn2zsLZVPzZAjdNGppB1') | |
27 | 27 | ||
28 | 28 | let dollar = 1000000 | |
29 | 29 | ||
30 | 30 | func getViresPrice () = { | |
31 | 31 | let swopfiPair = addressFromStringValue("3PJ48P3p2wvWUjgQaQiZ2cFbr8qmxMokBGd") | |
32 | 32 | let keyBalanceA = "A_asset_balance" | |
33 | 33 | let keyBalanceB = "B_asset_balance" | |
34 | 34 | let balanceA = getIntegerValue(swopfiPair, keyBalanceA) | |
35 | 35 | let balanceB = getIntegerValue(swopfiPair, keyBalanceB) | |
36 | 36 | fraction(balanceB, (100 * dollar), balanceA) | |
37 | 37 | } | |
38 | 38 | ||
39 | 39 | ||
40 | 40 | @Callable(i) | |
41 | 41 | func init (config) = if ((i.caller != this)) | |
42 | 42 | then throw("only self can init") | |
43 | 43 | else [StringEntry("config", config)] | |
44 | 44 | ||
45 | 45 | ||
46 | 46 | ||
47 | 47 | @Callable(i) | |
48 | - | func price (tokenId) = { | |
48 | + | func price (t) = { | |
49 | + | let tokenId = split(t, "_")[0] | |
49 | 50 | let price = match getInteger(this, (tokenId + "_override")) { | |
50 | 51 | case p: Int => | |
51 | 52 | p | |
52 | 53 | case _ => | |
53 | 54 | if ((tokenId == usdt)) | |
54 | 55 | then dollar | |
55 | 56 | else if ((tokenId == usdc)) | |
56 | 57 | then dollar | |
57 | 58 | else if ((tokenId == usdn)) | |
58 | 59 | then dollar | |
59 | 60 | else if ((tokenId == dai)) | |
60 | 61 | then dollar | |
61 | 62 | else if ((tokenId == busd)) | |
62 | 63 | then dollar | |
63 | 64 | else if ((tokenId == btc)) | |
64 | 65 | then getIntegerValue(oracle, "%s%s__price__BTC-USDT") | |
65 | 66 | else if ((tokenId == eth)) | |
66 | 67 | then getIntegerValue(oracle, "%s%s__price__ETH-USDT") | |
67 | 68 | else if ((tokenId == waves)) | |
68 | 69 | then getIntegerValue(oracle, "%s%s__price__WAVES-USDT") | |
69 | 70 | else if ((tokenId == eurn)) | |
70 | 71 | then ((dollar * dollar) / getIntegerValue(eurOracle, "%s%s__price__EUR")) | |
71 | 72 | else if ((tokenId == vires)) | |
72 | 73 | then getViresPrice() | |
73 | 74 | else throw("unknown token") | |
74 | 75 | } | |
75 | 76 | $Tuple2(nil, price) | |
76 | 77 | } | |
77 | 78 | ||
78 | 79 | ||
79 | 80 | ||
80 | 81 | @Callable(i) | |
81 | 82 | func overridePrice (tokenId,price) = { | |
82 | 83 | let admStr = valueOrErrorMessage(getString(valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(this, "config"), "no config")), "bad config address"), "admin"), "no admin in config") | |
83 | 84 | if ((toString(i.caller) != admStr)) | |
84 | 85 | then throw("only admin can do") | |
85 | 86 | else if ((price == -1)) | |
86 | 87 | then [DeleteEntry((tokenId + "_override"))] | |
87 | 88 | else [IntegerEntry((tokenId + "_override"), price)] | |
88 | 89 | } | |
89 | 90 | ||
90 | 91 |
github/deemru/w8io/786bc32 34.33 ms ◑