tx · H4vUzGnu9YCmQk9rCzTgGZXmpDYEsU2sHcQSJ56iPnxy 3P46ywe6x7v3PFzxwF3DpqTzgkMyzqeZ9bj: -0.00300000 Waves 2023.04.18 13:37 [3605438] smart account 3P46ywe6x7v3PFzxwF3DpqTzgkMyzqeZ9bj > SELF 0.00000000 Waves
{ "type": 13, "id": "H4vUzGnu9YCmQk9rCzTgGZXmpDYEsU2sHcQSJ56iPnxy", "fee": 300000, "feeAssetId": null, "timestamp": 1681814250574, "version": 1, "sender": "3P46ywe6x7v3PFzxwF3DpqTzgkMyzqeZ9bj", "senderPublicKey": "6x4PhyGtG61C2uMrVKGZT1713s9QXQ8sm77dcX7Y37iG", "proofs": [ "3fgn5vas4Q9ahwebgN9uud7TS96Se59J2qA7qHbdhMHCzjQB6wCZwazt2u3MRXy9jK6CRuQGjoV5kHSDomyLCb9B" ], "script": "base64:AAIFAAAAAAAAABIIAhIDCgEIEgMKAQgSBAoCCAEAAAAJAAAAAANidGMCAAAALDJGZ2U1SEVCUkQzWFRlZzdYZzNGVzV5aUI5SFZKRlF0TVhpV01RbzcyVXA2AAAAAANldGgCAAAALDNWdVY1V1RtRHo0N0RtZG4zUXBjWWp6YlNkaXBqUUU0Sk1kTmUxeFpwWDEzAAAAAAR1c2R0AgAAACw5d2MzTFhOQTRURUJzWHlLdG9MRTltcmJERDdXTUhYdlhyQ2padmFiTEFzaQAAAAAEdXNkYwIAAAAsSEdnYWJUcVVTOFd0VkZVSnpmbXJURE1nRWNjSnVaTEJQaEZnUUZ4dm5zb1cAAAAABXdhdmVzAgAAAAVXQVZFUwAAAAAFdmlyZXMCAAAALERTYmJoTHNTVGVEZzVMc2l1ZmsyQW5laDNEalZxSnVQcjJNOXVVMWd3eTVwAAAAAAZvcmFjbGUJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVfDie6J0VNaFBRlO8j93/SEhv32EQCrlFgAAAAABmRvbGxhcgAAAAAAAA9CQAEAAAANZ2V0VmlyZXNQcmljZQAAAAAEAAAACnN3b3BmaVBhaXIJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAECAAAAIzNQSjQ4UDNwMnd2V1VqZ1FhUWlaMmNGYnI4cW14TW9rQkdkBAAAAAtrZXlCYWxhbmNlQQIAAAAPQV9hc3NldF9iYWxhbmNlBAAAAAtrZXlCYWxhbmNlQgIAAAAPQl9hc3NldF9iYWxhbmNlBAAAAAhiYWxhbmNlQQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAKc3dvcGZpUGFpcgUAAAALa2V5QmFsYW5jZUEEAAAACGJhbGFuY2VCCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAApzd29wZmlQYWlyBQAAAAtrZXlCYWxhbmNlQgkAAGsAAAADBQAAAAhiYWxhbmNlQgkAAGgAAAACAAAAAAAAAABkBQAAAAZkb2xsYXIFAAAACGJhbGFuY2VBAAAAAwAAAAFpAQAAAARpbml0AAAAAQAAAAZjb25maWcDCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABHRoaXMJAAACAAAAAQIAAAASb25seSBzZWxmIGNhbiBpbml0CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAICAAAABmNvbmZpZwUAAAAGY29uZmlnBQAAAANuaWwAAAABaQEAAAAFcHJpY2UAAAABAAAAAXQEAAAAB3Rva2VuSWQJAAGRAAAAAgkABLUAAAACBQAAAAF0AgAAAAFfAAAAAAAAAAAABAAAAAVwcmljZQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIFAAAAB3Rva2VuSWQCAAAACV9vdmVycmlkZQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFwBQAAAAckbWF0Y2gwBQAAAAFwAwkAAAAAAAACBQAAAAd0b2tlbklkBQAAAAR1c2R0BQAAAAZkb2xsYXIDCQAAAAAAAAIFAAAAB3Rva2VuSWQFAAAABHVzZGMFAAAABmRvbGxhcgMJAAAAAAAAAgUAAAAHdG9rZW5JZAUAAAADYnRjCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAZvcmFjbGUCAAAAFSVzJXNfX3ByaWNlX19CVEMtVVNEVAMJAAAAAAAAAgUAAAAHdG9rZW5JZAUAAAADZXRoCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAZvcmFjbGUCAAAAFSVzJXNfX3ByaWNlX19FVEgtVVNEVAMJAAAAAAAAAgUAAAAHdG9rZW5JZAUAAAAFd2F2ZXMJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABm9yYWNsZQIAAAAXJXMlc19fcHJpY2VfX1dBVkVTLVVTRFQDCQAAAAAAAAIFAAAAB3Rva2VuSWQFAAAABXZpcmVzCQEAAAANZ2V0VmlyZXNQcmljZQAAAAAJAAACAAAAAQIAAAANdW5rbm93biB0b2tlbgkABRQAAAACBQAAAANuaWwFAAAABXByaWNlAAAAAWkBAAAADW92ZXJyaWRlUHJpY2UAAAACAAAAB3Rva2VuSWQAAAAFcHJpY2UEAAAABmFkbVN0cgkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCYAAAABCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwIAAAAGY29uZmlnAgAAAAlubyBjb25maWcCAAAAEmJhZCBjb25maWcgYWRkcmVzcwIAAAAFYWRtaW4CAAAAEm5vIGFkbWluIGluIGNvbmZpZwMJAQAAAAIhPQAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAAAZhZG1TdHIJAAACAAAAAQIAAAARb25seSBhZG1pbiBjYW4gZG8DCQAAAAAAAAIFAAAABXByaWNlAP//////////CQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAAEsAAAAAgUAAAAHdG9rZW5JZAIAAAAJX292ZXJyaWRlBQAAAANuaWwJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAHdG9rZW5JZAIAAAAJX292ZXJyaWRlBQAAAAVwcmljZQUAAAADbmlsAAAAAE/LRLk=", "chainId": 87, "height": 3605438, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
Old | New | Differences | |
---|---|---|---|
1 | - | # no script | |
1 | + | {-# STDLIB_VERSION 5 #-} | |
2 | + | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | + | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let btc = "2Fge5HEBRD3XTeg7Xg3FW5yiB9HVJFQtMXiWMQo72Up6" | |
5 | + | ||
6 | + | let eth = "3VuV5WTmDz47Dmdn3QpcYjzbSdipjQE4JMdNe1xZpX13" | |
7 | + | ||
8 | + | let usdt = "9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi" | |
9 | + | ||
10 | + | let usdc = "HGgabTqUS8WtVFUJzfmrTDMgEccJuZLBPhFgQFxvnsoW" | |
11 | + | ||
12 | + | let waves = "WAVES" | |
13 | + | ||
14 | + | let vires = "DSbbhLsSTeDg5Lsiufk2Aneh3DjVqJuPr2M9uU1gwy5p" | |
15 | + | ||
16 | + | let oracle = Address(base58'3PKkojKdd6BBzTf1RXbQVfUDraNFXXHKzQF') | |
17 | + | ||
18 | + | let dollar = 1000000 | |
19 | + | ||
20 | + | func getViresPrice () = { | |
21 | + | let swopfiPair = addressFromStringValue("3PJ48P3p2wvWUjgQaQiZ2cFbr8qmxMokBGd") | |
22 | + | let keyBalanceA = "A_asset_balance" | |
23 | + | let keyBalanceB = "B_asset_balance" | |
24 | + | let balanceA = getIntegerValue(swopfiPair, keyBalanceA) | |
25 | + | let balanceB = getIntegerValue(swopfiPair, keyBalanceB) | |
26 | + | fraction(balanceB, (100 * dollar), balanceA) | |
27 | + | } | |
28 | + | ||
29 | + | ||
30 | + | @Callable(i) | |
31 | + | func init (config) = if ((i.caller != this)) | |
32 | + | then throw("only self can init") | |
33 | + | else [StringEntry("config", config)] | |
34 | + | ||
35 | + | ||
36 | + | ||
37 | + | @Callable(i) | |
38 | + | func price (t) = { | |
39 | + | let tokenId = split(t, "_")[0] | |
40 | + | let price = match getInteger(this, (tokenId + "_override")) { | |
41 | + | case p: Int => | |
42 | + | p | |
43 | + | case _ => | |
44 | + | if ((tokenId == usdt)) | |
45 | + | then dollar | |
46 | + | else if ((tokenId == usdc)) | |
47 | + | then dollar | |
48 | + | else if ((tokenId == btc)) | |
49 | + | then getIntegerValue(oracle, "%s%s__price__BTC-USDT") | |
50 | + | else if ((tokenId == eth)) | |
51 | + | then getIntegerValue(oracle, "%s%s__price__ETH-USDT") | |
52 | + | else if ((tokenId == waves)) | |
53 | + | then getIntegerValue(oracle, "%s%s__price__WAVES-USDT") | |
54 | + | else if ((tokenId == vires)) | |
55 | + | then getViresPrice() | |
56 | + | else throw("unknown token") | |
57 | + | } | |
58 | + | $Tuple2(nil, price) | |
59 | + | } | |
60 | + | ||
61 | + | ||
62 | + | ||
63 | + | @Callable(i) | |
64 | + | func overridePrice (tokenId,price) = { | |
65 | + | let admStr = valueOrErrorMessage(getString(valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(this, "config"), "no config")), "bad config address"), "admin"), "no admin in config") | |
66 | + | if ((toString(i.caller) != admStr)) | |
67 | + | then throw("only admin can do") | |
68 | + | else if ((price == -1)) | |
69 | + | then [DeleteEntry((tokenId + "_override"))] | |
70 | + | else [IntegerEntry((tokenId + "_override"), price)] | |
71 | + | } | |
72 | + | ||
73 | + |
github/deemru/w8io/3ef1775 20.75 ms ◑