La « blockchain » pour les nuls

Publié Par Gerard Drean, le dans Technologies

Par Gérard Dréan.

Blockchain pour les nuls

Blockchain By: BTC KeychainCC BY 2.0

« La blockchain », comment ça marche ?

On parle beaucoup de «la blockchain » et de ses nombreuses applications, qui promettent (ou menacent, suivant les opinions) de révolutionner la société au moins aussi profondément qu’Internet lui-même. En même temps, ce concept est présenté de façon très vague. Même si on la dit « distribuée », ce qui est d’ailleurs impropre comme nous le verrons, il manque le plus souvent une expression claire des implications de son implantation sur un réseau pair à pair ouvert. De ce fait, parler de « la blockchain » est trompeur et passe largement à côté de l’essentiel.

L’idée est née en 2008 avec Bitcoin, qui en est à ce jour la réalisation emblématique, mais aussi la base de nombreuses variantes et extensions. Nous utiliserons donc cet exemple pour en analyser les composantes et les implications, tout en nous efforçant d’en tirer des enseignements valables pour d’autres systèmes où le principe de la chaîne de blocs est utilisé pour des écritures autres que des transactions monétaires.

Conformément à l’usage, j’utilise le terme « Bitcoin » avec majuscule et sans article pour désigner le système de paiement, et « le bitcoin » pour l’unité de compte utilisée par ce système.

Qu’est-ce qu’une « blockchain » ?

Partons des définitions de Wikipedia, qui dans ce domaine est plus à jour que les autres dictionnaires généralistes, surtout dans sa version anglaise : « A blockchain is a distributed database that maintains a continuously-growing list of data records hardened against tampering and revision », et plus loin : « The blockchain consists of blocks that hold timestamped batches of valid transactions. Each block includes the hash of the prior block, linking the blocks together. The linked blocks form a chain, with each additional block reinforcing those before it ».

Rappelons qu’une somme de contrôle (hash ou empreinte) est un nombre, calculé à partir du contenu du bloc, tel qu’il est impossible de reconstituer le bloc à partir de sa somme de contrôle (fonction « à sens unique ») et que la moindre modification du bloc modifie la somme de contrôle de façon totalement imprévisible. Dans le cas de Bitcoin, c’est un nombre de 256 bits, dont le nombre de valeurs distinctes s’exprime par un nombre de 78 chiffres. Deux blocs dont les contenus sont différents ont toujours des sommes de contrôle différentes. La somme de contrôle d’un bloc peut donc lui servir d’identifiant unique.

Un bloc est le regroupement d’un certain nombre d’écritures élémentaires (data records), dont la forme et la signification dépendent de l’application. Dans le cas de Bitcoin et des autres systèmes de paiement, ces écritures sont des transactions monétaires, et chaque bloc en contient typiquement entre 1000 et 3000. Le bloc est complété par un en-tête qui, en plus de sa somme de contrôle, contient entre autres choses l’identifiant du bloc précédent, donc sa propre somme de contrôle. À partir d’un bloc quelconque, on peut ainsi remonter jusqu’au bloc initial de la chaîne en vérifiant à chaque pas sa validité.

La somme de contrôle d’un bloc est systématiquement vérifiée à chaque accès, afin de déceler toute modification apportée à son contenu postérieurement à sa construction. Si l’auteur de la modification a aussi modifié l’en-tête du bloc en y incluant sa nouvelle somme de contrôle, il a modifié en même temps son identifiant. Les blocs qui lui faisaient référence n’ont donc plus de prédécesseur et la blockchain est rompue. Introduire dans la chaîne un bloc modifié forcerait donc à modifier les en-têtes de tous les blocs suivants, une opération d’autant plus coûteuse que le bloc est plus ancien, et que le calcul des sommes de contrôle est lui-même rendu plus consommateur de ressources par l’imposition de contraintes très sévères.

Cette structure de fichier est bien adaptée à l’enregistrement sécurisé d’écritures critiques produites en continu et ayant valeur juridique, comme les transactions de paiement, mais également de nombreux autres types d’écritures comme des titres de propriété, des brevets, des diplômes, etc…

La construction d’une blockchain

