tx · 3M8aovC9smS3uhLJFRCAvrsCGYFDvYyPLTZ5Z2xbw93v 3N4W71f8BiDEH96FSmxHH6GBoAmRhw9AErq: -0.01500000 Waves 2019.10.01 20:58 [700968] smart account 3N4W71f8BiDEH96FSmxHH6GBoAmRhw9AErq > SELF 0.00000000 Waves
{ "type": 13, "id": "3M8aovC9smS3uhLJFRCAvrsCGYFDvYyPLTZ5Z2xbw93v", "fee": 1500000, "feeAssetId": null, "timestamp": 1569951058189, "version": 1, "sender": "3N4W71f8BiDEH96FSmxHH6GBoAmRhw9AErq", "senderPublicKey": "59Rtw6Eb7rwVJNzaMB7V5F1UPNidytBqgPZFQaf6zTMZ", "proofs": [ "31bFp461VEB3WAYBmU6UDcdayKDqTj6eTaG7iNfAiarBUDXQu2s7zFB1bCVkABwrdfZetcvpqJUsEbiU88yZ8mXp" ], "script": "base64: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c2VsbE9yZGVyAAAACWFzc2V0UGFpcgAAAApwcmljZUFzc2V0BQAAAAV1c2RJZAkAAGcAAAACCAUAAAABZQAAAAVwcmljZQkAAGkAAAACBQAAAAlldXJvS29lZmYFAAAACHVzZFByaWNlAwkAAAAAAAACCAgIBQAAAAFlAAAACXNlbGxPcmRlcgAAAAlhc3NldFBhaXIAAAAKcHJpY2VBc3NldAUAAAAFZXVySWQJAABnAAAAAggFAAAAAWUAAAAFcHJpY2UFAAAACWV1cm9Lb2VmZgcDAwMFAAAAEmJ1eU9yZGVyRXhwaXJhdGlvbgUAAAATc2VsbE9yZGVyRXhwaXJhdGlvbgcFAAAADWJ1eU9yZGVyQ2hlY2sHBQAAAA5zZWxsT3JkZXJDaGVjawcDAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAA9CdXJuVHJhbnNhY3Rpb24GAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABdNYXNzVHJhbnNmZXJUcmFuc2FjdGlvbgYJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAATVHJhbnNmZXJUcmFuc2FjdGlvbgQAAAABYQUAAAAHJG1hdGNoMAYHf5xpoQ==", "chainId": 84, "height": 700968, "spentComplexity": 0 } View: original | compacted Prev: 5nJWuSDrqAYuFkuUhzWFvvoPVMeX2PhUz1PxWBCKvpL6 Next: none Full:
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 3 #-} | |
2 | - | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | - | {-# CONTENT_TYPE DAPP #-} | |
4 | - | ||
5 | - | ||
6 | - | @Callable(i) | |
7 | - | func a () = { | |
8 | - | let oracleAddress = "3N4W71f8BiDEH96FSmxHH6GBoAmRhw9AErq" | |
9 | - | let euroPrice = match getString(addressFromStringValue(oracleAddress), "EUR") { | |
10 | - | case a: String => | |
11 | - | a | |
12 | - | case _ => | |
13 | - | throw("Couldn't find Euro Price") | |
14 | - | } | |
15 | - | let euroPriceList = split(euroPrice, ".") | |
16 | - | let euroPrice2 = (euroPriceList[0] + euroPriceList[1]) | |
17 | - | let euroPrice3 = parseIntValue(take(euroPrice2, 4)) | |
18 | - | WriteSet([DataEntry("euroPrice", euroPrice), DataEntry("euroPrice2", euroPrice2), DataEntry("euroPrice3", euroPrice3)]) | |
19 | - | } | |
20 | - | ||
21 | - | ||
22 | - | ||
23 | - | @Callable(i) | |
24 | - | func b (cousre) = WriteSet([DataEntry("EUR", cousre)]) | |
25 | - | ||
26 | - | ||
2 | + | {-# CONTENT_TYPE EXPRESSION #-} | |
3 | + | let startHeight = 573540 | |
4 | + | let startPrice = 100000000 | |
5 | + | let weekInterval = (1440 * 7) | |
6 | + | let oracleAddress = "3N4W71f8BiDEH96FSmxHH6GBoAmRhw9AErq" | |
7 | + | let btcId = base58'8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS' | |
8 | + | let ethId = base58'474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu' | |
9 | + | let ltcId = base58'HZk1mbfuJpmxU1Fs4AX5MWLVYtctsNcg6e2C6VKqK8zk' | |
10 | + | let usdId = base58'Ft8X1v1LTa1ABafufpaCWyVj8KkaxUWE6xBhW6sNFJck' | |
11 | + | let eurId = base58'Gtb1WRznfchDnTh37ezoDTJ4wcoKaRsKqKjJjy7nm2zU' | |
12 | + | let btcPrice = match getInteger(addressFromStringValue(oracleAddress), "BTC/EUR") { | |
13 | + | case a: Int => | |
14 | + | a | |
15 | + | case _ => | |
16 | + | throw("Couldn't find BTC/EUR price") | |
17 | + | } | |
18 | + | let ethPrice = match getInteger(addressFromStringValue(oracleAddress), "ETH/EUR") { | |
19 | + | case a: Int => | |
20 | + | a | |
21 | + | case _ => | |
22 | + | throw("Couldn't find ETH/EUR price") | |
23 | + | } | |
24 | + | let ltcPrice = match getInteger(addressFromStringValue(oracleAddress), "LTC/EUR") { | |
25 | + | case a: Int => | |
26 | + | a | |
27 | + | case _ => | |
28 | + | throw("Couldn't find LTC/EUR price") | |
29 | + | } | |
30 | + | let usdPrice = match getInteger(addressFromStringValue(oracleAddress), "USD/EUR") { | |
31 | + | case a: Int => | |
32 | + | a | |
33 | + | case _ => | |
34 | + | throw("Couldn't find USD/EUR price") | |
35 | + | } | |
36 | + | match tx { | |
37 | + | case e: ExchangeTransaction => | |
38 | + | let weeks = ((height - startHeight) / weekInterval) | |
39 | + | let euroKoeff = (startPrice + ((startPrice * weeks) / 10)) | |
40 | + | let buyOrderExpiration = (weekInterval >= (e.buyOrder.expiration - e.buyOrder.timestamp)) | |
41 | + | let sellOrderExpiration = (weekInterval >= (e.sellOrder.expiration - e.sellOrder.timestamp)) | |
42 | + | let buyOrderCheck = if ((e.buyOrder.assetPair.priceAsset == btcId)) | |
43 | + | then (e.price >= (euroKoeff / btcPrice)) | |
44 | + | else if ((e.buyOrder.assetPair.priceAsset == ethId)) | |
45 | + | then (e.price >= (euroKoeff / ethPrice)) | |
46 | + | else if ((e.buyOrder.assetPair.priceAsset == ltcId)) | |
47 | + | then (e.price >= (euroKoeff / ltcPrice)) | |
48 | + | else if ((e.buyOrder.assetPair.priceAsset == usdId)) | |
49 | + | then (e.price >= (euroKoeff / usdPrice)) | |
50 | + | else if ((e.buyOrder.assetPair.priceAsset == eurId)) | |
51 | + | then (e.price >= euroKoeff) | |
52 | + | else false | |
53 | + | let sellOrderCheck = if ((e.sellOrder.assetPair.priceAsset == btcId)) | |
54 | + | then (e.price >= (euroKoeff / btcPrice)) | |
55 | + | else if ((e.sellOrder.assetPair.priceAsset == ethId)) | |
56 | + | then (e.price >= (euroKoeff / ethPrice)) | |
57 | + | else if ((e.sellOrder.assetPair.priceAsset == ltcId)) | |
58 | + | then (e.price >= (euroKoeff / ltcPrice)) | |
59 | + | else if ((e.sellOrder.assetPair.priceAsset == usdId)) | |
60 | + | then (e.price >= (euroKoeff / usdPrice)) | |
61 | + | else if ((e.sellOrder.assetPair.priceAsset == eurId)) | |
62 | + | then (e.price >= euroKoeff) | |
63 | + | else false | |
64 | + | if (if (if (buyOrderExpiration) | |
65 | + | then sellOrderExpiration | |
66 | + | else false) | |
67 | + | then buyOrderCheck | |
68 | + | else false) | |
69 | + | then sellOrderCheck | |
70 | + | else false | |
71 | + | case a: BurnTransaction|MassTransferTransaction|TransferTransaction => | |
72 | + | true | |
73 | + | case _ => | |
74 | + | false | |
75 | + | } |
github/deemru/w8io/873ac7e 19.95 ms ◑![]()