tx · 3vKv28gnX1HBwhDocHsaJijyPfTkkktUWPo9oWn7ER3j

3MyHwrSEHk1LzLWgz4wMVEbYypEhq1ZXpnZ:  -0.01400000 Waves

2019.08.28 13:24 [650930] smart account 3MyHwrSEHk1LzLWgz4wMVEbYypEhq1ZXpnZ > SELF 0.00000000 Waves

{ "type": 13, "id": "3vKv28gnX1HBwhDocHsaJijyPfTkkktUWPo9oWn7ER3j", "fee": 1400000, "feeAssetId": null, "timestamp": 1566987969183, "version": 1, "sender": "3MyHwrSEHk1LzLWgz4wMVEbYypEhq1ZXpnZ", "senderPublicKey": "D4CC6D8UKUzgs9xRbRDKdBoDmS5P4itWT4p7ueC3UeuB", "proofs": [ "Re23n9c4z9eHXstUtPXGZM3phaZPE9EngGT9UKoQnFJ2mUADXuus52cFi13FMedCkmaVTMiJhYDgBWnZ3vw2Kyc" ], "script": "base64:AwQAAAAHUHViS2V5MQEAAAAgaQxxSAhSITOlMYdvwKcfK7u/x0yzOg/68EH0ax0QlWUEAAAAB1B1YktleTIBAAAAILb58FcZXTIbjEshMW6ayDB2XcNop87YatlbtNE8j6N0BAAAAARzaWcxAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAFAAAAB1B1YktleTEAAAAAAAAAAAEAAAAAAAAAAAAEAAAABHNpZzIDCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAQUAAAAHUHViS2V5MgAAAAAAAAAAAQAAAAAAAAAAAAkAAGYAAAACCQAAZAAAAAIFAAAABHNpZzEFAAAABHNpZzIAAAAAAAAAAADO+UOI", "chainId": 84, "height": 650930, "spentComplexity": 0 } View: original | compacted Prev: CSxW94fLv5ceK4fK87Q1YgCspkYGzQuiaKfUGLMVmmSK Next: none Full:
OldNewDifferences
1-{-# STDLIB_VERSION 1 #-}
1+{-# STDLIB_VERSION 3 #-}
22 {-# CONTENT_TYPE EXPRESSION #-}
3-let redPubKey = base58'FGdfvf5Tqt9oF6erwrySeqWhbnBvFBcAgyzxi5ipkaSs'
4-let greenPubKey = base58'EcNRQ6fnbwxXhsHNxsgBxcoT3NviaNUsKkku6cPq1nKE'
5-let bluePubKey = base58'6RmvmpKVEAkaXkvrCqkDjacuUS6yP5Y1Q9rrFWFWdAsS'
6-let redAddr = Address(base58'3P38uq2GFgQ61mzq6ws3mphmViAyNhVV59w')
7-let greenAddr = Address(base58'3PCAkktVadW14UFo2sfp2GHsYyKbNXYLpeJ')
8-let blueAddr = Address(base58'3P7zzvxkrQdMCky2nrCPggnyWEJjqzoY8Us')
9-let contract = tx.sender
10-let redSigned = sigVerify(tx.bodyBytes, tx.proofs[0], redPubKey)
11-let greenSigned = sigVerify(tx.bodyBytes, tx.proofs[0], greenPubKey)
12-let blueSigned = sigVerify(tx.bodyBytes, tx.proofs[0], bluePubKey)
13-match tx {
14- case ttx: DataTransaction =>
15- let dataSize = size(ttx.data)
16- let fromKey = ttx.data[0].key
17- let toKey = ttx.data[1].key
18- let newTurnFromKey = ttx.data[2].key
19- let turnToKey = ttx.data[3].key
20- let newFromUnits = ttx.data[0].value
21- let newToUnits = ttx.data[1].value
22- let newTurnFromValue = ttx.data[2].value
23- let turnToValue = ttx.data[3].value
24- let turnCorrect = if (if (if (if (if (if (if (if (if (if (if (if ((fromKey == "country1"))
25- then if (if ((toKey == "country2"))
26- then (toKey == "country8")
27- else false)
28- then (toKey == "country9")
29- else false
30- else false)
31- then true
32- else if ((fromKey == "country2"))
33- then if (if (if ((toKey == "country1"))
34- then true
35- else (toKey == "country3"))
36- then true
37- else (toKey == "country9"))
38- then true
39- else (toKey == "country10")
40- else false)
41- then true
42- else if ((fromKey == "country3"))
43- then if (if (if ((toKey == "country2"))
44- then true
45- else (toKey == "country4"))
46- then true
47- else (toKey == "country10"))
48- then true
49- else (toKey == "country11")
50- else false)
51- then true
52- else if ((fromKey == "country4"))
53- then if (if ((toKey == "country3"))
54- then true
55- else (toKey == "country5"))
56- then true
57- else (toKey == "country11")
58- else false)
59- then true
60- else if ((fromKey == "country5"))
61- then if ((toKey == "country4"))
62- then true
63- else (toKey == "country6")
64- else false)
65- then true
66- else if ((fromKey == "country6"))
67- then if ((toKey == "country5"))
68- then true
69- else (toKey == "country7")
70- else false)
71- then true
72- else if ((fromKey == "country7"))
73- then if ((toKey == "country6"))
74- then true
75- else (toKey == "country16")
76- else false)
77- then true
78- else if ((fromKey == "country8"))
79- then if (if ((toKey == "country1"))
80- then true
81- else (toKey == "country9"))
82- then true
83- else (toKey == "country12")
84- else false)
85- then true
86- else if ((fromKey == "country9"))
87- then if (if (if (if ((toKey == "country1"))
88- then true
89- else (toKey == "country2"))
90- then true
91- else (toKey == "country8"))
92- then true
93- else (toKey == "country10"))
94- then true
95- else (toKey == "country12")
96- else false)
97- then true
98- else if ((fromKey == "country10"))
99- then if (if (if (if (if ((toKey == "country2"))
100- then true
101- else (toKey == "country3"))
102- then true
103- else (toKey == "country9"))
104- then true
105- else (toKey == "country11"))
106- then true
107- else (toKey == "country12"))
108- then true
109- else (toKey == "country13")
110- else false)
111- then true
112- else if ((fromKey == "country11"))
113- then if ((toKey == "country10"))
114- then true
115- else (toKey == "country12")
116- else false)
117- then true
118- else if ((fromKey == "country12"))
119- then (toKey == "country11")
120- else false
121- let turnFromKey = ("turn_" + fromKey)
122- let turnFromValue = extract(getInteger(contract, turnFromKey))
123- let turnAllowed = if (if (((height - 0) > turnFromValue))
124- then (turnFromKey == newTurnFromKey)
125- else false)
126- then (newTurnFromValue == height)
127- else false
128- let oldTurnToKey = ("turn_" + toKey)
129- let oldTurnToValue = extract(getInteger(contract, oldTurnToKey))
130- let locked = if ((("turn_" + toKey) == turnToKey))
131- then (turnToValue == height)
132- else false
133- let lockNotChanged = if ((("turn_" + toKey) == turnToKey))
134- then (turnToValue == (height - 1))
135- else false
136- let fromUnits = extract(getInteger(contract, fromKey))
137- let toUnits = extract(getInteger(contract, toKey))
138- let redAttackers = (fromUnits % 100)
139- let greenAttackers = (((fromUnits - redAttackers) % 10000) / 100)
140- let blueAttackers = (((fromUnits - (greenAttackers * 100)) - redAttackers) / 10000)
141- let redDefenders = (toUnits % 100)
142- let greenDefenders = (((toUnits - redDefenders) % 10000) / 100)
143- let blueDefenders = ((((toUnits - (greenDefenders * 100)) - redDefenders) % 1000000) / 10000)
144- let whiteDefenders = ((((toUnits - (blueDefenders * 10000)) - (greenDefenders * 100)) - redDefenders) / 1000000)
145- let countryAttackers = ((redAttackers + greenAttackers) + blueAttackers)
146- let countryDefenders = (((redDefenders + greenDefenders) + blueDefenders) + whiteDefenders)
147- let unlimitedAttackers = (((redAttackers + greenAttackers) + blueAttackers) + (height - turnFromValue))
148- let unlimitedDefenders = if ((whiteDefenders > 0))
149- then whiteDefenders
150- else (((redDefenders + greenDefenders) + blueDefenders) + (height - oldTurnToValue))
151- let attackers = if ((unlimitedAttackers >= 10))
152- then 9
153- else (unlimitedAttackers - 1)
154- let defenders = if ((unlimitedDefenders >= 10))
155- then 10
156- else unlimitedDefenders
157- let king = if (if (if ((redAttackers > 0))
158- then redSigned
159- else false)
160- then true
161- else if ((greenAttackers > 0))
162- then greenSigned
163- else false)
164- then true
165- else if ((blueAttackers > 0))
166- then blueSigned
167- else false
168- let multiAttackers = if ((countryAttackers > 0))
169- then (fromUnits / countryAttackers)
170- else 0
171- let multiDefenders = if ((countryDefenders > 0))
172- then (toUnits / countryDefenders)
173- else 0
174- let fight = if (if (king)
175- then (multiAttackers != multiDefenders)
176- else false)
177- then (newFromUnits == multiAttackers)
178- else false
179- let winCase = (attackers >= defenders)
180- let lostCase = (defenders > attackers)
181- let winToUnits = (newToUnits == (((attackers - defenders) + 1) * multiAttackers))
182- let lostToUnits = (newToUnits == ((defenders - attackers) * multiDefenders))
183- let win = if (if (if (fight)
184- then winCase
185- else false)
186- then winToUnits
187- else false)
188- then locked
189- else false
190- let lost = if (if (if (fight)
191- then lostCase
192- else false)
193- then lostToUnits
194- else false)
195- then lockNotChanged
196- else false
197- let add = if ((10 >= (attackers + defenders)))
198- then (attackers + defenders)
199- else 10
200- let move = if (if (if (if (king)
201- then (multiAttackers == multiDefenders)
202- else false)
203- then (newFromUnits == multiAttackers)
204- else false)
205- then (newToUnits == (add * multiAttackers))
206- else false)
207- then locked
208- else false
209- if (if (if (if (if (if (win)
210- then true
211- else lost)
212- then true
213- else move)
214- then turnAllowed
215- else false)
216- then turnCorrect
217- else false)
218- then (dataSize == 4)
219- else false)
220- then true
221- else (dataSize == 12)
222- case ntx: TransferTransaction =>
223- true
224- case _ =>
225- true
226-}
3+let PubKey1 = base58'854p8BYzrj6yBPRPmfQur3oF1Rjc1AJ548qRp5FT5kDa'
4+let PubKey2 = base58'DKGFPozLrsiR8NM4NJzqQaBYC8NyGYjuw2hDYicQVjco'
5+let sig1 = if (sigVerify(tx.bodyBytes, tx.proofs[0], PubKey1))
6+ then 1
7+ else 0
8+let sig2 = if (sigVerify(tx.bodyBytes, tx.proofs[1], PubKey2))
9+ then 1
10+ else 0
11+((sig1 + sig2) > 0)

github/deemru/w8io/873ac7e 
23.77 ms