La construction d’une blockchain se fait en un cycle de deux étapes répétées indéfiniment. La première, la construction d’un bloc, équivaut à reporter sur une page les nouvelles écritures qui arrivent, puis à sceller définitivement cette page en construisant son en-tête. La deuxième consiste à ajouter cette nouvelle page au registre de façon irréversible.

Ces opérations peuvent très bien être réalisées par un seul et même ordinateur. La véritable originalité de Bitcoin et des systèmes qui en dérivent, qui leur donnent leurs qualités uniques mais aussi leur complexité, est d’être implantés sur un réseau « pair à pair » ouvert. Ouvert parce que tout possesseur d’un ordinateur peut à tout moment se joindre au réseau sans avoir à demander d’autorisation à quiconque. Pair à pair parce que chacun peut choisir librement la ou les fonctions qu’il veut y assumer, y compris les plus centrales. Dans un tel réseau, il n’existe pas de point de contrôle central ni même de nœuds privilégiés.

Cette architecture repose sur des protocoles de communication qui permettent aux machines situées aux nœuds du réseau d’échanger des informations, notamment de se communiquer des écritures et des blocs. Elle s’accompagne d’une séparation des rôles que chaque utilisateur peut choisir d’exercer ou non : – créer de nouvelles transactions, au moyen de « wallets » (porte-monnaie ou mieux porte-clés puisqu’ils ne contiennent pas les bitcoins, mais seulement les clés informatiques qui donnent accès aux transactions enregistrées dans la chaîne de blocs), – vérifier et relayer les transactions à travers le réseau, mais sans tenir un exemplaire local de la chaîne de blocs (les « nœuds simples »), – construire les blocs (les « mineurs »), – tenir à jour un exemplaire local de la chaîne de blocs (les « noeuds complets »), – accéder aux transactions, sans pouvoir les modifier (les observateurs)

Tous les logiciels utilisés dans le système sont disponibles librement, et chaque utilisateur peut télécharger, installer et faire tourner sur son ordinateur les logiciels de son choix, sans avoir à solliciter d’autorisation. Il existe une plate-forme de distribution privilégiée (Github) et des logiciels recommandés par différentes instances, mais rien n’interdit à quiconque de proposer un nouveau logiciel ou d’utiliser une plate-forme différente.

Ces principes d’ouverture et de décentralisation rendent impossible de connaître le nombre d’acteurs dans chaque rôle. On estime couramment le nombre de détenteurs de bitcoins, donc de porte-clés, à plusieurs millions dont quelques centaines de milliers réellement actifs. Les nœuds du réseau se comptent en dizaines de milliers, le seul nombre mesuré en continu par des sites spécialisés étant celui des nœuds « à l’écoute » (listening nodes), c’est-à-dire qui sont actuellement en état de recevoir et de retransmettre de nouvelles transactions ; ce nombre oscille entre 5000 et 7000.

Les mineurs peuvent se regrouper en coopératives (pools) afin de mutualiser les ressources de calcul et les gains tout en partageant un seul nœud complet, ce qui fait apparaître le pool comme un seul mineur. Une dizaine de ces coopératives, regroupant un nombre indéterminé de mineurs, fournit 95 % des blocs admis dans la chaîne. Pour les nœuds complets et donc le nombre d’exemplaires de la chaîne de blocs, qui peuvent ne pas être tous identiques comme nous le verrons, les estimations vont de 5000 à 30000, localisés dans 85 pays sur tous les continents.

Une blockchain en fonctionnement : la diffusion des écritures

Chaque écriture nouvellement créée entre dans le système par un nœud du réseau, qui vérifie que sa structure est correcte et qu’elle est légitime au regard des écritures déjà enregistrées. Par exemple, dans le cas d’un système de paiement comme Bitcoin, on vérifiera notamment qu’il existe des transactions antérieures qui alimentent le compte d’une somme au moins égale à la somme à régler, et que l’auteur de la transaction est bien autorisé à les utiliser. Si ces tests sont satisfaits, l’écriture est mise en attente dans une liste locale et diffusée de proche en proche à tout le réseau. Sinon, elle est rejetée.

