Bitget App
Trade smarter
Acheter des cryptosMarchésTradingFuturesCopyBotsEarn
Masterclass #16 : comment fonctionnent les ScriptPubKey et ScriptSig

Masterclass #16 : comment fonctionnent les ScriptPubKey et ScriptSig

Cryptonaute-web3 (FR)2024/06/19 16:28
Par:Charles Ledoux
Masterclass #16 : comment fonctionnent les ScriptPubKey et ScriptSig image 0 Masterclass #16 : comment fonctionnent les ScriptPubKey et ScriptSig image 1
Rejoignez notre groupe Telegram pour rester au courant des dernières nouvelles crypto en direct.

Maintenant que nous avons abordé les outputs et les inputs, découvrons un peu plus en détail ce que sont et comment fonctionnent les scripts qui permettent de les programmer.

Qu’est-ce qu’un script dans la transaction Bitcoin ?

Masterclass #16 : comment fonctionnent les ScriptPubKey et ScriptSig image 2 Masterclass #16 : comment fonctionnent les ScriptPubKey et ScriptSig image 3

Nous avons vu dans le précédent épisode ce qu’était un output et un input. Je vous invite à le lire avant de lire cet article. De plus, nous avions dit que les outputs et les inputs étaient programmables. Et ces “programmes” sont appelés des scripts.

En d’autres termes, un script est une sorte de programme informatique permettant de “locker” et “d’unlock” (de vérouiller et dévérouiller) des informations dans un output de transaction. En effet, cela permet donc de programmer la transaction et sert à deux tâches essentielles : 

  • À faire un script de verrouillage (ScriptPubKey) sur chaque output de transaction.
  • à exécuter un script de déverrouillage (ScriptSig ou Witness) qui permet d’utiliser un input lors d’une transaction pour que les Bitcoins soient dépensés.

En conséquence, pour qu’une transaction soit valide et que vos Bitcoins puissent être dépensés, le script complet doit être valide. À la fois, le verrouillage de l’ouput et le déverrouillage de l’input doivent être réussis.

“La partie script pubkey du programme stipule exactement ce que la transaction de dépense doit fournir pour dépenser l’output. La seule façon de dépenser un output est de fournir un script de signature qui fait que le programme se termine par un “OK” en haut de la pile.”

Comment fonctionnent-ils ?

Avant toute chose, un script consiste en deux éléments de base : 

  • Les Opcodes qui sont des fonctions permettant de donner des “ordres” et de faire bouger les données.
  • Les données comme les clés publiques et les signatures.

Voici un exemple de script P2PKH obtenu sur le site LearnMeaBitcoin

Masterclass #16 : comment fonctionnent les ScriptPubKey et ScriptSig image 4 Masterclass #16 : comment fonctionnent les ScriptPubKey et ScriptSig image 5

Les données : 

En effet, ce script intervient dans un processus de vérification de toutes les informations de la transaction. A chaque vérification d’un élément, le programme déplace une information validée dans “une pile” (stack en anglais).

Imaginez-vous en train de vérifier si des habits n’étaient pas abîmés dans un sac et que, à chaque fois que vous trouvez un beau vêtement neuf, vous le déposiez en pile hors du sac.

Le script fonctionne donc de la même manière. Il va d’abord vérifier la signature contenue dans l’input. Puis, il va déposer la signature dans la pile. Ensuite, il vérifiera la clé publique et si elle est juste, il dira “OK” et la déposera en haut de la pile et ainsi de suite.

Masterclass #16 : comment fonctionnent les ScriptPubKey et ScriptSig image 6 Masterclass #16 : comment fonctionnent les ScriptPubKey et ScriptSig image 7

Les OP : 

L’information qui suit la clé publique est la fonction OP_DUD. Comme son nom peut l’indiquer, sa fonction est simple : faire ajouter l’élément supérieur sur la pile. Mais en plus, il dit également de garder l’élément sur la pile tout en le copiant par-dessus.

Par conséquent, la pile devient une sorte de copie de vos éléments afin d’avoir un résumé de tous les calculs nécessaires à la validation de la transaction. Vous avez donc désormais deux signatures et deux clés publiques (une dans le sac, une autre sur la pile).

Intervient ensuite l’opérateur OP_HASH160. Ce dernier signifie : « retirez l’élément du haut de la pile et hachez-le en utilisant SHA256+RIPEMD160, et mettez ensuite le résultat sur la pile.” Je vous invite à lire notre épisode expliquant les fonctions SHA256+RIPEMD160 qui permettent notamment de réduire les informations pour les rendre plus lisibles. 

En prenant donc la clé publique, OP_HASH160 va permettre de déposer un PKH sur le haut de la pile pour pouvoir être vérifié et comparé.

