tx · 4fFAMR4c75H1X5i9Mz6WjMfsi7W6nsfE58msBg3rgbi6

3Mxe3HYDHbWbDCjBY2cg5m61ua794YZUrAq:  -0.01400000 Waves

2019.03.16 00:13 [537784] smart account 3Mxe3HYDHbWbDCjBY2cg5m61ua794YZUrAq > SELF 0.00000000 Waves

{ "type": 13, "id": "4fFAMR4c75H1X5i9Mz6WjMfsi7W6nsfE58msBg3rgbi6", "fee": 1400000, "feeAssetId": null, "timestamp": 1552684436929, "version": 1, "sender": "3Mxe3HYDHbWbDCjBY2cg5m61ua794YZUrAq", "senderPublicKey": "8pPUMAXxsa4yNxqRncDVJ5FBmc9ygzMTbxfEtPLcVnnK", "proofs": [ "3PkF8WaNPJN4cHoBSmDSGTJtAp9r2qw4XEhXfvVrhbn6bjm1XrwtqmL2YDKA8qVGxpXX7fqPXzY92x9SFxiDVQyX" ], "script": "base64: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CWlzRGVmaW5lZAAAAAEJAAQdAAAAAgUAAAAJbWVBZGRyZXNzBQAAAA9pbnNlcnRQb3NTdHJpbmcDCQEAAAABIQAAAAEFAAAACnBvc05vdFVzZWQJAAACAAAAAQIAAAAZRFQ6IFBPU0lTVElPTiBhbHJlZHkgdXNlZAQAAAALdHhJZE5vdFVzZWQJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAQbAAAAAgUAAAAJbWVBZGRyZXNzBQAAAAtwYXltZW50VHhJZAMJAQAAAAEhAAAAAQUAAAALdHhJZE5vdFVzZWQJAAACAAAAAQIAAAAURFQ6IFRYSUQgYWxyZWR5IHVzZWQEAAAAFmRhdGFUcmFuc2FjdGlvbklzVmFsaWQDAwMFAAAACHZhbGlkUG9zBQAAAA9zYXRpc2ZpZXNGb3JtYXQHBQAAAApwb3NOb3RVc2VkBwUAAAALdHhJZE5vdFVzZWQHBAAAAAlwYXltZW50VHgJAAPoAAAAAQkAAlkAAAABBQAAAAtwYXltZW50VHhJZAQAAAAHJG1hdGNoMQUAAAAJcGF5bWVudFR4AwkAAAEAAAACBQAAAAckbWF0Y2gxAgAAABNUcmFuc2ZlclRyYW5zYWN0aW9uBAAAAAlwYXltZW50VHgFAAAAByRtYXRjaDEDAwMDAwMDAwMFAAAAFmRhdGFUcmFuc2FjdGlvbklzVmFsaWQJAAAAAAAAAgkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQgFAAAACXBheW1lbnRUeAAAAAphdHRhY2htZW50BQAAAAltZUFkZHJlc3MHCQEAAAACIT0AAAACCAUAAAAJcGF5bWVudFR4AAAABnNlbmRlcgUAAAAJbWVBZGRyZXNzBwkBAAAAAiE9AAAAAggFAAAACXBheW1lbnRUeAAAAAZzZW5kZXIFAAAADXNlcnZlckFkZHJlc3MHCQAAAAAAAAIIBQAAAAlwYXltZW50VHgAAAAJcmVjaXBpZW50BQAAAA1zZXJ2ZXJBZGRyZXNzBwkAAGcAAAACCAUAAAAJcGF5bWVudFR4AAAABmFtb3VudAkAAGUAAAACBQAAAApwYWlkQW1vdW50BQAAAAlwYWlkVHhGZWUHCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABCAUAAAAJcGF5bWVu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", "chainId": 84, "height": 537784, "spentComplexity": 0 } View: original | compacted Prev: 2LSSjZ9U2cZsGDULUmFm88j6VH6Uac6mehJm5uDNqwSu Next: none Diff:
OldNewDifferences
6565 let paymentTx = transactionById(fromBase58String(paymentTxId))
6666 match paymentTx {
6767 case paymentTx: TransferTransaction =>
68- if ((addressFromPublicKey(paymentTx.attachment) != addressFromPublicKey(base58'8pPUMAXxsa4yNxqRncDVJ5FBmc9ygzMTbxfEtPLcVnnK')))
69- then if ((paymentTx.attachment == base58'8pPUMAXxsa4yNxqRncDVJ5FBmc9ygzMTbxfEtPLcVnnK'))
70- then throw("base58 EQ")
71- else if ((paymentTx.attachment == tx.senderPublicKey))
72- then throw("mePublicKey EQ")
73- else if ((paymentTx.attachment == fromBase58String("8pPUMAXxsa4yNxqRncDVJ5FBmc9ygzMTbxfEtPLcVnnK")))
74- then throw("fromBase58String EQ")
75- else if ((paymentTx.attachment == toBytes("8pPUMAXxsa4yNxqRncDVJ5FBmc9ygzMTbxfEtPLcVnnK")))
76- then throw("toBytes EQ")
77- else throw("toBytes NOEQ")
78- else if (if (if (if (if (if (if (if (dataTransactionIsValid)
79- then (paymentTx.sender != meAddress)
80- else false)
81- then (paymentTx.sender != serverAddress)
82- else false)
83- then (paymentTx.recipient == serverAddress)
84- else false)
85- then (paymentTx.amount >= (paidAmount - paidTxFee))
86- else false)
87- then !(isDefined(paymentTx.assetId))
88- else false)
89- then !(isDefined(paymentTx.feeAssetId))
90- else false)
91- then sigVerify(dataTx.bodyBytes, dataTx.proofs[0], paymentTx.senderPublicKey)
92- else false)
93- then (dataTx.fee == dataTxFee)
94- else false
68+ if (if (if (if (if (if (if (if (if (dataTransactionIsValid)
69+ then (addressFromPublicKey(paymentTx.attachment) == meAddress)
70+ else false)
71+ then (paymentTx.sender != meAddress)
72+ else false)
73+ then (paymentTx.sender != serverAddress)
74+ else false)
75+ then (paymentTx.recipient == serverAddress)
76+ else false)
77+ then (paymentTx.amount >= (paidAmount - paidTxFee))
78+ else false)
79+ then !(isDefined(paymentTx.assetId))
80+ else false)
81+ then !(isDefined(paymentTx.feeAssetId))
82+ else false)
83+ then sigVerify(dataTx.bodyBytes, dataTx.proofs[0], paymentTx.senderPublicKey)
84+ else false)
85+ then (dataTx.fee == dataTxFee)
86+ else false
9587 case _ =>
9688 throw("DT: TRANSACTION type is not a TransferTransaction")
9789 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 1 #-}
22 {-# CONTENT_TYPE EXPRESSION #-}
33 let author = "MaDaMa Labs @daidalos"
44 let oneWaves = 100000000
55 let paidAmount = (1 * oneWaves)
66 let winAmount = (10 * oneWaves)
77 let paidTxFee = (oneWaves / 100)
88 let dataTxFee = (oneWaves / 100)
99 let winTxFee = (oneWaves / 100)
1010 let startPos = 0
1111 let endPos = 24
1212 let saltLength = 50
1313 let meAddress = tx.sender
1414 let mePublicKey = tx.senderPublicKey
1515 if ((meAddress != addressFromPublicKey(mePublicKey)))
1616 then throw("INIT: SENDER IS WRONG")
1717 else {
1818 let serverAddressPublicKey = fromBase58String(extract(getString(tx.sender, "serverAddress")))
1919 let serverAddress = addressFromPublicKey(serverAddressPublicKey)
2020 match tx {
2121 case dataTx: DataTransaction =>
2222 let insertPosCheck = isDefined(getInteger(dataTx.data, "pos"))
2323 if (!(insertPosCheck))
2424 then throw("DT: POSITION value is not an integer")
2525 else {
2626 let insertPos = extract(getInteger(dataTx.data, "pos"))
2727 let validPos = if ((insertPos >= startPos))
2828 then (endPos >= insertPos)
2929 else false
3030 if (!(validPos))
3131 then throw("DT: POSITION is not valid")
3232 else {
3333 let insertPosStringTemp = if ((insertPos > 9))
3434 then toString(insertPos)
3535 else ("0" + toString(insertPos))
3636 let insertPosString = ("pos" + insertPosStringTemp)
3737 let paymentTxId = extract(getString(dataTx.data, insertPosString))
3838 let satisfiesFormat = if (if (if (if ((size(dataTx.data) == 3))
3939 then insertPosCheck
4040 else false)
4141 then isDefined(getString(dataTx.data, insertPosString))
4242 else false)
4343 then isDefined(getBoolean(dataTx.data, paymentTxId))
4444 else false)
4545 then (extract(getBoolean(dataTx.data, paymentTxId)) == true)
4646 else false
4747 if (!(satisfiesFormat))
4848 then throw("DT: DATA FORMAT is not valid")
4949 else {
5050 let posNotUsed = !(isDefined(getString(meAddress, insertPosString)))
5151 if (!(posNotUsed))
5252 then throw("DT: POSISTION alredy used")
5353 else {
5454 let txIdNotUsed = !(isDefined(getBoolean(meAddress, paymentTxId)))
5555 if (!(txIdNotUsed))
5656 then throw("DT: TXID alredy used")
5757 else {
5858 let dataTransactionIsValid = if (if (if (validPos)
5959 then satisfiesFormat
6060 else false)
6161 then posNotUsed
6262 else false)
6363 then txIdNotUsed
6464 else false
6565 let paymentTx = transactionById(fromBase58String(paymentTxId))
6666 match paymentTx {
6767 case paymentTx: TransferTransaction =>
68- if ((addressFromPublicKey(paymentTx.attachment) != addressFromPublicKey(base58'8pPUMAXxsa4yNxqRncDVJ5FBmc9ygzMTbxfEtPLcVnnK')))
69- then if ((paymentTx.attachment == base58'8pPUMAXxsa4yNxqRncDVJ5FBmc9ygzMTbxfEtPLcVnnK'))
70- then throw("base58 EQ")
71- else if ((paymentTx.attachment == tx.senderPublicKey))
72- then throw("mePublicKey EQ")
73- else if ((paymentTx.attachment == fromBase58String("8pPUMAXxsa4yNxqRncDVJ5FBmc9ygzMTbxfEtPLcVnnK")))
74- then throw("fromBase58String EQ")
75- else if ((paymentTx.attachment == toBytes("8pPUMAXxsa4yNxqRncDVJ5FBmc9ygzMTbxfEtPLcVnnK")))
76- then throw("toBytes EQ")
77- else throw("toBytes NOEQ")
78- else if (if (if (if (if (if (if (if (dataTransactionIsValid)
79- then (paymentTx.sender != meAddress)
80- else false)
81- then (paymentTx.sender != serverAddress)
82- else false)
83- then (paymentTx.recipient == serverAddress)
84- else false)
85- then (paymentTx.amount >= (paidAmount - paidTxFee))
86- else false)
87- then !(isDefined(paymentTx.assetId))
88- else false)
89- then !(isDefined(paymentTx.feeAssetId))
90- else false)
91- then sigVerify(dataTx.bodyBytes, dataTx.proofs[0], paymentTx.senderPublicKey)
92- else false)
93- then (dataTx.fee == dataTxFee)
94- else false
68+ if (if (if (if (if (if (if (if (if (dataTransactionIsValid)
69+ then (addressFromPublicKey(paymentTx.attachment) == meAddress)
70+ else false)
71+ then (paymentTx.sender != meAddress)
72+ else false)
73+ then (paymentTx.sender != serverAddress)
74+ else false)
75+ then (paymentTx.recipient == serverAddress)
76+ else false)
77+ then (paymentTx.amount >= (paidAmount - paidTxFee))
78+ else false)
79+ then !(isDefined(paymentTx.assetId))
80+ else false)
81+ then !(isDefined(paymentTx.feeAssetId))
82+ else false)
83+ then sigVerify(dataTx.bodyBytes, dataTx.proofs[0], paymentTx.senderPublicKey)
84+ else false)
85+ then (dataTx.fee == dataTxFee)
86+ else false
9587 case _ =>
9688 throw("DT: TRANSACTION type is not a TransferTransaction")
9789 }
9890 }
9991 }
10092 }
10193 }
10294 }
10395 case winTx: MassTransferTransaction =>
10496 let winTransferAttachment = winTx.attachment
10597 if ((size(winTransferAttachment) != (saltLength + 5)))
10698 then throw("MTT: ATTACHMENT SIZE is wrong")
10799 else {
108100 let unitsBytes = takeRightBytes(take(winTransferAttachment, 2), 1)
109101 let tensBytes = take(winTransferAttachment, 1)
110102 let winBytes = takeRightBytes(take(winTransferAttachment, 4), 1)
111103 let unitsInt = if ((unitsBytes == toBytes("0")))
112104 then 0
113105 else if ((unitsBytes == toBytes("1")))
114106 then 1
115107 else if ((unitsBytes == toBytes("2")))
116108 then 2
117109 else if ((unitsBytes == toBytes("3")))
118110 then 3
119111 else if ((unitsBytes == toBytes("4")))
120112 then 4
121113 else if ((unitsBytes == toBytes("5")))
122114 then 5
123115 else if ((unitsBytes == toBytes("6")))
124116 then 6
125117 else if ((unitsBytes == toBytes("7")))
126118 then 7
127119 else if ((unitsBytes == toBytes("8")))
128120 then 8
129121 else if ((unitsBytes == toBytes("9")))
130122 then 9
131123 else 0
132124 let tensInt = if ((tensBytes == toBytes("0")))
133125 then 0
134126 else if ((tensBytes == toBytes("1")))
135127 then 10
136128 else if ((tensBytes == toBytes("2")))
137129 then 20
138130 else 0
139131 let posInt = (tensInt + unitsInt)
140132 let validPos = if ((posInt >= startPos))
141133 then (endPos >= posInt)
142134 else false
143135 if (!(validPos))
144136 then throw("MTT: POSITION NUMBER is not valid")
145137 else {
146138 let posString = if ((posInt > 9))
147139 then toString(posInt)
148140 else ("0" + toString(posInt))
149141 let posHashDefined = isDefined(getString(meAddress, ("hash" + posString)))
150142 if (!(posHashDefined))
151143 then throw("MTT: POSITION HASH did not found in data")
152144 else {
153145 let posHash = extract(getString(meAddress, ("hash" + posString)))
154146 let validateAttachment = (sha256(winTransferAttachment) == fromBase58String(posHash))
155147 if (!(validateAttachment))
156148 then throw("MTT: ATTACHMENT HASH is not valid")
157149 else {
158150 let serverAddressCheck = if ((winTx.transfers[0].recipient == serverAddress))
159151 then (size(winTx.transfers) == 2)
160152 else false
161153 if (!(serverAddressCheck))
162154 then throw("MTT: SERVER ADDRESS is wrong")
163155 else {
164156 let isWinner = (winBytes == toBytes("1"))
165157 if (!(isWinner))
166158 then throw("MTT: POSITION is not winner")
167159 else {
168160 let paymentTxId = extract(getString(meAddress, ("pos" + posString)))
169161 let paymentTx = transactionById(fromBase58String(paymentTxId))
170162 match paymentTx {
171163 case paymentTx: TransferTransaction =>
172164 let recipientIsThePayment = (winTx.transfers[1].recipient == paymentTx.sender)
173165 if (!(recipientIsThePayment))
174166 then throw("MTT: WINNER RECIPIENT is wrong")
175167 else if (if (if (if (if ((winTx.transfers[0].amount == ((wavesBalance(meAddress) - winAmount) - winTxFee)))
176168 then (winTx.transfers[1].amount == winAmount)
177169 else false)
178170 then !(isDefined(paymentTx.assetId))
179171 else false)
180172 then !(isDefined(paymentTx.feeAssetId))
181173 else false)
182174 then (winTx.fee == winTxFee)
183175 else false)
184176 then if (sigVerify(winTx.bodyBytes, winTx.proofs[0], mePublicKey))
185177 then true
186178 else sigVerify(winTx.bodyBytes, winTx.proofs[0], paymentTx.senderPublicKey)
187179 else false
188180 case _ =>
189181 throw("MTT: TRANSACTION type is not a TransferTransaction")
190182 }
191183 }
192184 }
193185 }
194186 }
195187 }
196188 }
197189 case serviceTx: TransferTransaction =>
198190 let wavesRestCheck = ((winAmount + winTxFee) > wavesBalance(meAddress))
199191 if (!(wavesRestCheck))
200192 then throw("TT: WAVES balance is more then win amount")
201193 else {
202194 let serverAddressCheck = (serviceTx.recipient == serverAddress)
203195 if (!(serverAddressCheck))
204196 then throw("TT: SERVER ADDRESS is wrong")
205197 else if (sigVerify(serviceTx.bodyBytes, serviceTx.proofs[0], mePublicKey))
206198 then (serviceTx.fee == winTxFee)
207199 else false
208200 }
209201 case _ =>
210202 sigVerify(tx.bodyBytes, tx.proofs[0], mePublicKey)
211203 }
212204 }

github/deemru/w8io/169f3d6 
34.93 ms