À chaque type d’écriture correspond un protocole de validation, qui définit de façon opérationnelle quelles écritures sont valides dans le système. Ce protocole est ré-exécuté à de nombreuses reprises lors des étapes suivantes de construction et de validation des blocs. Un même système peut contenir un répertoire de protocoles de validation, chacun étant associé à un code en tête de chaque écriture, ce qui permet d’inscrire dans une même chaîne de blocs des écritures de natures différentes.

Chaque nœud qui reçoit ce message en vérifie à son tour la validité formelle et la légitimité au regard des informations qu’il possède. En effet, le caractère ouvert du réseau impose un principe de sécurité fondamental : chaque nœud doit faire l’hypothèse que tout le reste du système peut être défectueux ou frauduleux, et donc considérer tout ce qu’il reçoit comme suspect, en déterminer lui-même la nature et le valider de façon indépendante avant de l’utiliser. Tout le système est conçu en intégrant l’hypothèse qu’il est en permanence la cible d’un grand nombre de fraudeurs extrêmement compétents.

À l’issue de cette première étape, les écritures invalides ont été éliminées, et chaque écriture valide et légitime a été recopiée de proche en proche en plusieurs dizaines de milliers d’exemplaires, un sur chaque ordinateur du réseau, chaque exemplaire ayant été dûment validé et revalidé à chaque étape de son trajet depuis son point d’entrée.

Une blockchain en fonctionnement : la construction des blocs (le « minage »)

Dans la deuxième étape, les utilisateurs qui ont choisi de construire des blocs (les mineurs) puisent des écritures dans leur liste d’attente locale et les organisent en arborescence de façon à faciliter l’accès aux écritures individuelles. Tous les mineurs travaillent simultanément et choisissent librement quelles écritures ils incorporent dans leur bloc en construction. Ils complètent le bloc en lui ajoutant un en-tête, qui contient en particulier sa somme de contrôle et l’identifiant du bloc précédent.

Le coût de cette opération est volontairement rendu très élevé en imposant à la somme de contrôle de respecter des normes très sévères qui exigent une consommation considérable de ressources informatiques, mais dont le respect peut être facilement vérifié par tous les nœuds, formant ce qu’on appelle une « preuve de travail ». Cette exigence limite le nombre des mineurs à quelques centaines pour Bitcoin, la plupart regroupés en coopératives, seuls ceux qui peuvent mettre en œuvre une puissance de calcul considérable ayant une chance que leurs blocs soient acceptés à l’étape suivante, comme nous le verrons.

Dans les systèmes utilisant le même principe, cette opération est rémunérée afin de motiver un nombre suffisant d’opérateurs. Dans Bitcoin, cette rémunération s’effectue en insérant dans le bloc une transaction spéciale créditant le mineur d’un certain nombre de bitcoins créés à cet effet, qui sera exécutée si le bloc est effectivement ajouté à la chaîne à l’étape suivante. C’est cette opération, seule façon de créer de nouveaux bitcoins, qui est à l’origine du terme de « mineur ». Quand un mineur a construit un bloc valide, c’est-à-dire correctement formé, accompagné d’une somme de contrôle conforme aux exigences de « preuve de travail », et dont chacune des transactions est valide, il le diffuse à ses voisins, qui à leur tour le diffuseront de proche en proche à tous les nœuds du réseau, après en avoir vérifié la validité ainsi que celle de toutes les écritures qu’il contient. Dès qu’un mineur reçoit un bloc d’un autre mineur, il arrête de construire le bloc en cours, qui n’a pratiquement plus aucune chance d’être accepté, élimine de sa liste d’attente locale toutes les transactions que contenait le bloc qu’il vient de recevoir, et commence à construire un nouveau bloc.

De nouveaux blocs sont ainsi produits et diffusés en continu à travers le réseau. Mais à ce stade, aucun exemplaire de la chaîne de blocs n’a encore été modifié, les seuls à pouvoir le faire étant les « nœuds complets », qui hébergent chacun un de ces exemplaires.

Une blockchain en fonctionnement : la construction de la chaîne

Pour chaque nouveau bloc qu’il reçoit, chaque ordinateur d’un nœud complet exécute un protocole qui aboutit soit à rejeter ce bloc s’il a déjà été reçu, s’il est invalide ou s’il contient une écriture déjà présente dans la chaîne locale, soit à l’ajouter à l’extrémité de la chaîne locale après une ultime vérification de toutes les écritures qu’il contient, soit à le mettre en attente.

