tx · HHgEVQrsraSPiBLCNjxUAHi7BjDFj6PN4qxz4bSx3nN9

3Mr1J95HgTFuj93Uh61WS1PBrxc5hSx5uE5:  -0.05000000 Waves

2024.07.27 12:14 [3212281] smart account 3Mr1J95HgTFuj93Uh61WS1PBrxc5hSx5uE5 > SELF 0.00000000 Waves

{ "type": 13, "id": "HHgEVQrsraSPiBLCNjxUAHi7BjDFj6PN4qxz4bSx3nN9", "fee": 5000000, "feeAssetId": null, "timestamp": 1722071746132, "version": 2, "chainId": 84, "sender": "3Mr1J95HgTFuj93Uh61WS1PBrxc5hSx5uE5", "senderPublicKey": "DhKSnv34wE65np8uDd8E6ygEbNsn6fHx9p7q4hJTcgRw", "proofs": [ "5Ak2qyXGz9bVxWsCrVVzXPnj8StKWazRQSS514D5bnDPhjfAfjdt32GZRYSwskvyNF4cHX3WenKWAoAU3iXEeDQ7" ], "script": "base64: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AAAAAgUAAAAMY3VycmVudEJvYXJkAAAAAAAAAAAGBgkAAAAAAAACCQEAAAAGY2hhckF0AAAAAgUAAAAMY3VycmVudEJvYXJkAAAAAAAAAAAGAgAAAAEwBgcEAAAAFWVpZ2h0aFBvc2l0aW9uQ29ycmVjdAMDCQAAAAAAAAIJAQAAAAZjaGFyQXQAAAACBQAAAAVib2FyZAAAAAAAAAAABwkBAAAABmNoYXJBdAAAAAIFAAAADGN1cnJlbnRCb2FyZAAAAAAAAAAABwYJAAAAAAAAAgkBAAAABmNoYXJBdAAAAAIFAAAADGN1cnJlbnRCb2FyZAAAAAAAAAAABwIAAAABMAYHBAAAABRuaW50aFBvc2l0aW9uQ29ycmVjdAMDCQAAAAAAAAIJAQAAAAZjaGFyQXQAAAACBQAAAAVib2FyZAAAAAAAAAAACAkBAAAABmNoYXJBdAAAAAIFAAAADGN1cnJlbnRCb2FyZAAAAAAAAAAACAYJAAAAAAAAAgkBAAAABmNoYXJBdAAAAAIFAAAADGN1cnJlbnRCb2FyZAAAAAAAAAAACAIAAAABMAYHBAAAABhub09sZFBvc2l0aW9uT3ZlcndyaXR0ZW4DAwMDAwMDAwUAAAAUZmlyc3RQb3NpdGlvbkNvcnJlY3QFAAAAFXNlY29uZFBvc2l0aW9uQ29ycmVjdAcFAAAAFHRoaXJkUG9zaXRpb25Db3JyZWN0BwUAAAAVZm91cnRoUG9zaXRpb25Db3JyZWN0BwUAAAAUZmlmdGhQb3NpdGlvbkNvcnJlY3QHBQAAABRzaXh0aFBvc2l0aW9uQ29ycmVjdAcFAAAAFnNldmVudGhQb3NpdGlvbkNvcnJlY3QHBQAAABVlaWdodGhQb3NpdGlvbkNvcnJlY3QHBQAAABRuaW50aFBvc2l0aW9uQ29ycmVjdAcEAAAACmNvdW50TW92ZXMJAABkAAAAAgkAAGQAAAACCQAAZAAAAAIJAABkAAAAAgkAAGQAAAACCQAAZAAAAAIJAABkAAAAAgkAAGQAAAACBQAAAA1maXJzdFNlbGVjdGVkBQAAAA5zZWNvbmRTZWxlY3RlZAUAAAANdGhpcmRTZWxlY3RlZAUAAAAOZm91cnRoU2VsZWN0ZWQFAAAADWZpZnRoU2VsZWN0ZWQFAAAADXNpeHRoU2VsZWN0ZWQFAAAA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", "height": 3212281, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: RTZ28Qex1k28Y6UuWwyPaYsGYd4WtUjnRZeBJb2DWDz Next: G73dLikoj2BYDtQwFh7jzrweA4GaPaGRL2cbYg82fasS Diff:
OldNewDifferences
254254 then [StringEntry(("currentBoard_" + gameId), board), StringEntry(("winner_" + gameId), "player"), ScriptTransfer(sender, WINNING_AMOUNT, BAI_ASSET_ID)]
255255 else {
256256 let nextMove = invoke(Address(fromBase58String(BAI_CONTRACT)), "registerTaskCallback", [((gameId + "_") + board), "tictactoe", "callback"], [AttachedPayment(BAI_ASSET_ID, 10000000)])
257-[StringEntry(("currentBoard_" + gameId), board), StringEntry(("initiator_" + gameId), toString(sender))]
257+ if ((nextMove == nextMove))
258+ then [StringEntry(("currentBoard_" + gameId), board), StringEntry(("initiator_" + gameId), toString(sender))]
259+ else throw("Strict value is not equal to itself.")
258260 }
259261 }
260262 }
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) = {
126126 let currentBoard = match getString(("currentBoard_" + gameId)) {
127127 case s: String =>
128128 s
129129 case _ =>
130130 "000000000"
131131 }
132132 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]]
133133 let topRow = if (if ((charAt(currentBoard, winningCombinations[0][0]) == player))
134134 then (charAt(currentBoard, winningCombinations[0][1]) == player)
135135 else false)
136136 then (charAt(currentBoard, winningCombinations[0][2]) == player)
137137 else false
138138 let middleRow = if (if ((charAt(currentBoard, winningCombinations[1][0]) == player))
139139 then (charAt(currentBoard, winningCombinations[1][1]) == player)
140140 else false)
141141 then (charAt(currentBoard, winningCombinations[1][2]) == player)
142142 else false
143143 let bottomRow = if (if ((charAt(currentBoard, winningCombinations[2][0]) == player))
144144 then (charAt(currentBoard, winningCombinations[2][1]) == player)
145145 else false)
146146 then (charAt(currentBoard, winningCombinations[2][2]) == player)
147147 else false
148148 let leftColumn = if (if ((charAt(currentBoard, winningCombinations[3][0]) == player))
149149 then (charAt(currentBoard, winningCombinations[3][1]) == player)
150150 else false)
151151 then (charAt(currentBoard, winningCombinations[3][2]) == player)
152152 else false
153153 let middleColumn = if (if ((charAt(currentBoard, winningCombinations[4][0]) == player))
154154 then (charAt(currentBoard, winningCombinations[4][1]) == player)
155155 else false)
156156 then (charAt(currentBoard, winningCombinations[4][2]) == player)
157157 else false
158158 let rightColumn = if (if ((charAt(currentBoard, winningCombinations[5][0]) == player))
159159 then (charAt(currentBoard, winningCombinations[5][1]) == player)
160160 else false)
161161 then (charAt(currentBoard, winningCombinations[5][2]) == player)
162162 else false
163163 let diagonalOne = if (if ((charAt(currentBoard, winningCombinations[6][0]) == player))
164164 then (charAt(currentBoard, winningCombinations[6][1]) == player)
165165 else false)
166166 then (charAt(currentBoard, winningCombinations[6][2]) == player)
167167 else false
168168 let diagonalTwo = if (if ((charAt(currentBoard, winningCombinations[7][0]) == player))
169169 then (charAt(currentBoard, winningCombinations[7][1]) == player)
170170 else false)
171171 then (charAt(currentBoard, winningCombinations[7][2]) == player)
172172 else false
173173 if (if (if (if (if (if (if (topRow)
174174 then true
175175 else middleRow)
176176 then true
177177 else bottomRow)
178178 then true
179179 else leftColumn)
180180 then true
181181 else middleRow)
182182 then true
183183 else rightColumn)
184184 then true
185185 else diagonalOne)
186186 then true
187187 else diagonalTwo
188188 }
189189
190190
191191 @Callable(i)
192192 func callback (gameIdAndBoard) = {
193193 let parts = split(gameIdAndBoard, "_")
194194 let gameId = parts[0]
195195 let board = parts[1]
196196 let moveOfAIIsValid = checkIfMoveIsValid(gameId, board)
197197 if (!(moveOfAIIsValid))
198198 then throw("Illegal move!")
199199 else {
200200 let aiHasWon = checkIfPlayerHasWon(gameId, board, AI)
201201 if (aiHasWon)
202202 then [StringEntry(("currentBoard_" + gameId), board), StringEntry(("winner_" + gameId), "ai")]
203203 else [StringEntry(("currentBoard_" + gameId), board)]
204204 }
205205 }
206206
207207
208208
209209 @Callable(i)
210210 func playTTT (game,board) = {
211211 let numberOfPayments = size(i.payments)
212212 if ((numberOfPayments != 1))
213213 then throw("Payment necessary!")
214214 else {
215215 let payment = i.payments[0]
216216 let fee = payment.amount
217217 let feeAssetId = payment.assetId
218218 let minFee = match getInteger(Address(fromBase58String(BAI_CONTRACT)), "price_tictactoe") {
219219 case n: Int =>
220220 n
221221 case _ =>
222222 0
223223 }
224224 if (if ((feeAssetId != BAI_ASSET_ID))
225225 then true
226226 else (minFee > fee))
227227 then throw("Payment of the minimal BAI amount necessary!")
228228 else {
229229 let sender = i.caller
230230 let gameId = if ((size(game) == 0))
231231 then toBase58String(i.transactionId)
232232 else game
233233 let currentBoard = match getString(("currentBoard_" + gameId)) {
234234 case s: String =>
235235 s
236236 case _ =>
237237 board
238238 }
239239 let initiator = match getString(("initiator_" + gameId)) {
240240 case s: String =>
241241 s
242242 case _ =>
243243 sender
244244 }
245245 if ((sender != initiator))
246246 then throw("Only initiator is allowed to make moves!")
247247 else {
248248 let moveOfPlayerIsValid = checkIfMoveIsValid(gameId, board)
249249 if (!(moveOfPlayerIsValid))
250250 then throw("Illegal move!")
251251 else {
252252 let playerHasWon = checkIfPlayerHasWon(gameId, board, PLAYER)
253253 if (playerHasWon)
254254 then [StringEntry(("currentBoard_" + gameId), board), StringEntry(("winner_" + gameId), "player"), ScriptTransfer(sender, WINNING_AMOUNT, BAI_ASSET_ID)]
255255 else {
256256 let nextMove = invoke(Address(fromBase58String(BAI_CONTRACT)), "registerTaskCallback", [((gameId + "_") + board), "tictactoe", "callback"], [AttachedPayment(BAI_ASSET_ID, 10000000)])
257-[StringEntry(("currentBoard_" + gameId), board), StringEntry(("initiator_" + gameId), toString(sender))]
257+ if ((nextMove == nextMove))
258+ then [StringEntry(("currentBoard_" + gameId), board), StringEntry(("initiator_" + gameId), toString(sender))]
259+ else throw("Strict value is not equal to itself.")
258260 }
259261 }
260262 }
261263 }
262264 }
263265 }
264266
265267
266268 @Verifier(tx)
267269 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
268270

github/deemru/w8io/026f985 
37.95 ms