Si vous voulez me faire une donation en Bitcoin, voilà une adresse : 3EfwTwUQnBq7g5AKaHGGKJUMnfP6doShon

Présentation téléchargeable sur Slideshare

1. C’est quoi le bitcoin

Bitcoin comment ça marche ? Commençons par étudier un peu ce qu’est cette cryptomonnnaie décentralisée.

  • Nom : Bitcoin
  • Surnom : BTC
  • Date de lancement : 03 Janvier 2009
  • Créateur(s) : Satoshi Nakamoto

Le code de Bitcoin est Open Source. Vous pouvez le consulter sur Github.Beaucoup d’entrerprises, de développeurs particuliers, etc y travaillent dessus.

Cela peut vous sembler inhabituel comme approche si vous n’êtes pas familier avec le monde de l’open source mais dans le cas de Bitcoin, la communauté est énorme donc cela évite de potentielles dérives et les modifications importantes sont débattues avant implémentation.

Cela peut par contre poser un problème sur la rapidité des décisions qui peuvent parfois être très longues.

Bitcoin est une crypto monnaie décentralisée. Définissons rapidement chacun de ces termes.

C’est quoi une cryptomonnaie

Crypto provient de Cryptographie : l’art de chiffrer des informations.
Un exemple simple :

BITCOIN -> CJUDPJO
On a crypté le mot bitcoin en faisant un décalage des lettres de 1. B -> C, I -> J, etc.

Cet exemple est bien sûr très facile et Bitcoin fonctionne sur un modèle bien plus complexe qu’on expliquera un peu plus loin.

Monnaie, vous connaissez tous, parmis, les plus connues on retrouve l’euro €, le dollars américains $, le yuan chinois ¥, la Livre sterling (pound) £, …

Décentralisée ça veut dire quoi ?

Le centralisation décentralisation est un concept qui peut s’appliquer à bien des domaines, mais dans le contexte des cryptomonnaies on a :

  • Système centralisé : le pouvoir de décision / le contrôle est regroupé au sein d’une même entité.
  • Système décentralisé : le pouvoir/contrôle est réparti entre plusieurs entités.
Bitcoin Décentralisé
Exemple de réseau centralisé et décentralisé

Comment utiliser ses bitcoins

Pour utiliser des bitcoins il vous faut 3 choses :

  1. Des bitcoins (logique hein ?)
  2. Un portefeuille ou wallet avec une adresse
  3. Une interface pour envoyer ou recevoir.

En pratique voilà comment se passe une transaction pour un utilisateur : 

  1. Le receveur vous donne l’adresse. Cette adresse ressemble à une suite de caractères comme par exemple : 3aze87DqsjHg876dsq976jkhqsd676DgJQS. Cette adresse peut aussi se matérialiser sous forme de QR Code, c’est bien plus simple pour envoyer de l’argent que de devoir taper les caractères 1 à 1 😉
  2. L’expéditeur renseigne sur son interface l’adresse (ou il scanne le QR Code)
  3. L’expéditeur indique le montant de bitcoins qu’il veut transférer à cette adresse
  4. L’expéditeur envoie le paiement

Sur certaines interfaces, l’expéditeur peut renseigner des frais. La plupart du temps, ces frais sont suggérés pour vous mais vous pouvez parfois les choisir manuellement. On en verra l’intérêt un peu plus tard.

2. Bitcoin : Fonctionnement détaillé

Vous n’avez pas besoin de savoir comment ça marche sous le capot pour l’utiliser. Mais, quand on met de l’argent dans quelque chose, action, tracker, immobilier, … c’est bien d’en comprendre le fonctionnement non ? 🙂 

C’est à partir de maintenant qu’il faut vous accrocher car on va voir des termes compliqués et nouveaux comme clé privé, signature, seed, blockchain, proof of work, etc

Prêt ? C’est parti ! 

Un ami vous propose d’échanger 0.0025 BTC contre 20€ pour vous faire découvrir les cryptomonnaies.

D’ailleurs 0.0025 BTC = 250 000 satoshi. Un peu comme 1€ = 100 centimes.

Bien, pour cela, vous avez besoin d’un portefeuille et d’une adresse. Voyons comment tout cela fonctionne : 

