tx · DwHuuKSBJ8MTG3GEcZUxeDctaYetLVSPHMpNWsnhAKXN

3PEciZj7cQSF2cGtEMWCPWq42ELmrwKUzz2:  -0.01000000 Waves

2019.06.09 16:24 [1564173] smart account 3PEciZj7cQSF2cGtEMWCPWq42ELmrwKUzz2 > SELF 0.00000000 Waves

{ "type": 13, "id": "DwHuuKSBJ8MTG3GEcZUxeDctaYetLVSPHMpNWsnhAKXN", "fee": 1000000, "feeAssetId": null, "timestamp": 1560086691985, "version": 1, "sender": "3PEciZj7cQSF2cGtEMWCPWq42ELmrwKUzz2", "senderPublicKey": "CtYRPgqQj7YMCtXnApQ7WW9xGFJ7WuSAbx8zBb9mnusg", "proofs": [ "55QKuap8BZME83JqTMozEyB3K2bmtNiY42Dbv6FexpzX2p96Lhq1DjoT5UuDhiQbQfokDXuQ51YUi14PVrMw96zA" ], "script": "base64:AgQAAAAEdGhpcwgFAAAAAnR4AAAABnNlbmRlcgQAAAADY21kCQACWAAAAAEJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAQAAAACYTEJAAJYAAAAAQkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAABBAAAAAckbWF0Y2gwBQAAAAJ0eAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAPRGF0YVRyYW5zYWN0aW9uBAAAAAFkBQAAAAckbWF0Y2gwBAAAAAJkZAgFAAAAAWQAAAAEZGF0YQQAAAACZHMJAAGQAAAAAQUAAAACZGQDAwkAAAAAAAACBQAAAANjbWQCAAAAB3JlcXVlc3QJAAAAAAAAAgUAAAACZHMAAAAAAAAAAAEHBAAAAAVkYUtleQkAASwAAAACBQAAAAJhMQIAAAAQX2RlcG9zaXRfYWRkcmVzcwMDCQAAAAAAAAIICQABkQAAAAIFAAAAAmRkAAAAAAAAAAAAAAAAA2tleQUAAAAFZGFLZXkJAAAAAAAAAggJAAGRAAAAAgUAAAACZGQAAAAAAAAAAAAAAAAFdmFsdWUCAAAAAAcJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAQdAAAAAgUAAAAEdGhpcwUAAAAFZGFLZXkHAwMJAAAAAAAAAgUAAAADY21kAgAAAAhyZWdpc3RlcgkAAAAAAAACBQAAAAJkcwAAAAAAAAAAAQcEAAAABWRhS2V5CQABLAAAAAIFAAAAAmExAgAAABBfZGVwb3NpdF9hZGRyZXNzAwMJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAACCAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5CQAAAAAAAAIICQABkQAAAAIFAAAAAmRkAAAAAAAAAAAAAAAAA2tleQUAAAAFZGFLZXkHCQEAAAAJaXNEZWZpbmVkAAAAAQkABB0AAAACBQAAAAR0aGlzBQAAAAVkYUtleQcDAwkAAAAAAAACBQAAAANjbWQCAAAACWRlcG9zaXRpbgkAAAAAAAACBQAAAAJkcwAAAAAAAAAAAwcEAAAABWRoS2V5CQABLAAAAAIFAAAAAmExAgAAABBfZGVwb3NpdF9oaXN0b3J5BAAAAAR0eGlkCQACWAAAAAEJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAgQAAAAFcGRSYXcJAAQdAAAAAgUAAAAEdGhpcwUAAAAFZGhLZXkEAAAAC3ByZXZEZXBvc2l0AwkBAAAACWlzRGVmaW5lZAAAAAEFAAAABXBkUmF3CQABLAAAAAIJAQAAAAdleHRyYWN0AAAAAQUAAAAFcGRSYXcCAAAAASwCAAAAAAMDAwMDCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAwgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tleQkAAAAAAAACCAkAAZEAAAACBQAAAAJkZAAAAAAAAAAAAAAAAANrZXkFAAAABWRoS2V5BwkAAAAAAAACCAkAAZEAAAACBQAAAAJkZAAAAAAAAAAAAAAAAAV2YWx1ZQkAASwAAAACBQAAAAtwcmV2RGVwb3NpdAUAAAAEdHhpZAcJAAAAAAAAAggJAAGRAAAAAgUAAAACZGQAAAAAAAAAAAEAAAADa2V5CQABLAAAAAIFAAAABHR4aWQCAAAAB19hbW91bnQHCQAAAAAAAAIICQABkQAAAAIFAAAAAmRkAAAAAAAAAAACAAAAA2tleQkAASwAAAACBQAAAAR0eGlkAgAAAAVfdGltZQcJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACBQAAAAR0eGlkAgAAAAdfYW1vdW50BwMDCQAAAAAAAAIFAAAAA2NtZAIAAAAKZGVwb3NpdG91dAkAAAAAAAACBQAAAAJkcwAAAAAAAAAAAgcEAAAAB291dFR4SWQJAAJZAAAAAQkBAAAAB2V4dHJhY3QAAAABCQAEEwAAAAIFAAAAAmRkCQABLAAAAAIFAAAAAmExAgAAAARfb3V0BAAAAAVvaHJhdwkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIFAAAAAmExAgAAAAtfb3V0X2hlaWdodAQAAAACb2gDCQEAAAAJaXNEZWZpbmVkAAAAAQUAAAAFb2hyYXcJAQAAAAdleHRyYWN0AAAAAQUAAAAFb2hyYXcAAAAAAAAAAAADAwMDCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAggFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tleQkAAAAAAAACCAkAAZEAAAACBQAAAAJkZAAAAAAAAAAAAAAAAANrZXkJAAEsAAAAAgUAAAACYTECAAAABF9vdXQHCQAAAAAAAAIICQABkQAAAAIFAAAAAmRkAAAAAAAAAAABAAAAA2tleQkAASwAAAACBQAAAAJhMQIAAAALX291dF9oZWlnaHQHCQEAAAAJaXNEZWZpbmVkAAAAAQkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIFAAAAAmExAgAAAAdfYW1vdW50BwMJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAQdAAAAAgUAAAAEdGhpcwkAASwAAAACBQAAAAJhMQIAAAAEX291dAYDCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABCQAD6AAAAAEFAAAAB291dFR4SWQJAABmAAAAAgUAAAAGaGVpZ2h0CQAAZAAAAAIFAAAAAm9oAAAAAAAAAAAFBwcDAwkAAAAAAAACBQAAAANjbWQCAAAACndpdGhkcmF3aW4JAAAAAAAAAgUAAAACZHMAAAAAAAAAAAUHBAAAAAV3aEtleQkAASwAAAACBQAAAAJhMQIAAAARX3dpdGhkcmF3X2hpc3RvcnkEAAAABXB3UmF3CQAEHQAAAAIFAAAABHRoaXMFAAAABXdoS2V5BAAAAAxwcmV2V2l0aGRyYXcDCQEAAAAJaXNEZWZpbmVkAAAAAQUAAAAFcHdSYXcJAAEsAAAAAgkBAAAAB2V4dHJhY3QAAAABBQAAAAVwd1JhdwIAAAABLAIAAAAABAAAAAR0eGlkCQACWAAAAAEJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAgMDAwMDAwMDCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAABCQAAAAAAAAIICQABkQAAAAIFAAAAAmRkAAAAAAAAAAAAAAAAA2tleQUAAAAFd2hLZXkHCQAAAAAAAAIICQABkQAAAAIFAAAAAmRkAAAAAAAAAAAAAAAABXZhbHVlCQABLAAAAAIFAAAADHByZXZXaXRoZHJhdwUAAAAEdHhpZAcJAAAAAAAAAggJAAGRAAAAAgUAAAACZGQAAAAAAAAAAAEAAAADa2V5CQABLAAAAAIFAAAABHR4aWQCAAAABV90aW1lBwkAAAAAAAACCAkAAZEAAAACBQAAAAJkZAAAAAAAAAAAAgAAAANrZXkJAAEsAAAAAgUAAAAEdHhpZAIAAAAMX2Rlc3RpbmF0aW9uBwkAAAAAAAACCAkAAZEAAAACBQAAAAJkZAAAAAAAAAAAAwAAAANrZXkJAAEsAAAAAgUAAAAEdHhpZAIAAAAHX2Ftb3VudAcJAAAAAAAAAggJAAGRAAAAAgUAAAACZGQAAAAAAAAAAAQAAAADa2V5CQABLAAAAAIFAAAABHR4aWQCAAAABF9rZXkHCQAAAAAAAAIICQABkQAAAAIFAAAAAmRkAAAAAAAAAAAEAAAABXZhbHVlBQAAAAJhMQcJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAQdAAAAAgUAAAAEdGhpcwkAASwAAAACBQAAAAR0eGlkAgAAAAdfYW1vdW50BwMDCQAAAAAAAAIFAAAAA2NtZAIAAAAMd2l0aGRyYXcxb2NrCQAAAAAAAAIFAAAAAmRzAAAAAAAAAAACBwMDAwMJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAACCAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5CQAAAAAAAAIICQABkQAAAAIFAAAAAmRkAAAAAAAAAAAAAAAAA2tleQkAASwAAAACBQAAAAJhMQIAAAAFX2xvY2sHCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABCQAEHQAAAAIFAAAABHRoaXMJAAEsAAAAAgUAAAACYTECAAAABV9sb2NrBwkAAAAAAAACCAkAAZEAAAACBQAAAAJkZAAAAAAAAAAAAQAAAANrZXkJAAEsAAAAAgUAAAACYTECAAAADF9sb2NrX2hlaWdodAcEAAAAByRtYXRjaDEJAAPoAAAAAQkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAABAwkAAAEAAAACBQAAAAckbWF0Y2gxAgAAABNUcmFuc2ZlclRyYW5zYWN0aW9uBAAAAAlkZXBvc2l0VHgFAAAAByRtYXRjaDEDCQAAAAAAAAIJAQAAAAdleHRyYWN0AAAAAQkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIFAAAAAmExAgAAAAdfYW1vdW50CAUAAAAJZGVwb3NpdFR4AAAABmFtb3VudAkAAAAAAAACCAUAAAAJZGVwb3NpdFR4AAAAD3NlbmRlclB1YmxpY0tleQkAAlkAAAABCQEAAAAHZXh0cmFjdAAAAAEJAAQdAAAAAgUAAAAEdGhpcwkAASwAAAACBQAAAAJhMQIAAAAEX2tleQcHBwMDCQAAAAAAAAIFAAAAA2NtZAIAAAALd2l0aGRyYXdvdXQJAAAAAAAAAgUAAAACZHMAAAAAAAAAAAEHBAAAAApsb2NrSGVpZ2h0CQEAAAAHZXh0cmFjdAAAAAEJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACBQAAAAJhMQIAAAAMX2xvY2tfaGVpZ2h0AwMDCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAggFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tleQkAAAAAAAACCAkAAZEAAAACBQAAAAJkZAAAAAAAAAAAAAAAAANrZXkJAAEsAAAAAgUAAAACYTECAAAABF9vdXQHCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABCQAEHQAAAAIFAAAABHRoaXMJAAEsAAAAAgUAAAACYTECAAAABF9vdXQHCQAAZwAAAAIFAAAABmhlaWdodAkAAGQAAAACBQAAAApsb2NrSGVpZ2h0AAAAAAAAAAAFBwcDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAE1RyYW5zZmVyVHJhbnNhY3Rpb24EAAAAAXQFAAAAByRtYXRjaDADCQAAAAAAAAIFAAAAA2NtZAIAAAAKZGVwb3NpdG91dAMJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAACCAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5CQAAAAAAAAIJAAQdAAAAAgUAAAAEdGhpcwkAASwAAAACBQAAAAJhMQIAAAAEX291dAkAAlgAAAABCAUAAAACdHgAAAACaWQHBwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXk8b1ZY", "chainId": 87, "height": 1564173, "spentComplexity": 0 } View: original | compacted Prev: none Next: 5uKkdJP9jBLQTp7AxbRy79aLddKTLXMGVmPEBnceZkyN Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 2 #-}
2+{-# CONTENT_TYPE EXPRESSION #-}
3+let this = tx.sender
4+let cmd = toBase58String(tx.proofs[0])
5+let a1 = toBase58String(tx.proofs[1])
6+match tx {
7+ case d: DataTransaction =>
8+ let dd = d.data
9+ let ds = size(dd)
10+ if (if ((cmd == "request"))
11+ then (ds == 1)
12+ else false)
13+ then {
14+ let daKey = (a1 + "_deposit_address")
15+ if (if ((dd[0].key == daKey))
16+ then (dd[0].value == "")
17+ else false)
18+ then !(isDefined(getString(this, daKey)))
19+ else false
20+ }
21+ else if (if ((cmd == "register"))
22+ then (ds == 1)
23+ else false)
24+ then {
25+ let daKey = (a1 + "_deposit_address")
26+ if (if (sigVerify(tx.bodyBytes, tx.proofs[2], tx.senderPublicKey))
27+ then (dd[0].key == daKey)
28+ else false)
29+ then isDefined(getString(this, daKey))
30+ else false
31+ }
32+ else if (if ((cmd == "depositin"))
33+ then (ds == 3)
34+ else false)
35+ then {
36+ let dhKey = (a1 + "_deposit_history")
37+ let txid = toBase58String(tx.proofs[2])
38+ let pdRaw = getString(this, dhKey)
39+ let prevDeposit = if (isDefined(pdRaw))
40+ then (extract(pdRaw) + ",")
41+ else ""
42+ if (if (if (if (if (sigVerify(tx.bodyBytes, tx.proofs[3], tx.senderPublicKey))
43+ then (dd[0].key == dhKey)
44+ else false)
45+ then (dd[0].value == (prevDeposit + txid))
46+ else false)
47+ then (dd[1].key == (txid + "_amount"))
48+ else false)
49+ then (dd[2].key == (txid + "_time"))
50+ else false)
51+ then !(isDefined(getInteger(this, (txid + "_amount"))))
52+ else false
53+ }
54+ else if (if ((cmd == "depositout"))
55+ then (ds == 2)
56+ else false)
57+ then {
58+ let outTxId = fromBase58String(extract(getString(dd, (a1 + "_out"))))
59+ let ohraw = getInteger(this, (a1 + "_out_height"))
60+ let oh = if (isDefined(ohraw))
61+ then extract(ohraw)
62+ else 0
63+ if (if (if (if (sigVerify(tx.bodyBytes, tx.proofs[2], tx.senderPublicKey))
64+ then (dd[0].key == (a1 + "_out"))
65+ else false)
66+ then (dd[1].key == (a1 + "_out_height"))
67+ else false)
68+ then isDefined(getInteger(this, (a1 + "_amount")))
69+ else false)
70+ then if (!(isDefined(getString(this, (a1 + "_out")))))
71+ then true
72+ else if (!(isDefined(transactionById(outTxId))))
73+ then (height > (oh + 5))
74+ else false
75+ else false
76+ }
77+ else if (if ((cmd == "withdrawin"))
78+ then (ds == 5)
79+ else false)
80+ then {
81+ let whKey = (a1 + "_withdraw_history")
82+ let pwRaw = getString(this, whKey)
83+ let prevWithdraw = if (isDefined(pwRaw))
84+ then (extract(pwRaw) + ",")
85+ else ""
86+ let txid = toBase58String(tx.proofs[2])
87+ if (if (if (if (if (if (if (if (sigVerify(tx.bodyBytes, tx.proofs[3], tx.proofs[1]))
88+ then (dd[0].key == whKey)
89+ else false)
90+ then (dd[0].value == (prevWithdraw + txid))
91+ else false)
92+ then (dd[1].key == (txid + "_time"))
93+ else false)
94+ then (dd[2].key == (txid + "_destination"))
95+ else false)
96+ then (dd[3].key == (txid + "_amount"))
97+ else false)
98+ then (dd[4].key == (txid + "_key"))
99+ else false)
100+ then (dd[4].value == a1)
101+ else false)
102+ then !(isDefined(getString(this, (txid + "_amount"))))
103+ else false
104+ }
105+ else if (if ((cmd == "withdraw1ock"))
106+ then (ds == 2)
107+ else false)
108+ then if (if (if (if (sigVerify(tx.bodyBytes, tx.proofs[2], tx.senderPublicKey))
109+ then (dd[0].key == (a1 + "_lock"))
110+ else false)
111+ then !(isDefined(getString(this, (a1 + "_lock"))))
112+ else false)
113+ then (dd[1].key == (a1 + "_lock_height"))
114+ else false)
115+ then match transactionById(tx.proofs[1]) {
116+ case depositTx: TransferTransaction =>
117+ if ((extract(getInteger(this, (a1 + "_amount"))) == depositTx.amount))
118+ then (depositTx.senderPublicKey == fromBase58String(extract(getString(this, (a1 + "_key")))))
119+ else false
120+ case _ =>
121+ false
122+ }
123+ else false
124+ else if (if ((cmd == "withdrawout"))
125+ then (ds == 1)
126+ else false)
127+ then {
128+ let lockHeight = extract(getInteger(this, (a1 + "_lock_height")))
129+ if (if (if (sigVerify(tx.bodyBytes, tx.proofs[2], tx.senderPublicKey))
130+ then (dd[0].key == (a1 + "_out"))
131+ else false)
132+ then !(isDefined(getString(this, (a1 + "_out"))))
133+ else false)
134+ then (height >= (lockHeight + 5))
135+ else false
136+ }
137+ else false
138+ case t: TransferTransaction =>
139+ if ((cmd == "depositout"))
140+ then if (sigVerify(tx.bodyBytes, tx.proofs[2], tx.senderPublicKey))
141+ then (getString(this, (a1 + "_out")) == toBase58String(tx.id))
142+ else false
143+ else false
144+ case _ =>
145+ sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
146+}

github/deemru/w8io/3ef1775 
59.23 ms