Bitstack lève 5 millions d’euros ! 🎉

Tout savoir sur la transaction coinbase

Disponible en podcast
Partager l’article :

Vous êtes-vous déjà demandé comment les bitcoins sont créés ? Bien sûr, ils sont générés par le processus de minage, mais leur émission repose surtout sur la transaction coinbase. Cette transaction spécifique, essentielle au fonctionnement de Bitcoin, s’est complexifiée au fil des évolutions du protocole. Dans cet article, je vous propose de découvrir en détail tout ce qu’il faut savoir sur cette transaction coinbase.

C’est quoi la transaction coinbase ?

La transaction coinbase est toujours la première transaction de chaque bloc Bitcoin. Elle est générée par le mineur ayant réussi à produire une preuve de travail valide pour ce bloc.

Cette transaction joue un rôle à deux niveaux. D’une part, elle permet de récompenser le mineur gagnant en lui attribuant les bitcoins qui lui reviennent. D’autre part, elle sert à introduire de nouveaux bitcoins dans la masse monétaire en circulation.

Les bitcoins perçus constituent ce que l’on appelle la récompense de bloc. C’est une incitation économique pour que les mineurs s’investissent dans le processus de la preuve de travail sur Bitcoin. Cette récompense se compose tout d'abord des frais accumulés sur les transactions intégrées dans le bloc. En effet, chaque fois que vous effectuez une transaction Bitcoin et qu’elle est confirmée, les frais que vous avez choisis lors de sa création sont récupérés par le mineur qui a produit le bloc.

La récompense de bloc se compose aussi d'un montant de bitcoins nouvellement créés. C’est ce qu'on appelle la subvention de bloc. Cette subvention est régie par les règles du protocole. Initialement fixée à 50 bitcoins par bloc en 2009, elle est réduite de moitié tous les 210 000 blocs, soit environ tous les quatre ans, lors d'un événement connu sous le nom de « halving ». Depuis le dernier halving en 2024, la subvention accordée pour chaque bloc est de 3,125 BTC.

Ainsi, tous les BTC en circulation sur Bitcoin proviennent initialement d’une transaction coinbase.

L’entrée d’une transaction coinbase

La coinbase est une transaction très spécifique. À la différence des autres transactions Bitcoin, elle doit répondre à certains critères précis pour être considérée valide. Le premier de ces critères est qu'elle doit comporter un seul input, qui, contrairement aux inputs habituels, ne doit référencer aucun UTXO existant. Comme nous l'avons évoqué précédemment, la transaction coinbase est utilisée pour générer de nouveaux bitcoins. Cela signifie que, pour les nouveaux UTXOs créés en sortie de cette transaction, aucun UTXO en entrée ne doit être consommé. Les bitcoins sont créés ex nihilo. C'est pourquoi on dit parfois, pour simplifier, que la coinbase n'a pas d'input. Dans une transaction classique, cela serait impossible, car il est nécessaire de fournir des bitcoins en entrée pour couvrir la somme que l'on souhaite transférer.

En réalité, il existe bien un input dans la coinbase. Pour garantir que cet input ne dépense aucun bitcoin, il est obligatoire que la transaction coinbase utilise un UTXO inexistant, désigné par la valeur suivante :

0000000000000000000000000000000000000000000000000000000000000000ffffffff

Habituellement, chaque input dans une transaction Bitcoin est accompagné d'un scriptSig contenant la signature numérique nécessaire pour déverrouiller l’UTXO utilisé. Cependant, dans le cas de la transaction coinbase, puisqu’aucun UTXO réel n'est consommé, il n'est pas nécessaire d'inclure un scriptSig. À la place, un champ vide est utilisé, qui peut contenir des données arbitraires choisies par le mineur. Ce champ est couramment appelé « Coinbase Field ».

C'est justement dans ce champ que Satoshi Nakamoto a inséré la fameuse phrase « The Times 03/Jan/2009 Chancellor on brink of second bailout for banks » dans le tout premier bloc de la blockchain Bitcoin (le bloc de Genèse).

Depuis l'adoption du BIP34 en 2012, la seule contrainte imposée aux mineurs pour le champ coinbase est d'inclure au début la hauteur du bloc en cours de minage. Cette précision supplémentaire permet de clarifier la manière dont le réseau accepte les modifications de la structure des blocs et les règles de consensus, tout en assurant l'unicité de chaque bloc et de chaque transaction coinbase.

Le reste de ce champ est complètement libre. Actuellement, les mineurs l'utilisent pour plusieurs fonctions. Premièrement, dans le cadre des pools de minage, un identifiant unique pour chaque hacheur individuel y est inclus pour garantir que les participants de la pool ne dupliquent pas inutilement leur travail. En disposant chacun d'un champ coinbase légèrement différent, cela garantit que deux hacheurs ne feront jamais exactement le même calcul.

Ensuite, il est courant de voir le nom de la pool de minage qui a extrait le bloc inscrit dans ce champ. Bien que cette pratique ne soit pas obligatoire, elle est largement répandue parmi les pools qui choisissent d'ajouter leur nom aux transactions coinbase. Cependant, cette identification n'est pas nécessairement exacte, car rien n'empêche d'indiquer le nom d'une pool spécifique sans réellement miner pour elle.

