tx · GhFdCnRCRww6w2TKjPdYTtXW99GoNaFEn2Qynj1a57jR

3P33ZEHWneDSkrKMQJqsG7EK1ZxESdK6kjM:  -0.01400000 Waves

2019.04.20 00:27 [1490125] smart account 3P33ZEHWneDSkrKMQJqsG7EK1ZxESdK6kjM > SELF 0.00000000 Waves

{ "type": 13, "id": "GhFdCnRCRww6w2TKjPdYTtXW99GoNaFEn2Qynj1a57jR", "fee": 1400000, "feeAssetId": null, "timestamp": 1555709251202, "version": 1, "sender": "3P33ZEHWneDSkrKMQJqsG7EK1ZxESdK6kjM", "senderPublicKey": "ECLM7vCV8B81vRrGr68agQkqdHoYceKTKBfxNNPEZccu", "proofs": [ "29dtqPBHc4J1LTFfTaiyyC56Uw6rabMw4orU4QBRy4DmSKewqCtCA6JQF7eVaWQJrJZWHW3Y6GZJ83rL8Uc3jY2e" ], "script": "base64:AgQAAAAFcEtleTABAAAAIPhb/tDd2tHzdgvhR1AoXDdRN0RUPeS1GMQjuwsil8l0CQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAUAAAAFcEtleTDzoo/k", "chainId": 87, "height": 1490125, "spentComplexity": 0 } View: original | compacted Prev: F3iqtnwg5ZHR4PLWtcuCFLwdYeZCEGvY71wM5FpYwkxr Next: none Full:
OldNewDifferences
1-{-# STDLIB_VERSION 1 #-}
1+{-# STDLIB_VERSION 2 #-}
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 (toKey == "country2")
26- else false)
27- then true
28- else if ((fromKey == "country2"))
29- then if ((toKey == "country1"))
30- then true
31- else (toKey == "country3")
32- else false)
33- then true
34- else if ((fromKey == "country3"))
35- then if (if ((toKey == "country2"))
36- then true
37- else (toKey == "country4"))
38- then true
39- else (toKey == "country5")
40- else false)
41- then true
42- else if ((fromKey == "country4"))
43- then if ((toKey == "country3"))
44- then true
45- else (toKey == "country8")
46- else false)
47- then true
48- else if ((fromKey == "country5"))
49- then if ((toKey == "country3"))
50- then true
51- else (toKey == "country10")
52- else false)
53- then true
54- else if ((fromKey == "country6"))
55- then (toKey == "country7")
56- else false)
57- then true
58- else if ((fromKey == "country7"))
59- then if ((toKey == "country6"))
60- then true
61- else (toKey == "country8")
62- else false)
63- then true
64- else if ((fromKey == "country8"))
65- then if (if ((toKey == "country4"))
66- then true
67- else (toKey == "country7"))
68- then true
69- else (toKey == "country9")
70- else false)
71- then true
72- else if ((fromKey == "country9"))
73- then if ((toKey == "country8"))
74- then true
75- else (toKey == "country10")
76- else false)
77- then true
78- else if ((fromKey == "country10"))
79- then if (if ((toKey == "country5"))
80- then true
81- else (toKey == "country10"))
82- then true
83- else (toKey == "country11")
84- else false)
85- then true
86- else if ((fromKey == "country11"))
87- then if ((toKey == "country10"))
88- then true
89- else (toKey == "country12")
90- else false)
91- then true
92- else if ((fromKey == "country12"))
93- then (toKey == "country11")
94- else false
95- let turnFromKey = ("turn_" + fromKey)
96- let turnFromValue = extract(getInteger(contract, turnFromKey))
97- let turnAllowed = if (if (((height - 0) > turnFromValue))
98- then (turnFromKey == newTurnFromKey)
99- else false)
100- then (newTurnFromValue == height)
101- else false
102- let oldTurnToKey = ("turn_" + toKey)
103- let oldTurnToValue = extract(getInteger(contract, oldTurnToKey))
104- let locked = if ((("turn_" + toKey) == turnToKey))
105- then (turnToValue == height)
106- else false
107- let lockNotChanged = if ((("turn_" + toKey) == turnToKey))
108- then (turnToValue == (height - 1))
109- else false
110- let fromUnits = extract(getInteger(contract, fromKey))
111- let toUnits = extract(getInteger(contract, toKey))
112- let redAttackers = (fromUnits % 100)
113- let greenAttackers = (((fromUnits - redAttackers) % 10000) / 100)
114- let blueAttackers = (((fromUnits - (greenAttackers * 100)) - redAttackers) / 10000)
115- let redDefenders = (toUnits % 100)
116- let greenDefenders = (((toUnits - redDefenders) % 10000) / 100)
117- let blueDefenders = ((((toUnits - (greenDefenders * 100)) - redDefenders) % 1000000) / 10000)
118- let whiteDefenders = ((((toUnits - (blueDefenders * 10000)) - (greenDefenders * 100)) - redDefenders) / 1000000)
119- let countryAttackers = ((redAttackers + greenAttackers) + blueAttackers)
120- let countryDefenders = (((redDefenders + greenDefenders) + blueDefenders) + whiteDefenders)
121- let unlimitedAttackers = (((redAttackers + greenAttackers) + blueAttackers) + (height - turnFromValue))
122- let unlimitedDefenders = if ((whiteDefenders > 0))
123- then whiteDefenders
124- else (((redDefenders + greenDefenders) + blueDefenders) + (height - oldTurnToValue))
125- let attackers = if ((unlimitedAttackers >= 9))
126- then 9
127- else (unlimitedAttackers - 1)
128- let defenders = if ((unlimitedDefenders >= 10))
129- then 10
130- else unlimitedDefenders
131- let king = if (if (if ((redAttackers > 0))
132- then redSigned
133- else false)
134- then true
135- else if ((greenAttackers > 0))
136- then greenSigned
137- else false)
138- then true
139- else if ((blueAttackers > 0))
140- then blueSigned
141- else false
142- let multiAttackers = if ((countryAttackers > 0))
143- then (fromUnits / countryAttackers)
144- else 0
145- let multiDefenders = if ((countryDefenders > 0))
146- then (toUnits / countryDefenders)
147- else 0
148- let win = if (if (if (if (if (king)
149- then (multiAttackers != multiDefenders)
150- else false)
151- then (attackers >= defenders)
152- else false)
153- then (newFromUnits == multiAttackers)
154- else false)
155- then (newToUnits == (((attackers - defenders) + 1) * multiAttackers))
156- else false)
157- then locked
158- else false
159- let lost = if (if (if (if (if (king)
160- then (multiAttackers != multiDefenders)
161- else false)
162- then (defenders > attackers)
163- else false)
164- then (newFromUnits == multiAttackers)
165- else false)
166- then (newToUnits == ((defenders - attackers) * multiDefenders))
167- else false)
168- then lockNotChanged
169- else false
170- let move = if (if (if (if (if (king)
171- then (multiAttackers == multiDefenders)
172- else false)
173- then (newFromUnits == multiAttackers)
174- else false)
175- then (10 >= (attackers + defenders))
176- else false)
177- then (newToUnits == ((attackers + defenders) * multiAttackers))
178- else false)
179- then locked
180- else false
181- if (if (if (if (if (win)
182- then true
183- else lost)
184- then true
185- else move)
186- then turnAllowed
187- else false)
188- then (dataSize == 4)
189- else false)
190- then true
191- else (dataSize == 12)
192- case ntx: TransferTransaction =>
193- true
194- case _ =>
195- true
196-}
3+let pKey0 = base58'HiVUGpeJgwXhMuFBLeQ8qzZ2QRVK7R9pGeDhs2qPTPHD'
4+sigVerify(tx.bodyBytes, tx.proofs[0], pKey0)

github/deemru/w8io/0e76f2f 
84.26 ms