TrueFlip est une lotterie bitcoin relativement récente qui réalise chaque jour un tirage de 5 numéros + 1 numéro complémentaire. L'avantage principal mis en avant par les organisateurs est que cette lotterie ne peut faire l'objet d'aucun trucage.
Les numéros gagnants sont générés de façon totalement transparente et déterminée chaque jour à partir de 20h UTC (soit 22h en France, ou bien 21h pendant l'hiver). “transparente” et “déterminée”, cela signifie que :
- ce n'est pas quelqu'un seul dans son coin qui réalise le tirage au sort des numéros gagnants
- vous pouvez vous aussi refaire le calcul des numéros gagnants sans même vous connecter au site des organisateurs
Voyons comment cela fonctionne...
Le calcul complet à la main sur un exemple
Les numéros gagnants sont générés par un calcul qui prend comme unique paramètre : le hash du block de blockchain bitcoin généré immédiatement après l'heure du tirage de 20h UTC.
Le détail du calcul qui va être effectué sur ce hash est expliqué ici : https://trueflip.io/check-honesty
Comme un bon exemple vaut mieux qu'un long discours, prenons la journée du 5 juillet 2017 et essayons de recalculer par nous-même le résultat du tirage. Donc on commence par aller sur blockchain.info pour rechercher quel est le bloc bitcoin qui a été généré immédiatement après 20h UTC.
On trouve que c'est le bloc numéro 474387 avec le hash suivant :
0000000000000000003fa70698b550fce46f699763ea54cf61fb8bbeabd73177
A partir de ce hash, on détermine les numéros gagnants :
0000000000000000003fa70698b550fce46f6997 63ea 54cf 61fb 8bbe abd7 3177
- (3177)16 -> (12663)10 -> 253 x 50 + 13 => 13
- (abd7)16 -> (43991)10 ->879 x 50 + 41 => 41
- (8bbe)16 -> (35774)10 -> 715 x 50 + 24 => 24
- (61fb)16 -> (25083)10 -> 501 x 50 + 33 => 33
- (54cf)16 -> (21711)10 -> 434 x 50 + 11 => 11
- (63ea)16 -> (25578)10 -> 947 x 27 + 9 => 9
Je trouve donc que le résultat du tirage au sort du 5 juillet 2017 est :
13 - 41 - 24 - 33 - 11 + le numéro complémentaire 9
Le script pour effectuer le calcul automatiquement
Comme c'est un peu fastidieux de faire ce calcul à la main à chaque fois, trueflip a publié sur github l'algorithme python nous permettant de parvenir au même résultat automatiquement :
https://github.com/TrueFlip/prizecounter/blob/master/algorithm.py
J'ai testé ce script sur mon ordinateur avec l'exemple précédent et je retrouve bien le même résultat :
Le résultat du tirage affiché sur le site de Trueflip
En allant sur la page des résultats de TrueFlip on retrouve aussi le même résultat du tirage pour la journée du 5 juillet 2017 (il s'agit du tirage numéro 96), à savoir 13 - 41 - 24 - 33 - 11 et 9.
Conclusion
Voilà j'espère que vous avez bien compris tout l'intérêt de cette technologie simple mais il y a quand même un concept révolutionnaire qui mérite d'être souligné : le résultat du tirage ne peut techniquement pas être falsifié par ses organisateurs*
Cela fait longtemps que je ne regarde plus le tirage télévision du loto national de la Française des Jeux, mais je me souviens qu'à l'époque ils écrivaient toujours en petit la phrase “tirage réalisé sous contrôle d'un huissier de justice”. Un article des Echos précise ici le rôle de l'huissier de justice (que je résume grossièrement à aller chercher les boules dans un coffre dont lui seul détient la clé, pour s'assurer qu'elles ne sont pas truquées).
On dit souvent que la technologie blockchain est révolutionnaire car elle permet de se passer des tiers de confiance. Dans le cas présent, avec ce nouveau genre de lotterie, c'est l'huissier de justice qui est le tiers de confiance dont on n'a plus besoin.
*Attention je parle ici uniquement de l'aspect “tirage des numéros gagnants” : cela ne garantit pas que d'autres fraudes ne peuvent pas être commises par les organisateurs, comme on pourra le voir dans un prochain article.