tx · 3T7LNxXKTGAKyXcJ7sdvUBvU7tBeQn7duZiTqX8vQCQk

3N9hKwuwtECrpiMAfy6krVKf2ovU1Si9ssu:  -1.10000000 Waves

2019.03.17 23:55 [540724] smart asset 3N9hKwuwtECrpiMAfy6krVKf2ovU1Si9ssu > SELF 0.00000000 SMTH

{ "type": 15, "id": "3T7LNxXKTGAKyXcJ7sdvUBvU7tBeQn7duZiTqX8vQCQk", "fee": 110000000, "feeAssetId": null, "timestamp": 1552856129766, "version": 1, "sender": "3N9hKwuwtECrpiMAfy6krVKf2ovU1Si9ssu", "senderPublicKey": "B1jCjJgfsJPUci2LqspvGwEFV7jFKVNf2NwRdVpWJkAb", "proofs": [ "9555tBzLKPuXHmp39kzNBy3y2n4Ak1a5xVensPMiPcFHzRhuSRwm64sCtF491qxr98dfzvLo9hJmi8GTtHgd5H7" ], "assetId": "5aC18jdnA4KLsrtWQP3RuU9QhWvnmaMAFQq5fQjwJ49T", "script": "base64:AQQAAAAObWF0Y2hlckFkZHJlc3MJAQAAABFhZGRyZXNzRnJvbVN0cmluZwAAAAECAAAAIzNOQzJEUlVaRHNCYTRVeFZ1Wm9ldUxBckFoNVhuQ3VuV1lNBAAAAA5nYXRld2F5QWRkcmVzcwkBAAAAEWFkZHJlc3NGcm9tU3RyaW5nAAAAAQIAAAAjM045aEt3dXd0RUNycGlNQWZ5NmtyVktmMm92VTFTaTlzc3UEAAAADVdoaXRlbGlzdEFkZHIJAQAAABFhZGRyZXNzRnJvbVN0cmluZwAAAAECAAAAIzNON1RtUEZFMVFSS0V0S05CY1F2UGlIcUdkdm03UkthNlY5BAAAAAp2YWxpZFN0YXRlAAAAAAAAAAPoBAAAAAckbWF0Y2gwBQAAAAJ0eAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAXTWFzc1RyYW5zZmVyVHJhbnNhY3Rpb24EAAAAAnR4BQAAAAckbWF0Y2gwBwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAATVHJhbnNmZXJUcmFuc2FjdGlvbgQAAAACdHgFAAAAByRtYXRjaDADAwkBAAAAAiE9AAAAAggFAAAAAnR4AAAABnNlbmRlcgUAAAAOZ2F0ZXdheUFkZHJlc3MJAQAAAAIhPQAAAAIIBQAAAAJ0eAAAAAlyZWNpcGllbnQFAAAADmdhdGV3YXlBZGRyZXNzBwcDCQAAAAAAAAIIBQAAAAJ0eAAAAAZzZW5kZXIFAAAADmdhdGV3YXlBZGRyZXNzBgQAAAAKd2hpdGUxTGlzdAkAAlgAAAABCAgFAAAAAnR4AAAABnNlbmRlcgAAAAVieXRlcwQAAAAPd2hpdGUxTGlzdEFzc2V0CQABLAAAAAIFAAAACndoaXRlMUxpc3QJAAJYAAAAAQkBAAAAB2V4dHJhY3QAAAABCAUAAAACdHgAAAAHYXNzZXRJZAQAAAAPd2hpdGUxTGlzdEVudHJ5CQAEGgAAAAIJAQAAAAdleHRyYWN0AAAAAQUAAAANV2hpdGVsaXN0QWRkcgUAAAAKd2hpdGUxTGlzdAMJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEFAAAAD3doaXRlMUxpc3RFbnRyeQkAAAIAAAABAgAAABhTZW5kZXIgbm90IGluIHdoaXRlIGxpc3QDCQEAAAACIT0AAAACBQAAAA93aGl0ZTFMaXN0RW50cnkFAAAACnZhbGlkU3RhdGUJAAACAAAAAQIAAAAZU2VuZGVyIG5vdCBpbiB2YWxpZCBzdGF0ZQQAAAAUd2hpdGUxTGlzdEFzc2V0RW50cnkJAAQaAAAAAgkBAAAAB2V4dHJhY3QAAAABBQAAAA1XaGl0ZWxpc3RBZGRyBQAAAA93aGl0ZTFMaXN0QXNzZXQDCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABBQAAABR3aGl0ZTFMaXN0QXNzZXRFbnRyeQYEAAAAC2N1cjFCYWxhbmNlCQAD6wAAAAIIBQAAAAJ0eAAAAAZzZW5kZXIIBQAAAAJ0eAAAAAdhc3NldElkAwkAAGYAAAACCQEAAAAHZXh0cmFjdAAAAAEFAAAAFHdoaXRlMUxpc3RBc3NldEVudHJ5CQAAZQAAAAIFAAAAC2N1cjFCYWxhbmNlCAUAAAACdHgAAAAGYW1vdW50CQAAAgAAAAECAAAAJkNhbm5vdCBzZW5kIGFtb3VudDogdW5kZXIgcmVzdHJpY3Rpb25zBgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAATRXhjaGFuZ2VUcmFuc2FjdGlvbgQAAAACdHgFAAAAByRtYXRjaDAEAAAAEW91dGNvbWluZzFBc3NldElkCAgIBQAAAAJ0eAAAAAhidXlPcmRlcgAAAAlhc3NldFBhaXIAAAALYW1vdW50QXNzZXQEAAAAEW91dGNvbWluZzFBY2NvdW50CAgFAAAAAnR4AAAACGJ1eU9yZGVyAAAABnNlbmRlcgQAAAARb3V0Y29taW5nMkFzc2V0SWQICAgFAAAAAnR4AAAACXNlbGxPcmRlcgAAAAlhc3NldFBhaXIAAAAKcHJpY2VBc3NldAQAAAARb3V0Y29taW5nMkFjY291bnQICAUAAAACdHgAAAAJc2VsbE9yZGVyAAAABnNlbmRlcgQAAAAQb3V0Y29taW5nMUFtb3VudAgFAAAAAnR4AAAABmFtb3VudAQAAAAQb3V0Y29taW5nMkFtb3VudAkAAGsAAAADCAUAAAACdHgAAAAGYW1vdW50CAUAAAACdHgAAAAFcHJpY2UAAAAAAAX14QAEAAAACWFzc2V0MVR4dAMJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEFAAAAEW91dGNvbWluZzFBc3NldElkAgAAAAZfV0FWRVMJAAJYAAAAAQkBAAAAB2V4dHJhY3QAAAABBQAAABFvdXRjb21pbmcxQXNzZXRJZAQAAAAJYXNzZXQyVHh0AwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQUAAAARb3V0Y29taW5nMkFzc2V0SWQCAAAABl9XQVZFUwkAAlgAAAABCQEAAAAHZXh0cmFjdAAAAAEFAAAAEW91dGNvbWluZzJBc3NldElkBAAAAAhpczFXYXZlcwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQUAAAARb3V0Y29taW5nMUFzc2V0SWQEAAAACGlzMldhdmVzCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABBQAAABFvdXRjb21pbmcyQXNzZXRJZAQAAAAKd2hpdGUxTGlzdAkAAlgAAAABCAUAAAARb3V0Y29taW5nMUFjY291bnQAAAAFYnl0ZXMEAAAAD3doaXRlMUxpc3RBc3NldAkAASwAAAACBQAAAAp3aGl0ZTFMaXN0BQAAAAlhc3NldDFUeHQEAAAACndoaXRlMkxpc3QJAAJYAAAAAQgFAAAAEW91dGNvbWluZzJBY2NvdW50AAAABWJ5dGVzBAAAAA93aGl0ZTJMaXN0QXNzZXQJAAEsAAAAAgUAAAAKd2hpdGUyTGlzdAUAAAAJYXNzZXQyVHh0BAAAAA93aGl0ZTFMaXN0RW50cnkJAAQaAAAAAgkBAAAAB2V4dHJhY3QAAAABBQAAAA1XaGl0ZWxpc3RBZGRyCQACWAAAAAEIBQAAABFvdXRjb21pbmcxQWNjb3VudAAAAAVieXRlcwQAAAAPd2hpdGUyTGlzdEVudHJ5CQAEGgAAAAIJAQAAAAdleHRyYWN0AAAAAQUAAAANV2hpdGVsaXN0QWRkcgkAAlgAAAABCAUAAAARb3V0Y29taW5nMkFjY291bnQAAAAFYnl0ZXMDAwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQUAAAAPd2hpdGUxTGlzdEVudHJ5BgkBAAAAAiE9AAAAAgUAAAAPd2hpdGUxTGlzdEVudHJ5BQAAAAp2YWxpZFN0YXRlCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAhBY2NvdW50IAkAAlgAAAABCAUAAAARb3V0Y29taW5nMUFjY291bnQAAAAFYnl0ZXMCAAAAEiBub3QgaW4gd2hpdGUgbGlzdAMDCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABBQAAAA93aGl0ZTJMaXN0RW50cnkGCQEAAAACIT0AAAACBQAAAA93aGl0ZTJMaXN0RW50cnkFAAAACnZhbGlkU3RhdGUJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAACEFjY291bnQgCQACWAAAAAEIBQAAABFvdXRjb21pbmcyQWNjb3VudAAAAAVieXRlcwIAAAASIG5vdCBpbiB3aGl0ZSBsaXN0BAAAAAptaW4xQW1vdW50CQAEGgAAAAIJAQAAAAdleHRyYWN0AAAAAQUAAAANV2hpdGVsaXN0QWRkcgUAAAAPd2hpdGUxTGlzdEFzc2V0BAAAAAptaW4yQW1vdW50CQAEGgAAAAIJAQAAAAdleHRyYWN0AAAAAQUAAAANV2hpdGVsaXN0QWRkcgUAAAAPd2hpdGUyTGlzdEFzc2V0BAAAAAtjdXIxQmFsYW5jZQMFAAAACGlzMVdhdmVzCQEAAAAMd2F2ZXNCYWxhbmNlAAAAAQUAAAARb3V0Y29taW5nMUFjY291bnQJAAPrAAAAAgUAAAARb3V0Y29taW5nMUFjY291bnQFAAAAEW91dGNvbWluZzFBc3NldElkBAAAAAtjdXIyQmFsYW5jZQMFAAAACGlzMldhdmVzCQEAAAAMd2F2ZXNCYWxhbmNlAAAAAQUAAAARb3V0Y29taW5nMkFjY291bnQJAAPrAAAAAgUAAAARb3V0Y29taW5nMkFjY291bnQFAAAAEW91dGNvbWluZzJBc3NldElkBAAAAAphbW91bnQxZXJyAwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQUAAAAKbWluMUFtb3VudAcJAABmAAAAAgkBAAAAB2V4dHJhY3QAAAABBQAAAAptaW4xQW1vdW50CQAAZQAAAAIFAAAAC2N1cjFCYWxhbmNlBQAAABBvdXRjb21pbmcxQW1vdW50BAAAAAphbW91bnQyZXJyAwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQUAAAAKbWluMkFtb3VudAcJAABmAAAAAgkBAAAAB2V4dHJhY3QAAAABBQAAAAptaW4yQW1vdW50CQAAZQAAAAIFAAAAC2N1cjJCYWxhbmNlBQAAABBvdXRjb21pbmcyQW1vdW50AwUAAAAKYW1vdW50MWVycgkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAB9FcnJvcjogbG9ja2VkIGJhbGFuY2Ugb2YgYXNzZXQgBQAAAAlhc3NldDFUeHQCAAAABCBpcyAJAAGkAAAAAQkBAAAAB2V4dHJhY3QAAAABBQAAAAptaW4xQW1vdW50AwUAAAAKYW1vdW50MmVycgkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAB9FcnJvcjogbG9ja2VkIGJhbGFuY2Ugb2YgYXNzZXQgBQAAAAlhc3NldDJUeHQCAAAABCBpcyAJAAGkAAAAAQkBAAAAB2V4dHJhY3QAAAABBQAAAAptaW4yQW1vdW50BgbtPKw+", "chainId": 84, "height": 540724, "spentComplexity": 0 } View: original | compacted Prev: DKBgGhtuM8iQnZW4rkRJQ5NXnWz2xc3SpVXYa5MmNZJA Next: none Diff:
OldNewDifferences
4141 let outcoming2Account = tx.sellOrder.sender
4242 let outcoming1Amount = tx.amount
4343 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")
44+ let asset1Txt = if (!(isDefined(outcoming1AssetId)))
45+ then "_WAVES"
46+ else toBase58String(extract(outcoming1AssetId))
47+ let asset2Txt = if (!(isDefined(outcoming2AssetId)))
48+ then "_WAVES"
49+ else toBase58String(extract(outcoming2AssetId))
5250 let is1Waves = !(isDefined(outcoming1AssetId))
5351 let is2Waves = !(isDefined(outcoming2AssetId))
52+ let white1List = toBase58String(outcoming1Account.bytes)
53+ let white1ListAsset = (white1List + asset1Txt)
54+ let white2List = toBase58String(outcoming2Account.bytes)
55+ let white2ListAsset = (white2List + asset2Txt)
5456 let white1ListEntry = getInteger(extract(WhitelistAddr), toBase58String(outcoming1Account.bytes))
5557 let white2ListEntry = getInteger(extract(WhitelistAddr), toBase58String(outcoming2Account.bytes))
5658 if (if (!(isDefined(white1ListEntry)))
7678 let amount2err = if (!(isDefined(min2Amount)))
7779 then false
7880 else (extract(min2Amount) > (cur2Balance - outcoming2Amount))
79- throw(((((((("a1err=" + toString(amount1err)) + ",a2err=") + toString(amount2err)) + ",isdef1=") + toString(isDefined(min1Amount))) + ",isdef2=") + toString(isDefined(min2Amount))))
81+ if (amount1err)
82+ then throw(((("Error: locked balance of asset " + asset1Txt) + " is ") + toString(extract(min1Amount))))
83+ else if (amount2err)
84+ then throw(((("Error: locked balance of asset " + asset2Txt) + " is ") + toString(extract(min2Amount))))
85+ else true
8086 }
8187 case _ =>
8288 true
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 1 #-}
22 {-# CONTENT_TYPE EXPRESSION #-}
33 let matcherAddress = addressFromString("3NC2DRUZDsBa4UxVuZoeuLArAh5XnCunWYM")
44 let gatewayAddress = addressFromString("3N9hKwuwtECrpiMAfy6krVKf2ovU1Si9ssu")
55 let WhitelistAddr = addressFromString("3N7TmPFE1QRKEtKNBcQvPiHqGdvm7RKa6V9")
66 let validState = 1000
77 match tx {
88 case tx: MassTransferTransaction =>
99 false
1010 case tx: TransferTransaction =>
1111 if (if ((tx.sender != gatewayAddress))
1212 then (tx.recipient != gatewayAddress)
1313 else false)
1414 then false
1515 else if ((tx.sender == gatewayAddress))
1616 then true
1717 else {
1818 let white1List = toBase58String(tx.sender.bytes)
1919 let white1ListAsset = (white1List + toBase58String(extract(tx.assetId)))
2020 let white1ListEntry = getInteger(extract(WhitelistAddr), white1List)
2121 if (!(isDefined(white1ListEntry)))
2222 then throw("Sender not in white list")
2323 else if ((white1ListEntry != validState))
2424 then throw("Sender not in valid state")
2525 else {
2626 let white1ListAssetEntry = getInteger(extract(WhitelistAddr), white1ListAsset)
2727 if (!(isDefined(white1ListAssetEntry)))
2828 then true
2929 else {
3030 let cur1Balance = assetBalance(tx.sender, tx.assetId)
3131 if ((extract(white1ListAssetEntry) > (cur1Balance - tx.amount)))
3232 then throw("Cannot send amount: under restrictions")
3333 else true
3434 }
3535 }
3636 }
3737 case tx: ExchangeTransaction =>
3838 let outcoming1AssetId = tx.buyOrder.assetPair.amountAsset
3939 let outcoming1Account = tx.buyOrder.sender
4040 let outcoming2AssetId = tx.sellOrder.assetPair.priceAsset
4141 let outcoming2Account = tx.sellOrder.sender
4242 let outcoming1Amount = tx.amount
4343 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")
44+ let asset1Txt = if (!(isDefined(outcoming1AssetId)))
45+ then "_WAVES"
46+ else toBase58String(extract(outcoming1AssetId))
47+ let asset2Txt = if (!(isDefined(outcoming2AssetId)))
48+ then "_WAVES"
49+ else toBase58String(extract(outcoming2AssetId))
5250 let is1Waves = !(isDefined(outcoming1AssetId))
5351 let is2Waves = !(isDefined(outcoming2AssetId))
52+ let white1List = toBase58String(outcoming1Account.bytes)
53+ let white1ListAsset = (white1List + asset1Txt)
54+ let white2List = toBase58String(outcoming2Account.bytes)
55+ let white2ListAsset = (white2List + asset2Txt)
5456 let white1ListEntry = getInteger(extract(WhitelistAddr), toBase58String(outcoming1Account.bytes))
5557 let white2ListEntry = getInteger(extract(WhitelistAddr), toBase58String(outcoming2Account.bytes))
5658 if (if (!(isDefined(white1ListEntry)))
5759 then true
5860 else (white1ListEntry != validState))
5961 then throw((("Account " + toBase58String(outcoming1Account.bytes)) + " not in white list"))
6062 else if (if (!(isDefined(white2ListEntry)))
6163 then true
6264 else (white2ListEntry != validState))
6365 then throw((("Account " + toBase58String(outcoming2Account.bytes)) + " not in white list"))
6466 else {
6567 let min1Amount = getInteger(extract(WhitelistAddr), white1ListAsset)
6668 let min2Amount = getInteger(extract(WhitelistAddr), white2ListAsset)
6769 let cur1Balance = if (is1Waves)
6870 then wavesBalance(outcoming1Account)
6971 else assetBalance(outcoming1Account, outcoming1AssetId)
7072 let cur2Balance = if (is2Waves)
7173 then wavesBalance(outcoming2Account)
7274 else assetBalance(outcoming2Account, outcoming2AssetId)
7375 let amount1err = if (!(isDefined(min1Amount)))
7476 then false
7577 else (extract(min1Amount) > (cur1Balance - outcoming1Amount))
7678 let amount2err = if (!(isDefined(min2Amount)))
7779 then false
7880 else (extract(min2Amount) > (cur2Balance - outcoming2Amount))
79- throw(((((((("a1err=" + toString(amount1err)) + ",a2err=") + toString(amount2err)) + ",isdef1=") + toString(isDefined(min1Amount))) + ",isdef2=") + toString(isDefined(min2Amount))))
81+ if (amount1err)
82+ then throw(((("Error: locked balance of asset " + asset1Txt) + " is ") + toString(extract(min1Amount))))
83+ else if (amount2err)
84+ then throw(((("Error: locked balance of asset " + asset2Txt) + " is ") + toString(extract(min2Amount))))
85+ else true
8086 }
8187 case _ =>
8288 true
8389 }

github/deemru/w8io/3ef1775 
51.14 ms