tx · ALo5w9ptsX8zFfFTqQGzGnmWcPbQMPrD2vMEQdPgojJu

3NCpnvRgxBNESWkZV99WLEHhi65xBmVW8a3:  -1.00000000 Waves

2019.02.21 19:30 [505252] smart asset 3NCpnvRgxBNESWkZV99WLEHhi65xBmVW8a3 > SELF 0.00000000 Coolio

{ "type": 15, "id": "ALo5w9ptsX8zFfFTqQGzGnmWcPbQMPrD2vMEQdPgojJu", "fee": 100000000, "feeAssetId": null, "timestamp": 1550766629913, "version": 1, "sender": "3NCpnvRgxBNESWkZV99WLEHhi65xBmVW8a3", "senderPublicKey": "u7VamB229m8EPHqV1YzW7FhbhnLuVzzRvqvqQ8L4fDx", "proofs": [ "rab3sZRG4mQRSpgahv8koE5VJZbFR1cSKyCZCmyDeTxsNRLDPkww9zctaLwCUgx6ojPzTdYLGTQbKBkLJ9tH9ky" ], "assetId": "7GsJMq43JAWeU7BvcKZ9cZDZVJpg1ezrGGGY8bZP6pMS", "script": "base64:AQQAAAAHJG1hdGNoMAUAAAACdHgDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAF01hc3NUcmFuc2ZlclRyYW5zYWN0aW9uBAAAAANtdHQFAAAAByRtYXRjaDAEAAAADmZpcnN0UmVjaXBpZW50CAkAAZEAAAACCAUAAAADbXR0AAAACXRyYW5zZmVycwAAAAAAAAAAAAAAAAlyZWNpcGllbnQEAAAAC2ZpcnN0QW1vdW50CAkAAZEAAAACCAUAAAADbXR0AAAACXRyYW5zZmVycwAAAAAAAAAAAAAAAAZhbW91bnQEAAAAB2Fzc2V0SWQJAQAAAAdleHRyYWN0AAAAAQgFAAAAA210dAAAAAdhc3NldElkBAAAABBpc3N1ZVRyYW5zYWN0aW9uCQAD6AAAAAEFAAAAB2Fzc2V0SWQEAAAAByRtYXRjaDEFAAAAEGlzc3VlVHJhbnNhY3Rpb24DCQAAAQAAAAIFAAAAByRtYXRjaDECAAAAEElzc3VlVHJhbnNhY3Rpb24EAAAAB2lzc3VlVHgFAAAAByRtYXRjaDEEAAAADWlzc3VlckFkZHJlc3MJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEIBQAAAAdpc3N1ZVR4AAAAD3NlbmRlclB1YmxpY0tleQQAAAAHdGF4U2l6ZQkBAAAAB2V4dHJhY3QAAAABCQAEGgAAAAIFAAAADWlzc3VlckFkZHJlc3MJAAJYAAAAAQUAAAAHYXNzZXRJZAMJAAAAAAAAAgUAAAAOZmlyc3RSZWNpcGllbnQFAAAADWlzc3VlckFkZHJlc3MJAABnAAAAAgUAAAALZmlyc3RBbW91bnQJAABoAAAAAgkAAGkAAAACCAUAAAADbXR0AAAAC3RvdGFsQW1vdW50AAAAAAAAAABkBQAAAAd0YXhTaXplBwcH258+mA==", "chainId": 84, "height": 505252, "spentComplexity": 0 } View: original | compacted Prev: 4Ytzwa2a6ZxGQ933A2JnzJYwNUy1TAQFZteG4tg4FMbK Next: none Full:
OldNewDifferences
11 {-# STDLIB_VERSION 1 #-}
22 {-# CONTENT_TYPE EXPRESSION #-}
3-let heightDiff = 2
4-let priceDiffConst = 123456
5-let expirationHours = 24
6-let maxExpiration = (((expirationHours * 60) * 60) * 1000)
7-let startHeight = 505050
8-let cycles = ((height - startHeight) / heightDiff)
9-let priceDiff = (priceDiffConst * cycles)
10-let startBuyPrice = 12345655
11-let minBuyPrice = (startBuyPrice + priceDiff)
12-let maxBuyAmount = 6000000000
13-let startSellPrice = 12345666
14-let minSellPrice = (startSellPrice + priceDiff)
15-let minSellAmount = 600000000
16-let expirationError = "Expiration must be <= 24 hours"
17-let buyAmountError = ("Buy amount must be <= " + toString((maxBuyAmount / 100000000)))
18-let buyPriceError = (((("Buy price must be <= " + toString(minBuyPrice)) + " wavelets (Cycle #") + toString(cycles)) + ")")
19-let sellAmountError = ("Sell amount must be >= " + toString((minSellAmount / 100000000)))
20-let sellPriceError = (((("Sell price must be >= " + toString(minSellPrice)) + " wavelets (Cycle #") + toString(cycles)) + ") Wait next Cycle...")
21-let expiration = 1552064400000
223 match tx {
23- case e: ExchangeTransaction =>
24- if (((e.sellOrder.expiration - e.sellOrder.timestamp) > maxExpiration))
25- then throw(expirationError)
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 (sell)
30- then if ((minSellAmount > e.sellOrder.amount))
31- then throw(sellAmountError)
32- else if (if ((minSellPrice > e.sellOrder.price))
33- then true
34- else isDefined(e.sellOrder.assetPair.priceAsset))
35- then throw(sellPriceError)
36- else true
37- else if (buy)
38- then if ((e.buyOrder.amount > maxBuyAmount))
39- then throw(buyAmountError)
40- else if (if ((e.buyOrder.price > minBuyPrice))
41- then true
42- else isDefined(e.buyOrder.assetPair.priceAsset))
43- then throw(buyPriceError)
44- else true
45- else false
46- }
47- case b: TransferTransaction =>
48- (b.timestamp > expiration)
49- case _: MassTransferTransaction|BurnTransaction =>
50- true
4+ case mtt: MassTransferTransaction =>
5+ let firstRecipient = mtt.transfers[0].recipient
6+ let firstAmount = mtt.transfers[0].amount
7+ let assetId = extract(mtt.assetId)
8+ let issueTransaction = transactionById(assetId)
9+ match issueTransaction {
10+ case issueTx: IssueTransaction =>
11+ let issuerAddress = addressFromPublicKey(issueTx.senderPublicKey)
12+ let taxSize = extract(getInteger(issuerAddress, toBase58String(assetId)))
13+ if ((firstRecipient == issuerAddress))
14+ then (firstAmount >= ((mtt.totalAmount / 100) * taxSize))
15+ else false
16+ case _ =>
17+ false
18+ }
5119 case _ =>
52- true
20+ false
5321 }

github/deemru/w8io/3ef1775 
35.14 ms