tx · CyDaiyTPKe54DTxmnVS7Z2KiHjCdoz82HDh1oaeVBJDC

3Mxe3HYDHbWbDCjBY2cg5m61ua794YZUrAq:  -0.01400000 Waves

2019.03.15 21:19 [537603] smart account 3Mxe3HYDHbWbDCjBY2cg5m61ua794YZUrAq > SELF 0.00000000 Waves

{ "type": 13, "id": "CyDaiyTPKe54DTxmnVS7Z2KiHjCdoz82HDh1oaeVBJDC", "fee": 1400000, "feeAssetId": null, "timestamp": 1552674019620, "version": 1, "sender": "3Mxe3HYDHbWbDCjBY2cg5m61ua794YZUrAq", "senderPublicKey": "8pPUMAXxsa4yNxqRncDVJ5FBmc9ygzMTbxfEtPLcVnnK", "proofs": [ "4ASQ8SqvYFLtezjcbQBZifkhZX16beQfkyL2oWzLLmWnoBsShjD81Hf7jf24C2cVf6caDRjcUr1Y6EX6uU2ZAJLJ" ], "script": "base64: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CWlzRGVmaW5lZAAAAAEJAAQdAAAAAgUAAAAJbWVBZGRyZXNzBQAAAA9pbnNlcnRQb3NTdHJpbmcDCQEAAAABIQAAAAEFAAAACnBvc05vdFVzZWQJAAACAAAAAQIAAAAZRFQ6IFBPU0lTVElPTiBhbHJlZHkgdXNlZAQAAAALdHhJZE5vdFVzZWQJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAQbAAAAAgUAAAAJbWVBZGRyZXNzBQAAAAtwYXltZW50VHhJZAMJAQAAAAEhAAAAAQUAAAALdHhJZE5vdFVzZWQJAAACAAAAAQIAAAAURFQ6IFRYSUQgYWxyZWR5IHVzZWQEAAAAFmRhdGFUcmFuc2FjdGlvbklzVmFsaWQDAwMFAAAACHZhbGlkUG9zBQAAAA9zYXRpc2ZpZXNGb3JtYXQHBQAAAApwb3NOb3RVc2VkBwUAAAALdHhJZE5vdFVzZWQHBAAAAAlwYXltZW50VHgJAAPoAAAAAQkAAlkAAAABBQAAAAtwYXltZW50VHhJZAQAAAAHJG1hdGNoMQUAAAAJcGF5bWVudFR4AwkAAAEAAAACBQAAAAckbWF0Y2gxAgAAABNUcmFuc2ZlclRyYW5zYWN0aW9uBAAAAAlwYXltZW50VHgFAAAAByRtYXRjaDEDAwMDAwMDAwUAAAAWZGF0YVRyYW5zYWN0aW9uSXNWYWxpZAkBAAAAAiE9AAAAAggFAAAACXBheW1lbnRUeAAAAAZzZW5kZXIFAAAACW1lQWRkcmVzcwcJAQAAAAIhPQAAAAIIBQAAAAlwYXltZW50VHgAAAAGc2VuZGVyBQAAAA1zZXJ2ZXJBZGRyZXNzBwkAAAAAAAACCAUAAAAJcGF5bWVudFR4AAAACXJlY2lwaWVudAUAAAANc2VydmVyQWRkcmVzcwcJAABnAAAAAggFAAAACXBheW1lbnRUeAAAAAZhbW91bnQJAABlAAAAAgUAAAAKcGFpZEFtb3VudAUAAAAJcGFpZFR4RmVlBwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAACXBheW1lbnRUeAAAAAdhc3NldElkBwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAACXBheW1lbnRUeAAAAApmZWVBc3NldElkBwkAAfQAAAADCAUAAAAGZGF0YVR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAAGZGF0YVR4AAAABnByb29mcwAAAAAAAAAAAAgFAAAACXBheW1lbnRUeAAAAA9zZW5kZXJQdWJsaWNLZXkHCQAAAAAAAAIIBQAAAAZkYXRhVHgAAAADZmVlBQAAAAlkYXRhVHhGZWUHCQAAAgAAAAECAAAAMURUOiBUUkFOU0FDVElPTiB0eXBlIGlzIG5vdCBhIFRyYW5zZmVyVHJhbnNhY3Rpb24DCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAF01hc3NUcmFuc2ZlclRyYW5zYWN0aW9uBAAAAAV3aW5UeAUAAAAHJG1hdGNoMAQAAAAVd2luVHJhbnNmZXJBdHRhY2htZW50CAUAAAAFd2luVHgAAAAKYXR0YWNobWVudAMJAQAAAAIhPQAAAAIJAADIAAAAAQUAAAAVd2luVHJhbnNmZXJBdHRhY2htZW50CQAAZAAAAAIFAAAACnNhbHRMZW5ndGgAAAAAAAAAAAUJAAACAAAAAQIAAAAdTVRUOiBBVFRBQ0hNRU5UIFNJWkUgaXMgd3JvbmcEAAAACnVuaXRzQnl0ZXMJAQAAAA50YWtlUmlnaHRCeXRlcwAAAAIJAADJAAAAAgUAAAAVd2luVHJhbnNmZXJBdHRhY2htZW50AAAAAAAAAAACAAAAAAAAAAABBAAAAAl0ZW5zQnl0ZXMJAADJAAAAAgUAAAAVd2luVHJhbnNmZXJBdHRhY2htZW50AAAAAAAAAAABBAAAAAh3aW5CeXRlcwkBAAAADnRha2VSaWdodEJ5dGVzAAAAAgkAAMkAAAACBQAAABV3aW5UcmFuc2ZlckF0dGFjaG1lbnQAAAAAAAAAAAQAAAAAAAAAAAEEAAAACHVuaXRzSW50AwkAAAAAAAACBQAAAAp1bml0c0J5dGVzCQABmwAAAAECAAAAATAAAAAAAAAAAAADCQAAAAAAAAIFAAAACnVuaXRzQnl0ZXMJAAGbAAAAAQIAAAABMQAAAAAAAAAAAQMJAAAAAAAAAgUAAAAKdW5pdHNCeXRlcwkAAZsAAAABAgAAAAEyAAAAAAAAAAACAwkAAAAAAAACBQAAAAp1bml0c0J5dGVzCQABmwAAAAECAAAAATMAAAAAAAAAAAMDCQAAAAAAAAIFAAAACnVuaXRzQnl0ZXMJAAGbAAAAAQIAAAABNAAAAAAAAAAABAMJAAAAAAAAAgUAAAAKdW5pdHNCeXRlcwkAAZsAAAABAgAAAAE1AAAAAAAAAAAFAwkAAAAAAAACBQAAAAp1bml0c0J5dGVzCQABmwAAAAECAAAAATYAAAAAAAAAAAYDCQAAAAAAAAIFAAAACnVuaXRzQnl0ZXMJAAGbAAAAAQIAAAABNwAAAAAAAAAABwMJAAAAAAAAAgUAAAAKdW5pdHNCeXRlcwkAAZsAAAABAgAAAAE4AAAAAAAAAAAIAwkAAAAAAAACBQAAAAp1bml0c0J5dGVzCQABmwAAAAECAAAAATkAAAAAAAAAAAkAAAAAAAAAAAAEAAAAB3RlbnNJbnQDCQAAAAAAAAIFAAAACXRlbnNCeXRlcwkAAZsAAAABAgAAAAEwAAAAAAAAAAAAAwkAAAAAAAACBQAAAAl0ZW5zQnl0ZXMJAAGbAAAAAQIAAAABMQAAAAAAAAAACgMJAAAAAAAAAgUAAAAJdGVuc0J5dGVzCQABmwAAAAECAAAAATIAAAAAAAAAABQAAAAAAAAAAAAEAAAABnBvc0ludAkAAGQAAAACBQAAAAd0ZW5zSW50BQAAAAh1bml0c0ludAQAAAAIdmFsaWRQb3MDCQAAZwAAAAIFAAAABnBvc0ludAUAAAAIc3RhcnRQb3MJAABnAAAAAgUAAAAGZW5kUG9zBQAAAAZwb3NJbnQHAwkBAAAAASEAAAABBQAAAAh2YWxpZFBvcwkAAAIAAAABAgAAACFNVFQ6IFBPU0lUSU9OIE5VTUJFUiBpcyBub3QgdmFsaWQEAAAACXBvc1N0cmluZwMJAABmAAAAAgUAAAAGcG9zSW50AAAAAAAAAAAJCQABpAAAAAEFAAAABnBvc0ludAkAASwAAAACAgAAAAEwCQABpAAAAAEFAAAABnBvc0ludAQAAAAOcG9zSGFzaERlZmluZWQJAQAAAAlpc0RlZmluZWQAAAABCQAEHQAAAAIFAAAACW1lQWRkcmVzcwkAASwAAAACAgAAAARoYXNoBQAAAAlwb3NTdHJpbmcDCQEAAAABIQAAAAEFAAAADnBvc0hhc2hEZWZpbmVkCQAAAgAAAAECAAAAKE1UVDogUE9TSVRJT04gSEFTSCBkaWQgbm90IGZvdW5kIGluIGRhdGEEAAAAB3Bvc0hhc2gJAQAAAAdleHRyYWN0AAAAAQkABB0AAAACBQAAAAltZUFkZHJlc3MJAAEsAAAAAgIAAAAEaGFzaAUAAAAJcG9zU3RyaW5nBAAAABJ2YWxpZGF0ZUF0dGFjaG1lbnQJAAAAAAAAAgkAAfcAAAABBQAAABV3aW5UcmFuc2ZlckF0dGFjaG1lbnQJAAJZAAAAAQUAAAAHcG9zSGFzaAMJAQAAAAEhAAAAAQUAAAASdmFsaWRhdGVBdHRhY2htZW50CQAAAgAAAAECAAAAIU1UVDogQVRUQUNITUVOVCBIQVNIIGlzIG5vdCB2YWxpZAQAAAASc2VydmVyQWRkcmVzc0NoZWNrAwkAAAAAAAACCAkAAZEAAAACCAUAAAAFd2luVHgAAAAJdHJhbnNmZXJzAAAAAAAAAAAAAAAACXJlY2lwaWVudAUAAAANc2VydmVyQWRkcmVzcwkAAAAAAAACCQABkAAAAAEIBQAAAAV3aW5UeAAAAAl0cmFuc2ZlcnMAAAAAAAAAAAIHAwkBAAAAASEAAAABBQAAABJzZXJ2ZXJBZGRyZXNzQ2hlY2sJAAACAAAAAQIAAAAcTVRUOiBTRVJWRVIgQUREUkVTUyBpcyB3cm9uZwQAAAAIaXNXaW5uZXIJAAAAAAAAAgUAAAAId2luQnl0ZXMJAAGbAAAAAQIAAAABMQMJAQAAAAEhAAAAAQUAAAAIaXNXaW5uZXIJAAACAAAAAQIAAAAbTVRUOiBQT1NJVElPTiBpcyBub3Qgd2lubmVyBAAAAAtwYXltZW50VHhJZAkBAAAAB2V4dHJhY3QAAAABCQAEHQAAAAIFAAAACW1lQWRkcmVzcwkAASwAAAACAgAAAANwb3MFAAAACXBvc1N0cmluZwQAAAAJcGF5bWVudFR4CQAD6AAAAAEJAAJZAAAAAQUAAAALcGF5bWVudFR4SWQEAAAAByRtYXRjaDEFAAAACXBheW1lbnRUeAMJAAABAAAAAgUAAAAHJG1hdGNoMQIAAAATVHJhbnNmZXJUcmFuc2FjdGlvbgQAAAAJcGF5bWVudFR4BQAAAAckbWF0Y2gxBAAAABVyZWNpcGllbnRJc1RoZVBheW1lbnQJAAAAAAAAAggJAAGRAAAAAggFAAAABXdpblR4AAAACXRyYW5zZmVycwAAAAAAAAAAAQAAAAlyZWNpcGllbnQIBQAAAAlwYXltZW50VHgAAAAGc2VuZGVyAwkBAAAAASEAAAABBQAAABVyZWNpcGllbnRJc1RoZVBheW1lbnQJAAACAAAAAQIAAAAeTVRUOiBXSU5ORVIgUkVDSVBJRU5UIGlzIHdyb25nAwMDAwMJAAAAAAAAAggJAAGRAAAAAggFAAAABXdpblR4AAAACXRyYW5zZmVycwAAAAAAAAAAAAAAAAZhbW91bnQJAABlAAAAAgkAAGUAAAACCQEAAAAMd2F2ZXNCYWxhbmNlAAAAAQUAAAAJbWVBZGRyZXNzBQAAAAl3aW5BbW91bnQFAAAACHdpblR4RmVlCQAAAAAAAAIICQABkQAAAAIIBQAAAAV3aW5UeAAAAAl0cmFuc2ZlcnMAAAAAAAAAAAEAAAAGYW1vdW50BQAAAAl3aW5BbW91bnQHCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABCAUAAAAJcGF5bWVudFR4AAAAB2Fzc2V0SWQHCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABCAUAAAAJcGF5bWVudFR4AAAACmZlZUFzc2V0SWQHCQAAAAAAAAIIBQAAAAV3aW5UeAAAAANmZWUFAAAACHdpblR4RmVlBwMJAAH0AAAAAwgFAAAABXdpblR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAAFd2luVHgAAAAGcHJvb2ZzAAAAAAAAAAAABQAAAAttZVB1YmxpY0tleQYJAAH0AAAAAwgFAAAABXdpblR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAAFd2luVHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAAJcGF5bWVudFR4AAAAD3NlbmRlclB1YmxpY0tleQcJAAACAAAAAQIAAAAyTVRUOiBUUkFOU0FDVElPTiB0eXBlIGlzIG5vdCBhIFRyYW5zZmVyVHJhbnNhY3Rpb24DCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAE1RyYW5zZmVyVHJhbnNhY3Rpb24EAAAACXNlcnZpY2VUeAUAAAAHJG1hdGNoMAQAAAAOd2F2ZXNSZXN0Q2hlY2sJAABmAAAAAgkAAGQAAAACBQAAAAl3aW5BbW91bnQFAAAACHdpblR4RmVlCQEAAAAMd2F2ZXNCYWxhbmNlAAAAAQUAAAAJbWVBZGRyZXNzAwkBAAAAASEAAAABBQAAAA53YXZlc1Jlc3RDaGVjawkAAAIAAAABAgAAAClUVDogV0FWRVMgYmFsYW5jZSBpcyBtb3JlIHRoZW4gd2luIGFtb3VudAQAAAASc2VydmVyQWRkcmVzc0NoZWNrCQAAAAAAAAIIBQAAAAlzZXJ2aWNlVHgAAAAJcmVjaXBpZW50BQAAAA1zZXJ2ZXJBZGRyZXNzAwkBAAAAASEAAAABBQAAABJzZXJ2ZXJBZGRyZXNzQ2hlY2sJAAACAAAAAQIAAAAbVFQ6IFNFUlZFUiBBRERSRVNTIGlzIHdyb25nAwkAAfQAAAADCAUAAAAJc2VydmljZVR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAAJc2VydmljZVR4AAAABnByb29mcwAAAAAAAAAAAAUAAAALbWVQdWJsaWNLZXkJAAAAAAAAAggFAAAACXNlcnZpY2VUeAAAAANmZWUFAAAACHdpblR4RmVlBwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAFAAAAC21lUHVibGljS2V5+JOE9A==", "chainId": 84, "height": 537603, "spentComplexity": 0 } View: original | compacted Prev: JD1HcqeNnEHPNSb7zb2ZWLbzwoniwz6K1JhnyqzxRxBw Next: G23DrgYf5yRAiwJvG8Dog2w5nodv6pzcMdN1yS4rF7DJ Diff:
OldNewDifferences
6565 let paymentTx = transactionById(fromBase58String(paymentTxId))
6666 match paymentTx {
6767 case paymentTx: TransferTransaction =>
68- if (if (if (if (if (if (if (if (if (dataTransactionIsValid)
69- then (addressFromPublicKey(paymentTx.attachment) == meAddress)
70- else false)
68+ if (if (if (if (if (if (if (if (dataTransactionIsValid)
7169 then (paymentTx.sender != meAddress)
7270 else false)
7371 then (paymentTx.sender != serverAddress)
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 (if (if (if (if (if (if (if (if (dataTransactionIsValid)
69- then (addressFromPublicKey(paymentTx.attachment) == meAddress)
70- else false)
68+ if (if (if (if (if (if (if (if (dataTransactionIsValid)
7169 then (paymentTx.sender != meAddress)
7270 else false)
7371 then (paymentTx.sender != serverAddress)
7472 else false)
7573 then (paymentTx.recipient == serverAddress)
7674 else false)
7775 then (paymentTx.amount >= (paidAmount - paidTxFee))
7876 else false)
7977 then !(isDefined(paymentTx.assetId))
8078 else false)
8179 then !(isDefined(paymentTx.feeAssetId))
8280 else false)
8381 then sigVerify(dataTx.bodyBytes, dataTx.proofs[0], paymentTx.senderPublicKey)
8482 else false)
8583 then (dataTx.fee == dataTxFee)
8684 else false
8785 case _ =>
8886 throw("DT: TRANSACTION type is not a TransferTransaction")
8987 }
9088 }
9189 }
9290 }
9391 }
9492 }
9593 case winTx: MassTransferTransaction =>
9694 let winTransferAttachment = winTx.attachment
9795 if ((size(winTransferAttachment) != (saltLength + 5)))
9896 then throw("MTT: ATTACHMENT SIZE is wrong")
9997 else {
10098 let unitsBytes = takeRightBytes(take(winTransferAttachment, 2), 1)
10199 let tensBytes = take(winTransferAttachment, 1)
102100 let winBytes = takeRightBytes(take(winTransferAttachment, 4), 1)
103101 let unitsInt = if ((unitsBytes == toBytes("0")))
104102 then 0
105103 else if ((unitsBytes == toBytes("1")))
106104 then 1
107105 else if ((unitsBytes == toBytes("2")))
108106 then 2
109107 else if ((unitsBytes == toBytes("3")))
110108 then 3
111109 else if ((unitsBytes == toBytes("4")))
112110 then 4
113111 else if ((unitsBytes == toBytes("5")))
114112 then 5
115113 else if ((unitsBytes == toBytes("6")))
116114 then 6
117115 else if ((unitsBytes == toBytes("7")))
118116 then 7
119117 else if ((unitsBytes == toBytes("8")))
120118 then 8
121119 else if ((unitsBytes == toBytes("9")))
122120 then 9
123121 else 0
124122 let tensInt = if ((tensBytes == toBytes("0")))
125123 then 0
126124 else if ((tensBytes == toBytes("1")))
127125 then 10
128126 else if ((tensBytes == toBytes("2")))
129127 then 20
130128 else 0
131129 let posInt = (tensInt + unitsInt)
132130 let validPos = if ((posInt >= startPos))
133131 then (endPos >= posInt)
134132 else false
135133 if (!(validPos))
136134 then throw("MTT: POSITION NUMBER is not valid")
137135 else {
138136 let posString = if ((posInt > 9))
139137 then toString(posInt)
140138 else ("0" + toString(posInt))
141139 let posHashDefined = isDefined(getString(meAddress, ("hash" + posString)))
142140 if (!(posHashDefined))
143141 then throw("MTT: POSITION HASH did not found in data")
144142 else {
145143 let posHash = extract(getString(meAddress, ("hash" + posString)))
146144 let validateAttachment = (sha256(winTransferAttachment) == fromBase58String(posHash))
147145 if (!(validateAttachment))
148146 then throw("MTT: ATTACHMENT HASH is not valid")
149147 else {
150148 let serverAddressCheck = if ((winTx.transfers[0].recipient == serverAddress))
151149 then (size(winTx.transfers) == 2)
152150 else false
153151 if (!(serverAddressCheck))
154152 then throw("MTT: SERVER ADDRESS is wrong")
155153 else {
156154 let isWinner = (winBytes == toBytes("1"))
157155 if (!(isWinner))
158156 then throw("MTT: POSITION is not winner")
159157 else {
160158 let paymentTxId = extract(getString(meAddress, ("pos" + posString)))
161159 let paymentTx = transactionById(fromBase58String(paymentTxId))
162160 match paymentTx {
163161 case paymentTx: TransferTransaction =>
164162 let recipientIsThePayment = (winTx.transfers[1].recipient == paymentTx.sender)
165163 if (!(recipientIsThePayment))
166164 then throw("MTT: WINNER RECIPIENT is wrong")
167165 else if (if (if (if (if ((winTx.transfers[0].amount == ((wavesBalance(meAddress) - winAmount) - winTxFee)))
168166 then (winTx.transfers[1].amount == winAmount)
169167 else false)
170168 then !(isDefined(paymentTx.assetId))
171169 else false)
172170 then !(isDefined(paymentTx.feeAssetId))
173171 else false)
174172 then (winTx.fee == winTxFee)
175173 else false)
176174 then if (sigVerify(winTx.bodyBytes, winTx.proofs[0], mePublicKey))
177175 then true
178176 else sigVerify(winTx.bodyBytes, winTx.proofs[0], paymentTx.senderPublicKey)
179177 else false
180178 case _ =>
181179 throw("MTT: TRANSACTION type is not a TransferTransaction")
182180 }
183181 }
184182 }
185183 }
186184 }
187185 }
188186 }
189187 case serviceTx: TransferTransaction =>
190188 let wavesRestCheck = ((winAmount + winTxFee) > wavesBalance(meAddress))
191189 if (!(wavesRestCheck))
192190 then throw("TT: WAVES balance is more then win amount")
193191 else {
194192 let serverAddressCheck = (serviceTx.recipient == serverAddress)
195193 if (!(serverAddressCheck))
196194 then throw("TT: SERVER ADDRESS is wrong")
197195 else if (sigVerify(serviceTx.bodyBytes, serviceTx.proofs[0], mePublicKey))
198196 then (serviceTx.fee == winTxFee)
199197 else false
200198 }
201199 case _ =>
202200 sigVerify(tx.bodyBytes, tx.proofs[0], mePublicKey)
203201 }
204202 }

github/deemru/w8io/169f3d6 
33.72 ms