Rappelons que chaque bloc contient l’identifiant de son prédécesseur dans la blockchain du mineur qui l’a construit. Dans le cas le plus courant, ce prédécesseur est également le bloc terminal de la chaîne locale, à laquelle il viendra donc s’ajouter après une ultime vérification de sa validité. Sinon, il sera conservé en attente, en devenant l’extrémité d’une branche secondaire de la chaîne de blocs.

Afin que tous les exemplaires de la chaîne de blocs soient identiques, bien que construits indépendamment, ce protocole incorpore un mécanisme « de consensus », qui est un élément vital du système. La règle utilisée par Bitcoin est de retenir la chaîne qui a demandé le plus grand travail de construction des blocs qui la composent. À cette fin, l’en-tête de chaque bloc contient une mesure du travail effectué pour le construire, ce qui permet de calculer la quantité totale de travail dépensée pour construire la chaîne qui aboutit à ce bloc. Si une chaîne secondaire a demandé plus de travail que la chaîne principale actuelle, cette chaîne secondaire doit devenir la branche principale. Pour cela, le programme remonte à l’endroit où elle s’est détachée de la branche principale, revalide un par un chaque bloc laissé en attente et les écritures qu’il contient, ajoute ce bloc à l’extrémité de la nouvelle chaîne en cours de construction si ces contrôles sont satisfaits, en abandonnant ce processus dès la première erreur.

Ce protocole critique et complexe constitue le véritable cœur du système. Il fournit également quelques services annexes, dont la reconstitution automatique de la chaîne locale après un arrêt de l’ordinateur ou du réseau.

À l’issue de cette deuxième phase, chacun des milliers d’exemplaires de la blockchain qui existent sur les nœuds complets a été prolongé par un bloc choisi par chaque nœud parmi les propositions des mineurs en appliquant la règle de consensus programmée. Si tous les nœuds complets mettent en œuvre les mêmes règles de validation des écritures et des blocs, ce bloc additionnel est le même pour tous les nœuds, et donc tous ces exemplaires de la blockchain restent identiques.

Une blockchain en fonctionnement : vue d’ensemble

En résumé, la séquence des opérations de construction de la chaîne de blocs est décomposée en étapes pouvant être exécutées par des opérateurs différents. Les mineurs construisent les blocs, mais ne les ajoutent qu’à leur propre exemplaire de la chaîne. Les nœuds complets ajoutent ou non les blocs à leur exemplaire de la chaîne, mais sans pouvoir les modifier, et tout le monde revérifie ce qu’ont fait les autres. Ces opérations sont exécutées en parallèle par des milliers de sites gérés par des opérateurs indépendants et situés partout dans le monde, n’importe qui étant libre de jouer n’importe quel rôle dans le système, y compris les plus centraux.

In fine, les écritures créées par des millions d’utilisateurs se retrouvent enregistrées dans des milliers de fichiers identiques sur autant de sites différents, sous la forme de chaînes de blocs inaltérables et librement consultables. Insistons sur le fait que ces fichiers sont construits indépendamment. Donc, contrairement à ce qu’on lit souvent, il est impropre de qualifier la chaîne de blocs de « distribuée », ce qui implique que différents nœuds en porteraient des parties différentes, ou de dire qu’elle est « répliquée », ce qui implique qu’elle serait construite en un point central puis recopiée sur les différents nœuds.

Tout en offrant une grande sécurité à ses utilisateurs, la multiplicité des exemplaires de la blochchain leur pose un problème : puisque, en application du « principe de précaution », on ne peut pas faire l’hypothèse que tous les exemplaires sont identiques, lequel prendre comme référence en cas de désaccord ? C’est à chaque utilisateur de définir le protocole de consultation de son choix selon l’usage qu’il veut faire des résultats. Un exemple type est d’interroger des nœuds au hasard jusqu’à ce qu’un certain nombre, défini d’avance, donnent le même résultat. L’utilisateur peut aussi utiliser des nœuds en lesquels il a confiance, ou toute autre combinaison de ces deux approches. C’est à lui qu’il appartient de choisir sa méthode, qui peut-être critique pour lui, mais ne l’est pas pour le système.

