Simples à effectuer pour un utilisateur lambda qui n'a qu'à faire quelques clics, les transactions qui ont lieu sur Bitcoin sont en fait le fruit d'un processus complexe que nous allons tenter de vous expliquer le plus simplement possible dans cet article. Tout comme un automobiliste n'a pas besoin de savoir ce qui se passe sous le capot pour conduire sa voiture, un utilisateur du réseau Bitcoin peut tout à fait se passer de ces connaissances pour envoyer ou recevoir des fonds. L'article qui suit est donc destiné aux plus curieux d'entre vous, qui sont prêts à mettre la tête dans le moteur pour comprendre ce qui fait tourner la machine. Ceux d'entre vous qui ont lu le précédent sur la preuve de travail et le consensus de Bitcoin comprendront ici leur utilité.
Temps de lecture estimé : 13 minutes
Qu'est-ce qu'une transaction ?
Sur Bitcoin, il existe deux types de transactions ou « TX » pour les intimes. Le premier correspond à la création de nouveaux jetons, tandis que le second est un transfert de bitcoin d'une adresse vers une autre. Vous trouverez ci-dessous une présentation plus détaillée de ces deux types de transactions.
Les coinbases transactions
Les coinbases transactions correspondent à la création ex nihilo de bitcoins sur l'adresse d'un mineur. Il s'agit de la récompense qu'il touche pour son travail lorsqu'il valide un bloc, appelée récompense de bloc (divisées par 2 à chaque halving). Ces bitcoins n'ont jamais été dépensés auparavant.
La coinbase transaction est la première transaction ajoutée dans un bloc. En plus des récompenses de blocs, on y ajoute aussi les frais des autres transactions enregistrées sur le bloc.
Les bitcoins qui sont ajoutés dans une coinbase transactions sont soumis à un régime spécial et ne peuvent pas être dépensés avant d'avoir reçu 100 confirmations de blocs (voir plus loin).
Les transactions UTXO
UTXO est l'abréviation d' « Unspent Transaction Output » ou « sorties non dépensées » en français. En d'autres termes, il s'agit du nombre de bitcoins qui restent après avoir effectué un paiement.
Une transaction Bitcoin est constituée d'entrées et de sorties UTXO. Les entrées sont constituées des UTXO libérées par l'utilisateur qui paye, et les sorties sont de nouveaux UTXO qui sont distribués à qui de droit.
Pour être plus clair, partons d'un exemple simple. Imaginez que Paul détienne 50 BTC qu'il a reçu en minant un bloc. Il veut envoyer 20 BTC à Jean. Pour ce faire, Paul va créer une transaction avec une entrée d'un UTXO de 50 BTC, et une sortie de deux UTXO : une de 30 BTC qui lui revient (la monnaie) et une de 20 BTC qui revient à Jean.
Si Jean veut ensuite envoyer 5 BTC à Jacques, il va créer une transaction avec comme entrée son UTXO de 20 BTC et comme sortie deux UTXO : une de 15 BTC qui lui revient et une de 5 BTC qui revient à Jacques.
Toutes les transactions sur le réseau Bitcoin fonctionnent de cette manière. Chaque adresse Bitcoin comporte un solde qui correspond la somme de toutes les UTXO provenant d'adresses ayant dépensé des bitcoins vers cette adresse.
Par exemple, si Jacques reçoit un paiement de 10 BTC, un paiement de 5 BTC, puis un paiement de 2 BTC, son adresse comportera 3 UTXO pour un solde total de 17 BTC.
Une transaction Bitcoin consiste ainsi à modifier le solde d'une adresse, en « consommant » les UTXO en entrées pour « fabriquer et distribuer » de nouveaux UTXO en sortie, tout cela afin de transmettre la propriété des jetons en changeant leurs conditions de dépense.
En effet, pour être validées, les transactions doivent être signées par le propriétaire de la clef privée associée à (ou aux) adresses d'entrée. Nous entrerons dans les détails de ce concept dans les paragraphes qui suivent.
Les transactions peuvent bien sûr être beaucoup plus complexes que celles décrites dans les exemples ci-dessus. Il peut notamment y avoir besoin de fusionner (merge) plusieurs UTXO en entrée pour obtenir un UTXO de taille suffisante pour honorer la transaction.
Ci-dessous l'illustration d'une transaction regroupant plusieurs UTXO pour envoyer 14 BTC d'une adresse à une autre.
Les règles qui déterminent le fonctionnement des transactions sont codées à l'aide du langage Script.
Les éléments du moteur à connaître
Avant de nous lancer dans le déroulement d'une transaction nous devons nous pencher sur certains éléments clés du réseau Bitcoin. Impossible de comprendre le fonctionnement d'un moteur sans avoir une idée des composants qui s'y trouvent. Ici pas de soupapes, d'injecteur ou de piston ! Nous vous présenterons ces éléments de manières très succinctes, afin de ne pas nous éloigner du sujet de ce papier : les transactions Bitcoin. Si vous voulez plus de détails sur ces éléments, n'hésitez pas à consulter les articles en liens hypertextes, beaucoup plus complets.
Portefeuille, adresse, clé privée et clé publique
Pour mieux comprendre ces concepts, nous ferons ici une analogie avec le fonctionnement des banques avec lesquelles vous êtes sûrement plus familiers.
Un portefeuille Bitcoin est un logiciel ou un appareil qui permet de gérer ses adresses et ses clés, ainsi que d’effectuer des transactions sur le réseau Bitcoin. Il peut s'apparenter à la banque.
Une adresse Bitcoin est une suite alphanumérique de 26 à 35 caractères où l’on peut envoyer ou recevoir des bitcoins. Elle peut s'apparenter à un numéro de compte bancaire.
Une adresse est liée à une clé privée et à une clé publique.
La clé privée est une suite alphanumérique qui doit être gardée secrète par le détenteur d'une adresse, car elle permet de signer les transactions (qui peuvent s'apparenter à des chèques) et de prouver qu’on est le propriétaire des bitcoins qui y sont associés.
La clé publique est aussi une suite de caractères alphanumériques, dérivée de la clé privée, qui permet de vérifier la validité des signatures sans révéler la clé privée.
Nœuds mempool et mineurs
Les nœuds sont des machines qui conservent une copie de la blockchain. Il en existe plusieurs types. Ils servent notamment à diffuser, vérifier et valider les transactions et les blocs.
Les mempools (abréviation de Memory Pool) sont des bases de données qui contiennent des transactions en attente d'être intégrées dans un bloc par un mineur.
Les nœuds miniers, ou mineurs, sont responsables de la création de nouveaux blocs. Le travail des mineurs consiste à remplir des blocs avec des transactions, puis à ajouter ces blocs à la blockchain.
Les pools de minage sont des groupements de mineur qui travaillent ensemble pour augmenter leurs chances de miner un bloc. Les mineurs d’un pool partagent leurs ressources de calcul et se répartissent les récompenses selon leur contribution.
Hachage
Le hachage sur Bitcoin est un processus qui consiste à transformer des données de n’importe quelle taille en une chaîne de caractères de longueur fixe appelée valeur de hachage ou empreinte.
Le hachage à trois propriétés clés :
- il est irréversible : il est impossible de retrouver les données d’origine à partir de la valeur de hachage.
- il est déterministe : il produit toujours la même valeur de hachage pour les mêmes données.
- il est sensible : un changement minime dans les données entraîne un changement important dans la valeur de hachage
La fonction de hachage utilisée par Bitcoin est le SHA-256. Cette fonction produit une valeur de hachage en 256 bits, soit 64 caractères en notation hexadécimale. Par exemple, le hachage du mot “Bitcoin” est :
SHA-256("Bitcoin") = 6fe28c0ab6f1b372c1a6a246ae63f74f931e8365e15a089c68d619ba5b592a22
Le hachage est utilisé à plusieurs niveaux sur le réseau Bitcoin, dont la création des adresses, la vérification des transactions et la génération des blocs.
Les différentes étapes d'une transaction
Maintenant que vous avez toutes les cartes en mains, voyons comment se déroule une transaction Bitcoin. Prenons un exemple simple où Paul veut envoyer 1 BTC à Jacques.
1. Lancement de la transaction
Paul décide d'envoyer 1 BTC à Jacques. Il se rend sur la section « Envoyer » de son portefeuille et complète le champ « Adresse » avec celle de Jacques, et le champ « Montant » avec « 1 BTC ». Le portefeuille ajoute automatiquement des frais d'envois destinés à payer les mineurs.
En cliquant sur « Envoyer », Paul valide ces informations et crée une transaction qu'il signe à l'aide de sa clé privée (la clé privée n'est pas la signature en elle-même, mais c'est le seul « outil » qui permet de l'apposer).
2. Diffusion et validation de la transaction
L'application du portefeuille de Paul transmet la transaction à un nœud émetteur qui la diffuse sur tout le réseau Bitcoin.
Les nœuds qui reçoivent la transaction l'envoient dans la Mempool, en attente d'être sélectionnée par un mineur pour être ajoutée à un bloc (les mineurs sélectionnent en priorité les transactions qui payent le plus de frais, afin d'augmenter leurs revenus en BTC).
Le site txstreet.com propose une animation qui permet de visualiser en temps réel les transactions qui arrivent dans la Mempool.
Les transactions y sont représentées par des personnes, la Memepool par le quai, les blocs par des wagons, et la blockchain par le train.
3. Contrôle de la transaction
Les mineurs récupèrent la transaction de Paul et vérifient qu'elle est valide grâce la clé publique de Paul, avant de l'inclure dans un bloc avec d'autres transactions en attente. Il s'agit du processus de minage.
Chaque mineur est en compétition avec les autres. Leur but est de former le bloc contenant les transactions en premier. Chacun d'entre eux place les transactions qu'il veut dans son bloc, et tente de résoudre un problème mathématique complexe et unique pour valider ce dernier.
En effet, pour ajouter un bloc de transactions à la blockchain, le mineur doit tout d’abord obtenir une valeur de hachage (empreinte) qui respecte certaines règles. Il doit résoudre un problème à l'aide des transactions contenues dans son bloc (non modifiables) et d'un « nonce » (arbitraire).
La difficulté principale du mineur consiste donc à changer de nonce jusqu'à ce qu'il obtienne une valeur de hachage valide. Cette empreinte, aussi appelée preuve de travail, est unique à chaque bloc de transactions.
Le premier mineur qui trouve une valeur de hachage valide pour son bloc diffuse ce dernier et son empreinte à tous les autres mineurs.
Pour les plus curieux d'entre vous, nous vous présentons la structure interne des blocs ici.
4. Enregistrement de la transaction
Les autres mineurs vérifient la validité de l'empreinte. S’il est valide, ils conviennent que le bloc peut être ajouté à la blockchain. Pour que le bloc soit ajouté, les mineurs doivent tous être d'accord, c’est-à-dire parvenir à un consensus.
Une fois ce consensus effectif, le nouveau bloc est ajouté à la blockchain.
Jacques reçoit alors le BTC de Paul sur son adresse, et le mineur qui a miné ce nouveau bloc récupère la récompense de bloc (et les frais de transaction de toutes les transactions ajoutées au bloc). On dit alors que la transaction a été confirmée une fois.
Chaque bloc qui vient s'ajouter après celui contenant la transaction de Paul, constitue une confirmation supplémentaire pour cette dernière.
En règle générale, on dit qu'une transaction est considérée comme « sûre » sur Bitcoin une fois qu'elle à reçu 6 confirmations.
Conclusion sur les transactions Bitcoin
Bitcoin utilise la cryptographie pour garantir l'authenticité et l'intégrité des transactions. Une transaction Bitcoin est sécurisée et irréversible. Cette sécurité et cette irréversibilité augmentent avec le nombre de blocs ajoutés à la chaîne après la transaction.
La blockchain empêche les doubles dépenses et assure la traçabilité de chaque bitcoin.
Les transactions ne sont pas anonymes mais pseudonymes, car il est possible de connaître le contenu de chaque adresse ainsi que toutes les transactions qu'elle à reçu ou envoyée.
Bien que beaucoup plus lentes que certaines autres blockchains, elles restent tout de même relativement rapides (un bloc est ajouté toutes les 10 minutes environ). Leur coût dépend de l'utilisation du réseau. Plus élevés que sur certaines « concurrentes », ils restent cependant souvent très compétitifs par rapport à ce que proposent les services bancaires classiques, notamment pour les gros montants et les transferts internationaux.
Ces deux paramètres primordiaux pour une adoption de masse sont bien sûrs au cœur des améliorations du réseau et sont déjà optimisés en partie grâce au Lightning Network que nous découvrirons ensemble dans la suite de cette encyclopédie.
Enfin, elles sont également incitatives, grâce à l'émission monétaire qui récompense les mineurs qui les valident. Le nombre de BTC offert pour leur service diminue néanmoins au fil des différents halving, comme nous le verrons dans le prochain article intitulé « Bitcoin et ses 21 millions d’unités ». Accrochez-vous, la découverte de Bitcoin et ses secrets se poursuit !