2019.04.10 01:26 [1475568] smart asset 3P9c8eRDJFBAXCzah6J2QTJoK7VNBtkSGpd > SELF 0.00000000 FullMoon
{
"type": 15,
"id": "8RewezJ32kLK57B4usus763Q5EvhMWUiJwSGkw4Tfh9o",
"fee": 100000000,
"feeAssetId": null,
"timestamp": 1554848814927,
"version": 1,
"sender": "3P9c8eRDJFBAXCzah6J2QTJoK7VNBtkSGpd",
"senderPublicKey": "5dcFNWcem3VanKMErViDMkr9oEVaNUrsGnYcAqXHnByG",
"proofs": [
"3kxeUFLBZxNQj4YGDeZ9svicRjHqQbzrnydFwgWvk1dpkXrQ3Jiw6s9fRkmZEwVkraoiAiPYf27HADT9VWRzU1o"
],
"assetId": "9hTBhvaSFB3H8jmsZw2ZHsNuwsLK9wHQTwgE1a3kZ8k7",
"script": "base64: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",
"chainId": 87,
"height": 1475568,
"spentComplexity": 0
}
View: original | compacted
Prev: 4egPgN9CmqxsnxEdujjASz7HWvYLLqGxB2xM6LG6k1Lj
Next: 5igkXKJ4hfDW8wmnt9YzDibsYFrgZ4Fx1zQTD9Q496ar
Diff:
Old | New | | Differences |
---|
2 | 2 | | {-# CONTENT_TYPE EXPRESSION #-} |
---|
3 | 3 | | let COINId = base58'6XJAscmejGPTLAdKsg12MynB5rNQzNiZz8Yj81SWeFrj' |
---|
4 | 4 | | let heightDiff = 55 |
---|
5 | | - | let priceDiffConst = 14 |
---|
6 | | - | let expirationHours = 24 |
---|
| 5 | + | let priceDiffConst = 1 |
---|
| 6 | + | let expirationHours = 1 |
---|
7 | 7 | | let maxExpiration = (((expirationHours * 60) * 60) * 1000) |
---|
8 | | - | let startHeight = 1475056 |
---|
| 8 | + | let startHeight = 1475666 |
---|
9 | 9 | | let cycles = ((height - startHeight) / heightDiff) |
---|
10 | 10 | | let priceDiff = (priceDiffConst * cycles) |
---|
11 | | - | let startBuyPrice = 113 |
---|
12 | | - | let minBuyPrice = (startBuyPrice - priceDiff) |
---|
13 | | - | let startSellPrice = 113 |
---|
14 | | - | let minSellPrice = (startSellPrice - priceDiff) |
---|
15 | | - | let expirationError = "Order time should be less than 1 day" |
---|
| 11 | + | let startBuyPrice = 1 |
---|
| 12 | + | let minBuyPrice = (startBuyPrice + priceDiff) |
---|
| 13 | + | let startSellPrice = 1 |
---|
| 14 | + | let minSellPrice = (startSellPrice + priceDiff) |
---|
| 15 | + | let expirationError = "Order time should be less than 1 hour" |
---|
16 | 16 | | let buyPriceError = (((("Buy price should be <= " + toString(minBuyPrice)) + " Money Energy Cents in a Cycle # ") + toString(cycles)) + ". Next Cycle starts less than a hour!") |
---|
17 | 17 | | let sellPriceError = (((("Sell price should be >= " + toString(minSellPrice)) + " Money Energy Cents in a Cycle # ") + toString(cycles)) + ". Next Cycle starts less than a hour!") |
---|
18 | 18 | | let transferFeeError = "Use Money Energy token to pay transfer fee!" |
---|
| 19 | + | let coinBalanceError = "You must hold 100+ Money Energy tokens to be allowed to trade!" |
---|
19 | 20 | | match tx { |
---|
20 | 21 | | case e: ExchangeTransaction => |
---|
21 | | - | let sell = sigVerify(e.sellOrder.bodyBytes, e.sellOrder.proofs[0], e.sellOrder.senderPublicKey) |
---|
22 | | - | let buy = sigVerify(e.buyOrder.bodyBytes, e.buyOrder.proofs[0], e.buyOrder.senderPublicKey) |
---|
23 | | - | if (if (sell) |
---|
24 | | - | then buy |
---|
| 22 | + | if (if ((10000 > assetBalance(e.sellOrder.sender, COINId))) |
---|
| 23 | + | then (10000 > assetBalance(e.buyOrder.sender, COINId)) |
---|
25 | 24 | | else false) |
---|
| 25 | + | then throw(coinBalanceError) |
---|
| 26 | + | else { |
---|
| 27 | + | let sell = sigVerify(e.sellOrder.bodyBytes, e.sellOrder.proofs[0], e.sellOrder.senderPublicKey) |
---|
| 28 | + | let buy = sigVerify(e.buyOrder.bodyBytes, e.buyOrder.proofs[0], e.buyOrder.senderPublicKey) |
---|
| 29 | + | if (if (sell) |
---|
| 30 | + | then buy |
---|
| 31 | + | else false) |
---|
| 32 | + | then true |
---|
| 33 | + | else if (sell) |
---|
| 34 | + | then if (((e.sellOrder.expiration - e.sellOrder.timestamp) > maxExpiration)) |
---|
| 35 | + | then throw(expirationError) |
---|
| 36 | + | else if (if ((minSellPrice > e.sellOrder.price)) |
---|
| 37 | + | then true |
---|
| 38 | + | else (e.sellOrder.assetPair.priceAsset != COINId)) |
---|
| 39 | + | then throw(sellPriceError) |
---|
| 40 | + | else true |
---|
| 41 | + | else if (buy) |
---|
| 42 | + | then if (if ((e.buyOrder.price > minBuyPrice)) |
---|
| 43 | + | then true |
---|
| 44 | + | else (e.sellOrder.assetPair.priceAsset != COINId)) |
---|
| 45 | + | then throw(buyPriceError) |
---|
| 46 | + | else true |
---|
| 47 | + | else false |
---|
| 48 | + | } |
---|
| 49 | + | case t: TransferTransaction => |
---|
| 50 | + | if ((t.feeAssetId == base58'6XJAscmejGPTLAdKsg12MynB5rNQzNiZz8Yj81SWeFrj')) |
---|
26 | 51 | | then true |
---|
27 | | - | else if (sell) |
---|
28 | | - | then if (if ((minSellPrice > e.sellOrder.price)) |
---|
29 | | - | then true |
---|
30 | | - | else (e.sellOrder.assetPair.priceAsset != COINId)) |
---|
31 | | - | then throw(sellPriceError) |
---|
32 | | - | else true |
---|
33 | | - | else if (buy) |
---|
34 | | - | then if (((e.sellOrder.expiration - e.sellOrder.timestamp) > maxExpiration)) |
---|
35 | | - | then throw(expirationError) |
---|
36 | | - | else if (if ((e.buyOrder.price > minBuyPrice)) |
---|
37 | | - | then true |
---|
38 | | - | else (e.sellOrder.assetPair.priceAsset != COINId)) |
---|
39 | | - | then throw(buyPriceError) |
---|
40 | | - | else true |
---|
41 | | - | else false |
---|
42 | | - | case t: TransferTransaction => |
---|
43 | | - | (t.feeAssetId == base58'6XJAscmejGPTLAdKsg12MynB5rNQzNiZz8Yj81SWeFrj') |
---|
| 52 | + | else throw(transferFeeError) |
---|
44 | 53 | | case _: MassTransferTransaction|BurnTransaction => |
---|
45 | 54 | | true |
---|
46 | 55 | | case _ => |
---|
Full:
Old | New | | Differences |
---|
1 | 1 | | {-# STDLIB_VERSION 2 #-} |
---|
2 | 2 | | {-# CONTENT_TYPE EXPRESSION #-} |
---|
3 | 3 | | let COINId = base58'6XJAscmejGPTLAdKsg12MynB5rNQzNiZz8Yj81SWeFrj' |
---|
4 | 4 | | let heightDiff = 55 |
---|
5 | | - | let priceDiffConst = 14 |
---|
6 | | - | let expirationHours = 24 |
---|
| 5 | + | let priceDiffConst = 1 |
---|
| 6 | + | let expirationHours = 1 |
---|
7 | 7 | | let maxExpiration = (((expirationHours * 60) * 60) * 1000) |
---|
8 | | - | let startHeight = 1475056 |
---|
| 8 | + | let startHeight = 1475666 |
---|
9 | 9 | | let cycles = ((height - startHeight) / heightDiff) |
---|
10 | 10 | | let priceDiff = (priceDiffConst * cycles) |
---|
11 | | - | let startBuyPrice = 113 |
---|
12 | | - | let minBuyPrice = (startBuyPrice - priceDiff) |
---|
13 | | - | let startSellPrice = 113 |
---|
14 | | - | let minSellPrice = (startSellPrice - priceDiff) |
---|
15 | | - | let expirationError = "Order time should be less than 1 day" |
---|
| 11 | + | let startBuyPrice = 1 |
---|
| 12 | + | let minBuyPrice = (startBuyPrice + priceDiff) |
---|
| 13 | + | let startSellPrice = 1 |
---|
| 14 | + | let minSellPrice = (startSellPrice + priceDiff) |
---|
| 15 | + | let expirationError = "Order time should be less than 1 hour" |
---|
16 | 16 | | let buyPriceError = (((("Buy price should be <= " + toString(minBuyPrice)) + " Money Energy Cents in a Cycle # ") + toString(cycles)) + ". Next Cycle starts less than a hour!") |
---|
17 | 17 | | let sellPriceError = (((("Sell price should be >= " + toString(minSellPrice)) + " Money Energy Cents in a Cycle # ") + toString(cycles)) + ". Next Cycle starts less than a hour!") |
---|
18 | 18 | | let transferFeeError = "Use Money Energy token to pay transfer fee!" |
---|
| 19 | + | let coinBalanceError = "You must hold 100+ Money Energy tokens to be allowed to trade!" |
---|
19 | 20 | | match tx { |
---|
20 | 21 | | case e: ExchangeTransaction => |
---|
21 | | - | let sell = sigVerify(e.sellOrder.bodyBytes, e.sellOrder.proofs[0], e.sellOrder.senderPublicKey) |
---|
22 | | - | let buy = sigVerify(e.buyOrder.bodyBytes, e.buyOrder.proofs[0], e.buyOrder.senderPublicKey) |
---|
23 | | - | if (if (sell) |
---|
24 | | - | then buy |
---|
| 22 | + | if (if ((10000 > assetBalance(e.sellOrder.sender, COINId))) |
---|
| 23 | + | then (10000 > assetBalance(e.buyOrder.sender, COINId)) |
---|
25 | 24 | | else false) |
---|
| 25 | + | then throw(coinBalanceError) |
---|
| 26 | + | else { |
---|
| 27 | + | let sell = sigVerify(e.sellOrder.bodyBytes, e.sellOrder.proofs[0], e.sellOrder.senderPublicKey) |
---|
| 28 | + | let buy = sigVerify(e.buyOrder.bodyBytes, e.buyOrder.proofs[0], e.buyOrder.senderPublicKey) |
---|
| 29 | + | if (if (sell) |
---|
| 30 | + | then buy |
---|
| 31 | + | else false) |
---|
| 32 | + | then true |
---|
| 33 | + | else if (sell) |
---|
| 34 | + | then if (((e.sellOrder.expiration - e.sellOrder.timestamp) > maxExpiration)) |
---|
| 35 | + | then throw(expirationError) |
---|
| 36 | + | else if (if ((minSellPrice > e.sellOrder.price)) |
---|
| 37 | + | then true |
---|
| 38 | + | else (e.sellOrder.assetPair.priceAsset != COINId)) |
---|
| 39 | + | then throw(sellPriceError) |
---|
| 40 | + | else true |
---|
| 41 | + | else if (buy) |
---|
| 42 | + | then if (if ((e.buyOrder.price > minBuyPrice)) |
---|
| 43 | + | then true |
---|
| 44 | + | else (e.sellOrder.assetPair.priceAsset != COINId)) |
---|
| 45 | + | then throw(buyPriceError) |
---|
| 46 | + | else true |
---|
| 47 | + | else false |
---|
| 48 | + | } |
---|
| 49 | + | case t: TransferTransaction => |
---|
| 50 | + | if ((t.feeAssetId == base58'6XJAscmejGPTLAdKsg12MynB5rNQzNiZz8Yj81SWeFrj')) |
---|
26 | 51 | | then true |
---|
27 | | - | else if (sell) |
---|
28 | | - | then if (if ((minSellPrice > e.sellOrder.price)) |
---|
29 | | - | then true |
---|
30 | | - | else (e.sellOrder.assetPair.priceAsset != COINId)) |
---|
31 | | - | then throw(sellPriceError) |
---|
32 | | - | else true |
---|
33 | | - | else if (buy) |
---|
34 | | - | then if (((e.sellOrder.expiration - e.sellOrder.timestamp) > maxExpiration)) |
---|
35 | | - | then throw(expirationError) |
---|
36 | | - | else if (if ((e.buyOrder.price > minBuyPrice)) |
---|
37 | | - | then true |
---|
38 | | - | else (e.sellOrder.assetPair.priceAsset != COINId)) |
---|
39 | | - | then throw(buyPriceError) |
---|
40 | | - | else true |
---|
41 | | - | else false |
---|
42 | | - | case t: TransferTransaction => |
---|
43 | | - | (t.feeAssetId == base58'6XJAscmejGPTLAdKsg12MynB5rNQzNiZz8Yj81SWeFrj') |
---|
| 52 | + | else throw(transferFeeError) |
---|
44 | 53 | | case _: MassTransferTransaction|BurnTransaction => |
---|
45 | 54 | | true |
---|
46 | 55 | | case _ => |
---|
47 | 56 | | true |
---|
48 | 57 | | } |
---|