My guess is that you shouldnt have to do much. Both players are going to have to run the game at the same time (please don’t try to run just one copy and then send all the data over, that is just going to be to much data imo).
First and foremost the data you should be sending over the network is what buttons/direction was pressed during that time. If one player decided to mod his game so he is doing unfair stuff, it just won’t show up on the other guy’s screen.
Then you can add some data such as current life (maybe a bad idea much, some games like to use numbers around 1000 compared to 100), rounds won for both sides, timer (sounds stupid, but if a person won a round earlier and then another person won a round himself, then the timer should be off), and current meter, and those will act like checks for desyncs.
Could someone theoretically make a tool that will call out desyncs and possibly void the game when they’re about to lose? yeah sure, but that’s the same issue with people who plug-pull in current games. Here you need to decide if a win should be awarded at all, should a loss be given, or should nothing happen stats wise. If you’re saving stats, that should probably be stored in a server. It will also need code for deciding which matches are legitimate (or at least seemingly) to decide if whatever clients send them is acceptable.