tx · 9DxvsDE3HbbZDLQUuyUE8USj6EZUHpvJBbiELhZsscSG

3PNB6RqH2VrprVZ697BTMuoXDiyi1LqT8Sm:  -0.02055872 Waves

2018.10.16 16:02 [1219078] smart account 3PNB6RqH2VrprVZ697BTMuoXDiyi1LqT8Sm > SELF 0.00000000 Waves

{ "type": 13, "id": "9DxvsDE3HbbZDLQUuyUE8USj6EZUHpvJBbiELhZsscSG", "fee": 2055872, "feeAssetId": null, "timestamp": 1539694962912, "version": 1, "sender": "3PNB6RqH2VrprVZ697BTMuoXDiyi1LqT8Sm", "senderPublicKey": "4VzJwuhdq5WRuX9psya7oAvh2Xh5hUQCrhoqkRiUuCGd", "proofs": [ "61yG7toyQ7jrqMMQyrvR1SXnLWKF8NUkYmrfjsfdZxUfbLp9eRHiuNheM6B97JUAH1tMuFqNZwXy1aN2aGipkHnM" ], "script": "base64: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", "chainId": 87, "height": 1219078, "spentComplexity": 0 } View: original | compacted Prev: HzHNc849n2Uma78gvpnN8Q2VE5ymS1By8u9MWxskmynQ Next: 9KRQGGWik9yN5PwdBeK4BgXCWrMBJm59SmMiCZpSbAYJ Diff:
OldNewDifferences
145145 let multiDefenders = if ((countryDefenders > 0))
146146 then (toUnits / countryDefenders)
147147 else 0
148- let win = if (if (if (if (if (king)
148+ let fight = if (if (king)
149149 then (multiAttackers != multiDefenders)
150150 else false)
151- then (attackers >= defenders)
151+ then (newFromUnits == multiAttackers)
152+ else false
153+ let winCase = (attackers >= defenders)
154+ let lostCase = (defenders > attackers)
155+ let winToUnits = (newToUnits == (((attackers - defenders) + 1) * multiAttackers))
156+ let lostToUnits = (newToUnits == ((defenders - attackers) * multiDefenders))
157+ let win = if (if (if (fight)
158+ then winCase
152159 else false)
153- then (newFromUnits == multiAttackers)
154- else false)
155- then (newToUnits == (((attackers - defenders) + 1) * multiAttackers))
160+ then winToUnits
156161 else false)
157162 then locked
158163 else false
159- let lost = if (if (if (if (if (king)
160- then (multiAttackers != multiDefenders)
164+ let lost = if (if (if (fight)
165+ then lostCase
161166 else false)
162- then (defenders > attackers)
163- else false)
164- then (newFromUnits == multiAttackers)
165- else false)
166- then (newToUnits == ((defenders - attackers) * multiDefenders))
167+ then lostToUnits
167168 else false)
168169 then lockNotChanged
169170 else false
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 1 #-}
22 {-# CONTENT_TYPE EXPRESSION #-}
33 let redPubKey = base58'FGdfvf5Tqt9oF6erwrySeqWhbnBvFBcAgyzxi5ipkaSs'
44 let greenPubKey = base58'EcNRQ6fnbwxXhsHNxsgBxcoT3NviaNUsKkku6cPq1nKE'
55 let bluePubKey = base58'6RmvmpKVEAkaXkvrCqkDjacuUS6yP5Y1Q9rrFWFWdAsS'
66 let redAddr = Address(base58'3P38uq2GFgQ61mzq6ws3mphmViAyNhVV59w')
77 let greenAddr = Address(base58'3PCAkktVadW14UFo2sfp2GHsYyKbNXYLpeJ')
88 let blueAddr = Address(base58'3P7zzvxkrQdMCky2nrCPggnyWEJjqzoY8Us')
99 let contract = tx.sender
1010 let redSigned = sigVerify(tx.bodyBytes, tx.proofs[0], redPubKey)
1111 let greenSigned = sigVerify(tx.bodyBytes, tx.proofs[0], greenPubKey)
1212 let blueSigned = sigVerify(tx.bodyBytes, tx.proofs[0], bluePubKey)
1313 match tx {
1414 case ttx: DataTransaction =>
1515 let dataSize = size(ttx.data)
1616 let fromKey = ttx.data[0].key
1717 let toKey = ttx.data[1].key
1818 let newTurnFromKey = ttx.data[2].key
1919 let turnToKey = ttx.data[3].key
2020 let newFromUnits = ttx.data[0].value
2121 let newToUnits = ttx.data[1].value
2222 let newTurnFromValue = ttx.data[2].value
2323 let turnToValue = ttx.data[3].value
2424 let turnCorrect = if (if (if (if (if (if (if (if (if (if (if (if ((fromKey == "country1"))
2525 then (toKey == "country2")
2626 else false)
2727 then true
2828 else if ((fromKey == "country2"))
2929 then if ((toKey == "country1"))
3030 then true
3131 else (toKey == "country3")
3232 else false)
3333 then true
3434 else if ((fromKey == "country3"))
3535 then if (if ((toKey == "country2"))
3636 then true
3737 else (toKey == "country4"))
3838 then true
3939 else (toKey == "country5")
4040 else false)
4141 then true
4242 else if ((fromKey == "country4"))
4343 then if ((toKey == "country3"))
4444 then true
4545 else (toKey == "country8")
4646 else false)
4747 then true
4848 else if ((fromKey == "country5"))
4949 then if ((toKey == "country3"))
5050 then true
5151 else (toKey == "country10")
5252 else false)
5353 then true
5454 else if ((fromKey == "country6"))
5555 then (toKey == "country7")
5656 else false)
5757 then true
5858 else if ((fromKey == "country7"))
5959 then if ((toKey == "country6"))
6060 then true
6161 else (toKey == "country8")
6262 else false)
6363 then true
6464 else if ((fromKey == "country8"))
6565 then if (if ((toKey == "country4"))
6666 then true
6767 else (toKey == "country7"))
6868 then true
6969 else (toKey == "country9")
7070 else false)
7171 then true
7272 else if ((fromKey == "country9"))
7373 then if ((toKey == "country8"))
7474 then true
7575 else (toKey == "country10")
7676 else false)
7777 then true
7878 else if ((fromKey == "country10"))
7979 then if (if ((toKey == "country5"))
8080 then true
8181 else (toKey == "country10"))
8282 then true
8383 else (toKey == "country11")
8484 else false)
8585 then true
8686 else if ((fromKey == "country11"))
8787 then if ((toKey == "country10"))
8888 then true
8989 else (toKey == "country12")
9090 else false)
9191 then true
9292 else if ((fromKey == "country12"))
9393 then (toKey == "country11")
9494 else false
9595 let turnFromKey = ("turn_" + fromKey)
9696 let turnFromValue = extract(getInteger(contract, turnFromKey))
9797 let turnAllowed = if (if (((height - 0) > turnFromValue))
9898 then (turnFromKey == newTurnFromKey)
9999 else false)
100100 then (newTurnFromValue == height)
101101 else false
102102 let oldTurnToKey = ("turn_" + toKey)
103103 let oldTurnToValue = extract(getInteger(contract, oldTurnToKey))
104104 let locked = if ((("turn_" + toKey) == turnToKey))
105105 then (turnToValue == height)
106106 else false
107107 let lockNotChanged = if ((("turn_" + toKey) == turnToKey))
108108 then (turnToValue == (height - 1))
109109 else false
110110 let fromUnits = extract(getInteger(contract, fromKey))
111111 let toUnits = extract(getInteger(contract, toKey))
112112 let redAttackers = (fromUnits % 100)
113113 let greenAttackers = (((fromUnits - redAttackers) % 10000) / 100)
114114 let blueAttackers = (((fromUnits - (greenAttackers * 100)) - redAttackers) / 10000)
115115 let redDefenders = (toUnits % 100)
116116 let greenDefenders = (((toUnits - redDefenders) % 10000) / 100)
117117 let blueDefenders = ((((toUnits - (greenDefenders * 100)) - redDefenders) % 1000000) / 10000)
118118 let whiteDefenders = ((((toUnits - (blueDefenders * 10000)) - (greenDefenders * 100)) - redDefenders) / 1000000)
119119 let countryAttackers = ((redAttackers + greenAttackers) + blueAttackers)
120120 let countryDefenders = (((redDefenders + greenDefenders) + blueDefenders) + whiteDefenders)
121121 let unlimitedAttackers = (((redAttackers + greenAttackers) + blueAttackers) + (height - turnFromValue))
122122 let unlimitedDefenders = if ((whiteDefenders > 0))
123123 then whiteDefenders
124124 else (((redDefenders + greenDefenders) + blueDefenders) + (height - oldTurnToValue))
125125 let attackers = if ((unlimitedAttackers >= 9))
126126 then 9
127127 else (unlimitedAttackers - 1)
128128 let defenders = if ((unlimitedDefenders >= 10))
129129 then 10
130130 else unlimitedDefenders
131131 let king = if (if (if ((redAttackers > 0))
132132 then redSigned
133133 else false)
134134 then true
135135 else if ((greenAttackers > 0))
136136 then greenSigned
137137 else false)
138138 then true
139139 else if ((blueAttackers > 0))
140140 then blueSigned
141141 else false
142142 let multiAttackers = if ((countryAttackers > 0))
143143 then (fromUnits / countryAttackers)
144144 else 0
145145 let multiDefenders = if ((countryDefenders > 0))
146146 then (toUnits / countryDefenders)
147147 else 0
148- let win = if (if (if (if (if (king)
148+ let fight = if (if (king)
149149 then (multiAttackers != multiDefenders)
150150 else false)
151- then (attackers >= defenders)
151+ then (newFromUnits == multiAttackers)
152+ else false
153+ let winCase = (attackers >= defenders)
154+ let lostCase = (defenders > attackers)
155+ let winToUnits = (newToUnits == (((attackers - defenders) + 1) * multiAttackers))
156+ let lostToUnits = (newToUnits == ((defenders - attackers) * multiDefenders))
157+ let win = if (if (if (fight)
158+ then winCase
152159 else false)
153- then (newFromUnits == multiAttackers)
154- else false)
155- then (newToUnits == (((attackers - defenders) + 1) * multiAttackers))
160+ then winToUnits
156161 else false)
157162 then locked
158163 else false
159- let lost = if (if (if (if (if (king)
160- then (multiAttackers != multiDefenders)
164+ let lost = if (if (if (fight)
165+ then lostCase
161166 else false)
162- then (defenders > attackers)
163- else false)
164- then (newFromUnits == multiAttackers)
165- else false)
166- then (newToUnits == ((defenders - attackers) * multiDefenders))
167+ then lostToUnits
167168 else false)
168169 then lockNotChanged
169170 else false
170171 let move = if (if (if (if (if (king)
171172 then (multiAttackers == multiDefenders)
172173 else false)
173174 then (newFromUnits == multiAttackers)
174175 else false)
175176 then (10 >= (attackers + defenders))
176177 else false)
177178 then (newToUnits == ((attackers + defenders) * multiAttackers))
178179 else false)
179180 then locked
180181 else false
181182 if (if (if (if (if (win)
182183 then true
183184 else lost)
184185 then true
185186 else move)
186187 then turnAllowed
187188 else false)
188189 then (dataSize == 4)
189190 else false)
190191 then true
191192 else (dataSize == 12)
192193 case ntx: TransferTransaction =>
193194 true
194195 case _ =>
195196 true
196197 }

github/deemru/w8io/3ef1775 
205.27 ms