tx · 2zpgtmQ23xuGp8ZPpNbpNEUjKvEsygtZW4Vhe3oQ25SX 3MsXGy1CJfW5c8GJJAkimm2afr9TPVYjgXr: -1.00000000 Waves 2019.03.01 23:42 [517253] smart asset 3MsXGy1CJfW5c8GJJAkimm2afr9TPVYjgXr > SELF 0.00000000 testtest2
{ "type": 15, "id": "2zpgtmQ23xuGp8ZPpNbpNEUjKvEsygtZW4Vhe3oQ25SX", "fee": 100000000, "feeAssetId": null, "timestamp": 1551472946305, "version": 1, "sender": "3MsXGy1CJfW5c8GJJAkimm2afr9TPVYjgXr", "senderPublicKey": "6wAP6yziEYov9Vbdfa25JfXgFgakhMRo3Z9UbNW3Y4nV", "proofs": [ "ZziRUqREkAtJM7h3ixb6D6SWkkL51Vfo8B5dKNKDDncYYtmWBjTh7n9Jap2CuAcouv7MGzhWsi7fe1vQcZAuytj" ], "assetId": "7Mjm994f5AjTpj9iixRSHfJKG7HMUbm19HBeu9sKLSzQ", "script": "base64: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", "chainId": 84, "height": 517253, "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
Old | New | Differences | |
---|---|---|---|
1 | - | # no script | |
1 | + | {-# STDLIB_VERSION 1 #-} | |
2 | + | {-# CONTENT_TYPE EXPRESSION #-} | |
3 | + | let issuer = Address(base58'3P61b6te2fvjL7agKHqNcCkputgYs65xw5R') | |
4 | + | let sender = toBase58String(addressFromPublicKey(tx.senderPublicKey).bytes) | |
5 | + | let isFrozen = extract(getBoolean(issuer, "TokenFrozen")) | |
6 | + | let isOnBlacklist = isDefined(getBoolean(issuer, sender)) | |
7 | + | let MinWavesPrice = extract(getInteger(issuer, "MinWavesPrice")) | |
8 | + | let MinBtcPrice = extract(getInteger(issuer, "MinBtcPrice")) | |
9 | + | let MinEthPrice = extract(getInteger(issuer, "MinEthPrice")) | |
10 | + | if ((issuer == tx.sender)) | |
11 | + | then match tx { | |
12 | + | case e: ExchangeTransaction => | |
13 | + | if (!(isDefined(e.sellOrder.assetPair.priceAsset))) | |
14 | + | then true | |
15 | + | else if ((e.sellOrder.assetPair.priceAsset == base58'8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS')) | |
16 | + | then true | |
17 | + | else if ((e.sellOrder.assetPair.priceAsset == base58'474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu')) | |
18 | + | then true | |
19 | + | else throw("Only WAVES, BTC and ETH pairs allowed") | |
20 | + | case _ => | |
21 | + | true | |
22 | + | } | |
23 | + | else if (isFrozen) | |
24 | + | then match tx { | |
25 | + | case _ => | |
26 | + | false | |
27 | + | } | |
28 | + | else if (isOnBlacklist) | |
29 | + | then { | |
30 | + | let isBlocked = extract(getBoolean(issuer, sender)) | |
31 | + | if (isBlocked) | |
32 | + | then match tx { | |
33 | + | case _ => | |
34 | + | false | |
35 | + | } | |
36 | + | else match tx { | |
37 | + | case e: ExchangeTransaction => | |
38 | + | if (!(isDefined(e.buyOrder.assetPair.priceAsset))) | |
39 | + | then if (if ((e.buyOrder.price >= MinWavesPrice)) | |
40 | + | then true | |
41 | + | else (e.sellOrder.price >= 1)) | |
42 | + | then true | |
43 | + | else { | |
44 | + | let WAVerrStr = ((("Minimal WAVES price = " + toString((MinWavesPrice / 100000000))) + ".") + toString((MinWavesPrice % 100000000))) | |
45 | + | throw(WAVerrStr) | |
46 | + | } | |
47 | + | else if ((e.buyOrder.assetPair.priceAsset == base58'8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS')) | |
48 | + | then if ((e.buyOrder.price >= MinBtcPrice)) | |
49 | + | then true | |
50 | + | else { | |
51 | + | let BTCerrStr = ((("Minimal BTC price = " + toString((MinBtcPrice / 100000000))) + ".") + toString((MinBtcPrice % 100000000))) | |
52 | + | throw(BTCerrStr) | |
53 | + | } | |
54 | + | else if ((e.buyOrder.assetPair.priceAsset == base58'474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu')) | |
55 | + | then if ((e.buyOrder.price >= MinEthPrice)) | |
56 | + | then true | |
57 | + | else { | |
58 | + | let ETHerrStr = ((("Minimal ETH price = " + toString((MinEthPrice / 100000000))) + ".") + toString((MinEthPrice % 100000000))) | |
59 | + | throw(ETHerrStr) | |
60 | + | } | |
61 | + | else throw("Only WAVES, BTC and ETH pairs allowed") | |
62 | + | case b: BurnTransaction => | |
63 | + | false | |
64 | + | case s: SetAssetScriptTransaction => | |
65 | + | false | |
66 | + | case r: ReissueTransaction => | |
67 | + | false | |
68 | + | case _ => | |
69 | + | true | |
70 | + | } | |
71 | + | } | |
72 | + | else match tx { | |
73 | + | case e: ExchangeTransaction => | |
74 | + | if (!(isDefined(e.buyOrder.assetPair.priceAsset))) | |
75 | + | then if (if ((e.buyOrder.price >= MinWavesPrice)) | |
76 | + | then true | |
77 | + | else (e.sellOrder.price >= 1)) | |
78 | + | then true | |
79 | + | else { | |
80 | + | let WAVerrStr = ((("Minimal WAVES price = " + toString((MinWavesPrice / 100000000))) + ".") + toString((MinWavesPrice % 100000000))) | |
81 | + | throw(WAVerrStr) | |
82 | + | } | |
83 | + | else if ((e.buyOrder.assetPair.priceAsset == base58'8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS')) | |
84 | + | then if ((e.buyOrder.price >= MinBtcPrice)) | |
85 | + | then true | |
86 | + | else { | |
87 | + | let BTCerrStr = ((("Minimal BTC price = " + toString((MinBtcPrice / 100000000))) + ".") + toString((MinBtcPrice % 100000000))) | |
88 | + | throw(BTCerrStr) | |
89 | + | } | |
90 | + | else if ((e.buyOrder.assetPair.priceAsset == base58'474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu')) | |
91 | + | then if ((e.buyOrder.price >= MinEthPrice)) | |
92 | + | then true | |
93 | + | else { | |
94 | + | let ETHerrStr = ((("Minimal ETH price = " + toString((MinEthPrice / 100000000))) + ".") + toString((MinEthPrice % 100000000))) | |
95 | + | throw(ETHerrStr) | |
96 | + | } | |
97 | + | else throw("Only WAVES, BTC and ETH pairs allowed") | |
98 | + | case b: BurnTransaction => | |
99 | + | false | |
100 | + | case s: SetAssetScriptTransaction => | |
101 | + | false | |
102 | + | case r: ReissueTransaction => | |
103 | + | false | |
104 | + | case _ => | |
105 | + | true | |
106 | + | } |
github/deemru/w8io/026f985 104.70 ms ◑