Les adresses P2SH ou Pay-to-Script-Hash sont un type spécial d'adresse dans Bitcoin, qui vous permet de créer des adresses pouvant recevoir ou envoyer des transactions dans lesquelles une série d'instructions doit être remplie afin de débloquer les soldes que ces adresses contiennent.
El Payer au ScriptHash, ou aussi appelé P2SH, est un format de script utilisé sur le réseau Bitcoin qui permet de bloquer les bitcoins dans le hachage du script (une partie) puis de fournir le script d'origine (complet) lorsque les bitcoins sont déverrouillés au moment d'effectuer une transaction.
Cette fonctionnalité permet la création de scripts de rachat personnalisés qui peuvent être facilement partagés avec d'autres utilisateurs. Autrement dit, il vous permet de créer des adresses ou des transactions avec des horaires non conventionnels. Et ceux-ci ne peuvent être débloqués qu'en remplissant une série de conditions préétablies.
Depuis 2012, Bitcoin et d'autres crypto-monnaies ont intégré le format P2SH dans bon nombre de leurs adresses. Grâce à quoi les transactions peuvent être envoyées à un hachage de script au lieu d'un hachage de clé publique. Autrement dit, les transactions sont envoyées à une adresse qui commence par 3 au lieu de celle qui commence par 1 (ECDSA). Pour ce que les adresses encodées sous ce format représentent le hachage encodé d'un script et non celle d'une clé publique ECDSA.
De même, en raison de cette caractéristique, les adresses au format P2SH sont généralement utilisées pour effectuer des transactions adresses multi-signatures. Bien que ce ne soit pas sa seule utilité. Avec P2SH, vous pouvez configurer des adresses qui peuvent représenter un script à travers lequel d'autres types de transactions sont codés. Par exemple, avec P2SH, un utilisateur peut envoyer ses bitcoins à une adresse sécurisée de nombreuses manières possibles ou inhabituelles sans savoir comment la sécurité a été configurée. Alors que l'utilisateur qui reçoit la transaction peut devoir remplir certaines conditions ou instructions spéciales pour déverrouiller la transaction.
Exemple de transaction P2SH
Une transaction P2SH fonctionne car le scriptPubKey contient un hachage qui doit être débloqué afin de libérer le paiement des bitcoins bloqués. Tout d'abord, le script source de déverrouillage de la transaction (script de rachat ou script de rachat) se trouve dans le scriptSig de la transaction.
Ici nous pouvons clairement voir que le scriptSig mentionne une adresse MuSig ou multi-signature du type (2 sur 3). On y voit trois clés (les clés de l'image), deux signatures (des participants de la transaction) et le OP_CODE (code opération), OP_CHECKMULTISIG. Ce que cette partie du script de transaction va faire est de vérifier que les signatures et les clés qu'il contient sont capables de déverrouiller l'opération.
Autrement dit, vérifiez qu'au moins 2 des trois personnes autorisées effectuent la transaction. Une fois que le script a vérifié cela, nous pouvons être sûrs que nous avons en notre possession le script pour déverrouiller le bitcoin et nous passons à la deuxième partie.
Dans la deuxième partie, nous voyons comment le scriptPubKey d'une transaction P2SH a la structure suivante:
Ces OP_CODE nous indiquent que le scriptPubKey ne sera déverrouillé que si nous pouvons prouver que nous avons le script source de la transaction (le script de rachat vérifié dans le scriptSig). Pour ce faire, nous devons prendre le résultat de ce script et exécuter l'opération OP_HASH160. Autrement dit, appliquez un hachage au script SHA-256 puis un RIPEMD-160. Le résultat sera comparé au "script de hachage" dans le scriptPubKey (ceci en utilisant OP_EQUAL) et si le résultat est identique, nous aurons réussi à déverrouiller nos bitcoins.
Implémentation du format P2SH dans les adresses Bitcoin
BIP-0013
El Format d'adresse Pay-to-ScriptHash a été initialement introduit dans le BIP 13 élaboré par Gavin Andresen. Où il décrit un nouveau format pour les adresses Bitcoin avec lequel des transactions arbitraires complexes peuvent être prises en charge.
Dans ce BIP, Andressen décrit que ce nouveau format pour les adresses Bitcoin utilisera une longueur fixe de 20 octets. Qui représente le hachage du script à travers lequel les crypto-monnaies peuvent être échangées. Et il peut être facilement utilisé et scanné à partir d'un code QR, ou rapidement copié et collé pour effectuer la transaction souhaitée.
De même, Andresen décrit que dans les 4 premiers octets de la séquence d'octets la fonction checksum ou checksum de l'adresse, ce qui renforce l'infrastructure et la sécurité du réseau Bitcoin. En permettant la mise en œuvre d'une méthode de vérification beaucoup plus sécurisée, optimale et efficace que la simple troncature de SHA-256. En même temps, une propre identité est ajoutée pour chaque adresse créée dans le réseau.
BIP-0016
De même, dans le BIP 16, annoncé quelques mois après le BIP 13 par Gavin Andressen, P2SH est expliqué comme un soft fork du protocole Bitcoin conçu pour permettre aux adresses P2SH d'être établies comme un nouveau type de transaction standard. Cela vise à simplifier l'utilisation des scripts dans tout type de transaction, quelle que soit sa complexité.
Le BIP 16, conjointement avec le BIP 13, vise à minimiser les changements qui doivent être apportés à l'infrastructure de support du réseau Bitcoin. Faciliter le partage de scripts de blocage avec d'autres utilisateurs, quelle que soit la complexité de ces scripts.
Par exemple, avant d'implémenter P2SH si vous vouliez ajouter un script de verrouillage complexe sur vos bitcoins, il était nécessaire que vous partagiez l'intégralité du script de verrouillage avec l'utilisateur qui vous transférait. Mais avec l'avènement de P2SH, il est désormais possible de ne donner à cet utilisateur qu'une partie du script de verrouillage, plutôt que la séquence entière. Autrement dit, seul un hachage du script peut être livré au lieu du script entier.
Avantages de la mise en œuvre P2SH
Adresses multi-signatures
L'activation de P2SH permet aux utilisateurs du système Bitcoin d'effectuer ou de recevoir des transactions à des adresses multi-signatures. En fait, il s'agit de l'application la plus courante connue pour le format P2SH. Étant donné que les adresses au format P2SH sont conçues pour prendre en charge un ensemble de signatures égal ou inférieur au nombre de clés privées qui leur sont liées ou associées. Autrement dit, dans une adresse multi-signature ayant 3 clés associées, les 3 clés peuvent être les signataires, ou à défaut, seulement 2 ou 1 d'entre elles.
En outre, Les adresses Bitcoin utilisant le format P2SH sont facilement identifiables car elles commencent par le chiffre 3. Mais bien qu'il soit fréquemment utilisé pour créer des adresses multi-signatures, pas tant qu'une adresse commence par ce numéro signifie qu'il s'agit d'une adresse multi-signature. Une adresse commençant par le chiffre 3 sera toujours une adresse P2SH, mais ce ne sera pas toujours une adresse multi-signature.
Sécurité et confidentialité
Grâce au format P2SH, un utilisateur peut financer n'importe quel script sans savoir quelles sont les conditions de dépenses liées à ce script. Autrement dit, l'utilisateur peut envoyer ou partager les scripts associés à une transaction sans avoir une connaissance partielle ou totale de la configuration de ces conditions ou des instructions de sécurité.
Par conséquent, dans le cas d'être un expéditeur, l'utilisateur n'aura qu'à envoyer les transactions qu'il souhaite effectuer à l'adresse P2SH. Inutile de savoir comment les fonds que vous avez envoyés seront dépensés. Alors que dans le cas d'être un destinataire ou un destinataire, l'utilisateur doit connaître les conditions de dépenses associées à cette transaction. Cela peut varier entre le besoin d'une multi-signature, d'un mot de passe ou d'un autre, pour pouvoir accéder aux crypto-monnaies qui vous ont été envoyées.
De même, si le script de blocage P2SH ne contient qu'un hachage du script, il est impossible de savoir quel type de script provient de ce hachage. Rendre impossible pour un utilisateur de savoir si une transaction provient d'une adresse privée ou d'une multi-signature.
Sorties non dépensées plus petites
Comme toutes les sorties non dépensées ou UTXO de Bitcoin sont stockés dans la RAM des nœuds, il est important de conserver cet espace de stockage. Ainsi, en utilisant des scripts de blocage P2SH avec des séquences plus petites, les UTXO nécessiteront moins d'espace pour être stockés, permettant aux nœuds d'être plus efficaces en calcul et de travailler de manière agile et compétente dans la validation des transactions réseau.
Taux de commission plus bas
Comme les frais de commission facturés en Bitcoin ne sont pas liés aux montants transférés mais à la taille des transactions, un hachage de script avec une longueur plus courte permet à l'expéditeur d'une transaction d'envoyer ses fonds à des adresses P2SH sans avoir pour payer des frais de commission élevés. Comme cela se produirait dans le cas de l'utilisation des scripts complets.
Bien que ce ne soit peut-être pas un problème sérieux aujourd'hui, il se peut que ce soit à l'avenir; lorsque les récompenses minières sont réduites et que les nœuds restent aux taux de commission de transaction.
SegWit
Les adresses au format P2SH sont compatibles avec les deux adresses SegWit comme avec ceux qui ne le sont pas. Ainsi, les utilisateurs peuvent envoyer leurs fonds et effectuer facilement des transactions dans les deux portefeuilles.
Inconvénients de la mise en œuvre P2SH
La vérité est que le P2SH a très peu d'inconvénients ou de limitations. Parce que P2SH a été mis en œuvre longtemps après le développement des scripts Bitcoin originaux, les développeurs ont eu la possibilité de corriger les limitations qui étaient présentes sur le réseau à ce moment-là. Cependant, les limitations présentées par P2SH sont:
Taille des données
P2SH occupe plus d'espace dans la blockchain. Ce qui peut entraîner une congestion et influencer la capacité de fonctionnement du réseau. En effet, lors du blocage des bitcoins dans P2SH, 25 octets supplémentaires sont ajoutés au script d'origine, laissant un script multisig 2 sur 3 utilisant P2SH avec 278 octets. Comparé à 253 octets pour le même script multi-signature 2 sur 3 utilisant P2MS.