Scripts, conditions, signatures... Comment les bitcoins sont-ils sécurisés ?

Accueil/Les essentiels de Bitcoin/Scripts, conditions, signatures... Comment les bitcoins sont-ils sécurisés ?

Les essentiels de Bitcoin

Scripts, conditions, signatures... Comment les bitcoins sont-ils sécurisés ?

Bitcoin est un système monétaire pair-à-pair où les utilisateurs peuvent échanger de la valeur sans passer par un intermédiaire de confiance. Pour effectuer des transactions, on utilise une adresse de réception pour recevoir des bitcoins, puis la clé privée associée pour dépenser ces fonds. Mais comment tous ces éléments interagissent-ils concrètement dans une transaction ?

Dans cet article, nous allons étudier en profondeur les mécanismes fondamentaux de Bitcoin. Vous allez découvrir la manière dont les BTC sont représentés sur le système, comment ils sont verrouillés et déverrouillés, ainsi que le fonctionnement détaillé des transactions.

Comment sont représentés les bitcoins ?

Sur Bitcoin, la gestion des unités monétaires ne se fait pas selon un modèle de comptes comme dans le système bancaire. Au lieu de cela, les bitcoins sont représentés par des UTXOs (Unspent Transaction Outputs), qui sont essentiellement des sorties de transactions qui n'ont pas encore été dépensées. Chaque UTXO représente une quantité spécifique de bitcoins provenant d'une transaction précédente et qui est disponible pour une dépense.

Un UTXO peut être vu comme le support monétaire sur Bitcoin, un peu comme les billets physiques dans le système monétaire classique. Un seul UTXO peut ainsi représenter n’importe quelle valeur, allant d'un satoshi (= 0,00000001 BTC) jusqu’à plusieurs bitcoins.

Pour mieux comprendre, faisons une comparaison avec un compte bancaire. Sur votre compte, vos transactions se reflètent directement sur votre solde. Chaque achat ou retrait réduit votre solde, et chaque dépôt l'augmente. Sur Bitcoin, il n'y a pas de solde de compte, mais plutôt une série d’UTXOs représentant les différentes sommes de bitcoins disponibles.

Lorsque vous souhaitez effectuer une transaction Bitcoin, vous utilisez des UTXOs que vous possédez comme entrées (inputs) pour générer en contrepartie de nouveaux UTXOs en sorties (outputs). Une transaction consomme donc des UTXOs en entrées et crée de nouveaux UTXOs en sorties.

Cependant, il est important de noter qu'un UTXO ne peut pas être partiellement consommé : s'il est utilisé dans une transaction, il doit l'être en intégralité. C’est similaire au fonctionnement des billets de banque : si vous voulez dépenser 5 €, mais que vous n'avez qu'un billet de 10 €, vous ne pouvez pas simplement couper le billet en deux. Vous êtes obligé de donner 10 € au destinataire qui vous rendra 5 € en monnaie.

Dans le cas d'une transaction Bitcoin, cela fonctionne pareil. Si la valeur de l'UTXO utilisé dépasse le montant à payer, le payeur reçoit un nouvel UTXO en sortie, représentant la différence entre l'UTXO utilisé en entrée et la somme destinée au bénéficiaire. Cet UTXO qui revient au payeur est appelé le « change ».

Par exemple, si Alice possède un UTXO de 2 BTC et souhaite acheter un produit pour 0,5 BTC, elle utilisera cet UTXO comme entrée pour créer 2 nouveaux UTXOs en sorties : l'un de 0,5 BTC pour le paiement, et un autre de 1,5 BTC pour le change qui lui revient.

Comprendre les scripts sur Bitcoin

Pour assurer la sécurité des UTXOs appartenant à chaque utilisateur, il nous faut disposer d'un mécanisme permettant de les verrouiller de manière sécurisée, tout en permettant à l’utilisateur légitime de les déverrouiller. Cela se fait au moyen de scripts.

Un script nous permet d’apposer des conditions sur les UTXOs nous appartenant pour contrôler leur dépense. Typiquement, la condition exige que l'utilisateur fournisse une signature numérique réalisée avec une clé privée que lui seul connaît. C’est ici qu’intervient le portefeuille Bitcoin qui sert à sécuriser toutes vos clés privées. Lors d'une transaction, l'utilisateur présentera l'UTXO qu'il souhaite utiliser et la signature nécessaire pour satisfaire la condition de dépense établie par le script. Les nœuds du réseau Bitcoin sont alors chargés de vérifier la validité de cette signature pour permettre l'ajout de la transaction à la blockchain.

Dans chaque transaction Bitcoin, on retrouve deux types de scripts : le « scriptPubKey », qui verrouille l'UTXO, et le « scriptSig », qui permet de le déverrouiller.

Comment verrouiller un UTXO ?