Enfin, le reste de ce champ est souvent utilisé comme un extra-nonce informel. Pour générer un bloc valide, les mineurs modifient le nonce de 32 bits dans l'entête du bloc, en créant ainsi de multiples hachages jusqu'à en trouver un inférieur ou égal à la cible de difficulté. Lorsque toutes les valeurs possibles du nonce dans l’entête ont été épuisées, ils utilisent une partie du champ libre de l’input dans la transaction coinbase comme un nonce supplémentaire pour continuer à tester de nouveaux hachages.

➤ En savoir plus sur la structure des blocs Bitcoin.

Les sorties d’une transaction coinbase

Au niveau des outputs de la transaction coinbase, la structure est encore une fois différente de celle d'une transaction normale.

Tout d'abord, il y a généralement un ou plusieurs outputs qui distribuent la récompense de minage, en combinant les frais et la subvention de bloc. Ces outputs, comme dans une transaction classique, sont constitués d'UTXOs verrouillés par un scriptPubKey. La seule contrainte pour les mineurs est que la somme réclamée ne dépasse pas le total des frais de toutes les transactions incluses en plus de la subvention de bloc.

Cependant, contrairement aux transactions classiques, les bitcoins générés dans une transaction coinbase sont soumis à une période de maturité de 100 blocs. Cela signifie qu’après avoir miné le bloc, les bitcoins gagnés ne sont pas dépensables avant la fin de cette période de 100 blocs. Cette règle vise à prévenir les complications qui pourraient survenir si les bitcoins provenaient d'une chaîne de blocs qui deviendrait ultérieurement obsolète, car il arrive que des blocs validés soient finalement écartés au profit d'autres blocs de même hauteur, mais intégrés dans une chaîne ayant accumulé plus de travail. Si les bitcoins nouvellement créés étaient disponibles immédiatement, toute transaction les incluant pourrait être annulée a posteriori, ce qui causerait des pertes pour les détenteurs. 

En imposant un délai de 100 blocs avant que les bitcoins nouvellement créés puissent être dépensés, on prévient les perturbations que pourraient causer des pièces issues de blocs qui seraient ultérieurement invalidés, en évitant qu'elles circulent sur le système et affectent d'autres utilisateurs. La probabilité d'une réorganisation de la chaîne survenant après 101 blocs est tellement faible qu'elle est considérée comme nulle.

En plus des outputs qui distribuent la récompense, il y aura également d'autres outputs à caractère technique dans la coinbase. Depuis le soft fork SegWit en 2017, les transactions coinbase doivent aussi inclure un output avec un OP_RETURN qui contient la racine de Merkle des témoins de transaction.

Ce mécanisme, conçu pour résoudre le problème de la malléabilité des transactions, sépare les données de signature du reste de la transaction. Dans un bloc, ces données de signature sont regroupées dans un arbre de Merkle distinct de celui des données de transaction principales, et la racine de cet arbre est insérée dans un output de la transaction coinbase pour garantir leur intégration au bloc.

Le reste des outputs de la transaction coinbase reste libre. Il n'est pas rare de voir plusieurs OP_RETURN dans une coinbase. Outre la racine des témoins de transaction, obligatoire en présence de transactions SegWit dans le bloc, les autres OP_RETURN peuvent contenir des données arbitraires utilisées par les mineurs pour divers objectifs spécifiques, comme par exemple le minage fusionné, qui permet de réutiliser les preuves de travail de Bitcoin sur d'autres blockchains, typiquement des sidechains.

➤ Découvrir le fonctionnement des sidechains de Bitcoin.

Conclusion

Les transactions coinbase jouent donc un rôle essentiel sur Bitcoin. Elles servent non seulement à récompenser les mineurs, pour les inciter à contribuer à la recherche de preuves de travail, mais aussi à émettre la monnaie de manière équitable, méritocratique et programmée, conformément aux règles du protocole.

Les transactions coinbase sont différentes des autres transactions Bitcoin, car elles comportent un unique input qui ne consomme aucun UTXO existant. En d'autres termes, les bitcoins générés par une transaction coinbase sont exempts de tout historique antérieur.

Au fil du temps, l'utilisation de la transaction coinbase a évolué. Depuis l'implémentation de SegWit, elle inclut désormais la racine de Merkle des témoins de transaction. Pour le minage, ces champs libres sont exploités par les pools pour divers besoins internes.

Disponible en podcast

Sommaire

Partager l’article :

Ces articles pourraient vous plaire

Bitstack SAS, société immatriculée au registre du commerce et des sociétés de Aix-en-Provence sous le numéro 899 125 090, exploitant le nom commercial Bitstack est enregistrée auprès de l'Autorité des Marchés Financiers (AMF) au titre des activités d'achat/vente d'actifs numériques contre monnaie ayant cours légal et de conservation d'actifs numériques pour compte de tiers sous le numéro E2021-027, dont le siège social est situé 100 impasse des Houillères 13590 Meyreuil.

L'investissement dans les actifs numériques comporte un risque de perte partielle ou totale du capital investi.
Les performances passées ne préjugent pas des performances futures.
TÉLÉCHARGER
‍Bitstack