Feuille-Caillou-Ciseaux, basique

La logique qui régit l'acceptation ou non des nouveaux blocks proposés peut être vue comme un programme tournant en parallèle sur chaque ordinateur des participants au réseau, vérifiant régulièrement ses résultats locaux avec ceux des autres. Pour s'assurer que le résultat n'a pas été changé par un attaquant, tout les membres envoient le leur et s'accordent sur le plus présent. Par exemple, dans Bitcoin, le programme validant s'assure que chacun ne dépense plus qu'il n'a, et envoie le nouvel état quand celui-ci est valide. Cette séparation entre la logique de validation et le reste du programme à permit l'émergence d'une nouvelle appellation: "smart contract".

Ici, vous pouvez vous amusez à feuille-caillou-ciseaux, qui est justement implémenté avec l'aide d'un smart contract. Grâce à lui, vous avez l'assurance que personne ne connaît le résultat avant que les deux aient joué. Trivialement, la blockchain étant publique, ne devrions nous pas retrouver le coup joué par l'autre avant de jouer le sien? Effectivement, si nous avions pensé ce programme comme tournant sur un seul ordinateur, c'est possible à faire de façon sécurisée; mais ici, c'est un programme distribué entre plusieurs machines dont certaines sont prête à tout pour connaître qui a joué quoi, comment faire? La solution se présente mieux par l'exemple: deux personnes veulent jouer, Alice et Betty; les deux choisissent un coup et un mot de passe de son côté, puis chacune envoie sur le réseau son coup protégé par son mot de passe; quand les deux ont chacune reçu le coup de l'autre, elles envoient leur mot de passe temporaire pour que tout le monde puisse décrypter les deux coups.