C’est donc là qu’est utile la prochaine fonction : OP_EQUALVERIFY. Cette dernière signifie simplement « prenez les deux premiers éléments de la pile et comparez-les. S’ils sont égaux, passez à l’instruction de programme suivante ; sinon, quittez le programme avec une erreur.”

En somme, elle permet de comparer les deux signatures et PKH afin de déterminer si la transaction est valable et qu’elle détient bien les BTCs.

“S’ils sont égaux, cela signifie que la clé publique  que John a fournie dans le script de signature de sa transaction correspond à la PKH qui a été définie comme destinataire dans l’output.”

Pour finir, le dernier opérateur, OP_CHECKSIG signifie « vérifier que la clé publique supérieure sur la pile et la signature à côté de la pile peuvent signer correctement la transaction. Mettez vrai ou faux en haut de la pile en fonction du résultat de la vérification.”

OP_CHECKSIG permet donc de vérifier les deux éléments supérieurs de la pile, à savoir la clé publique et la signature de l’émetteur. Mais le receveur doit d’abord nettoyer le script de l’émetteur afin de ne sélectionner que ces deux éléments supérieurs.

Si la clé et la signature passent le test de l‘OP_CHECKSIG avec un “OK”, les Bitcoins peuvent enfin être transmis !

“Le seul script de signature acceptable est une signature valide suivie de la clé publique correspondant au PKH dans le script de la clé publique.”

Sources : Grokking Bitcoin, LearnMeaBitcoin .

Sur le même sujet :

    • Masterclass #12 : tout comprendre sur le hashing crypto et les signatures
    • Masterclass #13 : comment sont créées les adresses et sont-elles sécurisées ?
    • Masterclass #14 : tout comprendre sur comment fonctionnent les wallets

Maintenant que nous avons abordé les outputs et les inputs, découvrons un peu plus en détail ce que sont et comment fonctionnent les scripts qui permettent de les programmer.

Qu’est-ce qu’un script dans la transaction Bitcoin ?

Masterclass #16 : comment fonctionnent les ScriptPubKey et ScriptSig image 8 Masterclass #16 : comment fonctionnent les ScriptPubKey et ScriptSig image 9

Nous avons vu dans le précédent épisode ce qu’était un output et un input. Je vous invite à le lire avant de lire cet article. De plus, nous avions dit que les outputs et les inputs étaient programmables. Et ces “programmes” sont appelés des scripts.

En d’autres termes, un script est une sorte de programme informatique permettant de “locker” et “d’unlock” (de vérouiller et dévérouiller) des informations dans un output de transaction. En effet, cela permet donc de programmer la transaction et sert à deux tâches essentielles : 

  • À faire un script de verrouillage (ScriptPubKey) sur chaque output de transaction.
  • à exécuter un script de déverrouillage (ScriptSig ou Witness) qui permet d’utiliser un input lors d’une transaction pour que les Bitcoins soient dépensés.

En conséquence, pour qu’une transaction soit valide et que vos Bitcoins puissent être dépensés, le script complet doit être valide. À la fois, le verrouillage de l’ouput et le déverrouillage de l’input doivent être réussis.

“La partie script pubkey du programme stipule exactement ce que la transaction de dépense doit fournir pour dépenser l’output. La seule façon de dépenser un output est de fournir un script de signature qui fait que le programme se termine par un “OK” en haut de la pile.”

Comment fonctionnent-ils ?

Avant toute chose, un script consiste en deux éléments de base : 

  • Les Opcodes qui sont des fonctions permettant de donner des “ordres” et de faire bouger les données.
  • Les données comme les clés publiques et les signatures.

Voici un exemple de script P2PKH obtenu sur le site LearnMeaBitcoin

Masterclass #16 : comment fonctionnent les ScriptPubKey et ScriptSig image 10 Masterclass #16 : comment fonctionnent les ScriptPubKey et ScriptSig image 11

Les données : 

En effet, ce script intervient dans un processus de vérification de toutes les informations de la transaction. A chaque vérification d’un élément, le programme déplace une information validée dans “une pile” (stack en anglais).

Imaginez-vous en train de vérifier si des habits n’étaient pas abîmés dans un sac et que, à chaque fois que vous trouvez un beau vêtement neuf, vous le déposiez en pile hors du sac.

Le script fonctionne donc de la même manière. Il va d’abord vérifier la signature contenue dans l’input. Puis, il va déposer la signature dans la pile. Ensuite, il vérifiera la clé publique et si elle est juste, il dira “OK” et la déposera en haut de la pile et ainsi de suite.

Masterclass #16 : comment fonctionnent les ScriptPubKey et ScriptSig image 12 Masterclass #16 : comment fonctionnent les ScriptPubKey et ScriptSig image 13

Les OP : 

L’information qui suit la clé publique est la fonction OP_DUD. Comme son nom peut l’indiquer, sa fonction est simple : faire ajouter l’élément supérieur sur la pile. Mais en plus, il dit également de garder l’élément sur la pile tout en le copiant par-dessus.

