tx · FneKoVHiuYbicqacBE7CBUdRdzmmbR6gbhXAsGHY1hnM

3Mt5BW4KVsvfxGUYuDqcfDMeoacc5GPn179:  -0.01400000 Waves

2019.03.15 00:14 [536331] smart account 3Mt5BW4KVsvfxGUYuDqcfDMeoacc5GPn179 > SELF 0.00000000 Waves

{ "type": 13, "id": "FneKoVHiuYbicqacBE7CBUdRdzmmbR6gbhXAsGHY1hnM", "fee": 1400000, "feeAssetId": null, "timestamp": 1552598099993, "version": 1, "sender": "3Mt5BW4KVsvfxGUYuDqcfDMeoacc5GPn179", "senderPublicKey": "F7KHa5J2ja7H22YreD3YJ8rBEFcvpa3DvQhFG4ZUXk8P", "proofs": [ "3FzPPGWFqhbRBBJdMMnFLEULzGwzdRstYeRwWZrMdUmN9o99TzTEjiLmBuZyJwQmgrikWEJjN393BmvfjMLedh7u" ], "script": "base64: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AwkAAAEAAAACBQAAAAckbWF0Y2gxAgAAABNUcmFuc2ZlclRyYW5zYWN0aW9uBAAAAAlwYXltZW50VHgFAAAAByRtYXRjaDEDAwMDAwMDBQAAABZkYXRhVHJhbnNhY3Rpb25Jc1ZhbGlkCQEAAAACIT0AAAACCAUAAAAJcGF5bWVudFR4AAAABnNlbmRlcgUAAAAJbWVBZGRyZXNzBwkAAAAAAAACCAUAAAAJcGF5bWVudFR4AAAACXJlY2lwaWVudAUAAAAJbWVBZGRyZXNzBwkAAGcAAAACCAUAAAAJcGF5bWVudFR4AAAABmFtb3VudAkAAGUAAAACBQAAAApwYWlkQW1vdW50BQAAAAlwYWlkVHhGZWUHCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABCAUAAAAJcGF5bWVudFR4AAAAB2Fzc2V0SWQHCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABCAUAAAAJcGF5bWVudFR4AAAACmZlZUFzc2V0SWQHCQAB9AAAAAMIBQAAAAZkYXRhVHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAZkYXRhVHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAAJcGF5bWVudFR4AAAAD3NlbmRlclB1YmxpY0tleQcJAAAAAAAAAggFAAAABmRhdGFUeAAAAANmZWUFAAAACWRhdGFUeEZlZQcJAAACAAAAAQIAAAAxRFQ6IFRSQU5TQUNUSU9OIHR5cGUgaXMgbm90IGEgVHJhbnNmZXJUcmFuc2FjdGlvbgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAXTWFzc1RyYW5zZmVyVHJhbnNhY3Rpb24EAAAABXdpblR4BQAAAAckbWF0Y2gwBAAAAAltZUFkZHJlc3MIBQAAAAV3aW5UeAAAAAZzZW5kZXIEAAAAFXdpblRyYW5zZmVyQXR0YWNobWVudAgFAAAABXdpblR4AAAACmF0dGFjaG1lbnQDCQEAAAACIT0AAAACCQAAyAAAAAEFAAAAFXdpblRyYW5zZmVyQXR0YWNobWVudAkAAGQAAAACBQAAAApzYWx0TGVuZ3RoAAAAAAAAAAAFCQAAAgAAAAECAAAAHU1UVDogQVRUQUNITUVOVCBTSVpFIGlzIHdyb25nBAAAAAp1bml0c0J5dGVz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cnMAAAAAAAAAAAEAAAAGYW1vdW50BQAAAAl3aW5BbW91bnQHCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABCAUAAAAJcGF5bWVudFR4AAAAB2Fzc2V0SWQHCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABCAUAAAAJcGF5bWVudFR4AAAACmZlZUFzc2V0SWQHCQAAAAAAAAIIBQAAAAV3aW5UeAAAAANmZWUFAAAACHdpblR4RmVlBwMJAAH0AAAAAwgFAAAABXdpblR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAAFd2luVHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAAJcGF5bWVudFR4AAAAD3NlbmRlclB1YmxpY0tleQYJAAH0AAAAAwgFAAAABXdpblR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAAFd2luVHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAAFd2luVHgAAAAPc2VuZGVyUHVibGljS2V5BwkAAAIAAAABAgAAADJNVFQ6IFRSQU5TQUNUSU9OIHR5cGUgaXMgbm90IGEgVHJhbnNmZXJUcmFuc2FjdGlvbgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAATVHJhbnNmZXJUcmFuc2FjdGlvbgQAAAAJc2VydmljZVR4BQAAAAckbWF0Y2gwBAAAAAltZUFkZHJlc3MIBQAAAAlzZXJ2aWNlVHgAAAAGc2VuZGVyBAAAAA53YXZlc1Jlc3RDaGVjawkAAGYAAAACBQAAAAl3aW5BbW91bnQJAQAAAAx3YXZlc0JhbGFuY2UAAAABBQAAAAltZUFkZHJlc3MDCQEAAAABIQAAAAEFAAAADndhdmVzUmVzdENoZWNrCQAAAgAAAAECAAAAKVRUOiBXQVZFUyBiYWxhbmNlIGlzIG1vcmUgdGhlbiB3aW4gYW1vdW50BAAAABZzZXJ2ZXJBZGRyZXNzUHVibGljS2V5CQACWQAAAAEJAQAAAAdleHRyYWN0AAAAAQkABB0AAAACBQAAAAltZUFkZHJlc3MCAAAADXNlcnZlckFkZHJlc3MEAAAADXNlcnZlckFkZHJlc3MJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEFAAAAFnNlcnZlckFkZHJlc3NQdWJsaWNLZXkEAAAAEnNlcnZlckFkZHJlc3NDaGVjawkAAAAAAAACCAUAAAAJc2VydmljZVR4AAAACXJlY2lwaWVudAUAAAANc2VydmVyQWRkcmVzcwMJAQAAAAEhAAAAAQUAAAASc2VydmVyQWRkcmVzc0NoZWNrCQAAAgAAAAECAAAAG1RUOiBTRVJWRVIgQUREUkVTUyBpcyB3cm9uZwMJAAH0AAAAAwgFAAAACXNlcnZpY2VUeAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAACXNlcnZpY2VUeAAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAlzZXJ2aWNlVHgAAAAPc2VuZGVyUHVibGljS2V5CQAAAAAAAAIIBQAAAAlzZXJ2aWNlVHgAAAADZmVlBQAAAAh3aW5UeEZlZQcJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5Eo6BDg==", "chainId": 84, "height": 536331, "spentComplexity": 0 } View: original | compacted Prev: 8kdzAihsgyT1wGCJFfzHHncKjkpgF9FjLk53SVKyb333 Next: 2NKEPcPBzVdJPgMSBedCcvs36nHx9Rji3HbHs9mp1S7G Full:
OldNewDifferences
11 {-# STDLIB_VERSION 1 #-}
22 {-# CONTENT_TYPE EXPRESSION #-}
3-if (sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey))
4- then match tx {
5- case trTx: TransferTransaction =>
6- if ((size(trTx.attachment) != 55))
7- then throw("WRONG attachment")
8- else {
9- let meAddress = trTx.sender
10- let unitsBytes = takeRightBytes(take(trTx.attachment, 2), 1)
11- let tensBytes = take(trTx.attachment, 1)
12- let winBytes = takeRightBytes(take(trTx.attachment, 4), 1)
13- let unitsInt = if ((unitsBytes == toBytes("0")))
14- then 0
15- else if ((unitsBytes == toBytes("1")))
16- then 1
17- else if ((unitsBytes == toBytes("2")))
18- then 2
19- else if ((unitsBytes == toBytes("3")))
20- then 3
21- else if ((unitsBytes == toBytes("4")))
22- then 4
23- else if ((unitsBytes == toBytes("5")))
24- then 5
25- else if ((unitsBytes == toBytes("6")))
26- then 6
27- else if ((unitsBytes == toBytes("7")))
28- then 7
29- else if ((unitsBytes == toBytes("8")))
30- then 8
31- else if ((unitsBytes == toBytes("9")))
32- then 9
33- else 0
34- let tensInt = if ((tensBytes == toBytes("0")))
35- then 0
36- else if ((tensBytes == toBytes("1")))
37- then 10
38- else if ((tensBytes == toBytes("2")))
39- then 20
40- else 0
41- let posInt = (tensInt + unitsInt)
42- let posString = if ((posInt > 9))
43- then toString(posInt)
44- else ("0" + toString(posInt))
45- let posHash = extract(getString(meAddress, ("hash" + posString)))
46- if ((winBytes == toBytes("1")))
47- then (sha256(trTx.attachment) == fromBase58String(posHash))
3+let author = "MaDaMa Labs @daidalos"
4+let oneWaves = 100000000
5+let paidAmount = (1 * oneWaves)
6+let winAmount = (10 * oneWaves)
7+let paidTxFee = (oneWaves / 100)
8+let dataTxFee = (oneWaves / 100)
9+let winTxFee = (oneWaves / 100)
10+let startPos = 0
11+let endPos = 24
12+let saltLength = 50
13+match tx {
14+ case dataTx: DataTransaction =>
15+ let meAddress = dataTx.sender
16+ let insertPos = extract(getInteger(dataTx.data, "pos"))
17+ let validPos = if ((insertPos >= startPos))
18+ then (endPos >= insertPos)
19+ else false
20+ if (!(validPos))
21+ then throw("DT: POSITION is not valid")
22+ else {
23+ let insertPosStringTemp = if ((insertPos > 9))
24+ then toString(insertPos)
25+ else ("0" + toString(insertPos))
26+ let insertPosString = ("pos" + insertPosStringTemp)
27+ let paymentTxId = extract(getString(dataTx.data, insertPosString))
28+ let satisfiesFormat = if (if (if (if ((size(dataTx.data) == 3))
29+ then isDefined(getInteger(dataTx.data, "pos"))
30+ else false)
31+ then isDefined(getString(dataTx.data, insertPosString))
32+ else false)
33+ then isDefined(getBoolean(dataTx.data, paymentTxId))
34+ else false)
35+ then (extract(getBoolean(dataTx.data, paymentTxId)) == true)
36+ else false
37+ if (!(satisfiesFormat))
38+ then throw("DT: DATA FORMAT is not valid")
39+ else {
40+ let posNotUsed = !(isDefined(getString(meAddress, insertPosString)))
41+ if (!(posNotUsed))
42+ then throw("DT: POSISTION alredy used")
43+ else {
44+ let txIdNotUsed = !(isDefined(getBoolean(meAddress, paymentTxId)))
45+ if (!(txIdNotUsed))
46+ then throw("DT: TXID alredy used")
47+ else {
48+ let dataTransactionIsValid = if (if (if (validPos)
49+ then satisfiesFormat
50+ else false)
51+ then posNotUsed
52+ else false)
53+ then txIdNotUsed
54+ else false
55+ let paymentTx = transactionById(fromBase58String(paymentTxId))
56+ match paymentTx {
57+ case paymentTx: TransferTransaction =>
58+ if (if (if (if (if (if (if (dataTransactionIsValid)
59+ then (paymentTx.sender != meAddress)
60+ else false)
61+ then (paymentTx.recipient == meAddress)
62+ else false)
63+ then (paymentTx.amount >= (paidAmount - paidTxFee))
64+ else false)
65+ then !(isDefined(paymentTx.assetId))
66+ else false)
67+ then !(isDefined(paymentTx.feeAssetId))
68+ else false)
69+ then sigVerify(dataTx.bodyBytes, dataTx.proofs[0], paymentTx.senderPublicKey)
70+ else false)
71+ then (dataTx.fee == dataTxFee)
72+ else false
73+ case _ =>
74+ throw("DT: TRANSACTION type is not a TransferTransaction")
75+ }
76+ }
77+ }
78+ }
79+ }
80+ case winTx: MassTransferTransaction =>
81+ let meAddress = winTx.sender
82+ let winTransferAttachment = winTx.attachment
83+ if ((size(winTransferAttachment) != (saltLength + 5)))
84+ then throw("MTT: ATTACHMENT SIZE is wrong")
85+ else {
86+ let unitsBytes = takeRightBytes(take(winTransferAttachment, 2), 1)
87+ let tensBytes = take(winTransferAttachment, 1)
88+ let winBytes = takeRightBytes(take(winTransferAttachment, 4), 1)
89+ let unitsInt = if ((unitsBytes == toBytes("0")))
90+ then 0
91+ else if ((unitsBytes == toBytes("1")))
92+ then 1
93+ else if ((unitsBytes == toBytes("2")))
94+ then 2
95+ else if ((unitsBytes == toBytes("3")))
96+ then 3
97+ else if ((unitsBytes == toBytes("4")))
98+ then 4
99+ else if ((unitsBytes == toBytes("5")))
100+ then 5
101+ else if ((unitsBytes == toBytes("6")))
102+ then 6
103+ else if ((unitsBytes == toBytes("7")))
104+ then 7
105+ else if ((unitsBytes == toBytes("8")))
106+ then 8
107+ else if ((unitsBytes == toBytes("9")))
108+ then 9
109+ else 0
110+ let tensInt = if ((tensBytes == toBytes("0")))
111+ then 0
112+ else if ((tensBytes == toBytes("1")))
113+ then 10
114+ else if ((tensBytes == toBytes("2")))
115+ then 20
116+ else 0
117+ let posInt = (tensInt + unitsInt)
118+ let validPos = if ((posInt >= startPos))
119+ then (endPos >= posInt)
120+ else false
121+ if (!(validPos))
122+ then throw("MTT: POSITION NUMBER is not valid")
123+ else {
124+ let posString = if ((posInt > 9))
125+ then toString(posInt)
126+ else ("0" + toString(posInt))
127+ let posHashDefined = isDefined(getString(meAddress, ("hash" + posString)))
128+ if (!(posHashDefined))
129+ then throw("MTT: POSITION HASH did not found in data")
130+ else {
131+ let posHash = extract(getString(meAddress, ("hash" + posString)))
132+ let validateAttachment = (sha256(winTransferAttachment) == fromBase58String(posHash))
133+ if (!(validateAttachment))
134+ then throw("MTT: ATTACHMENT HASH is not valid")
135+ else {
136+ let serverAddressPublicKey = fromBase58String(extract(getString(meAddress, "serverAddress")))
137+ let serverAddress = addressFromPublicKey(serverAddressPublicKey)
138+ let serverAddressCheck = if ((winTx.transfers[0].recipient == serverAddress))
139+ then (size(winTx.transfers) == 2)
140+ else false
141+ if (!(serverAddressCheck))
142+ then throw("MTT: SERVER ADDRESS is wrong")
143+ else {
144+ let isWinner = (winBytes == toBytes("1"))
145+ if (!(isWinner))
146+ then throw("MTT: POSITION is not winner")
147+ else {
148+ let paymentTxId = extract(getString(meAddress, ("pos" + posString)))
149+ let paymentTx = transactionById(fromBase58String(paymentTxId))
150+ match paymentTx {
151+ case paymentTx: TransferTransaction =>
152+ let recipientIsThePayment = (winTx.transfers[1].recipient == paymentTx.sender)
153+ if (!(recipientIsThePayment))
154+ then throw("MTT: WINNER RECIPIENT is wrong")
155+ else if (if (if (if (if ((winTx.transfers[0].amount >= ((wavesBalance(meAddress) - winAmount) - winTxFee)))
156+ then (winTx.transfers[1].amount == winAmount)
157+ else false)
158+ then !(isDefined(paymentTx.assetId))
159+ else false)
160+ then !(isDefined(paymentTx.feeAssetId))
161+ else false)
162+ then (winTx.fee == winTxFee)
163+ else false)
164+ then if (sigVerify(winTx.bodyBytes, winTx.proofs[0], paymentTx.senderPublicKey))
165+ then true
166+ else sigVerify(winTx.bodyBytes, winTx.proofs[0], winTx.senderPublicKey)
167+ else false
168+ case _ =>
169+ throw("MTT: TRANSACTION type is not a TransferTransaction")
170+ }
171+ }
172+ }
173+ }
174+ }
175+ }
176+ }
177+ case serviceTx: TransferTransaction =>
178+ let meAddress = serviceTx.sender
179+ let wavesRestCheck = (winAmount > wavesBalance(meAddress))
180+ if (!(wavesRestCheck))
181+ then throw("TT: WAVES balance is more then win amount")
182+ else {
183+ let serverAddressPublicKey = fromBase58String(extract(getString(meAddress, "serverAddress")))
184+ let serverAddress = addressFromPublicKey(serverAddressPublicKey)
185+ let serverAddressCheck = (serviceTx.recipient == serverAddress)
186+ if (!(serverAddressCheck))
187+ then throw("TT: SERVER ADDRESS is wrong")
188+ else if (sigVerify(serviceTx.bodyBytes, serviceTx.proofs[0], serviceTx.senderPublicKey))
189+ then (serviceTx.fee == winTxFee)
48190 else false
49- }
50- case _ =>
51- true
52- }
53- else false
191+ }
192+ case _ =>
193+ sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
194+}

github/deemru/w8io/873ac7e 
36.00 ms