Provably fair Heads Or Tails: the protocol

Let's say you go to an online casino, playing a simple game: a coin toss.

Heads: you lose your bet, tails you double your money.

How can the casino prove to you that the bet is fair ? That is to say, that the casino is not cheating by using a biased coin ?

Here is a simple protocol I devised. The links link to an explanation of how a weakness in the corresponding part of the protocol can be exploited by either Alice or the Casino.

Using this protocol, Alice gets either a fair toss, or a undeniable proof that the casino has been cheating.

This proof can be used to break the casino's reputation, or, if a trusted third party or a smart-contract-able blockchain is used as an escrow, get her money anyway.

In later posts, I'll show how altering any single part of the protocol can give a way for one of either Alice or the Casino to cheat, proving that every part of the protocol is necessary.

Proving that following the protocol is sufficient to prevent cheating is another whole can or worms.

Also, I have yet to check the prior art on this, and it is very plausible that I have reinvented the wheel.

1. Changelog

<2025-01-15 Wed> Changed the multiplication of \(s_A \cdot s_C\) to xor: \(s_A \oplus s_C\) and linked to an explanation as to why <2024-12-26 Thu> Initial version