tx · C8UVEBnaoU3kB51KAuXnD43XNmGL6trfUSpmUT17UM2v
3P4qXUToWDcD1Vv3nK5ufdtZ9y3uBXMLZ98: -1.00000000 Waves
2020.08.30 16:09 [2218976] smart asset 3P4qXUToWDcD1Vv3nK5ufdtZ9y3uBXMLZ98 > SELF 0.0000 CryptoConnect
{
"type": 15,
"id": "C8UVEBnaoU3kB51KAuXnD43XNmGL6trfUSpmUT17UM2v",
"fee": 100000000,
"feeAssetId": null,
"timestamp": 1598792961429,
"version": 1,
"sender": "3P4qXUToWDcD1Vv3nK5ufdtZ9y3uBXMLZ98",
"senderPublicKey": "3ZJEDX7b8ShGuGQNv4eWNHr3ZJjENTzhUMELGoBJng7p",
"proofs": [
"67BB287GmbDYGgFykvSQqobtdv9n1QyrfTZwU3TKZEhzW8DMRdLQywTb6hyd9qJKUnHQ7Ux4ZZABDSDXmTmmuYwL"
],
"assetId": "7xegGUEouAaCapcyfzhKL267RYbX1gZSEoCF7mGDhVSX",
"script": "base64:AgQAAAAKYnRjQXNzZXRJZAEAAAAgbPpq/8XtqowLf7Uqk9KiDC+Cgtt0egSMU/v9Ex9zoP8EAAAAC3VzZG5Bc3NldElkAQAAACC2JinDBPXOU5GkDkt1JC9kjFGx+t+vVCm9SNIdKrKq0QQAAAALcHJpY2VPcmFjbGUJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVejUVZoAyiqaMVdikxXh4JFl/X2Jkg6DzsEAAAAByRtYXRjaDAFAAAAAnR4AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABNFeGNoYW5nZVRyYW5zYWN0aW9uBAAAAAJldAUAAAAHJG1hdGNoMAQAAAAMbGFzdEJUQ1ByaWNlBAAAAAckbWF0Y2gxCQAEGgAAAAIFAAAAC3ByaWNlT3JhY2xlAgAAAAlidGNfcHJpY2UDCQAAAQAAAAIFAAAAByRtYXRjaDECAAAAA0ludAQAAAABeAUAAAAHJG1hdGNoMQUAAAABeAMJAAABAAAAAgUAAAAHJG1hdGNoMQIAAAAEVW5pdAAAAAAAAAAAAAkBAAAABXRocm93AAAAAAQAAAANbGFzdFVzZG5QcmljZQQAAAAHJG1hdGNoMQkABBoAAAACBQAAAAtwcmljZU9yYWNsZQIAAAAKdXNkbl9wcmljZQMJAAABAAAAAgUAAAAHJG1hdGNoMQIAAAADSW50BAAAAAF4BQAAAAckbWF0Y2gxBQAAAAF4AwkAAAEAAAACBQAAAAckbWF0Y2gxAgAAAARVbml0AAAAAAAAAAAACQEAAAAFdGhyb3cAAAAABAAAAAd3aXRoQnRjCQAAAAAAAAIICAgFAAAAAmV0AAAACXNlbGxPcmRlcgAAAAlhc3NldFBhaXIAAAAKcHJpY2VBc3NldAUAAAAKYnRjQXNzZXRJZAQAAAAId2l0aFVzZG4JAAAAAAAAAggICAUAAAACZXQAAAAJc2VsbE9yZGVyAAAACWFzc2V0UGFpcgAAAApwcmljZUFzc2V0BQAAAAt1c2RuQXNzZXRJZAQAAAAKYnRjUHJpY2VPawMJAAAAAAAAAgUAAAAHd2l0aEJ0YwYJAABnAAAAAggIBQAAAAJldAAAAAlzZWxsT3JkZXIAAAAFcHJpY2UJAABrAAAAAwUAAAAMbGFzdEJUQ1ByaWNlAAAAAAAAAABpAAAAAAAAAABkBwQAAAALdXNkblByaWNlT2sDCQAAAAAAAAIFAAAACHdpdGhVc2RuBgkAAGcAAAACCAgFAAAAAmV0AAAACXNlbGxPcmRlcgAAAAVwcmljZQkAAGsAAAADBQAAAA1sYXN0VXNkblByaWNlAAAAAAAAAABpAAAAAAAAAABkBwQAAAAHY2FuU2VsbAMFAAAACmJ0Y1ByaWNlT2sGBQAAAAt1c2RuUHJpY2VPawMDBQAAAAd3aXRoQnRjBgUAAAAId2l0aFVzZG4FAAAAB2NhblNlbGwHBlNnJ/8=",
"chainId": 87,
"height": 2218976,
"spentComplexity": 0
}
View: original | compacted
Prev: 6ziGAYNx8TJ3XmBmSkQsAMATeZW4Ssqbpz1zg8vPSqxJ
Next: C5yNXR3tACb2Sr1CzXftuiRjw8guwHyfzWhx4frohWq4
Diff:
Old | New | | Differences |
---|
2 | 2 | | {-# CONTENT_TYPE EXPRESSION #-} |
---|
3 | 3 | | let btcAssetId = base58'8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS' |
---|
4 | 4 | | let usdnAssetId = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p' |
---|
| 5 | + | let priceOracle = Address(base58'3PGpSJwm4MucLavrsZFSUsCKBCJ1GNkoMfG') |
---|
5 | 6 | | match tx { |
---|
6 | 7 | | case et: ExchangeTransaction => |
---|
| 8 | + | let lastBTCPrice = match getInteger(priceOracle, "btc_price") { |
---|
| 9 | + | case x: Int => |
---|
| 10 | + | x |
---|
| 11 | + | case _: Unit => |
---|
| 12 | + | 0 |
---|
| 13 | + | case _ => |
---|
| 14 | + | throw() |
---|
| 15 | + | } |
---|
| 16 | + | let lastUsdnPrice = match getInteger(priceOracle, "usdn_price") { |
---|
| 17 | + | case x: Int => |
---|
| 18 | + | x |
---|
| 19 | + | case _: Unit => |
---|
| 20 | + | 0 |
---|
| 21 | + | case _ => |
---|
| 22 | + | throw() |
---|
| 23 | + | } |
---|
7 | 24 | | let withBtc = (et.sellOrder.assetPair.priceAsset == btcAssetId) |
---|
8 | 25 | | let withUsdn = (et.sellOrder.assetPair.priceAsset == usdnAssetId) |
---|
9 | | - | let marginIncrease = (5 / 10) |
---|
10 | | - | let acceptedSellMargin = (et.price * marginIncrease) |
---|
11 | | - | let canSell = (et.sellOrder.price >= (et.price + acceptedSellMargin)) |
---|
| 26 | + | let btcPriceOk = if ((withBtc == true)) |
---|
| 27 | + | then (et.sellOrder.price >= fraction(lastBTCPrice, 105, 100)) |
---|
| 28 | + | else false |
---|
| 29 | + | let usdnPriceOk = if ((withUsdn == true)) |
---|
| 30 | + | then (et.sellOrder.price >= fraction(lastUsdnPrice, 105, 100)) |
---|
| 31 | + | else false |
---|
| 32 | + | let canSell = if (btcPriceOk) |
---|
| 33 | + | then true |
---|
| 34 | + | else usdnPriceOk |
---|
12 | 35 | | if (if (withBtc) |
---|
13 | 36 | | then true |
---|
14 | 37 | | else withUsdn) |
---|
Full:
Old | New | | Differences |
---|
1 | 1 | | {-# STDLIB_VERSION 2 #-} |
---|
2 | 2 | | {-# CONTENT_TYPE EXPRESSION #-} |
---|
3 | 3 | | let btcAssetId = base58'8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS' |
---|
4 | 4 | | let usdnAssetId = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p' |
---|
| 5 | + | let priceOracle = Address(base58'3PGpSJwm4MucLavrsZFSUsCKBCJ1GNkoMfG') |
---|
5 | 6 | | match tx { |
---|
6 | 7 | | case et: ExchangeTransaction => |
---|
| 8 | + | let lastBTCPrice = match getInteger(priceOracle, "btc_price") { |
---|
| 9 | + | case x: Int => |
---|
| 10 | + | x |
---|
| 11 | + | case _: Unit => |
---|
| 12 | + | 0 |
---|
| 13 | + | case _ => |
---|
| 14 | + | throw() |
---|
| 15 | + | } |
---|
| 16 | + | let lastUsdnPrice = match getInteger(priceOracle, "usdn_price") { |
---|
| 17 | + | case x: Int => |
---|
| 18 | + | x |
---|
| 19 | + | case _: Unit => |
---|
| 20 | + | 0 |
---|
| 21 | + | case _ => |
---|
| 22 | + | throw() |
---|
| 23 | + | } |
---|
7 | 24 | | let withBtc = (et.sellOrder.assetPair.priceAsset == btcAssetId) |
---|
8 | 25 | | let withUsdn = (et.sellOrder.assetPair.priceAsset == usdnAssetId) |
---|
9 | | - | let marginIncrease = (5 / 10) |
---|
10 | | - | let acceptedSellMargin = (et.price * marginIncrease) |
---|
11 | | - | let canSell = (et.sellOrder.price >= (et.price + acceptedSellMargin)) |
---|
| 26 | + | let btcPriceOk = if ((withBtc == true)) |
---|
| 27 | + | then (et.sellOrder.price >= fraction(lastBTCPrice, 105, 100)) |
---|
| 28 | + | else false |
---|
| 29 | + | let usdnPriceOk = if ((withUsdn == true)) |
---|
| 30 | + | then (et.sellOrder.price >= fraction(lastUsdnPrice, 105, 100)) |
---|
| 31 | + | else false |
---|
| 32 | + | let canSell = if (btcPriceOk) |
---|
| 33 | + | then true |
---|
| 34 | + | else usdnPriceOk |
---|
12 | 35 | | if (if (withBtc) |
---|
13 | 36 | | then true |
---|
14 | 37 | | else withUsdn) |
---|
15 | 38 | | then canSell |
---|
16 | 39 | | else false |
---|
17 | 40 | | case _ => |
---|
18 | 41 | | true |
---|
19 | 42 | | } |
---|