Par conséquent, la pile devient une sorte de copie de vos éléments afin d’avoir un résumé de tous les calculs nécessaires à la validation de la transaction. Vous avez donc désormais deux signatures et deux clés publiques (une dans le sac, une autre sur la pile).

Intervient ensuite l’opérateur OP_HASH160. Ce dernier signifie : « retirez l’élément du haut de la pile et hachez-le en utilisant SHA256+RIPEMD160, et mettez ensuite le résultat sur la pile.” Je vous invite à lire notre épisode expliquant les fonctions SHA256+RIPEMD160 qui permettent notamment de réduire les informations pour les rendre plus lisibles. 

En prenant donc la clé publique, OP_HASH160 va permettre de déposer un PKH sur le haut de la pile pour pouvoir être vérifié et comparé.

C’est donc là qu’est utile la prochaine fonction : OP_EQUALVERIFY. Cette dernière signifie simplement « prenez les deux premiers éléments de la pile et comparez-les. S’ils sont égaux, passez à l’instruction de programme suivante ; sinon, quittez le programme avec une erreur.”

En somme, elle permet de comparer les deux signatures et PKH afin de déterminer si la transaction est valable et qu’elle détient bien les BTCs.

“S’ils sont égaux, cela signifie que la clé publique  que John a fournie dans le script de signature de sa transaction correspond à la PKH qui a été définie comme destinataire dans l’output.”

Pour finir, le dernier opérateur, OP_CHECKSIG signifie « vérifier que la clé publique supérieure sur la pile et la signature à côté de la pile peuvent signer correctement la transaction. Mettez vrai ou faux en haut de la pile en fonction du résultat de la vérification.”

OP_CHECKSIG permet donc de vérifier les deux éléments supérieurs de la pile, à savoir la clé publique et la signature de l’émetteur. Mais le receveur doit d’abord nettoyer le script de l’émetteur afin de ne sélectionner que ces deux éléments supérieurs.

Si la clé et la signature passent le test de l‘OP_CHECKSIG avec un “OK”, les Bitcoins peuvent enfin être transmis !

“Le seul script de signature acceptable est une signature valide suivie de la clé publique correspondant au PKH dans le script de la clé publique.”

Sources : Grokking Bitcoin, LearnMeaBitcoin .

Sur le même sujet :

    • Masterclass #12 : tout comprendre sur le hashing crypto et les signatures
    • Masterclass #13 : comment sont créées les adresses et sont-elles sécurisées ?
    • Masterclass #14 : tout comprendre sur comment fonctionnent les wallets
    • Masterclass #12 : tout comprendre sur le hashing crypto et les signatures
    • Masterclass #13 : comment sont créées les adresses et sont-elles sécurisées ?
    • Masterclass #14 : tout comprendre sur comment fonctionnent les wallets
    • Masterclass #12 : tout comprendre sur le hashing crypto et les signatures
    • Masterclass #13 : comment sont créées les adresses et sont-elles sécurisées ?
    • Masterclass #14 : tout comprendre sur comment fonctionnent les wallets
0

Avertissement : le contenu de cet article reflète uniquement le point de vue de l'auteur et ne représente en aucun cas la plateforme. Cet article n'est pas destiné à servir de référence pour prendre des décisions d'investissement.

PoolX : Bloquez vos actifs pour gagner de nouveaux tokens
Jusqu'à 12% d'APR. Gagnez plus d'airdrops en bloquant davantage.
Bloquez maintenant !

Vous pourriez également aimer

Le Quotidien : Le memecoin Kekius Maximus plonge après le changement de profil d'Elon Musk, les ETF Ethereum enregistrent des entrées mensuelles record de 2 milliards de dollars et plus

Résumé rapide Le retour d'Elon Musk à son profil X depuis Kekius Maximus a provoqué une chute de 75 % du prix du memecoin éponyme basé sur Ethereum en un peu plus d'une heure le jour du Nouvel An. Les ETF Ethereum au comptant aux États-Unis ont généré des entrées record dépassant 2 milliards de dollars en décembre, presque le double du chiffre de novembre. Le Service des impôts des États-Unis a reporté la mise en œuvre des nouvelles règles de déclaration du coût de base des cryptomonnaies au 1er janvier 2026, donnant aux courtiers plus de temps pour s'adapter. L'article suivant est adapté de la newsletter de The Block

The Block2025/01/02 19:23

Le BUIDL de BlackRock approuvé comme jeton de soutien pour le stablecoin Frax USD

La proposition de Securitize d'ajouter le jeton BUIDL de BlackRock comme garantie pour le stablecoin USD de Frax a été approuvée. Frax lance maintenant le stablecoin frxUSD.

The Block2025/01/02 19:23