La chaîne de blocs expliquée aux novices
L’existence ou non de Satoshi Nakamoto peut être polémique ; cependant, il est clair que la personne, le groupe ou l’entité portant ce nom suivirent deux principes à la suite de l’effondrement financier de 2008 :
- La croyance en ce que les monnaies émises à niveau national peuvent facilement être manipulées et qu’elles ne devraient pas être confiées à des humains qui sont gouvernés par des instincts, par la peur, la cupidité, les alliances, etc., ou par les banques qui les emploient.
- Les dettes et les crédits représentent un départ du véritable capitalisme puisqu’ils introduisent le concept de servitude : une relation sociale qui fausse les relations objectives nécessaires pour stocker, communiquer et transférer de la valeur et de la richesse.
Face au problème, le Bitcoin s’est donné la mission de communiquer la valeur en utilisant un intermédiaire de confiance. C’est selon ce principe que sont créées toutes les cryptomonnaies et il vaut peut-être la peine, cependant, d’examiner les bases de ce premier système, celui à partir duquel les autres se sont développés et qu’ils cherchent à surpasser.
Si jusqu’à maintenant les monnaies ont été émises et maintenues par des organismes gouvernementaux et des banques pour communiquer leur valeur, les cryptomonnaies permettent des communications directes, sans l’ingérence d’un agent extérieur. Tout ce qu’il y a faire est d’enregistrer à tout moment qui possède la valeur et à qui il l’a transférée. La question « en retour de quoi ? » n’a pas d’importance.
Le Bitcoin, par exemple, est un système administré par tous ses utilisateurs et construit à travers les câbles des ordinateurs codés en binaire : c’est simple, c’est transparent. Cette infrastructure dans son ensemble est appelée chaîne de bloc et elle est, en substance, un « ledger » (grand livre) qui enregistre des transactions.
Gardez les livres pour nous
Un ledger, pour les plus jeunes qui n’ont pas pu en voir, est un livre dans lequel on enregistre des transactions. Par exemple, le ledger d’une banque enregistre les transactions de ses clients, indiquant dans chaque ligne le solde restant sur un compte.
Maintenant, si ce ledger était accessible à tous, on n’aurait pas besoin d’argent, puisque l’enregistrement immédiat des transactions et des soldes annulerait le besoin de transférer des représentations de ce qui a été enregistré à travers un intermédiaire physique (l’argent). Avant de vendre votre voiture, vous pourriez simplement voir si votre acheteur a suffisamment d’argent pour couvrir le coût du véhicule, déduire immédiatement le coût de sa page du ledger et l’ajouter à la vôtre. Le concept annule également le besoin de banques et de leur célèbre tendance à satisfaire leurs actionnaires aux dépens de leurs clients.
En pratique, les utilisateurs de cryptomonnaies ne tiennent pas vraiment eux-mêmes le registre du ledger, puisqu’il s’agit d’une procédure demandant énormément de ressources. Au lieu de cela, des « mineurs » collectent des séries de transactions, demandent la vérification des autres mineurs de la communauté et les verrouillent indéfiniment dans le ledger en ligne, dans une série de petits blocs, qui forment une chaîne des transactions passées (nous expliquerons précisément comment cela fonctionne dans de prochaines leçons).
Pour participer à cet écosystème, l’utilisateur/l’acheteur/le vendeur a tout simplement besoin de télécharger un portefeuille numérique (puisque les « Bitcoins » n’existent pas réellement) sur son appli mobile ou son ordinateur. Là, il reçoit sa propre signature codée, qui est la preuve de sa propriété/de son identité. À chaque fois qu’une transaction est effectuée, c’est l’identificateur utilisé.
Tout ce qu’il reste à faire est de trouver un échange où pouvoir acheter/vendre des Bitcoins avec de l’argent liquide ou de les trader en ligne sans vraiment les posséder...
Le Ledger : il est semblable à une base de données
Le Bitcoin n’existe pas en tant qu’un vrai petit disque de métal. Les utilisateurs de Bitcoins n’ont pas de portefeuille réel rempli de pièces frappées d’un ₿. Ce qu’ils ont, c’est une application leur fournissant une vaste base de données qui est en croissance continue, bloc après bloc. Chaque bloc contient une série de transactions, le code utilisateur des parties de chaque transaction, l’horodatage de chaque transaction, ainsi qu’un code qui identifie et nomme ce bloc donné.
À chaque fois qu’un utilisateur souhaite effectuer une transaction (par exemple, acheter une voiture), son « portefeuille » explore toute la chaîne de transactions existantes et vérifie si cet utilisateur a reçu suffisamment de valeur (la valeur reçue moins la valeur dépensée) pour acheter cette nouvelle voiture. Ce que le Bitcoin ne permet pas, ce sont le crédit et le débit : on ne peut pas dépenser plus que ce que l’on possède. Cela signifie que le ledger ne contient pas le solde de l’utilisateur : il est calculé à nouveau dès le premier jour à chaque fois que l’utilisateur saisit une transaction.
Distribué, mais pas décentralisé
Si ce qui a été dit précédemment traite de notre second principe cité auparavant, le premier élément (la confiance) est obtenu en copiant la transaction dans plusieurs ordinateurs. La chaîne de blocs n’est pas simplement décentralisée : elle est distribuée parmi tous les utilisateurs et une transaction ne peut être effectuée qu’une fois que tous les ordinateurs participants ont intégré et vérifié la transaction (l’acheteur possède suffisamment de valeur). À chaque fois qu’un nouveau bloc de transactions est ajouté à la chaîne, chaque participant le vérifie et le valide. Cela rend le vol presque impossible : voler une banque ne suffit pas, vous devez voler toutes les banques exactement au même moment et de la même manière.
Un bloc : qu’est-ce que c’est ?
Un bloc est le composant d’une chaîne de transactions. Pour comprendre comment fonctionne une chaîne de blocs, il faut essayer d’imaginer un long train sur un quai à trois parties rentrant dans un entrepôt.
Le charger
À n’importe quel moment, trois blocs (ou wagons) sont traités : le charriot le plus éloigné de l’entrepôt est chargé de transactions, chacune d’entre elles ayant été vérifiée par rapport à tous les wagons du train pour s’assurer de ne pas dépenser plus que ce qu’on reçoit.
Le nommer
Dès que le wagon est plein, il passe à la deuxième étape, lors de laquelle on lui donne un nom de code qui est une fonction de toutes les données qu’il contient. Pendant ce temps, le wagon suivant est chargé.
Le vérifier
Lorsque le wagon suivant est plein et que le wagon précédent est nommé, le train avance jusqu’à la prochaine position. Là, le premier wagon est vérifié (pour s’assurer que le nom de code correspond aux données) et le deuxième wagon est soumis au processus de nom de code. Au même moment, un troisième wagon est chargé, et ainsi de suite.
Le stocker
Finalement, le premier wagon entre dans l’entrepôt, le deuxième est vérifié et le premier nommé comme nouveau wagon est chargé.
La version longue
Étudions le processus plus en détail :
Un bloc de Bitcoin d’un mégaoctet contient environ 500 transactions (jusqu’à 2 400, selon leur complexité). Chaque transaction enregistre les noms de code des parties impliquées, la somme impliquée et l’horodatage. Avant qu’une transaction ne soit enregistrée dans le bloc, ses informations sont vérifiées : les enregistrements du payeur sont vérifiés afin de s’assurer qu’il a reçu suffisamment et qu’il n’a pas trop dépensé pour être en mesure d’effectuer le paiement requis.
Une transaction supplémentaire en amont des autres est le code d’identification du mineur qui a verrouillé le bloc et reçu une rémunération pour son travail. Puis, un autre élément du bloc est le hash binaire de 256 bits du bloc précédent : un identificateur consiste en une série de 256 zéros et uns dont la valeur numérique aurait une longueur de 79 chiffres.
Le dernier élément qui verrouille le bloc est ce hash de bloc. Cet hash unique au bloc est calculé par le mineur en exploitant un opérateur de 32 bits (un nonce) sur les détails de 500 transactions, plus le hash du bloc précédent. La méthode de cryptage utilisée, appelée SHA256, se base sur un protocole mis en place par la National Security Administration (Administration de la sécurité nationale) des États-Unis.
Voici maintenant la partie compliquée. Un mineur doit trouver un nonce unique (jamais utilisé auparavant) qui, après avoir été exécuté sur le reste des données, donne lieu à un hash répondant à un ensemble de critères (il doit être plus grand que x, plus petit que y, se trouver après un nombre donné de zéros, etc.) qui changent toutes les 10 minutes.
Pour trouver ce nonce, le mineur n’a pas d’autre choix que de partir de zéro et de continuer à travailler ainsi jusqu’à ce qu’il trouve le nonce correct encore jamais utilisé. Il s’agit d’une activité essentiellement mécanique qui ne demande rien d’autre qu’une grande puissance de calcul. Puisque le travail est récompensé par la frappe de nouveaux Bitcoins, les mineurs font la course pour trouver le bon nonce.
Une fois le nonce trouvé, le bloc est verrouillé et soumis au réseau pour confirmation. Une fois le bloc confirmé par le réseau, il est ajouté à la chaîne dans toutes ses copies et le hash du bloc passe au prochain bloc pour le calcul de ce dernier.
Ainsi, nous avons devant nous une chaîne de blocs infinie, dont trois sont opérationnels à tout moment : un pour accepter les nouvelles transactions, le suivant verrouillé et avec le nonce calculé, et le dernier pour confirmation par le réseau avant d’être ajouté à la chaîne.
Verrouillé, chargé, impénétrable
Il est clair qu’altérer la chaîne de blocs pour contrefaire la valeur (en essayant de tromper le système en lui faisant croire que je possède plus que ce que j’ai reçu ou que je dépense moins que ce que j’ai) changerait au minimum un paramètre du bloc verrouillé. Étant donné que ce hash de bloc est une fonction établie selon ce paramètre, cela changerait ce hash et tous ceux qui le suivent (puisque le hash du bloc précédent fait partie des données traitées pour créer un nouveau hash). De plus, traiter le hash en sens inverse pour obtenir les détails du bloc est un tour de force presque impossible puisque le nonce reste inconnu (étant lui aussi verrouillé dans le bloc).
Fans de Harry Potter, unissez-vous
La course pour trouver le nonce est plus importante dans le système Bitcoin que l’on pourrait croire. Souvenez-vous qu’il s’agit d’une chaine binaire de 32 bits : le nombre de permutations dépasse les 2 milliards. Grâce à ça et au fait que nous ne pouvons pas savoir comment le reste des données a été classé (quels numéros représentent des utilisateurs, des sommes, des horodatages, etc.), il est presque impossible de trouver le nonce en utilisant un processus inverse à partir du hash.
Les nonces sont appliqués à un taux de milliers de quintillions par seconde par des mineurs, des personnes assises devant des ordinateurs travaillant durement, de la même façon que des utilisateurs assis à leur table attendant que leur note de restaurant soit approuvée. Par ailleurs, les nonces sont uniques : ils ne peuvent être utilisés qu’une seule fois chacun dans l’ensemble de la chaîne. Ainsi, plus le processus se prolonge, plus il est difficile de trouver le nonce qui crée un hash respectant les critères.
Maintenant, aussi rare soit-il, deux mineurs peuvent trouver le même nonce au même moment. Il en résulterait une fourchette temporaire : deux chaînes émanant d’un même bloc. Le problème est résolu par la rétention du paiement du travail aux mineurs, tandis que deux nouveaux blocs identiques sont formés et leurs nonces recherchés. Le premier à être déchiffré détermine laquelle des deux chaînes est la chaîne « légitime » et lequel des deux mineurs est rémunéré. Ce travail libre est tarifé selon le coût du travail et pourtant ce prix continue à baisser.
Le paiement pour télécharger/résoudre le bloc Genesis était de 50 Bitcoins ; ce chiffre est réduit de moitié tous les 210 000 blocs et on s’attend actuellement à ce qu’il se maintienne à 6,25 Bitcoins jusqu’à la fin de l’année prochaine.
De plus, les mineurs peuvent recevoir une rémunération supplémentaire de la part d’utilisateurs comme une prime pour qu’ils accordent la priorité à l’intégration de leurs transactions dans un bloc.