La Drawchain™ régit l'intégralité des tirages effectués sur Pickaw et vous permet de vérifier que tout se déroule normalement. C'est le socle commun où repose toute la structure et la technique des tirages effectués sur Pickaw.
Pour commencer, voici un schéma représentatif de la Drawchain™ pour vous faire une image mentale et mieux comprendre la suite qui sera un peu plus technique.
La Drawchain™ régit l'ensemble des tirages effectués sur Pickaw grâce aux liens entre les seed pools.
À chaque jour correspond une Seed Pool étant à l'origine des seeds générées et utilisées par les tirages faits le jour-même.
Chaque seed est unique et peut être associée à un tirage pour en produire et reproduire le déroulement et l'issue.
Avant de rentrer dans le vif du sujet, voici une liste de définitions techniques pour vous familiariser avec les termes que vous rencontrerez à plusieurs reprises sur cette page :
master_seed
: chaîne unique et aléatoire de 32 caractères en base62
.seed_pool
: liste finie de hash
générés de manière consécutive.hash, global_hash, ending_hash
: chaîne unique et aléatoire de 64 caractères hexadécimaux.seed
: chaîne unique et aléatoire de 16 caractères en base62
.sha256
: fonction de hashage standardisée et très sécurisée.base62
: codage de l'information sous 62 caractères.Il est temps de s'y mettre ! Comme décrit un peu plus haut, la Drawchain™ est un nom donné à la liste regroupant les Seed Pool. Nous allons donc voir maintenant ce qu'elle contient et comment les Seed Pool l'alimentent !
L'origine d'une seed_pool
provient de la master_seed
générée par Random.org à notre demande chaque soir peu de temps avant minuit UTC pour la journée suivante.
seedPool
contient donc la liste de toutes les seeds des tirages définitifs d'une période de 24 heures.Cette master_seed
est alors utilisée afin de générer une liste de hash
suffisamment grande pour pouvoir servir tous les tirages au sort de la durée de vie de la seed_pool
.
Voici les étapes de la génération de la liste de hash
:
master_seed
avec sha256
pour créer le hash
#1hash
#1 (sous forme hexadécimale textuelle) avec sha256
pour créer le hash
#2hash
suffisamment grandeTous les hash
sont donc générés consécutivement et dépendent de la master_seed
.
Le ending_hash
est le dernier hash
généré, il n'est pas utilisé et permet uniquement de s'assurer que la seed_pool
ait un début (master_seed
) et une fin (ending_hash
) dans le but de prouver qu'elle n'a pas été altérée durant sa mise en service.
master_seed
et les hash
qui n'ont pas encore été utilisés sont volontairement non divulgués jusqu'à la mise hors-service de la seed_pool
afin d'éviter toute prédiction de hash
ou de seed
et donc une possible altération de tirage.Une fois que les hash
ont tous été générés, la seed_pool
est enfin prête à être utilisée. La précédente est mise hors-service et la nouvelle prend le relai ; la master_seed
précédente est désormais publique et peut être vérifiée (voir ci-dessous).
Lorsqu'un tirage au sort est demandé sur Pickaw, un hash
est dépilé de la seed_pool
en service et permet de générer une seed
unique qui sera attribuée et utilisée pour le tirage.
hash
sont consommés en partant de la fin de la seed_pool
afin de s'assurer que les suivants ne puissent pas être prédits pour altérer les tirages (pour rappel les hash
n'ayant pas encore été utilisés ne sont pas visibles publiquement).Voici les étapes de génération d'une seed
:
hash
est converti en base 10 puis divisé par la valeur limite d'une seed
(6216) pour ne garder que le reste de la division (cette opération est également appelée modulo)base62
, préfixée par autant de zéros que nécessaires pour produire une chaîne de 16 caractères : on obtient donc la seed
La seed
générée est enregistrée et peut désormais être utilisée pour donner lieu au tirage... et ainsi de suite jusqu'à la mise hors-service de la seed_pool
.
On peut voir sur cette représentation que 4 seed ont été générées (à partir des derniers hash
de la seed_pool
) jusqu'à sa mise hors-service. Les autres hash
sont inutilisés et n'ont pas donné lieu à la création de seed
.
Maintenant que vous savez comment les seed_pool
et seed
sont générées, nous arrivons à la partie intéressante et intéractive : comment nous prouvons que les gagnants proviennent bien des fruits du hasard. Hasard que vous pouvez vérifier par vous-même !
La vérification peut se faire à partir de n'importe quel niveau de la Drawchain™ et de plusieurs manière différentes que nous vous listons ci-dessous.
master_seed
Pour commencer, vous pouvez vérifier que la master_seed
que nous utilisons pour générer les hash
d'une seed_pool
est bien celle issue de Random.org grâce au lien joint à la master_seed
directement depuis la Drawchain™ ou la Seed Pool en question.
seed_pool
dont provient la master_seed
.seed_pool
Également, vous pouvez vérifier à n'importe quel moment que la liste des hash
générés n'a pas été altérée et suit bien la logique décrite plus haut. Afin de vous en assurer, nous avons créé un JSFiddle disponible ci-dessous pour pouvoir reproduire notre génération :
Comment l'utiliser ?
master_seed
(ou un hash
d'une seed_pool
) dans le champ "Start hash"ending_hash
(ou un hash
postérieur) au sein de la même seed_pool
dans le champ "End hash*"seed
Enfin, les positions des personnes tirées au sort sont vérifiables à n'importe quel moment à partir de la seed
dès lors qu'un tirage est terminé. Afin de vous en assurer, nous avons créé un JSFiddle disponible ci-dessous pour pouvoir reproduire la génération des positions :
Comment l'utiliser ?
seed
du tirage dans le champ "Seed of the draw"Voilà, désormais la Drawchain™ et son mécanisme qui ont nécessité plusieurs mois de travail à eux seuls n'ont plus de secrets pour vous ! Nous espérons que ces explications ont été claires et qu'elles ne vous ont pas perdu.