La technologie de la chaîne de blocs (2018)
La chaîne de blocs est une technologie de registres (ledgers) partagés décentralisée. Le registre est une liste de transactions qui sont dupliquées sur un certain nombre d’ordinateurs, plutôt que d’être stockées sur un seul serveur central. Chaque transaction (ou souvent une suite de transactions sur une période donnée) est appelée un bloc ; chaque bloc possède un horodatage et est lié au précédent bloc.
La chaîne de blocs est une technologie de registres (ledgers) partagés décentralisée. Le registre est une liste de transactions qui sont dupliquées sur un certain nombre d'ordinateurs, plutôt que d'être stockées sur un seul serveur central. Chaque transaction (ou souvent une suite de transactions sur une période donnée) est appelée un bloc ; chaque bloc possède un horodatage et est lié au précédent bloc.
Le développement de la technologie est associé à celui de la première cryptomonnaie, le Bitcoin (2008). Il s'agissait alors de créer un système d'échange numérique de valeurs entre deux entités, ne nécessitant pas l'intervention d'un tiers de confiance. Pour cela, il fallait imaginer une base de données sécurisée qui soit distribuée afin de ne pas en laisser le contrôle à un unique administrateur, à une autorité centrale.
Le fonctionnement d’une chaîne de blocs repose non seulement sur une base de données, mais aussi sur un protocole et des règles pour gérer l'ajout et la validation de nouvelles lignes au registre (les blocs), et sur un système de diffusion des ajouts de lignes aux autres pairs du réseau.
Si la technologie de la chaîne de blocs était au départ destinée aux transactions financières, elle a évolué et trouve aujourd’hui de nouveaux champs d’application. Les points communs à toutes les applications que l'on retrouve sous le vocable de “blockchain” sont les suivants :
- L'application est généralement dédiée à l'enregistrement d'échanges, de transactions au sens large.
- Elle répond à la définition de registre d’écritures distribué et, concrètement, il s’agit d’une base de données dupliquée sur plusieurs serveurs.
- Son fonctionnement repose souvent sur un réseau pair-à-pair (P2P).
- Les données sont mises à jour presque simultanément sur tous les serveurs.
- L’intégrité des données échangées et l'identification des participants sont garanties par l'usage de la cryptographie et de signatures numériques.
- Le système est basé sur un mécanisme de consensus et n'autorise pas la modification de transactions déjà enregistrées et validées.
Chaque participant du réseau possède une copie de la chaîne de blocs (registre) existante. Quand l'un d'entre eux veut ajouter un enregistrement, d'autres participants vont exécuter des vérifications et évaluations de la transaction proposée. Si une majorité des nœuds accepte la transaction comme étant valide, elle est alors considérée comme approuvée et un nouveau bloc est ajouté à la chaîne.
Un registre (ledger)
Le registre est un fichier qui contient les données structurées. Les blocs contenus dans le registre sont en quelque sorte comme les pages d'un livre. On trouve sur une page de livre un texte et des informations à propos de la page (numéro de la page, titre de l'ouvrage et/ou du chapitre). Il en va de même pour un bloc où l'on trouve à la fois des descriptions de transactions et des informations à propos du bloc lui-même. Ces dernières, placées dans un en-tête (header), sont appelées des métadonnées. Elles incluent, entre autres, des caractéristiques techniques, une empreinte numérique du contenu du bloc (hash, ou somme de contrôle) et une référence au bloc qui précède, ce qui tient lieu de pagination.
Une chaîne de blocs (blockchain)
Le registre est constitué d'une chaîne de blocs. Chaque bloc est identifié non pas par un numéro d'ordre, mais par sa valeur de hachage (somme de contrôle), qui est dépendante du contenu du bloc. Quand le bloc fait référence au bloc précédent, il le fait ainsi via sa valeur de hachage. L’usage de ces valeurs permet donc de vérifier la consistance et l'intégrité de la chaîne. Si un bloc est modifié, sa valeur de hachage change et la référence contenue dans le bloc suivant devient erronée : la chaîne est brisée. Le seul moyen de contourner le problème serait alors de réécrire les blocs en aval.
La chaîne de blocs du Bitcoin est complètement décentralisée. Son registre est entièrement public et partagé. Il contient l'intégralité des transactions depuis la création de la monnaie : en juillet 2010, il représentait 1 Mo de données, à la même époque l'année suivante, il dépassait les 200 Mo. Aujourd'hui, le 11 décembre 2018, le registre Bitcoin pèse 194 392 Mo, soit 194,4 Go, ce qui est considérable [source : blockchain.info].
Un réseau et un protocole
Un réseau peut être constitué de n'importe qui disposant d'un ordinateur relié au Net (le cas Bitcoin) ou bien d'un groupe de participants connus et accrédités. Chaque ordinateur est appelé un nœud et chaque nœud doit normalement disposer d'une copie du registre. Cette redondance entraîne une tolérance aux pannes : si un nœud devient inopérant, le registre n'est pas perdu et la chaîne peut continuer de croître. Le protocole définit les modalités techniques de communication entre les noeuds.
Un mécanisme de consensus
Le mécanisme de consensus est un ensemble de règles que le réseau utilise pour vérifier et agréer chaque transaction et chaque bloc de la chaîne. Les transactions approuvées par un nœud sont assemblées en blocs qui sont distribués à tous les autres nœuds. Ceux-ci sont alors invités à en faire la vérification. Ce n'est pas une institution centrale qui valide de son sceau une transaction, mais un ensemble de participants qui vont chacun vérifier la transaction. On parle de consensus distribué.
Ces mécanismes peuvent être variés, et leur complexité dépend du type de réseau (ouvert, ou fermé — et donc de la confiance que l'ont peut raisonnablement accorder a priori à un nœud). Nous ne rentrerons pas dans le cadre de cet article dans le détail des “preuves de travail” et “preuves de participation”.
Les mécanismes et protocoles de Bitcoin sont par exemple complexes, car c'est un système complètement ouvert (n'importe qui peut télécharger l'application et devenir immédiatement un nœud du réseau) et qu'il veut garantir un pseudonymat à ses participants. Des systèmes à base de chaînes de blocs peuvent être bien plus simples si l'on s'autorise un certain degré de centralisation et si l'on a affaire qu'à des participants connus et de confiance.
The Blockchain
The blockchain is a technology based on shared, decentralized ledgers. A ledger is a list of transactions that are copied and saved on several different computers, rather than centralized on a single server. Each transaction (or group of transactions within a given time period) is called a block; each block is time- and date-stamped and linked to the previous block.
The blockchain is a technology based on shared, decentralized ledgers. A ledger is a list of transactions that are copied and saved on several different computers, rather than centralized on a single server. Each transaction (or group of transactions within a given time period) is called a block; each block is time- and date-stamped and linked to the previous block.
This technology was developed in association with the first cryptocurrency, Bitcoin, in 2008. The idea of Bitcoin was to create a digital exchange of values between any two entities without requiring the involvement of a trusted third party. This required a secure, distributed database whose control would not be relinquished to an administrator or central authority.
In addition to a database, the blockchain relies on a protocol and rules to manage the creation and validation of new entries in the ledger (the blocks), and on a system to disseminate new entries to every other part of the network.
While blockchain technology was originally developed to keep track of financial transactions, it has since evolved and found new applications. All applications that run on blockchain technology have the following things in common:
- They are usually dedicated to registering exchanges and transactions in the broadest sense of the word.
- They rely on the distributed ledger concept, concretely a database duplicated on several different servers.
- They usually work on a peer-to-peer network.
- Data is updated almost simultaneously on all servers.
- The integrity of the exchanged data and identification of participants are guaranteed by the use of cryptography and digital signatures.
- The system is based on consensus; registered and validated transactions cannot be modified.
All actors in the network always have their own copy of the latest version of the blockchain (ledger). When transactions are added, other actors in the network (nodes) check and assess the proposed transaction. If most nodes accept the transaction as valid, it is considered approved and a new block is added to the chain.
The Ledger
The ledger is a file that contains structured data. The blocks of a ledger are like the pages of a book. Each page contains some text with information such as the page number, title of the book, and/or title of the chapter. The same can be said of the blocks, which contain descriptions of the transactions and information on each block. Information on the blocks themselves, which can be found in a header, is called metadata and includes, among other things, technical characteristics, a digital fingerprint of the content of the block (hash, or checksum) and a reference to the previous block, which acts as pagination.
The Blockchain
Each block is identified not by order number but by hash value, which is a function of the contents of the block. When blocks refer to the previous block, they do so using their hash value. These values make it possible to verify the consistency and integrity of the chain. Should a block be modified, its hash value would change and the reference to it in the following block would become void, breaking the chain. The only way to circumvent this problem would be to rewrite every single downstream block.
Bitcoin’s blockchain is fully decentralized. Its ledger is public and shared. It contains each and every transaction entered since the creation of the currency: in July 2010, it totalled 1 MB of data; a year later, it topped 200 MB. As at December 11, 2018, the Bitcoin ledger weighed a formidable 194,392 MB, or 194.4 GB [source : blockchain.info].
Network and Protocol
Networks can be constituted by any person owning a computer connected to the Net (as in Bitcoin) or by any group of known and accredited participants. Each computer is called a node, and each node should have a copy of the ledger. This redundancy makes the network resilient to failures: should a node break down, the ledger is not lost and the chain can continue growing. The protocol defines the technical communication system between nodes.
Consensus
The consensus mechanism is a set of rules used by the network to check and validate each transaction and block of the chain. Transactions approved by a node are grouped in blocks and distributed to every other node, who are invited to check them. No central institution validates transactions; instead, several participants check each transaction. This is called distributed consensus.
These mechanisms can vary, their complexity depending on the type of network (open or closed), and the level of trust that is granted to each node. This can be assessed through “proof of work” and “proof of participation”, which we will not get into here.
Bitcoin’s mechanisms and protocols are particularly complex, since the system is completely open (i.e. anyone can download the application and become a node on the network) and provides participants with a pseudonym. Block chain systems can be made simpler by allowing a degree of centralization and admitting only known and trusted participants.