Comprendre le bitcoin et la blockchain #3 : comment ça marche

Partagez cette page

Maintenant que nous avons commencé à comprendre ce qu’est la blockchain, nous allons prendre un peu d’altitude et regarder notre système d’en haut.



 

Comme nous l’avons dit, le bitcoin est une monnaie électronique qui a été voulue et conçue comme complètement décentralisée. Il fonctionne grâce à un réseau P2P composé de noeuds qui sont tous égaux entre eux (même fonction, même privilèges) et qui contiennent tous un exemplaire de la blockchain.

Le rôle de ces noeuds est de vérifier les nouvelles transactions effectuées par les utilisateurs et diffusées dans le réseau, de les rangers dans de nouveaux blocs à ajouter à la chaîne, et d’ainsi maintenir le « grand livre de compte » de notre monnaie à jour. Sauf, et là est la difficulté, qu’au final les noeuds du réseau doivent héberger la même blockchain.

Tout le challenge est donc de mettre au point un système de consensus faisant en sorte que ces noeuds travaillent à construire une blockchain identique alors qu’a priori chacun d’eux agit avec une certaine indépendance. Pour ceux qui pourraient être intéressés, cela revient à résoudre un problème du type de celui connu sous le nom de « problème des généraux byzantins ».

 

Les transactions

Une fois envoyée par son émetteur, une transaction bitcoin est diffusée dans le réseau auprès de tous les noeuds de manière quasi-instantanée. Quand un noeud reçoit une nouvelle transaction, il la range dans un pool, ou une liste, de transactions en attentes.

Comportement des noeuds

Partons de l’hypothèse (presque juste) qu’à un moment donné, tous les noeuds du réseau commencent à travailler sur le bloc numéro (ou de rang) n.

Préparation du bloc

Chaque bloc pioche des nouvelles transactions à vérifier dans sa liste de transaction en attente.

Il en vérifie l’authenticité de l’émetteur et la validité. Les transactions OK sont archivées dans le nouveau bloc et retirées de la liste d’attente.

Au bout d’un moment, soit parce que le bloc est plein (ils sont limités en taille) soit parce qu’il n’y a plus rien en attente, le bloc est considéré comme « prêt ».

Minage, la course…

Commence alors le minage.

Nous avons vu, dans le second épisode de notre série à propos de la blockchain, que chaque bloc de la chaîne doit être validé en étant « miné ».

Rappelons que ce minage consiste à trouver un chiffre, le nonce, grâce auquel le hash de ce nouveau bloc remplira une condition mathématique particulière, et que ce minage, qui fait chauffer les processeurs, prend un temps aléatoire.

Les noeuds vont donc maintenant mettre en oeuvre toute la puissance informatique dont ils disposent (celle des « mineurs » qui leur sont rattachés) pour valider ce bloc, qu’ils cherchent à créer, le plus vite possible.

Création des blocs dans la blockchainLa création des blocs. Illustration adaptée (ainsi que les suivantes) de celle du site medium.com. Cliquez pour la voir en plus grand.

Création de blocs, création monétaire

Le premier noeud qui a validé son bloc, appelons-le noeud winner, l’ajoute à sa blockchain, l’envoie au reste du réseau, et commence à travailler sur le bloc n+1.

Par ailleurs il boit aussi un coup de champagne car c’est précisément la création de nouveaux blocs (et non la validation de blocs créés par d’autres noeuds, voir plus bas) qui rapporte des sous dans le minage de crypto-monnaies.

Le mécanisme de la création monétaire est en effet très simple dans le bitcoin. Dans chaque nouveau bloc qu’il s’essaie à créer, un noeud ajoute une transaction un peu spéciale (la transaction « coinbase ») qui dit en substance « payez-moi 12,5 nouveaux bitcoins ». Donc s’il est le premier à valider et diffuser son bloc, et que les autres noeuds le valident, il empoche les « nouveaux bitcoins » en question.

D’où la course à l’armement en puissance informatique chez les mineurs, car plus on est fort, plus on a de chance de valider des blocs en premier, et donc d’empocher les récompenses…

Petite parenthèse, la récompense pour chaque bloc miné était de 50 bitcoins au début, mais elle a été conçue pour être réduite de moitié tous les 210 000 blocs (en gros tous les quatre ans). Après donc 50 et 25, elle est aujourd’hui de 12,5 bitcoins.

Le consensus distribué

Validation du bloc par les pairs

Revenons aux autres noeuds qui sont toujours en train d’essayer de valider leur propre nouveau bloc de rang n.

