tx · GcQaDNHmT1syezTKm3oevMiBGiNkXnrPsF41So8rqWyd

3Mr1J95HgTFuj93Uh61WS1PBrxc5hSx5uE5:  -0.05000000 Waves

2024.07.28 12:54 [3213778] smart account 3Mr1J95HgTFuj93Uh61WS1PBrxc5hSx5uE5 > SELF 0.00000000 Waves

{ "type": 13, "id": "GcQaDNHmT1syezTKm3oevMiBGiNkXnrPsF41So8rqWyd", "fee": 5000000, "feeAssetId": null, "timestamp": 1722160504406, "version": 2, "chainId": 84, "sender": "3Mr1J95HgTFuj93Uh61WS1PBrxc5hSx5uE5", "senderPublicKey": "DhKSnv34wE65np8uDd8E6ygEbNsn6fHx9p7q4hJTcgRw", "proofs": [ "2gEtPjQuaHaQhgvugBcWAHk37ZBX43CaEvuxuqjAbe2MXcaRLMMk7u24nY1HTMZCwJ6fMggcepcF7V1SW9NGjk2g" ], "script": "base64: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AAAAAgUAAAAMY3VycmVudEJvYXJkAAAAAAAAAAAGBgkAAAAAAAACCQEAAAAGY2hhckF0AAAAAgUAAAAMY3VycmVudEJvYXJkAAAAAAAAAAAGAgAAAAEwBgcEAAAAFWVpZ2h0aFBvc2l0aW9uQ29ycmVjdAMDCQAAAAAAAAIJAQAAAAZjaGFyQXQAAAACBQAAAAVib2FyZAAAAAAAAAAABwkBAAAABmNoYXJBdAAAAAIFAAAADGN1cnJlbnRCb2FyZAAAAAAAAAAABwYJAAAAAAAAAgkBAAAABmNoYXJBdAAAAAIFAAAADGN1cnJlbnRCb2FyZAAAAAAAAAAABwIAAAABMAYHBAAAABRuaW50aFBvc2l0aW9uQ29ycmVjdAMDCQAAAAAAAAIJAQAAAAZjaGFyQXQAAAACBQAAAAVib2FyZAAAAAAAAAAACAkBAAAABmNoYXJBdAAAAAIFAAAADGN1cnJlbnRCb2FyZAAAAAAAAAAACAYJAAAAAAAAAgkBAAAABmNoYXJBdAAAAAIFAAAADGN1cnJlbnRCb2FyZAAAAAAAAAAACAIAAAABMAYHBAAAABhub09sZFBvc2l0aW9uT3ZlcndyaXR0ZW4DAwMDAwMDAwUAAAAUZmlyc3RQb3NpdGlvbkNvcnJlY3QFAAAAFXNlY29uZFBvc2l0aW9uQ29ycmVjdAcFAAAAFHRoaXJkUG9zaXRpb25Db3JyZWN0BwUAAAAVZm91cnRoUG9zaXRpb25Db3JyZWN0BwUAAAAUZmlmdGhQb3NpdGlvbkNvcnJlY3QHBQAAABRzaXh0aFBvc2l0aW9uQ29ycmVjdAcFAAAAFnNldmVudGhQb3NpdGlvbkNvcnJlY3QHBQAAABVlaWdodGhQb3NpdGlvbkNvcnJlY3QHBQAAABRuaW50aFBvc2l0aW9uQ29ycmVjdAcEAAAACmNvdW50TW92ZXMJAABkAAAAAgkAAGQAAAACCQAAZAAAAAIJAABkAAAAAgkAAGQAAAACCQAAZAAAAAIJAABkAAAAAgkAAGQAAAACBQAAAA1maXJzdFNlbGVjdGVkBQAAAA5zZWNvbmRTZWxlY3RlZAUAAAANdGhpcmRTZWxlY3RlZAUAAAAOZm91cnRoU2VsZWN0ZWQFAAAADWZpZnRoU2VsZWN0ZWQFAAAADXNpeHRoU2VsZWN0ZWQFAAAA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ZW5kZXIDCQEAAAACIT0AAAACCQAEJQAAAAEFAAAABnNlbmRlcgUAAAAJaW5pdGlhdG9yCQAAAgAAAAECAAAAKE9ubHkgaW5pdGlhdG9yIGlzIGFsbG93ZWQgdG8gbWFrZSBtb3ZlcyEEAAAAE21vdmVPZlBsYXllcklzVmFsaWQJAQAAABJjaGVja0lmTW92ZUlzVmFsaWQAAAACBQAAAAZnYW1lSWQFAAAABWJvYXJkAwkBAAAAASEAAAABBQAAABNtb3ZlT2ZQbGF5ZXJJc1ZhbGlkCQAAAgAAAAECAAAADUlsbGVnYWwgbW92ZSEEAAAADHBsYXllckhhc1dvbgkBAAAAE2NoZWNrSWZQbGF5ZXJIYXNXb24AAAADBQAAAAZnYW1lSWQFAAAABWJvYXJkBQAAAAZQTEFZRVIEAAAAFW51bWJlck9mUG9zc2libGVNb3ZlcwkBAAAAFWdldFBvc3NpYmxlTW92ZXNDb3VudAAAAAEFAAAABWJvYXJkAwUAAAAMcGxheWVySGFzV29uCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgIAAAANY3VycmVudEJvYXJkXwUAAAAGZ2FtZUlkBQAAAAVib2FyZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAICAAAAB3dpbm5lcl8FAAAABmdhbWVJZAIAAAAGcGxheWVyCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAABnNlbmRlcgUAAAAOV0lOTklOR19BTU9VTlQFAAAADEJBSV9BU1NFVF9JRAUAAAADbmlsAwkAAAAAAAACBQAAABVudW1iZXJPZlBvc3NpYmxlTW92ZXMAAAAAAAAAAAAJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACAgAAAA1jdXJyZW50Qm9hcmRfBQAAAAZnYW1lSWQFAAAABWJvYXJkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgIAAAAHd2lubmVyXwUAAAAGZ2FtZUlkAgAAAARkcmF3BQAAAANuaWwEAAAACG5leHRNb3ZlCQAD/AAAAAQJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABBQAAAAxCQUlfQ09OVFJBQ1QCAAAAFHJlZ2lzdGVyVGFza0NhbGxiYWNrCQAETAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAAZnYW1lSWQCAAAAAV8FAAAABWJvYXJkCQAETAAAAAICAAAACXRpY3RhY3RvZQkABEwAAAACAgAAAAhjYWxsYmFjawUAAAADbmlsCQAETAAAAAIJAQAAAA9BdHRhY2hlZFBheW1lbnQAAAACBQAAAAxCQUlfQVNTRVRfSUQAAAAAAACYloAFAAAAA25pbAMJAAAAAAAAAgUAAAAIbmV4dE1vdmUFAAAACG5leHRNb3ZlCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgIAAAANY3VycmVudEJvYXJkXwUAAAAGZ2FtZUlkBQAAAAVib2FyZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAICAAAACmluaXRpYXRvcl8FAAAABmdhbWVJZAkABCUAAAABBQAAAAZzZW5kZXIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACAgAAAAxuZXh0X3BsYXllcl8FAAAABmdhbWVJZAUAAAACQUkFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAACQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tleZVtN3o=", "height": 3213778, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9UJfb1FGi8q23ZuKnmBA2AjutZKFwjbYqEngQTy5djbu Next: 67HYTywb5xb6UbqiL2hAjR4pbjX8uMjcmhsXVJYqcuLj Diff:
OldNewDifferences
123123
124124
125125 func checkIfPlayerHasWon (gameId,board,player) = {
126- let currentBoard = match getString(("currentBoard_" + gameId)) {
127- case s: String =>
128- s
129- case _ =>
130- "000000000"
131- }
126+ let currentBoard = if ((player == AI))
127+ then board
128+ else match getString(("currentBoard_" + gameId)) {
129+ case s: String =>
130+ s
131+ case _ =>
132+ "000000000"
133+ }
132134 let winningCombinations = [[0, 1, 2], [3, 4, 5], [6, 7, 8], [0, 3, 6], [1, 4, 7], [2, 5, 8], [0, 4, 8], [2, 4, 6]]
133135 let topRow = if (if ((charAt(currentBoard, winningCombinations[0][0]) == player))
134136 then (charAt(currentBoard, winningCombinations[0][1]) == player)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let BAI_CONTRACT = "3N9tKixzqTYWnEXQxrDQ5pBTGvQd6sFsvmV"
55
66 let BAI_ASSET_ID = base58'AxGKQRxKo4F2EbhrRq6N2tdLsxtMnpzQsS4QemV6V1W1'
77
88 let PLAYER = "1"
99
1010 let AI = "2"
1111
1212 let WINNING_AMOUNT = 100000000
1313
1414 func charAt (str,i) = split(str, "")[i]
1515
1616
1717 func checkIfMoveIsValid (gameId,board) = {
1818 let currentBoard = match getString(("currentBoard_" + gameId)) {
1919 case s: String =>
2020 s
2121 case _ =>
2222 "000000000"
2323 }
2424 let firstSelected = if ((charAt(board, 0) != charAt(currentBoard, 0)))
2525 then 1
2626 else 0
2727 let secondSelected = if ((charAt(board, 1) != charAt(currentBoard, 1)))
2828 then 1
2929 else 0
3030 let thirdSelected = if ((charAt(board, 2) != charAt(currentBoard, 2)))
3131 then 1
3232 else 0
3333 let fourthSelected = if ((charAt(board, 3) != charAt(currentBoard, 3)))
3434 then 1
3535 else 0
3636 let fifthSelected = if ((charAt(board, 4) != charAt(currentBoard, 4)))
3737 then 1
3838 else 0
3939 let sixthSelected = if ((charAt(board, 5) != charAt(currentBoard, 5)))
4040 then 1
4141 else 0
4242 let seventhSelected = if ((charAt(board, 6) != charAt(currentBoard, 6)))
4343 then 1
4444 else 0
4545 let eighthSelected = if ((charAt(board, 7) != charAt(currentBoard, 7)))
4646 then 1
4747 else 0
4848 let ninthSelected = if ((charAt(board, 8) != charAt(currentBoard, 8)))
4949 then 1
5050 else 0
5151 let firstPositionCorrect = if (if ((charAt(board, 0) == charAt(currentBoard, 0)))
5252 then true
5353 else (charAt(currentBoard, 0) == "0"))
5454 then true
5555 else false
5656 let secondPositionCorrect = if (if ((charAt(board, 1) == charAt(currentBoard, 1)))
5757 then true
5858 else (charAt(currentBoard, 1) == "0"))
5959 then true
6060 else false
6161 let thirdPositionCorrect = if (if ((charAt(board, 2) == charAt(currentBoard, 2)))
6262 then true
6363 else (charAt(currentBoard, 2) == "0"))
6464 then true
6565 else false
6666 let fourthPositionCorrect = if (if ((charAt(board, 3) == charAt(currentBoard, 3)))
6767 then true
6868 else (charAt(currentBoard, 3) == "0"))
6969 then true
7070 else false
7171 let fifthPositionCorrect = if (if ((charAt(board, 4) == charAt(currentBoard, 4)))
7272 then true
7373 else (charAt(currentBoard, 4) == "0"))
7474 then true
7575 else false
7676 let sixthPositionCorrect = if (if ((charAt(board, 5) == charAt(currentBoard, 5)))
7777 then true
7878 else (charAt(currentBoard, 5) == "0"))
7979 then true
8080 else false
8181 let seventhPositionCorrect = if (if ((charAt(board, 6) == charAt(currentBoard, 6)))
8282 then true
8383 else (charAt(currentBoard, 6) == "0"))
8484 then true
8585 else false
8686 let eighthPositionCorrect = if (if ((charAt(board, 7) == charAt(currentBoard, 7)))
8787 then true
8888 else (charAt(currentBoard, 7) == "0"))
8989 then true
9090 else false
9191 let ninthPositionCorrect = if (if ((charAt(board, 8) == charAt(currentBoard, 8)))
9292 then true
9393 else (charAt(currentBoard, 8) == "0"))
9494 then true
9595 else false
9696 let noOldPositionOverwritten = if (if (if (if (if (if (if (if (firstPositionCorrect)
9797 then secondPositionCorrect
9898 else false)
9999 then thirdPositionCorrect
100100 else false)
101101 then fourthPositionCorrect
102102 else false)
103103 then fifthPositionCorrect
104104 else false)
105105 then sixthPositionCorrect
106106 else false)
107107 then seventhPositionCorrect
108108 else false)
109109 then eighthPositionCorrect
110110 else false)
111111 then ninthPositionCorrect
112112 else false
113113 let countMoves = ((((((((firstSelected + secondSelected) + thirdSelected) + fourthSelected) + fifthSelected) + sixthSelected) + seventhSelected) + eighthSelected) + ninthSelected)
114114 let onlyOneMove = (1 >= countMoves)
115115 if ((countMoves > 1))
116116 then throw("More than move made!")
117117 else if (!(noOldPositionOverwritten))
118118 then throw("Former position overwritten!")
119119 else if (noOldPositionOverwritten)
120120 then onlyOneMove
121121 else false
122122 }
123123
124124
125125 func checkIfPlayerHasWon (gameId,board,player) = {
126- let currentBoard = match getString(("currentBoard_" + gameId)) {
127- case s: String =>
128- s
129- case _ =>
130- "000000000"
131- }
126+ let currentBoard = if ((player == AI))
127+ then board
128+ else match getString(("currentBoard_" + gameId)) {
129+ case s: String =>
130+ s
131+ case _ =>
132+ "000000000"
133+ }
132134 let winningCombinations = [[0, 1, 2], [3, 4, 5], [6, 7, 8], [0, 3, 6], [1, 4, 7], [2, 5, 8], [0, 4, 8], [2, 4, 6]]
133135 let topRow = if (if ((charAt(currentBoard, winningCombinations[0][0]) == player))
134136 then (charAt(currentBoard, winningCombinations[0][1]) == player)
135137 else false)
136138 then (charAt(currentBoard, winningCombinations[0][2]) == player)
137139 else false
138140 let middleRow = if (if ((charAt(currentBoard, winningCombinations[1][0]) == player))
139141 then (charAt(currentBoard, winningCombinations[1][1]) == player)
140142 else false)
141143 then (charAt(currentBoard, winningCombinations[1][2]) == player)
142144 else false
143145 let bottomRow = if (if ((charAt(currentBoard, winningCombinations[2][0]) == player))
144146 then (charAt(currentBoard, winningCombinations[2][1]) == player)
145147 else false)
146148 then (charAt(currentBoard, winningCombinations[2][2]) == player)
147149 else false
148150 let leftColumn = if (if ((charAt(currentBoard, winningCombinations[3][0]) == player))
149151 then (charAt(currentBoard, winningCombinations[3][1]) == player)
150152 else false)
151153 then (charAt(currentBoard, winningCombinations[3][2]) == player)
152154 else false
153155 let middleColumn = if (if ((charAt(currentBoard, winningCombinations[4][0]) == player))
154156 then (charAt(currentBoard, winningCombinations[4][1]) == player)
155157 else false)
156158 then (charAt(currentBoard, winningCombinations[4][2]) == player)
157159 else false
158160 let rightColumn = if (if ((charAt(currentBoard, winningCombinations[5][0]) == player))
159161 then (charAt(currentBoard, winningCombinations[5][1]) == player)
160162 else false)
161163 then (charAt(currentBoard, winningCombinations[5][2]) == player)
162164 else false
163165 let diagonalOne = if (if ((charAt(currentBoard, winningCombinations[6][0]) == player))
164166 then (charAt(currentBoard, winningCombinations[6][1]) == player)
165167 else false)
166168 then (charAt(currentBoard, winningCombinations[6][2]) == player)
167169 else false
168170 let diagonalTwo = if (if ((charAt(currentBoard, winningCombinations[7][0]) == player))
169171 then (charAt(currentBoard, winningCombinations[7][1]) == player)
170172 else false)
171173 then (charAt(currentBoard, winningCombinations[7][2]) == player)
172174 else false
173175 if (if (if (if (if (if (if (topRow)
174176 then true
175177 else middleRow)
176178 then true
177179 else bottomRow)
178180 then true
179181 else leftColumn)
180182 then true
181183 else middleRow)
182184 then true
183185 else rightColumn)
184186 then true
185187 else diagonalOne)
186188 then true
187189 else diagonalTwo
188190 }
189191
190192
191193 func getPossibleMovesCount (board) = {
192194 let firstMovePossible = if ((charAt(board, 0) == "0"))
193195 then 1
194196 else 0
195197 let secondMovePossible = if ((charAt(board, 1) == "0"))
196198 then 1
197199 else 0
198200 let thirdMovePossible = if ((charAt(board, 2) == "0"))
199201 then 1
200202 else 0
201203 let fourthMovePossible = if ((charAt(board, 3) == "0"))
202204 then 1
203205 else 0
204206 let fifthMovePossible = if ((charAt(board, 4) == "0"))
205207 then 1
206208 else 0
207209 let sixthMovePossible = if ((charAt(board, 5) == "0"))
208210 then 1
209211 else 0
210212 let seventhMovePossible = if ((charAt(board, 6) == "0"))
211213 then 1
212214 else 0
213215 let eigthMovePossible = if ((charAt(board, 7) == "0"))
214216 then 1
215217 else 0
216218 let ninthMovePossible = if ((charAt(board, 8) == "0"))
217219 then 1
218220 else 0
219221 ((((((((firstMovePossible + secondMovePossible) + thirdMovePossible) + fourthMovePossible) + fifthMovePossible) + sixthMovePossible) + seventhMovePossible) + eigthMovePossible) + ninthMovePossible)
220222 }
221223
222224
223225 @Callable(i)
224226 func callback (gameIdAndBoard) = {
225227 let parts = split(gameIdAndBoard, "_")
226228 let gameId = parts[0]
227229 let board = parts[1]
228230 let nextPlayer = match getString(("next_player_" + gameId)) {
229231 case s: String =>
230232 s
231233 case _ =>
232234 ""
233235 }
234236 let moveOfAIIsValid = checkIfMoveIsValid(gameId, board)
235237 if (!(moveOfAIIsValid))
236238 then throw("Illegal move!")
237239 else if ((nextPlayer != AI))
238240 then throw("Player has to move first!")
239241 else {
240242 let aiHasWon = checkIfPlayerHasWon(gameId, board, AI)
241243 if (aiHasWon)
242244 then [StringEntry(("currentBoard_" + gameId), board), StringEntry(("winner_" + gameId), "ai")]
243245 else [StringEntry(("currentBoard_" + gameId), board), StringEntry(("next_player_" + gameId), PLAYER)]
244246 }
245247 }
246248
247249
248250
249251 @Callable(i)
250252 func playTTT (game,board) = {
251253 let numberOfPayments = size(i.payments)
252254 if ((numberOfPayments != 1))
253255 then throw("Payment necessary!")
254256 else {
255257 let payment = i.payments[0]
256258 let fee = payment.amount
257259 let feeAssetId = payment.assetId
258260 let minFee = match getInteger(Address(fromBase58String(BAI_CONTRACT)), "price_tictactoe") {
259261 case n: Int =>
260262 n
261263 case _ =>
262264 0
263265 }
264266 if (if ((feeAssetId != BAI_ASSET_ID))
265267 then true
266268 else (minFee > fee))
267269 then throw("Payment of the minimal BAI amount necessary!")
268270 else {
269271 let sender = i.caller
270272 let gameId = if ((size(game) == 0))
271273 then toBase58String(i.transactionId)
272274 else game
273275 let nextPlayer = match getString(("next_player_" + gameId)) {
274276 case s: String =>
275277 s
276278 case _ =>
277279 PLAYER
278280 }
279281 if ((nextPlayer != PLAYER))
280282 then throw("AI hast to move first!")
281283 else {
282284 let currentBoard = match getString(("currentBoard_" + gameId)) {
283285 case s: String =>
284286 s
285287 case _ =>
286288 board
287289 }
288290 let initiator = match getString(("initiator_" + gameId)) {
289291 case s: String =>
290292 s
291293 case _ =>
292294 toString(sender)
293295 }
294296 if ((toString(sender) != initiator))
295297 then throw("Only initiator is allowed to make moves!")
296298 else {
297299 let moveOfPlayerIsValid = checkIfMoveIsValid(gameId, board)
298300 if (!(moveOfPlayerIsValid))
299301 then throw("Illegal move!")
300302 else {
301303 let playerHasWon = checkIfPlayerHasWon(gameId, board, PLAYER)
302304 let numberOfPossibleMoves = getPossibleMovesCount(board)
303305 if (playerHasWon)
304306 then [StringEntry(("currentBoard_" + gameId), board), StringEntry(("winner_" + gameId), "player"), ScriptTransfer(sender, WINNING_AMOUNT, BAI_ASSET_ID)]
305307 else if ((numberOfPossibleMoves == 0))
306308 then [StringEntry(("currentBoard_" + gameId), board), StringEntry(("winner_" + gameId), "draw")]
307309 else {
308310 let nextMove = invoke(Address(fromBase58String(BAI_CONTRACT)), "registerTaskCallback", [((gameId + "_") + board), "tictactoe", "callback"], [AttachedPayment(BAI_ASSET_ID, 10000000)])
309311 if ((nextMove == nextMove))
310312 then [StringEntry(("currentBoard_" + gameId), board), StringEntry(("initiator_" + gameId), toString(sender)), StringEntry(("next_player_" + gameId), AI)]
311313 else throw("Strict value is not equal to itself.")
312314 }
313315 }
314316 }
315317 }
316318 }
317319 }
318320 }
319321
320322
321323 @Verifier(tx)
322324 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
323325

github/deemru/w8io/026f985 
41.59 ms