Réseau et société

Dans la première partie, nous avons suivi le fonctionnement de la blockchain dans l’environnement d’un réseau pair à pair ouvert, en utilisant le cas de Bitcoin. Dans cette deuxième partie, nous allons présenter les implications de cette architecture en termes de fiabilité, de sécurité et de résistance aux attaques des tous ordres et de toutes provenances.

Fiabilité et sécurité de la blockchain

Plus que la structure de la blockchain, c’est l’extrême redondance du fichier principal et des opérations de construction de ce fichier qui est l’originalité la plus marquante de Bitcoin et des systèmes qui en dérivent. Une application informatique qui utiliserait la même structure de fichiers, mais implantée sur un seul ordinateur ou sur un petit nombre d’ordinateurs appartenant à des organisations apparentées, ne jouirait évidemment pas des mêmes propriétés.

Cette redondance assure la continuité de service 24 heures sur 24. Chaque ordinateur peut se déconnecter ou tomber en panne sans mettre en péril le bon fonctionnement de l’ensemble du système. S’il s’agit d’un nœud complet, le protocole de construction de la blockchain reconstruira automatiquement la portion manquante avec l’aide des nœuds voisins quand il redeviendra opérationnel.

Tant qu’il a accès à Internet, un utilisateur trouvera toujours un nœud du réseau pour accepter et relayer une écriture, et il se trouvera un grand nombre de mineurs et de nœuds complets pour l’inscrire et la rendre accessible dans leur chaîne de blocs. Toutes les écritures, même celles qui sont créées dans un pays où n’existe aucun nœud du réseau Bitcoin, seront traitées par des ordinateurs situés partout dans le monde, et seront lisibles en tout point du monde ayant accès à Internet. Le seul moyen d’arrêter le système, c’est d’arrêter Internet.

Cette même redondance, jointe au « principe de précaution » selon lequel chaque nœud du réseau vérifie la validité de tout ce qu’il reçoit avant de l’utiliser, rend impossible la propagation d’écritures frauduleuses. Toutes les erreurs et toutes les fraudes sont possibles sur un ordinateur particulier, qu’elles soient le fait de l’opérateur du site ou d’un pirate qui manipule ce site. Il est même possible qu’elles se propagent localement par contagion ou par connivence. Mais il est pratiquement impossible que cette pollution se propage à un pourcentage significatif des exemplaires de la chaîne de blocs, et encore moins à l’ensemble du réseau.

En revanche, tout appareil dont les fonctions ne sont pas dupliquées dans le réseau reste vulnérable. C’est notamment le cas des porte-clés individuels, qui détiennent la correspondance entre les numéros de compte et l’identité de leurs détenteurs, et des systèmes servant de portail d’entrée/sortie, par exemple les sites de change avec les autres devises ou d’interconnexion avec des informatiques d’entreprise. La sécurité et la confidentialité de ces systèmes périphériques sont la responsabilité de leurs opérateurs. Pirater un wallet ou un site de change peut avoir des conséquences dramatiques pour leurs utilisateurs (c’est par exemple la seule façon de « voler » des bitcoins), mais est sans effet sur le système Bitcoin proprement dit, de la même façon que voler le portefeuille de quelqu’un ne met pas en danger le système bancaire. Quand on met fin aux activités d’une plate-forme d’échanges illicites telle que Silk Road, c’est toutes proportions gardées comme si on démantelait une mafia ; contrairement à ce qu’on lit souvent dans la presse, le système Bitcoin lui-même ne s’en porte que mieux.

Changements de logiciel

Jusqu’ici, nous avons supposé implicitement que tous les ordinateurs du réseau utilisent les mêmes logiciels pour chaque rôle qu’ils jouent. Il existe des logiciels reconnus comme standard par la communauté, mais les opérateurs ont l’entière liberté d’en utiliser d’autres, que ce soit pour des besoins locaux, ou à titre expérimental, dans un but frauduleux ou simplement par erreur ou négligence. Que se passe-t-il alors ?

