@monad
The frontend uses Privy for creating player wallets, which avoids repeated popup confirmation for each move.
We update the interface instantly after a move, sending transactions in the background. If a transaction fails, we revert to the last valid board.