L’agrandissement perpétuel de la Blockchain se fait en deux étapes qui se suivent et se répètent à l’infini. La première étape consiste à construire un nouveau bloc tandis que la seconde étape revient à l’accrocher au reste de la chaîne. Bien que simples, ces deux étapes essentielles impliquent des processus rigoureux et complexes qui doivent être effectués par plusieurs ordinateurs, distribués à travers le monde.
Entrons plus en détail dans le fonctionnement de ces deux étapes.
La construction d’un nouveau bloc
Lorsqu’un utilisateur du réseau Bitcoins souhaite envoyer de la crypto-monnaie à un autre, celui-ci initie l’écriture d’une transaction. Chaque nouvelle transaction créée entre dans le bloc par un nœud simple appartenant au réseau Bitcoin. Ce nœud vérifiera sa structure interne et sa compatibilité par rapport aux autres blocs. En outre, cette vérification consiste à s’assurer que le compte qui envoie les Bitcoins a été alimenté auparavant par le nombre de Bitcoins envoyés.
Les transactions antérieures seront donc analysées afin de valider la légitimité de la nouvelle transaction. Lorsque la transaction a été approuvée, son écriture est mise en attente et partagée en P2P à tout le réseau Bitcoin. Chaque nœud qui reçoit la diffusion vérifie la validité des informations qui lui ont été envoyées. En effet, la validation d’une transaction et son ajout dans un bloc doit être validée par chaque nœud du réseau. Les fraudeurs, même les plus compétents peuvent ainsi difficilement tromper l’ensemble du réseau.
Cette première étape aboutit donc à l’élimination de toutes les transactions invalides et à la validation et la diffusion de toutes celles qui sont correctes. Les transactions valides sont à présent dans des listes d’attente locales, attendant qu’un mineur les inclut dans un bloc. Lorsqu’un mineur entreprend la construction d’un bloc, il organise les écritures valides dans les listes d’attente locales en arborescences afin de former un bloc. Une fois que toutes les transactions valides ont été reliées entre elles, un en-tête est ajouté à celles-ci pour finaliser la construction du bloc. Cet en-tête est constitué de la somme de contrôle du bloc (hash) et de celle du bloc précédent dans la chaîne. C’est cette opération de constitution du hash, propre à chaque bloc, qui sera la « proof-of-work », ou preuve de travail, utile aux mineurs.
Ainsi, une puissance de calcul très élevée sera requise par ceux-ci pour que le bloc de transaction constitué puisse passer l’étape suivante. Seuls les mineurs qui réussissent à inclure leur bloc à la chaîne sont rémunérés.
L’ajout du bloc à la chaîne
Lorsqu’un mineur a réussi à constituer un bloc valide et à le finaliser, il peut le diffuser à tous les autres opérateurs du réseau, de proche en proche, jusqu’à ce que tous les nœuds reçoivent ce nouveau bloc. Si le bloc est recevable et qu’il n’a pas encore été validé, alors le mineur est récompensé et son bloc pourra être ajouté à la chaîne de bloc. Cette opération est effectuée par les nœuds complets. Ce sont eux qui décident d’ajouter un bloc à la chaîne ou de le rejeter, s’il est identique à un bloc déjà présent.
Dans tous les cas, le bloc est vérifié une nouvelle fois ainsi que toutes les écritures qui le composent. Une fois vérifié, le bloc pourra être ajouté à la chaîne. Il deviendra le bloc d’extrémité de cette chaîne. La vérification effectuée dotera également l’en-tête du bloc d’une mesure de travail, une valeur qui permet d’évaluer la quantité de travail nécessaire à la construction de la chaîne qui a aboutit à ce bloc. Certains blocs peuvent parfois commencer une branche secondaire de la chaîne de bloc.
Ce sont souvent des blocs qui ont une mesure de travail très faible ou des blocs qui ont été laissés en attente de validation. La chaîne principale de la Blockchain est toujours celle qui a demandé le plus de travail. Ainsi, si une chaîne secondaire s’avère posséder une mesure de travail supérieure à celle de la branche principale, c’est elle qui deviendra la nouvelle branche principale. Pour ce faire, le programme repère la séparation entre la branche principale et la branche secondaire, revalide au passage tous les blocs et les transactions contenus dans ce morceau de chaîne et ajoute le bloc secondaire à l’extrémité de la chaîne principale. Ce processus complexe est vital pour assurer l’intégrité de la chaîne.
À la fin de cette deuxième étape, les milliers d’exemplaires existants sur chacun des nœuds complets du réseau de la chaîne de blocs se sont vus rallongés d’un bloc. Comme tous les nœuds valident les écritures et les blocs de la même façon, chaque version de la Blockchain est, en théorie, identique.
Les différents opérateurs de la Blockchain
Pour garantir le bon fonctionnement et la sécurité de la Blockchain, différents opérateurs doivent y travailler en coopération. On distingue donc différents rôles que chacun des utilisateurs du réseau Bitcoin peut choisir d’endosser ou non. La plupart des utilisateurs du système sont des nœuds simples. Ce sont eux qui vérifient et transmettent les écritures des transactions à travers tout le réseau P2P. Les nœuds simples ne possèdent pas leur propre exemplaire de la Blockchain. Les mineurs sont les utilisateurs qui vérifient les blocs et les construisent, à partir des transactions et des écritures vérifiées et validées par les nœuds simples. Les mineurs sont aussi chargés de construire des blocs viables, de les doter d’un en-tête et de les faire valider pour qu’ils soient inclus dans la chaîne de blocs. L’ajout des blocs valides à la chaîne de blocs est le rôle des nœuds complets. Ceux-ci ajoutent le dernier bloc validé à l’extrémité de la chaîne pour construire leur propre exemplaire de celle-ci. Enfin, tous les utilisateurs peuvent aussi agir en qualité de simples observateurs. Ils peuvent, à ce titre, accéder à chacune des transactions contenues dans chacun des blocs de la chaîne et en vérifier le contenu. Ils n’ont aucun pouvoir de modification, mais peuvent vérifier le résultat de chacune des transactions de la chaîne. Chacun des rôles nécessite l’emploi d’un logiciel spécifique, gratuit et open source.