Ecco un esempio di gioco di un gioco: al giocatore vengono presentate N slot machine. Possono fare clic su ogni slot machine una volta e, quando lo fanno, la slot machine ottiene un risultato casuale (basato su un insieme predeterminato di risultati e probabilità).
Se i risultati delle slot machine vengono lanciati sul server, non c'è ovviamente nessuna possibilità per il cliente di imbrogliare: il server ha informazioni complete per arbitrare quali slot machine sono già state lanciate e quali sono i loro risultati.
Supponi che il client e il server comunichino solo due volte: una volta prima che inizi il gioco e una volta terminata la partita. Esiste un tipo di protocollo che possa garantire che il cliente non possa imbrogliare?
Ovviamente, il cliente non può semplicemente segnalare al server ciò che ottiene il giocatore su tutte le macchine; il client riporta semplicemente N jackpots.
Sarebbe meglio che il client e il server concordassero su un metodo per determinare l'esito dello slot machine, in base all'immagine di una funzione unidirezionale del timestamp quando il cliente fa clic sulla slot machine. Il client segnala al server le coppie (time stamp, outcome) per ogni slot machine e il server può verificare che i risultati siano corretti, data la data e l'ora.
Ma questo protocollo non è ancora sicuro; potrebbe non essere rintracciabile per il cliente di invertire la mappatura dal timestamp al jackpot, ma può provare molti possibili timestamp e riportare al server i risultati N più favorevoli.
Esiste un protocollo che possa garantire (forse dati ulteriori presupposti circa la potenza di calcolo disponibile per il cliente) che un cliente non fidato non può imbrogliare in questo gioco? In caso contrario, c'è un argomento che dimostra l'impossibilità?