Tant que les logiciels installés sur tous les nœuds mettent en œuvre les mêmes protocoles de validation des écritures et des blocs et le même mécanisme de consensus, et quelles que soient leurs différences par ailleurs, les deux étapes essentielles de la construction de la chaîne de blocs se déroulent de la même façon sur tous les nœuds et produisent des exemplaires identiques de la chaîne. Cela autorise d’innombrables expérimentations et variantes en termes de convivialité, de performances ou de fonctionnalités annexes, sans effet sur les fonctions centrales du système.

Les seules fonctions véritablement critiques sont : – le protocole de validation des écritures, utilisé dans la diffusion des écritures, dans la construction des blocs et dans la construction de la chaîne de blocs, – le protocole de validation des blocs (qui utilise lui-même le protocole de validation des écritures) et les règles de consensus, qui sont mis en œuvre par le programme de construction de la chaîne de blocs.

Si des nœuds différents utilisent des protocoles de validation des écritures différents, chaque nœud ne conserve et ne rediffuse que les seules écritures qu’il reconnaît comme valides. Si un nœud sert un ou plusieurs mineurs, ceux-ci n’incorporent donc dans les blocs qu’il construisent que les écritures que ce nœud a validées. Ces blocs sont diffusés à tous les nœuds, mais chacun n’est accepté que par les nœuds qui appliquent les mêmes règles que le mineur qui l’a construit. Le réseau se divise alors en plusieurs populations qui construisent et utilisent des chaînes de blocs différentes. Il en va de même si le protocole de validation des écritures est le même, mais si les blocs ont des formats différents, ou si la règle de consensus est différente.

Puisque chaque nœud conserve en attente dans une sorte de branche secondaire les blocs qu’il n’a pas incorporés à sa chaîne de blocs, cette situation est appelée bifurcation (« fork »). Mais il est plus exact de décrire le phénomène comme une scission de la population des nœuds, qui utilisent maintenant des chaînes de blocs différentes.

Si les protocoles sont suffisamment différents pour que les écritures et les blocs acceptés par chacun d’eux soient rejetés par l’autre, les blocs produits par les mineurs de chaque population ne sont reconnus comme valides que par les nœuds de cette seule population. La scission est alors totale (« hard fork ») entre des réseaux distincts qui enregistrent de façon séparée des écritures de natures différentes, le système se chargeant de faire le tri.

Dans le cas de Bitcoin (et autres systèmes de paiement), rappelons que posséder des bitcoins, c’est en réalité pouvoir accéder à des transactions qui créditent mon compte. Puisque chacun ne peut alors accéder qu’aux transactions inscrites dans la chaîne de blocs de la population dont il fait partie, et ne peut enregistrer de nouvelles transactions que sur cette même chaîne de blocs, aucune transaction entre membres de populations différentes n’est alors possible à travers la chaîne de blocs. On a en pratique deux monnaies différentes entre lesquelles le change n’est possible que par des moyens extérieurs au système Bitcoin. Autrement dit, une monnaie est définie par un protocole de validation des transactions et un protocole de validation des blocs.

Un autre cas, particulièrement important, est celui de l’introduction de nouvelles possibilités par évolution du logiciel. Dans ce cas, les écritures reconnues comme valides par le protocole existant le sont généralement par le nouveau protocole, mais ce dernier valide également des écritures qui n’étaient pas acceptées par l’ancien protocole. Dans la population B qui utilise le nouveau protocole, la chaîne contient toutes les écritures. Dans la population A qui a conservé l’ancien protocole, la chaîne de blocs ne contiendra que des écritures à l’ancienne norme, et les blocs « mixtes »produits par les mineurs de B seront conservés en attente sans vérification. À partir du moment où un nœud de A installe la nouvelle version du logiciel, il acceptera le premier bloc valide en provenance d’un mineur de B, et il est très probable que la chaîne qui conduit à ce bloc aura demandé plus de travail que la branche courante. C’est donc cette branche qui doit devenir la branche principale locale, sous réserve que les blocs qui la composent et qui avaient été mis en attente soient validés un à un à partir de la bifurcation. Si cette validation réussit, ce nœud rejoint ainsi la population B. Une telle bifurcation temporaire, qui est corrigée automatiquement au moment du changement de logiciel, est appelée « soft fork ».

