But do you really need to store all of the board states and not just the moves/actions themselves?
Like if you want to replay a game or jump to move 50, just have the client skip ahead just using the moves that are played to recreate the board state?