Dans ce guide nous vous proposons une première description technique d’une transaction bitcoin depuis le téléchargement du portefeuille jusqu’à l’ajout de la transaction à la blockchain. Bien comprendre ces différentes étapes est essentiel pour ensuite comprendre les autres crypto-monnaies.
ETAPE 1 – VOTRE PORTEFEUILLE BITCOIN VA CREER VOTRE ADRESSE BITCOIN A PARTIR DE VOS CLES PRIVEES ET PUBLIQUES
La première étape est de créer une adresse bitcoin pour pouvoir recevoir et envoyer des bitcoins.
Cette adresse est issue de votre clé publique à travers un processus de hachage cryprographique. Pour bien comprendre comment le protocol Bitcoin fonctionne, il est essentiel d’avoir une idée de ce que représente le hachage cryprographique et son mode de fonctionnement. Ce système est en effet central puisqu’il est utilisé à plusieurs niveaux du cycle de circulation d’un bitcoin: pour obtenir une adresse, dans le script bitcoin et dans la “preuve de travail” realisée par les mineurs.
Comme vous pouvez le constater dans le schema ci-dessous, l’adresse bitcoin est issue de la clé publique qui elle meme issue de la clé privée.
SCHEMA 1
Mais avant d’entrer dans le détail de la création de nos clés, retenons que la clé publique vous permet de recevoir des bitcoins, alors que le clé privée vous permet de les dépenser. Si on compare le paiement avec des bitcoins au paiement par carte bancaire dans un magasin, la clé publique correspond à votre numéro de carte bancaire, celui qui vous identifie et que vous pouvez transmettre sans trop de risques, et la clé privée correspond à votre code secret, qui vous permet de valider le payement et que vous ne devez surtout pas divulguer.
Lorsque vous téléchargez un portefeuille pour conserver vos bitcoins, les clés privées et publiques n’apparaissent pas mais elles sont générées automatiquement par le portefeuille, de même que votre adresse bitcoin. Vous n’accederez et ne transferrerez que votre Adresse Bitcoin. Comme le montre le SCHEMA 1 ci-dessus, votre Adresse Bitcoin est obtenue en appliquant un double hachage (SHA256 et RIPEMD160) à la clé publique pour obtenir ce qu’on appelle la “Public Key Hash” (20bytes/160bits). Cette derniere est ensuite encryptee en utilisant un Base58Check système pour obtenir une Adresse Bitcoin.
Pour aller plus loin: Qu’est ce qu’un algorithme de hachage? Il s’agit d’une formule mathématique qui est appliquée à un nombre variable de données (l’”input”) en vue de les transformer en un nombre fixe de données correspondant à l’emprunte digitale des données (“output”). Dans le cas de l’algorithme SHA256, la taille du code est toujours 256 bits. Le système du hachage est utilisé dans beaucoup d’autres domaines que le bitcoin pour verifier facilement que les données intiales (“input”) n’ont pas été changées. En effet deux input différents ne peuvent pas donner un output identique.
Par exemple si nous soumettons la phrase “Bitcoin est une monnaie d’avenir” a l’algorythme SHA256 nous allons obtenir un code de 256 bits qui ressemblera au code suivant: “0f7becfd3bcd1a82e06663c97176add89e7dee0268de46f94e7e11bc3863e148”. Maintenant si nous ajoutons un point à la phrase et le re-soumettons à l’algorithme, le code obtenu sera totalement différent (même si il aura toujours 256 bits). En d’autres termes, il est impossible de trouver deux inputs différent qui donneraient le même output.
Il est également important de rappeller que l’algorithme de hachage ne fonctionne que dans un sens et qu’il est impossible de retrouver l’input a partir de l’output.
De manière tres schématique nous pourrions nous figurer le mechanisme de hachage comme une presse qui reduirait un ou plusieurs elements de nature (chiffres, lettres, symbols) et de longueur différentes (input) en un seul code de 256 bits (output).
Si vous souhaitez en savoir plus sur ce conept vous pouvez vous rendre sur notre article Hachage Cryptographique – Le guide pour tout comprendre.
ETAPE 2 – VOTRE PORTEFEUILLE VA ENSUITE CREER UNE TRANSACTION EN COMBINANT LES INFORMATIONS ISSUE DE LA TRANSACTION PRECEDENTE (CELLE QUE VOUS AVEZ RECUE) AVEC CELLES DE VOTRE DESTINATAIRE
Imaginons une transaction où Alice souhaite transférer un bitcoin à Bob. A ce stade, Alice et Bob ont tous les deux un portefeuille et donc chacun un jeu de clé privé/publique et une adresse bitcoin.
Bob transmet à Alice sa clé publique encodée sous la forme d’une Adresse Bitcoin. Cette Adresse Bitcoin peut être transmise à n’importe qui par n’importe quel moyen, que ce soit par mail ou par QR code.
Dès reception, Alice (ou plutot son portefeuille) va inclure les informations de cette adresse dans la transaction qu’elle va créer, pour que bob puisse ensuite prouver avec sa clé privé que la transaction lui été bien destinée.
Comme le montre le schema 2 ci-dessous, Les transactions sont liées les unes aux autres dans la blockchain. L’output d’une transaction, qui inclu le montant qu’Alice souhaite transférer à Bob et les informations de l’adresse de Bob (dans le PubkeyScript) est inclu dans l’Input de la transaction suivante.
Et c’est logique, parce qu’un bitcoin c’est en fait un droit à dépenser qui peut être activé grâce à une clé privé. Il est donc toujours conseillé de conserver vos clés privées en sécurité parce que perdre sa clé privée, revient à perdre l’unique preuve que vous avez le droit de dépense un bitcoin, ou plutôt l’output de la transaction qui a été créé pour vous en utilisant un cadena (le signature script) que seul votre clé privé peut ouvrir.
Il est important de noter que votre portefeuille a la capacité de combiner le montant de plusieurs transactions que vous avez reçu dans le passé en vue d’envoyer le montnant exacte que vous souhaitez.
Pour aller plus loi – En pratique, le portefeuille d’Alice re-transformer l’Adresse Bitcoin en “Public Key Hash” pour créer sa transaction. Rappelons que cette “Public Key Hash” a été intiallement créée par Bob et contient donc les informations de sa clé publique et de sa clé privée. C’est essentiel parce que Bob va utiliser sa clé privée pour obtenir le payement.
Alice va utiliser le “Public Key Hash” de Bob pour créer un “Pubkeyscript”. Vous pouvez comprendre le “Pubkeyscript” comme un cadenas à code que vous pouvez ouvir uniquement en alignant les 3 ou 4 bons numéros. Or cette combinaison est contenue dans ce qu’on appelle la “Signature script” qui est concue à partir des clés privée et publique que Bob devra fournir pour dépenser (c’est à dire pour créer une nouvelle transaction) à son tour les Bitcoins qu’il aura reçu d’Alice.
Alice va donc constituer une transaction à partir d’une transaction existante (version 1) en suivant les étapes suivantes:
1 – En utilisant ses propres clé privées et publiques, elle créé un “Signature Script” dans l’Input de la transaction Version (2) et ainsi débloque l’Output de la transaction Version 1. En d’autre termes, son “Signature Script” (celui de la version 2) est le code requis par le “PubKey Script” (celui de la version 1), qui avait été créé à partir de son Adress Bitcoin.
2 – Creation d’un nouvel “Output” par Alice: Elle peut maintenant inclure le montant de bitcoin présent dans l’Output de la transaction version (1), dans l’Output de la Transaction version (2) et le fermer grace au cadenas “Pubkey Script” créé à partir de l’Adresse Bitcoin de Bob. Ainsi seul Bob sera en mesure d’ouvrir le cadenas et dépenser l’Output en créant à son tour une transaction en suivant exactement le même processus.
3 – La transaction est ensuite envoyée sur le réseau bitcoin et les membres mineurs vont déterminer si le code utilisé par Alice (sa “Signature Script”) permet bien d’ouvrir le cadenas de l’Output précédent (le “Pubkey Script” de la transaction Version 1). Si c’est le cas, la transaction sera ajoutée à la Blockchain pour que Bob puisse y accéder.
ETAPE 3 – VOTRE PORTEFEUILLE VA ENVOYER LA TRANSACTION AUX AUTRES MEMBRES DU RESEAU ET NOTAMMENT AUX MINEURS QUI VONT SE CHARGER DE VERIFIER LA VALIDITE ET DE L’AJOUTER A UN BLOCK
Le minage de bitcoin est central dans le fonctionnement du système.
Un nouveau block est ajouté à la blockchain toutes les 10 minutes. Pour chaque block les mineurs:
- verifient si les transactions envoyées sur le réseau sont correctes,
- les assemblent dans un block,
- calcul le hashage du “header” de ce block en réalisant le « Proof of Work«
- si il est accepté par le reste du réseau, il est ajouté à la blockchain,
- Le mineur obtient la récompense qui correspond (coinbase + frais ajoutés à chaque transactions).
LES ETAPES SONT LES SUIVANTES:
1. Vérification de la validité des transactions qu’il reçoit et regroupement de ces transactions dans un même lot (“memory Pool”) en attendant qu’il y en ait suffisament pour les ajouter dans un block. Ces verifications visent à determiner si les transactions ont bien été consitituées en accord avec les règles du protocol Bitcoin, telle que l’existence d’un output suffisant pour constituer la transaction, un script de deverrrouillage correspondant au script de verouillage, ou encore plus simplement que la syntaxe des transactions est correcte.
Le “Memory Pool” auquel nous faisons reference ne doit pas etre confondu avec les “Mining Pools” qui sont des regroupements de mineurs generallement de plus petite taille qui ajoutent leur puissance informatique pour tenter de gagner la course de la creation de blocs de transactions.
2. Simultanement, le mineur va constituer un bloc qui est composé de deux parties: une tête (“Header”) dans laquelle sont stockées des informations concernant le block en constitution et un corp (“Body”) incluant toutes les transactions du block sur forme d’un “Merkle tree” (litteralement un arbre de Merkle”). Pour bien comprendre comment la blockain est organisée, il est important de comprendre chacun de ses compostantes décrit dans le “header” et le “Body” de chaque block:
MERKLE TREE: le Merkle Tree (“arbre de Merkle”) est une méthode perméttant de structurer des données en vue d’y accéder plus facilement et d’en verifier la véracité plus rapidement. Comme vous l’aurais compris, le nom vient du fait que cette méthode organise les données en les regroupant par deux, donnant ainsi la forme d’un arbre renversé. En effet, les transactions sont regroupées par groupe de deux, un hachage est ensuite appliqué à ce groupe. Les groupes sont ensuite regroupés par groupe de deux puis soumis au même procédé jusqu’au dernier hachage appelé la racine (“Merkle Root”) qui lui est ajouté comme référence dans le “Header” du block.
Cette organisation des transactions au sein d’un block va permettre au mineurs lors de la vérification des nouvelles transactions, de remonter très rapidement vers la dernière transactions concernée et ainsi vérifier si il existe bien un output d’un montant supérieur à celui qui doit être dépensé dans la nouvelle transaction (voir schéma ci-dessus).
ETAPE 4 – LE MINEUR VALIDE LE HACHAGE DU HEADER GRACE AU « PROOF OF WORK » ET LE COMMUNIQUE AU RESEAU AVANT D’AJOUTER LE BLOCK A LA BLOCKCHAIN
Comme nous l’expliquons dans notre article « Une explication simple de Proof of Work« , dans un réseau décentralisé tel que ceux reposant sur une blockchain, la difficulté est de mettre d’accord tous les membres sur l’ordre des transactions qui doivent y être ajoutées. C’est toute la question du Conensus entre les membres du réseau. Proof of Work est un des mécanismes qui permet d’atteindre cet accord tout en assurant la sécurité du réseau. Et pour cela n’importe qui ne doit pas être en mesure d’ajouter des blocks à la blockchain comme il l’entend et obtenir la récompense. Il doit d’abord prouver son implication en mettant à la disposition des membres du réseau les capacités de calcul de son ordinateur (aujourd’hui un ordinateur ne suffit plus à miner le bitcoin, seul les fermes de minages et les mining pools peuvent encore participer).
Le mécanisme de “Proof of Work” peut s’expliquer en des termes relativement simples: c’est le fait pour un participant du réseau (dans le cas du bitcoin, un mineur) de présenter à l’ensemble des autres membres du réseau, le résultat des calculs qu’il a effectué. Les opérations à réaliser ne sont pas en elles mêmes compliquées, mais doivent être réalisées un nombre de fois tel que le mineur doit engager d’importantes capacités informatiques (CPU). Le mineur doit en effet trouver un chiffre au hazard (Le « Nonce »). Pour cela il va tenter sa chance jusqu’à ce qu’il le trouve. Il va appliquer l’algorythme de hachage à un même groupe de donnée (le hachage du block précédent) jusqu’à ce qu’il obtienne le résultat qu’il cherche.
Si il est le premier à découvrir le Nonce et à le transmettre au reste du réseau, le mineur aura gagné le droit d’ajouter le block à la blockchain et de récolter la récompense en bitcoins et en frais attachés aux transactions.
J’espère que cet article vous a permis de mieux comprendre comment fonctionne le Bitcoin. Si c’est la cas n’hésitez pas à LIKER et PARTAGER cet article. Vous pouvez également poser vos questions en commentaire!