tx · DCYon6pB2DXY3cpRUn3Ycpw15qfKH1n4SK8p2zNJbbXw

3N9UZtJRvvoNgHCjQsWvDUtxiym7KFc7r6f:  -0.01400000 Waves

2018.09.29 14:38 [353231] smart account 3N9UZtJRvvoNgHCjQsWvDUtxiym7KFc7r6f > SELF 0.00000000 Waves

{ "type": 13, "id": "DCYon6pB2DXY3cpRUn3Ycpw15qfKH1n4SK8p2zNJbbXw", "fee": 1400000, "feeAssetId": null, "timestamp": 1538221101924, "version": 1, "sender": "3N9UZtJRvvoNgHCjQsWvDUtxiym7KFc7r6f", "senderPublicKey": "4BRdUi95rN89kRWamqTcb9Dj9pLpAQbjLt17MPxcgGhG", "proofs": [ "4fmo6noCkXKp4kPrSawFyPY5Anbb3iTogBRg7pcwagqmt79NWk1LyBEcAbheotZ9JdVEw3R2dJmvEXvSrY82YDnP" ], "script": "base64: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", "chainId": 84, "height": 353231, "spentComplexity": 0 } View: original | compacted Prev: 2AGLtvYvNpX1whP1GF58gKHKrauu76uefrHVw3XSpPQW Next: BFg2qfV6Yk4vrANWoymmLRiLcF2M76VWajwURQuNimmh Diff:
OldNewDifferences
109109 else if ((blueAttackers > 0))
110110 then blueSigned
111111 else false
112- let multi = (fromUnits / attackers)
113- if (if (if (king)
112+ let multiAttackers = (fromUnits / attackers)
113+ let multiDefenders = (toUnits / defenders)
114+ let win = if (if (if (if (king)
115+ then (multiAttackers != multiDefenders)
116+ else false)
114117 then (attackers > defenders)
115118 else false)
116119 then (newFromUnits == 0)
117120 else false)
118- then (newToUnits == ((attackers - defenders) * multi))
121+ then (newToUnits == ((attackers - defenders) * multiAttackers))
119122 else false
123+ let lost = if (if (if (if (king)
124+ then (multiAttackers != multiDefenders)
125+ else false)
126+ then (defenders > attackers)
127+ else false)
128+ then (newFromUnits == 0)
129+ else false)
130+ then (newToUnits == ((defenders - attackers) * multiDefenders))
131+ else false
132+ let draw = if (if (if (if (king)
133+ then (multiAttackers != multiDefenders)
134+ else false)
135+ then (attackers == defenders)
136+ else false)
137+ then (newFromUnits == 0)
138+ else false)
139+ then (newToUnits == (((defenders + 1) - attackers) * multiDefenders))
140+ else false
141+ let move = if (if (if (if (king)
142+ then (multiAttackers == multiDefenders)
143+ else false)
144+ then (newFromUnits == 0)
145+ else false)
146+ then (10 >= (attackers + defenders))
147+ else false)
148+ then (newToUnits == ((attackers + defenders) * multiAttackers))
149+ else false
150+ if (if (if (win)
151+ then true
152+ else lost)
153+ then true
154+ else draw)
155+ then true
156+ else move
120157 case ntx: TransferTransaction =>
121158 true
122159 case _ =>
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 1 #-}
22 {-# CONTENT_TYPE EXPRESSION #-}
33 let redPubKey = base58'BYrrqVpD5uuz7cndnPwuUxuYFUK6Bovu6yfoV8seY6Px'
44 let greenPubKey = base58'HnSkSntD7ihFgZpLNmHgdVnVmCYxJLC96eNbubTXsWju'
55 let bluePubKey = base58'5Ak4HQK3cnkwe6XVUXwpCYeSAARwruKyAmsmegePUPvo'
66 let redAddr = Address(base58'3MyP3hrK8SBvtXtggNWdsry8KuGdrv1sFrV')
77 let greenAddr = Address(base58'3MzzYQCC8Ks86exHaWV2VpaANbNLPRDunNJ')
88 let blueAddr = Address(base58'3MuuWYr3DyjEkncbNU1tUeFbyvcyZng9gz4')
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 newFromUnits = ttx.data[0].value
1919 let newToUnits = ttx.data[1].value
2020 let turnCorrect = if (if (if (if (if (if (if (if (if (if (if (if ((fromKey == "country1"))
2121 then (toKey == "country2")
2222 else false)
2323 then true
2424 else if ((fromKey == "country2"))
2525 then if ((toKey == "country1"))
2626 then true
2727 else (toKey == "country3")
2828 else false)
2929 then true
3030 else if ((fromKey == "country3"))
3131 then if (if ((toKey == "country2"))
3232 then true
3333 else (toKey == "country4"))
3434 then true
3535 else (toKey == "country5")
3636 else false)
3737 then true
3838 else if ((fromKey == "country4"))
3939 then if ((toKey == "country3"))
4040 then true
4141 else (toKey == "country8")
4242 else false)
4343 then true
4444 else if ((fromKey == "country5"))
4545 then if ((toKey == "country3"))
4646 then true
4747 else (toKey == "country10")
4848 else false)
4949 then true
5050 else if ((fromKey == "country6"))
5151 then (toKey == "country7")
5252 else false)
5353 then true
5454 else if ((fromKey == "country7"))
5555 then if ((toKey == "country6"))
5656 then true
5757 else (toKey == "country8")
5858 else false)
5959 then true
6060 else if ((fromKey == "country8"))
6161 then if (if ((toKey == "country4"))
6262 then true
6363 else (toKey == "country7"))
6464 then true
6565 else (toKey == "country9")
6666 else false)
6767 then true
6868 else if ((fromKey == "country9"))
6969 then if ((toKey == "country8"))
7070 then true
7171 else (toKey == "country10")
7272 else false)
7373 then true
7474 else if ((fromKey == "country10"))
7575 then if (if ((toKey == "country5"))
7676 then true
7777 else (toKey == "country10"))
7878 then true
7979 else (toKey == "country11")
8080 else false)
8181 then true
8282 else if ((fromKey == "country11"))
8383 then if ((toKey == "country10"))
8484 then true
8585 else (toKey == "country12")
8686 else false)
8787 then true
8888 else if ((fromKey == "country12"))
8989 then (toKey == "country11")
9090 else false
9191 let fromUnits = extract(getInteger(contract, fromKey))
9292 let toUnits = extract(getInteger(contract, toKey))
9393 let redAttackers = (fromUnits % 100)
9494 let greenAttackers = ((fromUnits - redAttackers) / 100)
9595 let blueAttackers = (((fromUnits - (greenAttackers * 100)) - redAttackers) / 100)
9696 let redDefenders = (toUnits % 100)
9797 let greenDefenders = ((toUnits - redDefenders) / 100)
9898 let blueDefenders = (((toUnits - (greenDefenders * 100)) - redDefenders) / 100)
9999 let attackers = ((redAttackers + greenAttackers) + blueAttackers)
100100 let defenders = ((redDefenders + greenDefenders) + blueDefenders)
101101 let king = if (if (if ((redAttackers > 0))
102102 then redSigned
103103 else false)
104104 then true
105105 else if ((greenAttackers > 0))
106106 then greenSigned
107107 else false)
108108 then true
109109 else if ((blueAttackers > 0))
110110 then blueSigned
111111 else false
112- let multi = (fromUnits / attackers)
113- if (if (if (king)
112+ let multiAttackers = (fromUnits / attackers)
113+ let multiDefenders = (toUnits / defenders)
114+ let win = if (if (if (if (king)
115+ then (multiAttackers != multiDefenders)
116+ else false)
114117 then (attackers > defenders)
115118 else false)
116119 then (newFromUnits == 0)
117120 else false)
118- then (newToUnits == ((attackers - defenders) * multi))
121+ then (newToUnits == ((attackers - defenders) * multiAttackers))
119122 else false
123+ let lost = if (if (if (if (king)
124+ then (multiAttackers != multiDefenders)
125+ else false)
126+ then (defenders > attackers)
127+ else false)
128+ then (newFromUnits == 0)
129+ else false)
130+ then (newToUnits == ((defenders - attackers) * multiDefenders))
131+ else false
132+ let draw = if (if (if (if (king)
133+ then (multiAttackers != multiDefenders)
134+ else false)
135+ then (attackers == defenders)
136+ else false)
137+ then (newFromUnits == 0)
138+ else false)
139+ then (newToUnits == (((defenders + 1) - attackers) * multiDefenders))
140+ else false
141+ let move = if (if (if (if (king)
142+ then (multiAttackers == multiDefenders)
143+ else false)
144+ then (newFromUnits == 0)
145+ else false)
146+ then (10 >= (attackers + defenders))
147+ else false)
148+ then (newToUnits == ((attackers + defenders) * multiAttackers))
149+ else false
150+ if (if (if (win)
151+ then true
152+ else lost)
153+ then true
154+ else draw)
155+ then true
156+ else move
120157 case ntx: TransferTransaction =>
121158 true
122159 case _ =>
123160 true
124161 }

github/deemru/w8io/873ac7e 
26.00 ms