Apprenez en plus sur les ScriptSig, les différents codes de dévérouillages des output de transactions : P2PK, P2PKH, P2MS et P2SH.
P2PK, P2PKH, P2MS et P2SH : les ScriptSig
Les ScriptSig sont les codes qui permettent de déverrouiller un input de transaction. Dans l’épisode précédent, nous avions vu que chaque input utilisé dans une transaction nécessite une signature pour déverrouiller les informations et donc les fonds à dépenser.
Et plusieurs inputs peuvent être utilisés pour une seule et même transaction. Une transaction peut donc nécessiter plusieurs signatures. Le code utilisé par le ScriptSig est appelé “Script”.
Dans un souci d’améliorer la sécurité des fonds et le système de transactions, plusieurs ScriptSig ont fait leur apparition : P2PK, P2PKH, P2MS et P2SH.
“Imaginez une organisation à but non lucratif composée de trois personnes. Ce serait mieux si ces trois personnes pouvaient partager la responsabilité et le pouvoir sur l’argent d’une manière ou d’une autre. Grâce au langage de programmation Script, ils peuvent accomplir cela. Ils peuvent créer chacun une clé privée et exiger que deux des trois clés doivent être signées pour que la transaction soit valide et pour dépenser les fonds.”
En d’autres termes, le P2PKH, ou Pay to Public Key Hash, permet de protéger les fonds en cas de perte d’une des clés privées ou du hack de celui-ci. Découvrez en plus sur ces ScriptSig et ce qu’ils apportent au système de transaction Bitcoin :
Le P2PK, Pay 2 Public Key
Le P2PK, ou “payer à la clé publique” en français consiste donc à envoyer ses fonds à une adresse de clé publique.
Le receveur passe donc par toutes les étapes de vérifications et le receveur doit présenter la signature conforme pour déverrouiller le Script. C’est donc le ScriptSig le plus simple et qui est désormais peu utilisé. D’autres solutions ont émergé.
Pour faire simple, l’utilisateur ne doit fournir qu’une signature avec le système P2PK.
P2PKH, le Pay 2 Public Key Hash
Afin de permettre des transactions plus sécurisées et moins coûteuses, la fonction de hashing permet de compacter les informations dans les lock, qui sont verrouillées par les locking Script.
C’est donc là que le SriptSig P2PKH intervient. Comme son nom l’indique, il permet d’envoyer ses fonds directement à une Public Key Hash. Dans la mesure où les HD wallets utilisaient ce processus de hashing, c’était le SriptSig le plus utilisé jusqu’en 2016 et l’apparition du P2WPKH.
Dans le P2PKH, l’utilisateur doit donc fournir à la fois la signature mais également sa clé publique.
Comme évoqué dans le précédent article, le script de verrouillage est donc : DUP HASH160
Ceci permet donc de sécuriser le processus. Imaginez qu’un joueur de poker veut prouver qu’il possède un roi, sans pour autant révéler son jeu. Il envoie donc une preuve sous la forme d’un hash dans la blockchain qui correspond à l’empreinte (ou le hash) qui prouve que c’est bien un roi.
Une fois le hash mis sur la table, le joueur adverse, quant à lui, doit prouver qu’il est bien le joueur à qui est destinée cette preuve en apportant sa signature. La signature correspond à sa clé publique, la mêmeque celle contenu dans les informations du lock de l’output du joueur possédant un roi.
Ce procédé est donc plus sécurisé que P2PK puisqu’il ajoute un processus de vérification plus poussé et protège bien mieux les clés des utilisateurs. Grâce à ce système de signature et “d’empreinte (hash an anglais”.
P2MS : le Pay To MultiSig
Arrivé et développé dans les années 2012, peu avant l’arrivée d’Ethereum, Bitcoin a vu l’émergence du P2MS, autrement appelé le “paiement à la multi-signature”.
Comme évoqué plus tôt, les utilisateurs peuvent décider de “partager la responsabilité” des fonds. Il nécessite donc la signature de X nombre de personnes ou wallets pour que les fonds puissent être dépensés.
Ces ScriptSig nécessitent entre 1 et 3 signatures et peuvent aller jusqu’à 20 signatures. Ce ScriptSig possède désormais la fonction CHECKMULTISIG au lieu de Checksig.
P2SH : le Pay To Script Hash
Nous y voilà enfin, le P2SH. Autrement appelé “payer au Script du hash”. Il permet donc de payer, non pas à l’empreinte de la clé publique mais au script lui-même. Le script, nommé redeemscript, est donc le hash, ou l’empreinte, de l’adresse de l’émetteur.
En effet, une signature est créée à partir d’une clé privée et la signature sert de preuve que la clé publique correspond à la clé privée. Dans ce contexte, le script est l’outil qui permet de mettre en place tout le processus de vérification et est associé à l’empreinte de la clé publique.
Avec le Pay To Script Hash, il est donc possible, via ce script redeemscript, d’avoir des transactions beaucoup plus fluides. En transmettant un Script au lieu de la Public Key, il peut recevoir des fonds de n’importe quel wallet. Il reçoit les fonds directement dans le processus de vérification des transactions.
C’est comme envoyer son colis à domicile au lieu d’un point relais. A noter que le P2WSH, ou Pay 2 Witness Script Hash est le plus utilisé. Il fonctionne de la même manière que le P2SH mais en utilisant le SegWit.
Sources : Grokking Bitcoin, LearnMeaBitcoin.
Sur le même sujet :