Lorsque vous recevez des bitcoins, le processus implique que l'expéditeur crée une transaction. Dans celle-ci, il va mettre en entrée un UTXO lui appartenant qui va être consommé, tandis qu'un nouvel UTXO est créé pour vous en sortie. À ce stade, votre UTXO est verrouillé à l'aide de votre adresse de réception.

Cette opération est réalisée en utilisant un scriptPubKey. Ce script est intégré dans la sortie de la transaction qui crée l’UTXO. Il spécifie les règles que tout futur utilisateur devra suivre pour déverrouiller l’UTXO et le dépenser.

Le scriptPubKey utilise un ensemble d’instructions appelées « opcodes » pour définir ces conditions. Par exemple, dans une transaction standard de type P2PKH (Pay-to-PubKey-Hash), le scriptPubKey peut exiger une signature valide correspondant à une clé publique hachée, c’est-à-dire à une adresse de réception. Voici un exemple de scriptPubKey P2PKH classique :

OP_DUP OP_HASH160 OP_PUSHBYTES_20 <adresse de réception> OP_EQUALVERIFY OP_CHECKSIG

Dans ce script :

  • OP_DUP : Duplique la clé publique sur la pile ;

  • OP_HASH160 : Renvoie le hachage de la clé publique (avec SHA256 puis RIPEMD160) ;

  • OP_PUSHBYTES_20 <adresse de réception> : Pousse l'adresse Bitcoin attendue sur la pile ;

  • OP_EQUALVERIFY : Vérifie que la clé publique hachée correspond à l'adresse de réception fournie ;

  • OP_CHECKSIG : Vérifie la signature à partir de la clé publique.

Dans ce scriptPubKey, l'UTXO est verrouillé de manière à ce que seul l'utilisateur possédant la clé privée correspondant à l'adresse de réception spécifiée puisse déverrouiller et dépenser cet UTXO en fournissant la signature nécessaire. Cela signifie que lorsque vous fournissez une adresse de réception à un payeur pour recevoir des bitcoins, le portefeuille du payeur va créer un UTXO. Cet UTXO est sécurisé par un scriptPubKey qui intègre l'adresse que vous lui avez fournie.

➤ En savoir plus sur les adresses de réception Bitcoin.

Comment déverrouiller un UTXO ?

À votre tour, vous allez pouvoir dépenser vos bitcoins dans une future transaction en consommant un (ou plusieurs) de vos UTXOs en entrée. Mais pour ce faire, il faut d’abord déverrouiller l’UTXO en question.

Déverrouiller un UTXO implique de satisfaire les conditions définies par le scriptPubKey qui lui est associé. Cette opération est effectuée grâce au script de déverrouillage, que l’on appelle aussi « scriptSig ». Le scriptSig est donc inclus dans l’entrée d’une transaction Bitcoin. Il contient tous les éléments nécessaires pour que, lorsqu'il est exécuté avec le scriptPubKey correspondant, le résultat soit « vrai », ce qui signifie que les conditions de dépense ont été satisfaites.

Reprenons notre exemple de transaction standard P2PKH : pour déverrouiller l'UTXO, le scriptSig serait composé de la signature et de la clé publique correspondant à l’adresse de réception :

<signature> <clé publique>

Lorsqu'une transaction est construite, le scriptSig associé à chaque entrée de la transaction est exécuté en premier, suivi par l'exécution du scriptPubKey associé à l'UTXO utilisé comme entrée. Si le scriptSig fournit une signature valide qui correspond à la clé publique attendue par le scriptPubKey, alors la condition de dépense est satisfaite. Cela permet de consommer l'UTXO concerné et de dépenser les bitcoins qu'il représente.

➤ Découvrir comment bien gérer ses UTXOs achetés en DCA.

Conclusion

Bitcoin fonctionne sur un modèle d'UTXOs, qui sont les supports qui représentent les unités monétaires au sein du système. Chaque transaction consomme des UTXOs existants comme entrées et crée de nouveaux UTXOs comme sorties. C’est ainsi que la monnaie circule.

Les scripts dans Bitcoin déterminent les conditions sous lesquelles ces UTXOs peuvent être dépensés. Le scriptPubKey est utilisé pour verrouiller les fonds, tandis que le scriptSig est utilisé pour satisfaire le scriptPubKey et ainsi déverrouiller les BTC. Ce mécanisme assure que seuls les individus en possession des informations nécessaires pour le déverrouillage (généralement, la clé privée) peuvent dépenser les bitcoins.

Vous avez aimé cet article ?

Inscrivez-vous à notre newsletter pour recevoir les prochaines publications.

Ces articles pourraient vous plaire

Découvrez les derniers articles publiés.

Envie de lancer votre épargne en Bitcoin ?

Découvrez Bitstack, l’application la plus simple d'Europe pour investir dans le Bitcoin !

Télécharger Bitstack