To begin with, here is a representative diagram of the Drawchain™ to give you a mental picture and better understand the rest, which will be a little more technical.
The Drawchain™ governs all draws on Pickaw through links between seed pools.
Each day corresponds to a Seed Pool being at the origin of the seeds generated and used by the draws made the same day.
Each seed is unique and can be associated with a draw to produce and reproduce the process and outcome.
Before getting to the heart of the matter, here is a list of technical definitions to familiarize yourself with the terms you will encounter several times on this page:
master_seed
: a unique and random string of 32 characters in base62
.seed_pool
: finite list of hash
generated consecutively.hash, global_hash, ending_hash
: unique and random string of 64 hexadecimal characters.seed
: unique and random string of 16 characters in base62
.sha256
: standardized and highly secure hash function.base62
: coding the information in 62 characters.It's time to get started! As described above, the Drawchain™ is a name given to the list of Seed Pools. So we'll see now what it contains and how the Seed Pools feed it!
The origin of a seed_pool
comes from the master_seed
generated by Random.org at our request each evening shortly before midnight UTC for the following day.
seed_pool
therefore contains a list of all draws for a 24-hour period.This master_seed
is then used to generate a list of hash
large enough to serve all draws over the lifetime of the seed_pool
.
Here are the steps for generating the list of hash
:
master_seed
with sha256
to create the hash
#1hash
#1 with sha256
to create the hash
#2hash
large enoughAll hash
are therefore generated consecutively and depend on the master_seed
.
The ending_hash
is the last hash
generated, it is not used and only ensures that the seed_pool
has a beginning (master_seed
) and an end (ending_hash
) in order to prove that it has not been altered during its lifetime.
master_seed
and the hash
that have not yet been used are voluntarily withheld until the seed_pool
is taken out of service in order to avoid any prediction of hash
or seed
and therefore a possible draw alteration..Once all hash
have been generated, the seed_pool
is finally ready to be used. The previous one is disabled and the new one takes over; the previous master_seed
is now public and can be checked (see below).
When a draw is requested on Pickaw, a hash
is removed from the top of the existing seed_pool
and generates a unique seed
that will be assigned and used for the draw.
hash
are consumed from the end of the seed_pool
to ensure that the next ones cannot be predicted to alter the prints (as a reminder, the hash
that have not yet been used are not publicly visible).Here are the steps for generating a seed
:
hash
is converted to base 10 and then divided by the limit value of a seed
(6216) to keep only the rest of the division (this operation is also called modulo)base62
, prefixed by as many zeros as necessary to produce a string of 16 characters: we therefore obtain the seed
base62
. Which means it can be converted into a large number, and vice versa. Its decimal value (base 10) can therefore be between 0 (included) and 6216 (excluded), i.e. 4767240170682823533450263330816.The generated seed
is saved and can now be used to give rise to the draw... and so on until the seed_pool
is taken out of service.
We can see on this representation that 4 seeds were generated (from the last hash
of the seed_pool
) until it was taken out of service. The other hash
are unused and have not resulted in the creation of seed
.
Now that you know how seed_pool
and seed
are generated, we come to the interesting and interactive part: how we prove that the winners come from the fruits of chance. A coincidence that you can check for yourself!
The verification can be done from any level of the Drawchain™ and in several different ways that we list below.
master_seed
To begin with, you can check that the master_seed
we use to generate the hash
of a seed_pool
is the one from Random.org using the link attached to the master_seed
directly from Drawchain™ or the Seed Pool in question.
seed_pool
from which the master_seed
belongs.seed_pool
Also, you can check at any time that the list of hash
generated has not been altered and follows the logic described above. To ensure this, we have created a JSFiddle available below to be able to reproduce our generation:
How to use it?
master_seed
(or a hash
of a seed_pool
) in the "Start hash" fieldending_hash
(or a subsequent hash
) within the same seed_pool
in the "End hash*" fieldseed
Finally, the positions of the persons drawn can be checked at any time from the seed
as soon as a draw is completed. To ensure this, we have created a JSFiddle available below to be able to reproduce the generation of positions:
How to use it?
seed
of the draw in the "Seed of the draw" fieldThere you go, now the Drawchain™ and its mechanism, which alone took several months of work, have no more secrets for you! We hope these explanations have been clear and have not lost you.