Cette réorganisation peut remettre en question certaines écritures présentes dans l’ancienne chaîne si elles ne figurent plus dans la nouvelle. C’est pour cette raison qu’il est sage de ne considérer une écriture comme définitive qu’après qu’un certain nombre de blocs a été enregistré à sa suite dans la chaîne (typiquement une petite dizaine).

Fraude et prise de contrôle

Toute tentative de fraude exige de remplacer les logiciels critiques par un protocole plus « permissif » sur un nombre suffisant de nœuds, sans quoi une écriture litigieuse ne pourrait pas se propager à travers le réseau. Mais les écritures frauduleuses ne seront acceptées et retransmises que par les seuls nœuds qui ont adopté ce logiciel, et donc l’effet de ces écritures frauduleuses sera limité aux seuls fraudeurs.

De même, le seul moyen de prendre le contrôle du système, dans quelque but que ce soit, est de prendre le contrôle d’une majorité des mineurs et d’une majorité des nœuds complets. Pour pouvoir créer des transactions frauduleuses, il faut en effet qu’il existe des mineurs pour les inclure dans des blocs, et des nœuds complets qui ajoutent ces blocs à leur chaîne. Mais quel que soit le nombre de ces mineurs, leurs blocs ne seront acceptés que par les nœuds eux-mêmes frauduleux, et la norme de la majorité des nœuds complets restera la norme majoritaire. C’est la majorité des nœuds complets qui est déterminante, donc in fine la majorité des utilisateurs, à condition toutefois que la population des nœuds complets soit suffisamment nombreuse et représentative de la population des utilisateurs.

Or, si chacun est libre d’installer sur son ordinateur les logiciels de son choix et de les modifier à sa guise, personne n’a le pouvoir d’imposer un logiciel ou un protocole à l’ensemble du réseau. Cette même liberté permet à chacun, dans son propre intérêt, de s’en tenir aux logiciels standard qui respectent les règles communes. Il est donc pratiquement impossible de prendre le contrôle du système étant donné le nombre, la dispersion géographique et l’indépendance des participants, et l’intérêt qu’ils portent au bon fonctionnement du système.

Les auteurs de logiciels proposent des disciplines, mais n’interviennent pas dans leur mise en application. S’il y a plusieurs disciplines en concurrence, chacun des opérateurs des nœuds du réseau reste libre de choisir entre elles, voire de mettre en œuvre une autre qui lui est propre, et de la proposer à son tour aux autres. Les opérateurs des nœuds « votent » de façon continue par leur comportement lui-même et non par un vote préalable dont le résultat contraindrait les opposants à se plier à la loi de la majorité. Chacun décide pour lui-même selon ses préférences propres, et supporte les conséquences de son choix, en décidant de faire sécession et au risque d’être exclu. De façon automatique, les fraudeurs s’excluent d’eux mêmes, les dissidents s’organisent en communautés séparées et les pionniers forment des avant-gardes isolées par une barrière protectrice.

On reconnaîtra une mise en œuvre des principes libéraux formulés par les penseurs des Lumières, et la notion d’ordre spontané qui en découle, où chacun conserve le maximum de liberté, dont celle de s’associer à ceux qui partagent les mêmes options, à l’intérieur d’un ensemble dont l’harmonie résulte de la composition des actions individuelles et non de l’action d’un gouvernement central.

Conclusion

Pour y voir clair et raisonner juste, il faut réserver le terme blockchain ou chaîne de blocs à une simple technique de stockage d’informations utilisable dans de nombreux systèmes, qui se différencient principalement par la nature des informations qu’ils traitent et par leurs modalités d’implantation et de gouvernance. Il est tout à fait insuffisant de parler de chaîne de blocs (ou de blockchain) et d’en évoquer le potentiel sans préciser pour quel(s) type(s) d’écritures elle est utilisée et surtout sur quel réseau elle est implantée, notamment son caractère ouvert ou fermé, le nombre de ses nœuds et l’identité de leurs opérateurs.

À l’intérieur du système de gestion de la chaîne de blocs, la nature des informations stockées est définie de façon opérationnelle par le sous-programme qui met en œuvre le protocole de validation des écritures. En faisant varier ce sous-programme, la technologie peut être utilisée dans une très grande variété d’applications.