D’un coup ils reçoivent par le réseau celui que vient de leur envoyer noeud winner.

Après une seconde de déception « et m**** c’est encore un autre noeud qui a gagné », ils arrêtent immédiatement ce qu’ils étaient en train de faire et le vérifient rapidement.

S’il est OK ils l’ajoutent à leur blockchain, mettent à jour leurs listes de transactions en attente, et se mettent à bucher sur le bloc n+1 en espérant cette fois gagner la course du minage. Si le bloc est erroné, en revanche, il sera mis de côté par tous les noeuds qui retourneront sur leurs blocs n respectifs.

Voilà, c’est en suivant ce principe assez simple que vit et croît la blockchain du bitcoin. Il y a cependant deux cas particuliers à voir immédiatement pour être complet. Ces cas prennent en compte le constat que même si la propagation de l’information dans le réseau P2P est très rapide, elle admet une certaine latence.

Création multiple de blocs

Il est en effet possible que plusieurs nouveaux blocs différents soient diffusés en même temps (ou presque) et que des noeuds se retrouvent alors avec plusieurs possibilités de choix quant aux blocs à valider et à la suite desquels travailler.

Les noeuds gèrent ces cas de figure en obéissant à deux règles très simples.
1 – Dans le doute, ils travaillent sur le premier bloc qu’ils ont reçu, mais gardent le où les autres en réserve.
2 – À réception de blocs de rangs supérieurs, ils se reporteront toujours sur la chaîne la plus longue, considérée comme plus légitime.

Resolution des forks dans la blockchain

Ainsi, si un noeud travaille sur la suite d’un bloc de rang n mais qu’il reçoit un bloc de rang n+1 se rangeant à la suite d’un autre bloc de rang n qui était en « réserve », il abandonnera la branche sur laquelle il était pour travailler sur l’autre, désormais plus longue. Le ou les blocs de la branche abandonnée sont appelés blocs orphelins.

Ce mécanisme fait que les possibilités de bifurcations de la blockchain, qui arrivent souvent, se corrigent d’elles-mêmes au bout d’un certain temps.

La double dépense

La double dépense, c’est quand un même argent est dépensé deux fois dans deux transactions A et B passées simultanément (pas forcément de manière malveillante).

Les deux transactions vont se retrouver dans les listes d’attente des noeuds qui ne valideront que l’une des deux lors de leurs vérifications. Par contre certains noeuds travaillerons sur un nouveau bloc contenant A et d’autres travailleront sur un bloc avec B. Qui sera validée de A ou de B ?

On ne le sait pas à l’avance, il faut laisser le réseau décider. La transaction qui sera dans le premier bloc validé et diffusé par un noeud, lui même suivi par d’autres nouveaux blocs, l’emportera.

À travers le fonctionnement et les cas que nous venons de décrire, on a vu que la blockchain se crée, et résout ses dilemmes éventuels, par le travail des mineurs qui créent et proposent leurs nouveaux blocs les premiers. Ce critère de décision s’appelle la preuve de travail (« proof of work »).

Quand un noeud diffuse son nouveau bloc et « rallie », en quelques sortes, les autres noeuds à la solution qu’il a proposé quant à la forme que doit prendre la blockchain, il finit par construire un accord unanime avec les autres noeuds qu’on appelle consensus distribué.

Délai de confirmation

Par consensus distribué à partir de preuves de travail, on sait donc maintenant que le réseau a la capacité de mettre ses noeuds d’accord entre eux. C’est à dire qu’en définitive on est sûr qu’ils hébergent tous la même blockchain, puisque même s’ils travaillent chacun de leur côté, ils se concertent en permanence pour construire au final la même chose.

Cependant, on sait aussi que quand on regarde la blockchain (plus précisément « l’exemplaire de la blockchain hébergé par une noeud particulier ») le ou les derniers blocs créés ne sont pas forcément fiables, puisqu’ils est toujours possible qu’ils soient des futurs blocs orphelins.

On considère donc que les blocs les plus récents sont toujours incertains, avec une incertitude qui décroit plus on remonte la blockchain. C’est pourquoi, même si une transaction peut apparaître comme enregistrée dans le réseau presque immédiatement après avoir été passée, on considère qu’elle devra être « confirmée » un certain nombre fois pour être acceptée comme sûre, chaque « confirmation » correspondant à la création d’un nouveau bloc à la suite du bloc contenant cette transaction dans la blockchain.

Fiabilité de la blockchain