3. Portefeuille et adresse, comment ça marche ?

Comme vu précédemment, un nouvel utilisateur, pour recevoir des bitcoins pour la première fois va avoir besoin de créer une adresse. 

Pour créer une adresse vous allez avoir besoin de ce qu’on appelle un portefeuille. Vous avez différents types de portefeuille : 

  1. Les applications mobiles (Android, iOS, …)
  2. Les applications sur ordinateurs (Windows, Mac, Linux)
  3. Les applications internet (sur le web, avec une adresse internet : https://www…)
  4. Les Hardware Wallet (portefeuille “physique”)
Choisir un portefeuille Bitcoin

Sécurité de vos Bitcoin

  1. Chaque type de portefeuille a des avantages et des inconvénients. C’est une étape très importante car le choix de type de portefeuille puis de votre portefeuille implique la sécurité de vos bitcoins et de vos crypto monnaies en général.
  2. Attention aux faux portefeuilles (surtout les portefeuilles physiques qui peuvent être très ressemblants)
  3. Ne criez pas sur tous les toits que vous avez des bitcoins

Moteur de recherche de portefeuille : https://bitcoin.org/fr/choisir-votre-porte-monnaie?step=5

Note : bitcoin . com n’est pas le site officiel de Bitcoin (BTC) mais est un site détenu par Bitcoin Cash (BCH). La tournure des phrases peut parfois prêter à confusion pour les débutants et tend à vous faire croire que BCH est le vrai bitcoin. Ils utilisent même parfois le mot bitcoin pour décrire bitcoin cash. Si vous débutez utilisez bitcoin . com ou le portefeuille utilisé par bitcoin . com avec prudence.

Note 2 : Bien que la “Coinbase wallet” ne soit pas listé sur bitcoin.org principalement pour cause d’une gue-guerre stupide, elle est très utilisée et se range dans la catégorie des applications mobiles. Ce n’est en rien une recommandation pour utiliser la wallet de coinbase. Faites vos recherches.

Processus de création d’une adresse

Après choix de votre portefeuille, votre adresse va être créée par le portefeuille que vous avez choisi. Mais alors comment ?

Le portefeuille créé aléatoirement ce qu’on appelle une Clé privée.

Voilà à quoi ressemble une Clé privée :

E9873D79C6D87DC0FB6A5778633389F4453213303DA61F20BD67FC233AA33262

Pas facile à retenir on est d’accord. C’est pourquoi cette clé privée peut être générer de différentes façons et l’une des méthodes est de la générer avec une “Seed” (Graine), la Seed peut parfois être une suite de mots facile à retenir.

Exemple pour une Seed de 12 mots : 

abandonbalance
designelephant
sirenhamster
giraffeumbrella
winneremotion
runkiwi

La clé privée est créée à l’aide de cette “Seed” et parfois d’un mot de passe additionnel que vous choisissez.

Comment stocker ses bitcoins ?

Il existe plusieurs méthode de stockage à froid. On voit par exemple sur la photo ci-dessous la stockage sur Papier qui est risqué car ne résiste pas à l’eau, aux incendies, aux insectes, vieillit mal, … et sur un alliage qui en général est fait pour résister à de forte températures, à la rouille, etc.

Stockage à froid Bitcoin

Comment on passe de la Seed à la Clé privée ?

Pour obtenir la Clé privée, on passe la Seed dans une fonction à sens unique appelée HMAC-SHA512.

Exemple de fonction classique : 

  • f(x) = x * 4
  • f(5) = 5 * 4 = 20
  • f(100) = 100 * 4 = 400

HMAC-SHA512 est une fonction de hashage cryptographique. On dit de ces fonctions qu’elles sont à sens unique. Par exemple, si vous mettez des fruits dans un mixeur, il est facile d’obtenir du jus de fruit, mais impossible d’obtenir des fruits avec le jus de fruit.

C’est à dire qu’avec la Clé privée, personne ne peut deviner la Seed. Mais avec la Seed on peut obtenir la Clé privée.

Certains portefeuilles vous proposerons d’enregistrer cette Seed ou la Clé privé ou ne vous proposerons rien, dans ce dernier cas c’est eux qui gardent les Clés privées et vous leur faite confiance pour la sécurité. C’est pour cela qu’il est important de bien choisir son portefeuille et de comprendre les différents moyens de stockages de vos bitcoins et de vos crypto monnaies en général.

Seed ou Clé privé sont les clés de vos bitcoins. Protégez les et conservez en plusieurs copies dans des lieux de confiance, si vous les perdez ou qu’on vous les voles, on vous vole vos bitcoins.

Bon ok, une Seed pour générer une Clé privée, et maintenant on en fait quoi ?

Une Clé publique ! Haha

Et comment ?

À l’aide de la Clé privée et d’une fonction appelée secp256k1, un nom de fonction barbare qui a pour représentation graphique une courbe elliptique et pour équation y2 = x3 + 7

À l’aide de cette Clé publique, on utilise une autre fonction à sens unique pour générer une Adresse.

On a donc fait : 

Seed -> HMAC-SHA512 ->Clé privée -> secp256k1 -> Clé publique -> SHA-256 et RIPEM-160 -> hash de la clé publique -> base 58 -> Adresse

Ou plus simplement :

Seed -> Clé privée -> Clé publique -> Adresse

Cette adresse va vous permettre de recevoir vos premiers bitcoins, vous la donnez à votre ami qui vous envoie, comme convenu, les 0.0025 BTC.

Chouette, maintenant que vous avez des bitcoins, étudions ce qu’il se passe lorsque vous transférez vos bitcoins sur une autre adresse. Peut importe la raison, que ce soit pour acheter quelque chose, échanger vos bitcoins contre des €, donner vos BTC, etc.
La procédure est toujours la même : on a un expéditeur qui crée une transaction à destination d’un receveur.

Utilité de la Seed, Clé privée, Clé publique, Adresse :

  • Seed : un moyen facile de retenir sa clé privée et de la retrouver
  • Clé privée : un moyen d’accéder à ses bitcoins
  • Clé publique : Vérifier que vous avez bien signé la transaction lorsque vous envoyez vos bitcoins
  • Adresse : un moyen de recevoir des bitcoins
  • Signature : Vérifier que le propriétaire de la clé privé (donc des fonds) autorise la dépense.
Bitcoin : Seed (Graine), clé privée, clé publique et adresse, comment ça marche ?

4. Création d’une transaction

Maintenant que vous avez vos 0.0025BTC, vous pouvez les utiliser (ou les garder mais ici on cherche à montrer le fonctionnement d’une transaction donc je vous force un peu à les dépenser 😉).

Vous allez acheter une Pizza qui vaut 10€ ! Disons pour simplifier que 10€ = 0.0010 BTC.

Vous ouvrez votre wallet (portefeuille), vous scannez le QR code équivalent à l’adresse, vous insérez le montant de BTC que vous voulez envoyer, soit 0.0010BTC et vous appuyez sur “Envoyer”.

Que ce passe-t-il lorsque vous appuyez sur “Envoyer” ?

Votre Wallet va mettre en place une transaction qui va être envoyée au réseau. 

Cette transaction comprend : 

Montant à payer au receveur0.010 BTC
Adresse du receveur3aze87DqsjHg876dsq976jkhqsd676DgJQS
Clé publique0202a406624211f2abbdc68da3df929f9
38c3399dd79fac1b51b0e4ad1d26a47aa
Signature3045022100884d142d86652a3f47b
a4746ec719bbfbd040a570b1deccb
b6498c75c4ae24cb02204b9f039f
f08df09cbe9f6addac960298cad53
0a863ea8f53982c09db8f6e381301
Montant pour les frais de minage0.000012 BTC
Transaction Bitcoin
Exemple de transaction bitcoin
Exemple de transaction Bitcoin

Vous voyez qu’on retrouve les éléments verts, Clé publique, Adresse, Signature qui vont être partagés sur le réseau.

Bien-sûr, la transaction contient d’autres éléments mais que je considère trop technique pour cette démonstration. Si vous aimez la technique et que vous êtes capable de la comprendre, lisez le livre d’Andreas Antonopoulos “Mastering Bitcoin” : https://amzn.to/2zSGOA6 (lien affilié)

C’est quoi la Signature ?

La signature a été générée avec la clé privée et la transaction

La signature est un moyen d’attester que l’expéditeur est bien en possession de la clé privé et donc des fonds pour une transaction donnée : c’est un engagement.

Comment est générée la Signature ?

Pour générer la Signature, une fonction à sens unique est utilisée (ECDSA) basée sur une courbe elliptique (pour les matheux). La clé privée et les informations de la transaction sont utilisée.

Puisque les informations de la transaction changent à chaque fois, cette signature est unique à chaque transaction. C’est important car elle ne peut pas être réutilisée une fois rendu publique.

5. Le réseau Bitcoin / The Bitcoin Network

Lorsque la wallet a terminée de mettre en place la transaction (c’est vraiment très très très rapide…) elle va être envoyée au réseau ! 

Propagation de la transaction dans le réseau bitcoin
Propagation d’une transaction dans le réseau Bitcoin

C’est lorsque vous envoyez des fonds pour la première fois en provenance d’une adresse que votre clé publique sera révélée au réseau.

Pour Bitcoin, tout se passe dans le réseau. C’est un réseau Peer-to-peer (P2P), n’importe qui peut participer. Si vous avez une connexion internet, un ordinateur et que vous télécharger le programme Bitcoin vous pouvez participer.

C’est quoi les nodes (nœuds) Bitcoin ?

Le réseau bitcoin est composé de plusieurs participants qu’on appelle “nodes” et ces participants, Ordinateurs, serveurs, … qui communiquent via internet

Ces nodes appartiennent à des entreprises, des particuliers, …
Vous pouvez très bien participer au réseau avec un ordinateur et une connexion internet.

Voici les principaux rôles occupés par ces nodes : 

  • Wallet : Récupérer les transactions liées aux clés privées et transmettre les transactions de l’émetteur 
  • Full node : Vérifier la validité des transactions et des blocs
  • Mineur : Créer des blocs

À savoir que certaines nodes peuvent avoir plusieurs rôles. Exemples :

  • une node peut avoir le rôle mineur et full node (Solo miner)
  • une node peut avoir le rôle mineur, full node et wallet (Bitcoin core)

Les nodes qui occupent le même rôle, sous toutes soumises aux même règles. Il n’y a pas de node a laquelle le réseau accorde plus de confiance, les nodes qui occupent le même rôle sont égales.
Si par exemple vous lancez votre node vous n’aurez ni plus ni moins de pouvoir qu’une node qui existe depuis 2010 ou que quelqu’un qui est très influent dans la communauté Bitcoin.

Revenons en à notre transaction, elle est propagée par votre wallet et elle va être vérifiée par les nodes qui ont un rôle de vérification. Les nodes peuvent avoir plusieurs rôles

La vérification s’opère selon plusieurs règles qui sont définis dans le code source de bitcoin.

Par exemple : 

  • S’assurer que les bitcoins dans la transaction n’ont pas déjà été dépensés
  • S’assurer que la signature est correcte

Comment la signature est vérifiée ?

La node va examiner transaction, signature et clé publique, pour vérifier la validité de la signature.

Il existe une relation mathématique entre la clé privée et la clé publique qui permet d’utiliser la clé privée pour signer [une transaction] , et la clé publique pour valider cette signature sans révéler la clé privée.

Andreas Antonopoulos – MAstering Bitcoin

Seul le détenteur de la clé privée qui a généré cette clé publique aurait pu produire cette signature sur cette transaction.

ANDREAS ANTONOPOULOS – MASTERING BITCOIN

Une lecture plus accessible aux débutants d’Andreas Antonopoulos est “L’internet de l’argent” : https://amzn.to/36Ntk4S (lien affilié)

Maintenant que vous avez bien compris le fonctionnement de ces éléments et surtout de la clé privée, c’est le bon moment pour moi d’évoquer les plateformes d’échange.

Comment acheter des bitcoins ?

Il existe des plateformes d’échange qui vous permettent d’acheter ou de vendre des bitcoins. Un peu comme les courtiers en bourse. À ne pas confondre avec les wallets dont l’utilité et les fonctionnalités sont différentes.

Vous devez savoir que les plateformes d’échange gardent vos clés privées donc vous remettez votre sécurité entre leurs mains.

Il y a énormément de plateformes d’échange et vous devez rester méfiant quant à quelle plateforme vous utilisez. C’est un domaine qui n’est pas encore assez régulé et il y a beaucoup d’arnaques !

Coinbase et Kraken sont des plateformes reconnues dans la communauté de la crypto (cryptomonnaies)

Il me semble que, et c’est à vérifier, Kraken est moins cher mais le service client n’est pas en français ni certaines pages d’aide de leur site. Cela sera sûrement résolu dans les prochaines années.

Que ce passe-t-il avec la transaction une fois qu’elle est vérifiée par les nodes ?

  1. La transaction va être envoyée aux autres nodes qui sont connectées à cette node et elle feront la même chose
  2. La transaction est mise dans la mempool de la node qui vient de la vérifiée

C’est quoi la mempool ?

Mempool = memory pool = transaction pool. C’est une piscine de transactions vérifiées mais pas encore confirmées. Une zone de stockage de ces transactions en attendant la suite (Le Minage).

Vérifiée, confirmée, c’est quoi la différence ?
Vous pouvez comprendre vérifiée comme valide (la transaction ne contient pas d’erreur, l’expéditeur n’essaye pas de dépenser des bitcoins qui ne lui appartiennent pas, etc…).
Confirmée pourrait être proche de “Reçue”, reçue par le receveur.

6. Le minage

Le processus de minage est essentiel si on veut comprendre pour répondre à la question Bitcoin comment ça marche ?

C’est quoi un mineur bitcoin ?

Mineur bitcoin et ferme de minage
Un mineur bitcoin (à gauche) et une ferme de minage (à droite)

Comment un mineur créé un bloc ?

Imaginons que la node qui a reçu et validé la transaction occupe aussi le rôle de mineur. 

Elle pioche dans sa mempool de transactions validées un maximum de transactions possibles et les regroupe pour en créer un bloc. En général, les transactions avec les frais les plus hauts seront traitées en premier car le mineur gagne plus d’argent.

Ce bloc est appelé bloc candidat car il n’est pas encore validé (même si toutes les transactions dans ce bloc sont validées).

Il contient également la récompense du mineur : la “transaction Coinbase” à ne pas confondre avec la plateforme d’échange Coinbase 🙂

De quoi est constitué un bloc candidat ?

  • Plusieurs transactions
  • Un “header” (en-tête) qui contient plusieurs informations dont une référence au bloc précédent
Bloc candidat Bitcoin

C’est quoi la transaction Coinbase ?

C’est la récompense qui sera versée au mineur si il mine le bloc avec succès.

De combien est cette récompense ?

La récompense diminue tous les 4 ans. En 2020 elle est de 6.25 BTC par bloc miné. En 2009, lors du lancement cette récompense était de 50 BTC. En 2040, la récompense sera d’environ 0.19 BTC jusqu’à atteindre 0 en 2140.

Halving Bitcoin

Les mineurs ne se rémunéreront alors qu’avec les frais de transaction.

Voilà un graphique qui montre l’évolution de la masse monétaire de Bitcoin.

Évolution masse monétaire de Bitcoin

Le nombre maximum de Bitcoin sera toujours de 21 millions. On voit qu’en 2020, il y a déjà 18 500 000 bitcoins en circulation.
Ces bitcoins sont injectés dans le système via la transaction coinbase de chaque bloc.

Cette limite de 21 000 000 de bitcoins le fait tendre vers un fonctionnement similaire à une monnaie déflationniste. C’est la principale raison pour laquelle on compare le bitcoin et l’or (la quantité d’or sur terre est limitée).

Que doivent faire les mineurs pour miner un bloc ?

Les mineurs doivent résoudre un problème mathématique. Ce problème est complexe et conçu spécifiquement pour les ordinateurs.

La difficulté de ce problème est variable et ajustée tous les 2016 blocs (environ 14 jours) en fonction de la puissance de minage sur le réseau pour qu’un bloc soit miné en moyenne toutes les 10 minutes.

Pourquoi 10 minutes entre chaque bloc ?

Principalement pour éviter trop de split (séparation) sur la blockchain (nous expliquerons cela un peu plus loin).
Le(s) fondateur(s) de Bitcoin, Satoshi Nakamoto, a défini 10 minutes comme une bonne balance pour que les mineurs ne “minent pas trop dans le vent” à cause de ces splits.

Bon, expliquons tout ça !

À quoi ressemble ce problème mathématique que les mineurs doivent résoudre ?

Vous vous souvenez de la fonction SHA-256 dont on a parlé lors de la génération de votre adresse ? Et bien les mineurs utilisent la même pour résoudre le problème.

Lorsque l’on passe un contenu à la fonction sha256, on se retrouve avec un résultat.
Exemple si on prend le texte “Brigade Du Fric” :

sha256(Brigade Du Fric) = 6c5adc1adeec9200c0f0c93cf52bea077a2a33e3918fa39c6f3af5175e11d8f5

Et maintenant, essayons de changer à peine le texte en utilisant “Brigade Du Fric!” (on ajoute un point d’exclamation) :

sha256(Brigade Du Fric!) = 0f27c623535e41327d736e8c3d04eeccfcf8a6ebe8ddf73c5932889076d4fb05

Si vous allez essayer en ligne, avec “Brigade Du Fric” et “Brigade Du Fric!” vous obtiendrez exactement le même résultat.

Vous voyez que malgré un tout petit changement (l’ajout du point d’exclamation) le résultat est complètement différent

Vous pouvez essayer avec énormément de texte par exemple en copiant collant le contenu de toute une page Wikipédia. Changer un seul caractère, ajouter un espace, etc va complètement changer le résultat.

Avec sha256, le mineur n’utilise pas n’importe quel “texte” mais il utilise le header du block. Et il y a plusieurs informations dans le header qui permettent d’obtenir un texte aléatoire la date et l’heure, la liste des transactions et surtout le nonce dont le seul objectif est d’être un caractère aléatoire qui permet donc d’obtenir un résultat différent.

Chaque bloc est unique de par ses transactions, la date, l’heure, etc donc sha256 produit un résultat unique.

Le but du nonce est d’aidé le mineur à produire un résultat différent. En effet si le mineur utilise le nonce 1, i obtiendra un résultat, si il change ce nonce à 2, le résultat sera complètement différent alors que toutes les autres informations du header ne changent pas.

Quel est l’objectif du problème du mineur ?

L’objectif est de trouver une suite de caractères qui commence par plusieurs 0. Plus le nombre de 0 demandé est élevé, plus le calcul est complexe et bien-sûr cette difficulté est ajustée (tous les 2016 blocs) en fonction de la rapidité des mineurs et de la puissance de calcul sur le réseau.
Plus on avance dans le temps, plus le matériel de minage est puissant et peut effectuer des calculs rapidement.

Concrètement à quoi ressemble ce problème et que fait le mineur ?

Imaginons que la difficultée actuelle du réseau indique au mineur qu’il faut trouver 8 zéros ou plus pour trouver une bonne réponse.

Le mineur va commencer à compiler son bloc en changeant peu à peu le nonce pour trouver une bonne réponse.

Sur l’image ci-dessous, le mineur à trouvé une réponse au bout de 2 573 394 689 changement de nonce.

Le problème que les mineurs doivent résoudre

Il y a un nombre immense de résultats possibles et la meilleure solution pour les mineurs reste donc de deviner en essayant énormément de combinaisons pour trouver une chaine de caractère qui commence par le même nombre de 0 ou plus.

Il n’a pas d’autres méthode qui lui permette de triché. Si il met un nonce au hasard, les autres nodes verront en essayant avec la fonction sha256 et les mêmes paramètres que le résultat est différent.

Le problème de minage du bitcoin expliqué simplement

Imaginez que je vous donne 2 dés. D’un côté je vous dis “obtiens un résultat inférieur à 10” de l’autre je vous dis “obtiens un résultat inférieur à 4”.

Voici les possibilités qui vont s’offrir à vous :

  • Obtiens un résultat inférieur à 10 :
    6 et 3, 6 et 2, 6 et 1,
    5 et 4, 5 et 3, 5 et 2, 5 et 1,
    4 et 4, 4 et 3, 4 et 2, 4 et 1,
    3 et 3, 3 et 2, 3 et 1,
    2 et 2, 2 et 1
    1 et 1
  • Obtiens un résultat inférieur à 4 :
    2 et 1
    1 et 1

Vous voyez que ce sera bien plus facile et donc rapide si vous devez faire un lancé inférieur à 10 plutôt que de faire un lancé inférieur à 4 car le nombre de possibilités est limité.

Pour les mineurs c’est le même principe mais avec le nombre de 0.

Que ce passe-t-il une fois que le problème du bloc est résolu ?

Le mineur ajoute le nonce dans le header avec les autres informations, c’est la réponse.

Cela prouve que le mineur a travaillé pour résoudre le bloc. Un concept important de bitcoin : la Proof Of Work (Preuve de travail en français).

Le mineur récupère plus tard, après ajout de son bloc à la blockchain sa récompense en provenance de la transaction coinbase et les frais de toutes les transactions de son bloc.

Il envoie ensuite le bloc au réseau pour validation de la même façon qu’une transaction, le bloc se propage dans le réseau et est validé par chaque node qui le reçoit. Ces vérifications effectuées par les nodes sont appelées les règles du consensus.

Est-ce que les mineurs sont seuls ou se regroupent-ils ?

En pratique, il y a très peu de mineurs qui œuvrent seuls, ils se regroupent dans ce qu’on appelle une mining pool (une piscine de mineurs). À plusieurs ils ont plus de chances de trouver la solution du bloc mais la récompense est bien évidemment partagée en fonction de la puissance apportée par chaque mineur.

Tout cela nous amène à la blockchain !

7. La blockchain

Lorsqu’une node reçoit le bloc de la part du mineur, elle le vérifie et si tout est dans l’ordre, elle va l’ajouter à sa blockchain : la suite de blocs.

Sa blockchain ?

Oui, chaque node (full node) a une copie complète de la blockchain. Quand un bloc se propage chaque node le vérifie et l’ajoute à sa propre blockchain. Puisque ces nodes obéissent aux mêmes règles, leurs blockchains se ressemblent.

Quand la plupart des nodes ont effectué cette opération on dit qu’elles ont atteint le consensus.

Le fait que chaque node est une copie de la blockchain et qu’elles agissent indépendamment dessus démontre encore le côté décentralisé du bitcoin. Vous pouvez vous-même télécharger la blockchain et lancer votre node.

C’est pour cela que si une partie du réseau venait à être déconnecté, cela n’affecterai pas vos bitcoins.

Vous pouvez explorer la blockchain ici.

Et si 2 mineurs résolvent un bloc en même temps ?

Ah, on vient de mettre le doigt sur quelque chose d’intéressant !

La propagation dans le réseau prend du temps donc il se peut qu’un autre (ou des autres) mineur résolve un bloc presque au même moment.

Comment l’un ou l’autre bloc est choisi ? Eh bien il ne sont pas choisi, on a un split (une séparation) de la blockchain.

Séparation de la Blockchain de Bitcoin

Les mineurs vont aléatoirement miner le bloc suivant sur l’un des deux blocs et lorsqu’un autre bloc est trouvé il sera ajout.

Chaine la plus longue sur la Blockchain de Bitcoin

Pour Bitcoin, la règle est que la chaîne qui a le plus de preuve de travail, celle qui est la plus longue l’emporte. Les nodes vont donc abandonner l’autre chaine plus courte.

Blockchain Bitcoin
Blockchain Bitcoin

Les transactions contenu dans le bloc qui n’a pas été confirmée ont soient été confirmées dans les autres blocs (exemple de la transaction orange sur les images précédentes) dans ce cas, la node ne va plus s’en occuper. Et si une ou des transactions n’étaient pas incluses dans les autres bloc, la node va remettre la/les transaction(s) dans sa mempool, reconstituer un bloc candidat, et recommencer à miner pour un autre bloc (si elle a le rôle de mineur).

Le cycle de vie d’une transaction

Pour résumer ce que nous venons de voir :

  1. La transaction est envoyée au réseau par le portefeuille
  2. Elle est vérifiée par les nodes
  3. La transaction est ensuite ajoutée dans un bloc candidat par les mineurs
  4. Ce bloc est ensuite miné
  5. Lorsqu’une réponse est trouvée par un mineur, le bloc est envoyé aux autres nodes du réseau ppour validation
  6. S’il est valide il est ajouté à la blockchain !
Cycle de vie d'une transaction Bitcoin
Cycle de vie d’une transaction Bitcoin

Comment les blocs sont liés entre eux ?

Chaque bloc, dans son header contient le “hash” du bloc précédent.

C’est quoi le hash ?
C’est le résultat. Par exemple sha-256 produit un résultat, ce résultat c’est un hash. On l’appelle hash pour représenter le fait que le contenu passé à la fonction a été “hashé”.

Ce hash du bloc précédent présent dans chaque bloc sauf le bloc 0 (bloc genesis) permet de lier les blocs entre eux.

Le hash du bloc précédent représente bien plus que juste le bloc. Il représente le hash de tous les blocs avant le précédent car le bloc précédent contient aussi le hash du bloc précédent qui à son tour contient le hash du bloc précédent, etc…

Cela empêche donc à n’importe qui de trafiquer un bloc car si un bloc change, son hash change, si son hash change, tous les blocs après celui-ci changent. Il faudrait donc que cette personne re-mine tous les blocs. Chose extrêmement difficile sur le réseau Bitcoin car il est important.

La blockchain ne garantit pas l’immutabilité de Bitcoin elle permet de constater l’immutabilité mais ne la garantit pas. C’est le minage qui garantit cette immutabilité.

Où sont stockés les bitcoins ?

Vos bitcoins sont conservés dans la blockchain de chaque full node. La blockchain est une base de données, un registre de toute l’histoire des transactions de Bitcoin.

En partant de notre transaction pour acheter notre pizza, on peut remonter jusqu’au bloc ou notre amis nous a échangé les bitcoins puis jusqu’au bloc ou note ami a acquis ces bitcoins, etc, etc jusqu’au bloc de la transaction coinbase. C’est à ce moment que nos bitcoins sont “nés” et qu’ils ont été injectés dans le réseau. Ils ont bien-sûr été vendus par le mineur car c’est lui qui reçoit la transaction coinbase.

Vote portefeuille lui s’occupe simplement de récupérer les fonds qui correspondent à vos adresses dans le réseau et les additionnes.

C’est pour cela qu’en conservant votre Clé privée (ou Seed), si vous perdez votre portefeuille vous pouvez accéder à vos Bitcoins.

Attention tout de même, si vous vous faites voler votre wallet (téléphone, ordinateur, etc), changez votre clé privée et déplacez vos fonds sur une nouvelle adresse. Certaines wallets sont mieux protégées que d’autres contre cela.

Revenons à notre Pizza

Notre “bon” pizzaïolo attend ses Bitcoin, que doit il faire de son côté ?

En général il est conseillé d’attendre 6 blocs pour avoir une preuve suffisante de l’irréversibilité de la transaction. Pour une transaction peu chère comme une pizza, 1 bloc peut suffire.

Plus le montant est important plus il est conseillé d’attendre.

Notre “bon” pizzaïolo n’a pas a s’inquiéter, des solutions de plus en plus efficaces sont développés (voir lightning network plus bas) et certaines entreprises de paiement en Bitcoin prennent les transactions en charge si le montant n’a pas été payé… C’est donc sans risque pour les petites transactions. Si vous achetez une maison ou une voiture en bitcoin, il se peut que cela soit une autre histoire 🙂

Des pistes pour approfondir

L’attaque 51% : Une attaque qui peut permettre de réécrire l’histoire (où une partie). Cette attaque est extrêmement improbable sur le réseau Bitcoin.

Prix par heure d’une attaque 51% sur chaque crypto : https://www.crypto51.app/

Biens-sûr ce genre d’attaque sur Bitcoin ne serait pas laissée sans réponse et déclencherait une réaction de défense.

Le lightning network : C’est une solution en cours de développement pour répondre au problème de scalabilité de Bitcoin.

Love,
-Pierre

1 Shares:
2 comments
  1. C’est incroyable le travail que tu as fait pour expliquer le fonctionnement de bitcoin de manière simple, je ne parles pas anglais et c’est difficile de trouver un niveau de détails comme celui que tu donnes.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.