Dans le cas particulier des « cryptomonnaies », ou plutôt des cybermonnaies puisque les transactions y sont conservées en clair et ne sont justement pas cryptées, il convient de mettre l’accent sur les systèmes de paiement et non sur les « monnaies », ce qui évite en particulier les débats oiseux du genre « le bitcoin est-il vraiment une monnaie ? ». Chaque cybermonnaie n’est que la composante d’un système de paiement particulier, utilisable par les seuls utilisateurs de ce système, dans des conditions fixées par le système. On peut donc s’attendre à voir coexister de nombreux systèmes, avec leurs monnaies associées, destinés à des usages différents par des populations différentes, voire en concurrence pour le même usage par la même population. La place relative de ces monnaies, et leur place par rapport aux monnaies traditionnelles, seront le résultat de ce processus concurrentiel.

Au total, on voit que les systèmes à base de blockchain tirent leurs propriétés distinctives et leur potentiel de changement sociétal beaucoup plus de leur implantation sur un réseau pair à pair ouvert que de la structure de fichier qu’ils utilisent. Ce sont les modalités d’implantation et de gouvernance du réseau qui sont cruciales. Dans un système traditionnel géré par une entreprise unique, ou même par un consortium constitué à cet effet, l’opérateur du système conserve le pouvoir de modifier à tout moment et de façon quelconque les logiciels qui y sont implantés et les informations que lui confient les utilisateurs, quelle que soit la structure de fichier qu’il utilise. Un organisme malveillant peut corrompre ou pirater les informations et les opérations de traitement. Un État autoritaire peut imposer des règles contraires aux intérêts des utilisateurs. Le choix de la structure en chaîne de blocs est un choix purement technique sans importance sociétale, qui ne modifie pas les rôles des différents acteurs ni leurs relations.

Dans un réseau pair à pair ouvert, où de très nombreux opérateurs indépendants localisés dans de nombreux pays, sur tous les continents, assurent chacun de son côté les fonctions de gestion des informations au bénéfice de l’ensemble, chaque nœud peut être manipulé de la même façon, mais les dégâts qui en résultent ne peuvent pas se propager à l’ensemble du système. Il restera toujours une majorité de nœuds et de mineurs pour respecter les règles sur lesquelles les utilisateurs fondent leur confiance, et les autres seront isolés par l’application de ces règles. Au lieu de devoir placer sa confiance dans un ou des organismes bien identifiés mais faillibles et vulnérables, l’utilisateur place ici sa confiance dans le système lui-même, à cause du nombre et de l’indépendance de ses nœuds et de la motivation de ses utilisateurs, qui résultent du caractère ouvert du réseau.

Une distinction tout à fait fondamentale doit être faite entre les systèmes ouverts (unpermissioned) où la participation est entièrement libre comme Bitcoin ou Ethereum, et les systèmes fermés (permissioned) où certaines fonctions exigent l’approbation préalable d’un organe de contrôle plus ou moins centralisé (Ripple, Hyperledger ou les systèmes au service de consortiums d’entreprises). Mais ces derniers peuvent également remettre en cause des privilèges. De la même façon que Bitcoin permet aux particuliers et aux entreprises de se passer des banques pour leurs transactions, un système reposant sur les mêmes technologies et opéré par un consortium de banques permet à celles-ci de se passer de banque centrale pour leurs opérations interbancaires.

Grâce au réseau pair à pair, le phénomène habituellement désigné par le terme blockchain s’inscrit dans le grand mouvement d’économie collaborative (ou participative) qui touche actuellement toute la société, où non seulement les clients et les utilisateurs sont en relation directe, mais il où n’y a plus de différence entre utilisateurs de services et prestataires de services, les utilisateurs participant à leur guise à la production, grâce à l’éclatement de toutes les activités en opérations distinctes que chacun entreprend de réaliser selon ses possibilités et ses motivations. Cette forme de division du travail va plus loin que des offres comme Uber ou AirBnB, puisqu’il n’existe même plus de point central privilégié pour assurer la mise en relation des uns et des autres, comme une centrale de réservation qui serait l’analogue d’un gouvernement local, avec tous les avantages, mais aussi tous les risques qui y sont attachés.

Sur le web

  1. Trop confus pour le non initiés, pas assez complexe pour celui qui connait deja les pricipes de bases

Les commentaires sont fermés.