Dans la pratique, une transaction est communément acceptée après 6 confirmations, ce qui prend à peu près une heure dans le cas du bitcoin.

Rythme du bitcoin, difficulté de minage

Ah ? La création de six blocs prendrait une heure ? Soit dix minutes par bloc ?

Oui, la blockchain du bitcoin a une sorte de poul, ou de rythme de croissance, qui est de un nouveau bloc toutes les dix minutes (à peu près). C’est une caractéristique qui a été choisie, et implémentée, dès le départ. Son intérêt est entre autres choses de réguler la création monétaire, qui rappelons-le est aujourd’hui de 12,5 bitcoins par nouveau bloc.

Comment ce rythme est-il tenu ?

En jouant sur la difficulté du minage, c’est à dire sur la difficulté mathématique à laquelle est soumis le hash des nouveaux blocs.

Dans l’exemple de blockchain de l’article précédent, nous avons cherché et trouvé, en quelques secondes maximum, des « nonces » permettant que nos blocs soient valides avec des hash (par la fonction de hashage du bitcoin SHA256) commençant par « 0000 ». Or si on décide que pour qu’un bloc soit valide il devra commencer par cinq, six, sept, ou plus de chiffres zéro, et non plus seulement quatre, la difficulté de l’énigme à résoudre, et donc la longueur de sa résolution, augmentera exponentiellement.

Au final, les noeuds du réseau ajustent régulièrement la difficulté mathématique du minage, de telle sorte qu’en prenant en compte la puissance informatique totale de tous les mineurs de bitcoin, on soit statistiquement sûr qu’en moyenne un nouveau bloc aura été miné toutes les dix minutes.

Un réseau ouvert mais très résistant

Avec un ordinateur et une connexion internet, n’importe qui peut créer un nouveau noeud qui s’insèrera dans le réseau. Il lui suffira de télécharger la blockchain et de laisser tourner un petit programme.

On peut donc imaginer qu’un tel réseau, si ouvert à n’importe qui, soit vulnérable à des attaques. Sauf que nous avons vu que pour insérer, disons des transactions bidons, dans la blockchain, il faudrait y diffuser des nouveaux blocs contrefaits, et arriver à les faire accepter par le reste du réseau. Or, sans rentrer dans les détails, c’est impossible à moins de contrôler 51% de la puissance de hash du réseau, ce qui est grosso modo impossible. La blockchain est virtuellement infalsifiable à moins que le parti malveillant dispose de plus de la moitié de la puissance de minage.

Les quelques vols et scandales retentissants qui ont touché le bitcoin ont concerné des acteurs de la scène bitcoin mais pas la monnaie elle-même. On a par exemple eu des hacks de sociétés dans lesquelles des clients avaient des comptes bitcoin (brokers, change de crypto-monnaie…), ou même des arnaques en bonne et due formes par des sociétés frauduleuses.

En résumé, si le bitcoin est sécurisé, nous, les utilisateurs, ne le sommes pas, ou beaucoup moins. En règle général il faut éviter de laisser trop de fonds sur des comptes dont la sécurité ne dépend pas de vous, comme les comptes qui permettent vos opérations sur des sites de change ou de trade. Même si ces sites sont très sérieux, on ne sait jamais.

Et bien-sûr, il faut aussi que vos comptes « perso » soient eux-même protégés d’intrusions extérieures dans vos équipements. Pour ça, il y a les coffres-forts virtuels comme le Ledger Wallet.

Conclusion

C’est un peu plus compliqué en vrai, mais nous venons néanmoins de voir quelles sont les grandes idées et les principes de bases à l’origine de cette monnaie électronique révolutionnaire qu’est le bitcoin, inventé par Satoshi Nakamoto.

Cette monnaie tient ses comptes conservés, et certifiés, dans une blockchain, sorte de registre partagé par les noeuds d’un grand réseau pairs à pairs, et maintenu à jour grâce à un système de consensus distribué basé sur la preuve de travail.

Maintenant, nous allons prendre un peu de recul pour voir qu’un fonctionnement comme celui du bitcoin peut servir à autre chose qu’à faire tourner une monnaie, mais aussi que la blockchain n’est pas parfaite.

To be continued…

 

 

 

1 réponse

Trackbacks (rétroliens) & Pingbacks

  1. - MGM Mag dit :

    […] Comprendre le bitcoin et la blockchain #3 : comment ça marche – Easy … […]

Répondre

Se joindre à la discussion ?
Vous êtes libre de contribuer !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *