tx · HE1StUoJMD7asXqYiNgTejpRLmoJd4Cijaorbno5U1Ce

3N3GXiCXFcrnKyuGboT7445nLksUi6H43Wv:  -0.01400000 Waves

2019.03.18 20:57 [541996] smart account 3N3GXiCXFcrnKyuGboT7445nLksUi6H43Wv > SELF 0.00000000 Waves

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

github/deemru/w8io/873ac7e 
25.62 ms