tx · EeQodBCtMw7XxEU8y8CuZadbNHvgwrA6BqTrKNme9vMG

3PNB6RqH2VrprVZ697BTMuoXDiyi1LqT8Sm:  -0.01000000 Waves

2018.10.15 12:34 [1217412] smart account 3PNB6RqH2VrprVZ697BTMuoXDiyi1LqT8Sm > SELF 0.00000000 Waves

{ "type": 13, "id": "EeQodBCtMw7XxEU8y8CuZadbNHvgwrA6BqTrKNme9vMG", "fee": 1000000, "feeAssetId": null, "timestamp": 1539596094731, "version": 1, "sender": "3PNB6RqH2VrprVZ697BTMuoXDiyi1LqT8Sm", "senderPublicKey": "4VzJwuhdq5WRuX9psya7oAvh2Xh5hUQCrhoqkRiUuCGd", "proofs": [ "5zKiuKBxqUKoizrRoUks5m1ocU9zfTBUYXEpepTYnvyiUfMoXBxr5SyapX4a64t3n8Ht3mXJQ39xNgRg54idSTbf" ], "script": "base64:AQQAAAAJcmVkUHViS2V5AQAAACDUBMsUHAoR00eEJ7k2fI/zalQeheV9Z68Ba5YjgWqpSAQAAAALZ3JlZW5QdWJLZXkBAAAAIMo3epEehn9hE+5d+0LYIYrRgptizP03RpRQ0t2tkD91BAAAAApibHVlUHViS2V5AQAAACBQoyxdcIKbyBIL+thhhxDMEfvObJA677vTolQjw2okIQQAAAAHcmVkQWRkcgkBAAAAB0FkZHJlc3MAAAABAQAAABoBVw0+CQQHmOK8EJIes/f76Fpn23A+HCoz9gQAAAAJZ3JlZW5BZGRyCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFXcFBtR77t02ioop1ucGC3tZhEr2fiW9b3BAAAAAhibHVlQWRkcgkBAAAAB0FkZHJlc3MAAAABAQAAABoBV0KXmIDa4C9uhNqxv3mxqXRjnu6RsmwCpAQAAAAIY29udHJhY3QIBQAAAAJ0eAAAAAZzZW5kZXIEAAAACXJlZFNpZ25lZAkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAFAAAACXJlZFB1YktleQQAAAALZ3JlZW5TaWduZWQJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAABQAAAAtncmVlblB1YktleQQAAAAKYmx1ZVNpZ25lZAkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAFAAAACmJsdWVQdWJLZXkEAAAAByRtYXRjaDAFAAAAAnR4AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAA9EYXRhVHJhbnNhY3Rpb24EAAAAA3R0eAUAAAAHJG1hdGNoMAQAAAAIZGF0YVNpemUJAAGQAAAAAQgFAAAAA3R0eAAAAARkYXRhBAAAAAdmcm9tS2V5CAkAAZEAAAACCAUAAAADdHR4AAAABGRhdGEAAAAAAAAAAAAAAAADa2V5BAAAAAV0b0tleQgJAAGRAAAAAggFAAAAA3R0eAAAAARkYXRhAAAAAAAAAAABAAAAA2tleQQAAAAObmV3VHVybkZyb21LZXkICQABkQAAAAIIBQAAAAN0dHgAAAAEZGF0YQAAAAAAAAAAAgAAAANrZXkEAAAACXR1cm5Ub0tleQgJAAGRAAAAAggFAAAAA3R0eAAAAARkYXRhAAAAAAAAAAADAAAAA2tleQQAAAAMbmV3RnJvbVVuaXRzCAkAAZEAAAACCAUAAAADdHR4AAAABGRhdGEAAAAAAAAAAAAAAAAFdmFsdWUEAAAACm5ld1RvVW5pdHMICQABkQAAAAIIBQAAAAN0dHgAAAAEZGF0YQAAAAAAAAAAAQAAAAV2YWx1ZQQAAAAQbmV3VHVybkZyb21WYWx1ZQgJAAGRAAAAAggFAAAAA3R0eAAAAARkYXRhAAAAAAAAAAACAAAABXZhbHVlBAAAAAt0dXJuVG9WYWx1ZQgJAAGRAAAAAggFAAAAA3R0eAAAAARkYXRhAAAAAAAAAAADAAAABXZhbHVlBAAAAAt0dXJuQ29ycmVjdAMDAwMDAwMDAwMDAwkAAAAAAAACBQAAAAdmcm9tS2V5AgAAAAhjb3VudHJ5MQkAAAAAAAACBQAAAAV0b0tleQIAAAAIY291bnRyeTIHBgMJAAAAAAAAAgUAAAAHZnJvbUtleQIAAAAIY291bnRyeTIDCQAAAAAAAAIFAAAABXRvS2V5AgAAAAhjb3VudHJ5MQYJAAAAAAAAAgUAAAAFdG9LZXkCAAAACGNvdW50cnkzBwYDCQAAAAAAAAIFAAAAB2Zyb21LZXkCAAAACGNvdW50cnkzAwMJAAAAAAAAAgUAAAAFdG9LZXkCAAAACGNvdW50cnkyBgkAAAAAAAACBQAAAAV0b0tleQIAAAAIY291bnRyeTQGCQAAAAAAAAIFAAAABXRvS2V5AgAAAAhjb3VudHJ5NQcGAwkAAAAAAAACBQAAAAdmcm9tS2V5AgAAAAhjb3VudHJ5NAMJAAAAAAAAAgUAAAAFdG9LZXkCAAAACGNvdW50cnkzBgkAAAAAAAACBQAAAAV0b0tleQIAAAAIY291bnRyeTgHBgMJAAAAAAAAAgUAAAAHZnJvbUtleQIAAAAIY291bnRyeTUDCQAAAAAAAAIFAAAABXRvS2V5AgAAAAhjb3VudHJ5MwYJAAAAAAAAAgUAAAAFdG9LZXkCAAAACWNvdW50cnkxMAcGAwkAAAAAAAACBQAAAAdmcm9tS2V5AgAAAAhjb3VudHJ5NgkAAAAAAAACBQAAAAV0b0tleQIAAAAIY291bnRyeTcHBgMJAAAAAAAAAgUAAAAHZnJvbUtleQIAAAAIY291bnRyeTcDCQAAAAAAAAIFAAAABXRvS2V5AgAAAAhjb3VudHJ5NgYJAAAAAAAAAgUAAAAFdG9LZXkCAAAACGNvdW50cnk4BwYDCQAAAAAAAAIFAAAAB2Zyb21LZXkCAAAACGNvdW50cnk4AwMJAAAAAAAAAgUAAAAFdG9LZXkCAAAACGNvdW50cnk0BgkAAAAAAAACBQAAAAV0b0tleQIAAAAIY291bnRyeTcGCQAAAAAAAAIFAAAABXRvS2V5AgAAAAhjb3VudHJ5OQcGAwkAAAAAAAACBQAAAAdmcm9tS2V5AgAAAAhjb3VudHJ5OQMJAAAAAAAAAgUAAAAFdG9LZXkCAAAACGNvdW50cnk4BgkAAAAAAAACBQAAAAV0b0tleQIAAAAJY291bnRyeTEwBwYDCQAAAAAAAAIFAAAAB2Zyb21LZXkCAAAACWNvdW50cnkxMAMDCQAAAAAAAAIFAAAABXRvS2V5AgAAAAhjb3VudHJ5NQYJAAAAAAAAAgUAAAAFdG9LZXkCAAAACWNvdW50cnkxMAYJAAAAAAAAAgUAAAAFdG9LZXkCAAAACWNvdW50cnkxMQcGAwkAAAAAAAACBQAAAAdmcm9tS2V5AgAAAAljb3VudHJ5MTEDCQAAAAAAAAIFAAAABXRvS2V5AgAAAAljb3VudHJ5MTAGCQAAAAAAAAIFAAAABXRvS2V5AgAAAAljb3VudHJ5MTIHBgMJAAAAAAAAAgUAAAAHZnJvbUtleQIAAAAJY291bnRyeTEyCQAAAAAAAAIFAAAABXRvS2V5AgAAAAljb3VudHJ5MTEHBAAAAAt0dXJuRnJvbUtleQkAASwAAAACAgAAAAV0dXJuXwUAAAAHZnJvbUtleQQAAAANdHVybkZyb21WYWx1ZQkBAAAAB2V4dHJhY3QAAAABCQAEGgAAAAIFAAAACGNvbnRyYWN0BQAAAAt0dXJuRnJvbUtleQQAAAALdHVybkFsbG93ZWQDAwkAAGYAAAACCQAAZQAAAAIFAAAABmhlaWdodAAAAAAAAAAAAgUAAAANdHVybkZyb21WYWx1ZQkAAAAAAAACBQAAAAt0dXJuRnJvbUtleQUAAAAObmV3VHVybkZyb21LZXkHCQAAAAAAAAIFAAAAEG5ld1R1cm5Gcm9tVmFsdWUFAAAABmhlaWdodAcEAAAADG9sZFR1cm5Ub0tleQkAASwAAAACAgAAAAV0dXJuXwUAAAAFdG9LZXkEAAAADm9sZFR1cm5Ub1ZhbHVlCQEAAAAHZXh0cmFjdAAAAAEJAAQaAAAAAgUAAAAIY29udHJhY3QFAAAADG9sZFR1cm5Ub0tleQQAAAAGbG9ja2VkAwkAAAAAAAACCQABLAAAAAICAAAABXR1cm5fBQAAAAV0b0tleQUAAAAJdHVyblRvS2V5CQAAAAAAAAIFAAAAC3R1cm5Ub1ZhbHVlBQAAAAZoZWlnaHQHBAAAAA5sb2NrTm90Q2hhbmdlZAMJAAAAAAAAAgkAASwAAAACAgAAAAV0dXJuXwUAAAAFdG9LZXkFAAAACXR1cm5Ub0tleQkAAAAAAAACBQAAAAt0dXJuVG9WYWx1ZQUAAAAOb2xkVHVyblRvVmFsdWUHBAAAAAlmcm9tVW5pdHMJAQAAAAdleHRyYWN0AAAAAQkABBoAAAACBQAAAAhjb250cmFjdAUAAAAHZnJvbUtleQQAAAAHdG9Vbml0cwkBAAAAB2V4dHJhY3QAAAABCQAEGgAAAAIFAAAACGNvbnRyYWN0BQAAAAV0b0tleQQAAAAMcmVkQXR0YWNrZXJzCQAAagAAAAIFAAAACWZyb21Vbml0cwAAAAAAAAAAZAQAAAAOZ3JlZW5BdHRhY2tlcnMJAABpAAAAAgkAAGoAAAACCQAAZQAAAAIFAAAACWZyb21Vbml0cwUAAAAMcmVkQXR0YWNrZXJzAAAAAAAAACcQAAAAAAAAAABkBAAAAA1ibHVlQXR0YWNrZXJzCQAAaQAAAAIJAABlAAAAAgkAAGUAAAACBQAAAAlmcm9tVW5pdHMJAABoAAAAAgUAAAAOZ3JlZW5BdHRhY2tlcnMAAAAAAAAAAGQFAAAADHJlZEF0dGFja2VycwAAAAAAAAAnEAQAAAAMcmVkRGVmZW5kZXJzCQAAagAAAAIFAAAAB3RvVW5pdHMAAAAAAAAAAGQEAAAADmdyZWVuRGVmZW5kZXJzCQAAaQAAAAIJAABqAAAAAgkAAGUAAAACBQAAAAd0b1VuaXRzBQAAAAxyZWREZWZlbmRlcnMAAAAAAAAAJxAAAAAAAAAAAGQEAAAADWJsdWVEZWZlbmRlcnMJAABpAAAAAgkAAGoAAAACCQAAZQAAAAIJAABlAAAAAgUAAAAHdG9Vbml0cwkAAGgAAAACBQAAAA5ncmVlbkRlZmVuZGVycwAAAAAAAAAAZAUAAAAMcmVkRGVmZW5kZXJzAAAAAAAAD0JAAAAAAAAAACcQBAAAAA53aGl0ZURlZmVuZGVycwkAAGkAAAACCQAAZQAAAAIJAABlAAAAAgkAAGUAAAACBQAAAAd0b1VuaXRzCQAAaAAAAAIFAAAADWJsdWVEZWZlbmRlcnMAAAAAAAAAJxAJAABoAAAAAgUAAAAOZ3JlZW5EZWZlbmRlcnMAAAAAAAAAAGQFAAAADHJlZERlZmVuZGVycwAAAAAAAA9CQAQAAAAQY291bnRyeUF0dGFja2VycwkAAGQAAAACCQAAZAAAAAIFAAAADHJlZEF0dGFja2VycwUAAAAOZ3JlZW5BdHRhY2tlcnMFAAAADWJsdWVBdHRhY2tlcnMEAAAAEGNvdW50cnlEZWZlbmRlcnMJAABkAAAAAgkAAGQAAAACBQAAAAxyZWREZWZlbmRlcnMFAAAADmdyZWVuRGVmZW5kZXJzBQAAAA1ibHVlRGVmZW5kZXJzBAAAABJ1bmxpbWl0ZWRBdHRhY2tlcnMJAABkAAAAAgkAAGQAAAACCQAAZAAAAAIFAAAADHJlZEF0dGFja2VycwUAAAAOZ3JlZW5BdHRhY2tlcnMFAAAADWJsdWVBdHRhY2tlcnMJAABlAAAAAgUAAAAGaGVpZ2h0BQAAAA10dXJuRnJvbVZhbHVlBAAAABJ1bmxpbWl0ZWREZWZlbmRlcnMDCQAAZgAAAAIFAAAADndoaXRlRGVmZW5kZXJzAAAAAAAAAAAABQAAAA53aGl0ZURlZmVuZGVycwkAAGQAAAACCQAAZAAAAAIJAABkAAAAAgUAAAAMcmVkRGVmZW5kZXJzBQAAAA5ncmVlbkRlZmVuZGVycwUAAAANYmx1ZURlZmVuZGVycwkAAGUAAAACBQAAAAZoZWlnaHQFAAAADm9sZFR1cm5Ub1ZhbHVlBAAAAAlhdHRhY2tlcnMDCQAAZwAAAAIFAAAAEnVubGltaXRlZEF0dGFja2VycwAAAAAAAAAACQAAAAAAAAAACQkAAGUAAAACBQAAABJ1bmxpbWl0ZWRBdHRhY2tlcnMAAAAAAAAAAAEEAAAACWRlZmVuZGVycwMJAABnAAAAAgUAAAASdW5saW1pdGVkRGVmZW5kZXJzAAAAAAAAAAAKAAAAAAAAAAAKBQAAABJ1bmxpbWl0ZWREZWZlbmRlcnMEAAAABGtpbmcDAwMJAABmAAAAAgUAAAAMcmVkQXR0YWNrZXJzAAAAAAAAAAAABQAAAAlyZWRTaWduZWQHBgMJAABmAAAAAgUAAAAOZ3JlZW5BdHRhY2tlcnMAAAAAAAAAAAAFAAAAC2dyZWVuU2lnbmVkBwYDCQAAZgAAAAIFAAAADWJsdWVBdHRhY2tlcnMAAAAAAAAAAAAFAAAACmJsdWVTaWduZWQHBAAAAA5tdWx0aUF0dGFja2VycwMJAABmAAAAAgUAAAAQY291bnRyeUF0dGFja2VycwAAAAAAAAAAAAkAAGkAAAACBQAAAAlmcm9tVW5pdHMFAAAAEGNvdW50cnlBdHRhY2tlcnMAAAAAAAAAAAAEAAAADm11bHRpRGVmZW5kZXJzAwkAAGYAAAACBQAAABBjb3VudHJ5RGVmZW5kZXJzAAAAAAAAAAAACQAAaQAAAAIFAAAAB3RvVW5pdHMFAAAAEGNvdW50cnlEZWZlbmRlcnMAAAAAAAAAAAAEAAAAA3dpbgMDAwMDBQAAAARraW5nCQEAAAACIT0AAAACBQAAAA5tdWx0aUF0dGFja2VycwUAAAAObXVsdGlEZWZlbmRlcnMHCQAAZgAAAAIFAAAACWF0dGFja2VycwUAAAAJZGVmZW5kZXJzBwkAAAAAAAACBQAAAAxuZXdGcm9tVW5pdHMFAAAADm11bHRpQXR0YWNrZXJzBwkAAAAAAAACBQAAAApuZXdUb1VuaXRzCQAAaAAAAAIJAABlAAAAAgUAAAAJYXR0YWNrZXJzBQAAAAlkZWZlbmRlcnMFAAAADm11bHRpQXR0YWNrZXJzBwUAAAAGbG9ja2VkBwQAAAAEbG9zdAMDAwMDBQAAAARraW5nCQEAAAACIT0AAAACBQAAAA5tdWx0aUF0dGFja2VycwUAAAAObXVsdGlEZWZlbmRlcnMHCQAAZgAAAAIFAAAACWRlZmVuZGVycwUAAAAJYXR0YWNrZXJzBwkAAAAAAAACBQAAAAxuZXdGcm9tVW5pdHMFAAAADm11bHRpQXR0YWNrZXJzBwkAAAAAAAACBQAAAApuZXdUb1VuaXRzCQAAaAAAAAIJAABlAAAAAgUAAAAJZGVmZW5kZXJzBQAAAAlhdHRhY2tlcnMFAAAADm11bHRpRGVmZW5kZXJzBwUAAAAObG9ja05vdENoYW5nZWQHBAAAAARkcmF3AwMDAwMFAAAABGtpbmcJAQAAAAIhPQAAAAIFAAAADm11bHRpQXR0YWNrZXJzBQAAAA5tdWx0aURlZmVuZGVycwcJAAAAAAAAAgUAAAAJYXR0YWNrZXJzBQAAAAlkZWZlbmRlcnMHCQAAAAAAAAIFAAAADG5ld0Zyb21Vbml0cwUAAAAObXVsdGlBdHRhY2tlcnMHCQAAAAAAAAIFAAAACm5ld1RvVW5pdHMJAABoAAAAAgkAAGUAAAACCQAAZAAAAAIFAAAACWRlZmVuZGVycwAAAAAAAAAAAQUAAAAJYXR0YWNrZXJzBQAAAA5tdWx0aURlZmVuZGVycwcFAAAADmxvY2tOb3RDaGFuZ2VkBwQAAAAEbW92ZQMDAwMDBQAAAARraW5nCQAAAAAAAAIFAAAADm11bHRpQXR0YWNrZXJzBQAAAA5tdWx0aURlZmVuZGVycwcJAAAAAAAAAgUAAAAMbmV3RnJvbVVuaXRzBQAAAA5tdWx0aUF0dGFja2VycwcJAABnAAAAAgAAAAAAAAAACgkAAGQAAAACBQAAAAlhdHRhY2tlcnMFAAAACWRlZmVuZGVycwcJAAAAAAAAAgUAAAAKbmV3VG9Vbml0cwkAAGgAAAACCQAAZAAAAAIFAAAACWF0dGFja2VycwUAAAAJZGVmZW5kZXJzBQAAAA5tdWx0aUF0dGFja2VycwcFAAAABmxvY2tlZAcDAwMDAwMFAAAAA3dpbgYFAAAABGxvc3QGBQAAAARkcmF3BgUAAAAEbW92ZQUAAAALdHVybkFsbG93ZWQHCQAAAAAAAAIFAAAACGRhdGFTaXplAAAAAAAAAAAEBwYJAAAAAAAAAgUAAAAIZGF0YVNpemUAAAAAAAAAAAwDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAE1RyYW5zZmVyVHJhbnNhY3Rpb24EAAAAA250eAUAAAAHJG1hdGNoMAYGAEaLgg==", "chainId": 87, "height": 1217412, "spentComplexity": 0 } View: original | compacted Prev: none Next: JC18fE38snS3bCftLuVkFXYb5wfGeqsZwC9Zr7ZoYPVX Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 1 #-}
2+{-# 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 - 2) > 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 == oldTurnToValue)
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)
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) * 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 draw = if (if (if (if (if (king)
171+ then (multiAttackers != multiDefenders)
172+ else false)
173+ then (attackers == defenders)
174+ else false)
175+ then (newFromUnits == multiAttackers)
176+ else false)
177+ then (newToUnits == (((defenders + 1) - attackers) * multiDefenders))
178+ else false)
179+ then lockNotChanged
180+ else false
181+ let move = if (if (if (if (if (king)
182+ then (multiAttackers == multiDefenders)
183+ else false)
184+ then (newFromUnits == multiAttackers)
185+ else false)
186+ then (10 >= (attackers + defenders))
187+ else false)
188+ then (newToUnits == ((attackers + defenders) * multiAttackers))
189+ else false)
190+ then locked
191+ else false
192+ if (if (if (if (if (if (win)
193+ then true
194+ else lost)
195+ then true
196+ else draw)
197+ then true
198+ else move)
199+ then turnAllowed
200+ else false)
201+ then (dataSize == 4)
202+ else false)
203+ then true
204+ else (dataSize == 12)
205+ case ntx: TransferTransaction =>
206+ true
207+ case _ =>
208+ true
209+}

github/deemru/w8io/3ef1775 
69.08 ms