tx · 8cbgXZFVhLwGsAJGrkWA7kvCDmf65i86ybgwqYXcqGMy

3N9hKwuwtECrpiMAfy6krVKf2ovU1Si9ssu:  -1.10000000 Waves

2019.03.17 21:13 [540551] smart asset 3N9hKwuwtECrpiMAfy6krVKf2ovU1Si9ssu > SELF 0.00000000 SMTH

{ "type": 15, "id": "8cbgXZFVhLwGsAJGrkWA7kvCDmf65i86ybgwqYXcqGMy", "fee": 110000000, "feeAssetId": null, "timestamp": 1552846397185, "version": 1, "sender": "3N9hKwuwtECrpiMAfy6krVKf2ovU1Si9ssu", "senderPublicKey": "B1jCjJgfsJPUci2LqspvGwEFV7jFKVNf2NwRdVpWJkAb", "proofs": [ "43TVfHNgtikw61h15qW1FpZ5dpGDHPxupicNCzysNBvnUwA9qp3Xuq517uoi8ur5YrP1hJBvWA5udnArASn5TcgF" ], "assetId": "5aC18jdnA4KLsrtWQP3RuU9QhWvnmaMAFQq5fQjwJ49T", "script": "base64:AQQAAAAObWF0Y2hlckFkZHJlc3MJAQAAABFhZGRyZXNzRnJvbVN0cmluZwAAAAECAAAAIzNOQzJEUlVaRHNCYTRVeFZ1Wm9ldUxBckFoNVhuQ3VuV1lNBAAAAA5nYXRld2F5QWRkcmVzcwkBAAAAEWFkZHJlc3NGcm9tU3RyaW5nAAAAAQIAAAAjM045aEt3dXd0RUNycGlNQWZ5NmtyVktmMm92VTFTaTlzc3UEAAAADVdoaXRlbGlzdEFkZHIJAQAAABFhZGRyZXNzRnJvbVN0cmluZwAAAAECAAAAIzNON1RtUEZFMVFSS0V0S05CY1F2UGlIcUdkdm03UkthNlY5BAAAAAp2YWxpZFN0YXRlAAAAAAAAAAPoBAAAAAckbWF0Y2gwBQAAAAJ0eAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAXTWFzc1RyYW5zZmVyVHJhbnNhY3Rpb24EAAAAAnR4BQAAAAckbWF0Y2gwBwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAATVHJhbnNmZXJUcmFuc2FjdGlvbgQAAAACdHgFAAAAByRtYXRjaDADAwkBAAAAAiE9AAAAAggFAAAAAnR4AAAABnNlbmRlcgUAAAAOZ2F0ZXdheUFkZHJlc3MJAQAAAAIhPQAAAAIIBQAAAAJ0eAAAAAlyZWNpcGllbnQFAAAADmdhdGV3YXlBZGRyZXNzBwcDCQAAAAAAAAIIBQAAAAJ0eAAAAAZzZW5kZXIFAAAADmdhdGV3YXlBZGRyZXNzBgQAAAAKd2hpdGUxTGlzdAkAAlgAAAABCAgFAAAAAnR4AAAABnNlbmRlcgAAAAVieXRlcwQAAAAPd2hpdGUxTGlzdEFzc2V0CQABLAAAAAIFAAAACndoaXRlMUxpc3QJAAJYAAAAAQkBAAAAB2V4dHJhY3QAAAABCAUAAAACdHgAAAAHYXNzZXRJZAQAAAAPd2hpdGUxTGlzdEVudHJ5CQAEGgAAAAIJAQAAAAdleHRyYWN0AAAAAQUAAAANV2hpdGVsaXN0QWRkcgUAAAAKd2hpdGUxTGlzdAMJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEFAAAAD3doaXRlMUxpc3RFbnRyeQkAAAIAAAABAgAAABhTZW5kZXIgbm90IGluIHdoaXRlIGxpc3QDCQEAAAACIT0AAAACBQAAAA93aGl0ZTFMaXN0RW50cnkFAAAACnZhbGlkU3RhdGUJAAACAAAAAQIAAAAZU2VuZGVyIG5vdCBpbiB2YWxpZCBzdGF0ZQQAAAAUd2hpdGUxTGlzdEFzc2V0RW50cnkJAAQaAAAAAgkBAAAAB2V4dHJhY3QAAAABBQAAAA1XaGl0ZWxpc3RBZGRyBQAAAA93aGl0ZTFMaXN0QXNzZXQDCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABBQAAABR3aGl0ZTFMaXN0QXNzZXRFbnRyeQYEAAAAC2N1cjFCYWxhbmNlCQAD6wAAAAIIBQAAAAJ0eAAAAAZzZW5kZXIIBQAAAAJ0eAAAAAdhc3NldElkAwkAAGYAAAACCQEAAAAHZXh0cmFjdAAAAAEFAAAAFHdoaXRlMUxpc3RBc3NldEVudHJ5CQAAZQAAAAIFAAAAC2N1cjFCYWxhbmNlCAUAAAACdHgAAAAGYW1vdW50CQAAAgAAAAECAAAAJkNhbm5vdCBzZW5kIGFtb3VudDogdW5kZXIgcmVzdHJpY3Rpb25zBgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAATRXhjaGFuZ2VUcmFuc2FjdGlvbgQAAAACdHgFAAAAByRtYXRjaDAEAAAAEW91dGNvbWluZzFBc3NldElkCAgIBQAAAAJ0eAAAAAhidXlPcmRlcgAAAAlhc3NldFBhaXIAAAALYW1vdW50QXNzZXQEAAAAEW91dGNvbWluZzFBY2NvdW50CAgFAAAAAnR4AAAACGJ1eU9yZGVyAAAABnNlbmRlcgQAAAARb3V0Y29taW5nMkFzc2V0SWQICAgFAAAAAnR4AAAACXNlbGxPcmRlcgAAAAlhc3NldFBhaXIAAAAKcHJpY2VBc3NldAQAAAARb3V0Y29taW5nMkFjY291bnQICAUAAAACdHgAAAAJc2VsbE9yZGVyAAAABnNlbmRlcgQAAAAQb3V0Y29taW5nMUFtb3VudAgFAAAAAnR4AAAABmFtb3VudAQAAAAQb3V0Y29taW5nMkFtb3VudAkAAGsAAAADCAUAAAACdHgAAAAGYW1vdW50CAUAAAACdHgAAAAFcHJpY2UAAAAAAAX14QAEAAAACndoaXRlMUxpc3QJAAJYAAAAAQgFAAAAEW91dGNvbWluZzFBY2NvdW50AAAABWJ5dGVzBAAAAA93aGl0ZTFMaXN0QXNzZXQDCQEAAAAJaXNEZWZpbmVkAAAAAQUAAAARb3V0Y29taW5nMUFzc2V0SWQJAAEsAAAAAgUAAAAKd2hpdGUxTGlzdAkAAlgAAAABCQEAAAAHZXh0cmFjdAAAAAEFAAAAEW91dGNvbWluZzFBc3NldElkCQABLAAAAAIFAAAACndoaXRlMUxpc3QCAAAABl9XQVZFUwQAAAAKd2hpdGUyTGlzdAkAAlgAAAABCAUAAAARb3V0Y29taW5nMkFjY291bnQAAAAFYnl0ZXMEAAAAD3doaXRlMkxpc3RBc3NldAMJAQAAAAlpc0RlZmluZWQAAAABBQAAABFvdXRjb21pbmcyQXNzZXRJZAkAASwAAAACBQAAAAp3aGl0ZTJMaXN0CQACWAAAAAEJAQAAAAdleHRyYWN0AAAAAQUAAAARb3V0Y29taW5nMkFzc2V0SWQJAAEsAAAAAgUAAAAKd2hpdGUyTGlzdAIAAAAGX1dBVkVTBAAAAAhpczFXYXZlcwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQUAAAARb3V0Y29taW5nMUFzc2V0SWQEAAAACGlzMldhdmVzCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABBQAAABFvdXRjb21pbmcyQXNzZXRJZAQAAAAPd2hpdGUxTGlzdEVudHJ5CQAEGgAAAAIJAQAAAAdleHRyYWN0AAAAAQUAAAANV2hpdGVsaXN0QWRkcgkAAlgAAAABCAUAAAARb3V0Y29taW5nMUFjY291bnQAAAAFYnl0ZXMEAAAAD3doaXRlMkxpc3RFbnRyeQkABBoAAAACCQEAAAAHZXh0cmFjdAAAAAEFAAAADVdoaXRlbGlzdEFkZHIJAAJYAAAAAQgFAAAAEW91dGNvbWluZzJBY2NvdW50AAAABWJ5dGVzAwMJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEFAAAAD3doaXRlMUxpc3RFbnRyeQYJAQAAAAIhPQAAAAIFAAAAD3doaXRlMUxpc3RFbnRyeQUAAAAKdmFsaWRTdGF0ZQkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAIQWNjb3VudCAJAAJYAAAAAQgFAAAAEW91dGNvbWluZzFBY2NvdW50AAAABWJ5dGVzAgAAABIgbm90IGluIHdoaXRlIGxpc3QDAwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQUAAAAPd2hpdGUyTGlzdEVudHJ5BgkBAAAAAiE9AAAAAgUAAAAPd2hpdGUyTGlzdEVudHJ5BQAAAAp2YWxpZFN0YXRlCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAhBY2NvdW50IAkAAlgAAAABCAUAAAARb3V0Y29taW5nMkFjY291bnQAAAAFYnl0ZXMCAAAAEiBub3QgaW4gd2hpdGUgbGlzdAMJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAQaAAAAAgkBAAAAB2V4dHJhY3QAAAABBQAAAA1XaGl0ZWxpc3RBZGRyCQACWAAAAAEIBQAAABFvdXRjb21pbmcyQWNjb3VudAAAAAVieXRlcwkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAIQWNjb3VudCAJAAJYAAAAAQgFAAAAEW91dGNvbWluZzJBY2NvdW50AAAABWJ5dGVzAgAAABIgbm90IGluIHdoaXRlIGxpc3QEAAAACm1pbjFBbW91bnQJAAQaAAAAAgkBAAAAB2V4dHJhY3QAAAABBQAAAA1XaGl0ZWxpc3RBZGRyBQAAAA93aGl0ZTFMaXN0QXNzZXQEAAAACm1pbjJBbW91bnQJAAQaAAAAAgkBAAAAB2V4dHJhY3QAAAABBQAAAA1XaGl0ZWxpc3RBZGRyBQAAAA93aGl0ZTJMaXN0QXNzZXQDCQEAAAAJaXNEZWZpbmVkAAAAAQUAAAAKbWluMUFtb3VudAQAAAALY3VyMUJhbGFuY2UDBQAAAAhpczFXYXZlcwkBAAAADHdhdmVzQmFsYW5jZQAAAAEFAAAAEW91dGNvbWluZzFBY2NvdW50CQAD6wAAAAIFAAAAEW91dGNvbWluZzFBY2NvdW50BQAAABFvdXRjb21pbmcxQXNzZXRJZAMJAABmAAAAAgkBAAAAB2V4dHJhY3QAAAABBQAAAAptaW4xQW1vdW50CQAAZQAAAAIFAAAAC2N1cjFCYWxhbmNlBQAAABBvdXRjb21pbmcxQW1vdW50CQAAAgAAAAECAAAAF1Jlc3RyaWN0ZWQgbWluMSBiYWxhbmNlBgMJAQAAAAlpc0RlZmluZWQAAAABBQAAAAptaW4yQW1vdW50BAAAAAtjdXIyQmFsYW5jZQMFAAAACGlzMldhdmVzCQEAAAAMd2F2ZXNCYWxhbmNlAAAAAQUAAAARb3V0Y29taW5nMkFjY291bnQJAAPrAAAAAgUAAAARb3V0Y29taW5nMkFjY291bnQFAAAAEW91dGNvbWluZzJBc3NldElkAwkAAGYAAAACCQEAAAAHZXh0cmFjdAAAAAEFAAAACm1pbjJBbW91bnQJAABlAAAAAgUAAAALY3VyMkJhbGFuY2UFAAAAEG91dGNvbWluZzJBbW91bnQJAAACAAAAAQIAAAAXUmVzdHJpY3RlZCBtaW4yIGJhbGFuY2UGBgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAZU2V0QXNzZXRTY3JpcHRUcmFuc2FjdGlvbgQAAAACdHgFAAAAByRtYXRjaDAGBkfmx6M=", "chainId": 84, "height": 540551, "spentComplexity": 0 } View: original | compacted Prev: none Next: vY5WcY6hSnWk1Jx5s3akPr7dTwH1ACgTqrY5C6fuuGC Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 1 #-}
2+{-# CONTENT_TYPE EXPRESSION #-}
3+let matcherAddress = addressFromString("3NC2DRUZDsBa4UxVuZoeuLArAh5XnCunWYM")
4+let gatewayAddress = addressFromString("3N9hKwuwtECrpiMAfy6krVKf2ovU1Si9ssu")
5+let WhitelistAddr = addressFromString("3N7TmPFE1QRKEtKNBcQvPiHqGdvm7RKa6V9")
6+let validState = 1000
7+match tx {
8+ case tx: MassTransferTransaction =>
9+ false
10+ case tx: TransferTransaction =>
11+ if (if ((tx.sender != gatewayAddress))
12+ then (tx.recipient != gatewayAddress)
13+ else false)
14+ then false
15+ else if ((tx.sender == gatewayAddress))
16+ then true
17+ else {
18+ let white1List = toBase58String(tx.sender.bytes)
19+ let white1ListAsset = (white1List + toBase58String(extract(tx.assetId)))
20+ let white1ListEntry = getInteger(extract(WhitelistAddr), white1List)
21+ if (!(isDefined(white1ListEntry)))
22+ then throw("Sender not in white list")
23+ else if ((white1ListEntry != validState))
24+ then throw("Sender not in valid state")
25+ else {
26+ let white1ListAssetEntry = getInteger(extract(WhitelistAddr), white1ListAsset)
27+ if (!(isDefined(white1ListAssetEntry)))
28+ then true
29+ else {
30+ let cur1Balance = assetBalance(tx.sender, tx.assetId)
31+ if ((extract(white1ListAssetEntry) > (cur1Balance - tx.amount)))
32+ then throw("Cannot send amount: under restrictions")
33+ else true
34+ }
35+ }
36+ }
37+ case tx: ExchangeTransaction =>
38+ let outcoming1AssetId = tx.buyOrder.assetPair.amountAsset
39+ let outcoming1Account = tx.buyOrder.sender
40+ let outcoming2AssetId = tx.sellOrder.assetPair.priceAsset
41+ let outcoming2Account = tx.sellOrder.sender
42+ let outcoming1Amount = tx.amount
43+ let outcoming2Amount = fraction(tx.amount, tx.price, 100000000)
44+ let white1List = toBase58String(outcoming1Account.bytes)
45+ let white1ListAsset = if (isDefined(outcoming1AssetId))
46+ then (white1List + toBase58String(extract(outcoming1AssetId)))
47+ else (white1List + "_WAVES")
48+ let white2List = toBase58String(outcoming2Account.bytes)
49+ let white2ListAsset = if (isDefined(outcoming2AssetId))
50+ then (white2List + toBase58String(extract(outcoming2AssetId)))
51+ else (white2List + "_WAVES")
52+ let is1Waves = !(isDefined(outcoming1AssetId))
53+ let is2Waves = !(isDefined(outcoming2AssetId))
54+ let white1ListEntry = getInteger(extract(WhitelistAddr), toBase58String(outcoming1Account.bytes))
55+ let white2ListEntry = getInteger(extract(WhitelistAddr), toBase58String(outcoming2Account.bytes))
56+ if (if (!(isDefined(white1ListEntry)))
57+ then true
58+ else (white1ListEntry != validState))
59+ then throw((("Account " + toBase58String(outcoming1Account.bytes)) + " not in white list"))
60+ else if (if (!(isDefined(white2ListEntry)))
61+ then true
62+ else (white2ListEntry != validState))
63+ then throw((("Account " + toBase58String(outcoming2Account.bytes)) + " not in white list"))
64+ else if (!(isDefined(getInteger(extract(WhitelistAddr), toBase58String(outcoming2Account.bytes)))))
65+ then throw((("Account " + toBase58String(outcoming2Account.bytes)) + " not in white list"))
66+ else {
67+ let min1Amount = getInteger(extract(WhitelistAddr), white1ListAsset)
68+ let min2Amount = getInteger(extract(WhitelistAddr), white2ListAsset)
69+ if (isDefined(min1Amount))
70+ then {
71+ let cur1Balance = if (is1Waves)
72+ then wavesBalance(outcoming1Account)
73+ else assetBalance(outcoming1Account, outcoming1AssetId)
74+ if ((extract(min1Amount) > (cur1Balance - outcoming1Amount)))
75+ then throw("Restricted min1 balance")
76+ else true
77+ }
78+ else if (isDefined(min2Amount))
79+ then {
80+ let cur2Balance = if (is2Waves)
81+ then wavesBalance(outcoming2Account)
82+ else assetBalance(outcoming2Account, outcoming2AssetId)
83+ if ((extract(min2Amount) > (cur2Balance - outcoming2Amount)))
84+ then throw("Restricted min2 balance")
85+ else true
86+ }
87+ else true
88+ }
89+ case tx: SetAssetScriptTransaction =>
90+ true
91+ case _ =>
92+ true
93+}

github/deemru/w8io/3ef1775 
90.48 ms