Aller au contenu
buybitcoinsmart

Glossaire / Adresses et clés

Adresse P2SH

Aussi appelé Pay-to-Script-Hash, Sortie P2SH, Adresse Pay-to-Script-Hash.

Qu'est-ce qu'une adresse P2SH ?
Une adresse P2SH commence par 3 et engage le hachage d'un script de rachat, de sorte que les conditions de dépense restent secrètes jusqu'à ce que quelqu'un révèle le script.

Spécifié dans BIP-16.

Pay to script hash est arrivé avec le BIP-16, appliqué à partir du bloc 173 805 le 1er avril 2012, et il a changé qui supporte le coût de la complexité. Avant, un expéditeur devait écrire tout le contrat dans la sortie. Après, l'expéditeur écrit 23 octets et le destinataire paie pour révéler le script plus tard, ce qui explique qu'une adresse 3 puisse dissimuler un coffre à cinq clés ou un simple portefeuille à clé unique.

Comment cela fonctionne

Le script de sortie est court et identique pour chaque adresse P2SH : OP_HASH160 suivi d'un hachage de 20 octets et OP_EQUAL, soit 23 octets au total. Le hachage engage un script de rachat que seul le destinataire connaît.

La dépense se déroule en deux passes. Le scriptSig fournit les arguments dont le script de rachat a besoin, puis le script de rachat sérialisé lui-même comme dernier élément. Un nœud hache ce dernier élément, le compare à la valeur engagée, et si elles correspondent il désérialise le script et l'exécute contre tout ce qui reste sur la pile. Les deux étapes doivent réussir.

Deux limites déterminent ce qui tient. Un script de rachat est un seul élément de pile, il ne peut donc pas dépasser la limite de push de 520 octets que Bitcoin Core définit comme MAX_SCRIPT_ELEMENT_SIZE. La politique de relais ajoute un second plafond de 15 opérations de signature par entrée P2SH. Ensemble, elles plafonnent l'arrangement bien en dessous de ce que le langage de script autorise en général, où la limite est un script de 10 000 octets.

L'adresse elle-même est du Base58Check avec un octet de version 0x05, ce qui produit le 3 initial et une chaîne de 34 caractères. Le BIP-13 a défini ce format, séparément de la règle de consensus du BIP-16.

Où le voir

Les formulaires de retrait des plateformes d'échange qui décrivent une option comme « SegWit » sans dire « native » désignent généralement une adresse 3. Les coffres multisig construits avant 2018 les utilisent. Les échanges atomiques et les contrats à verrouillage temporel haché qui ont besoin d'un script mais veulent une adresse qu'un portefeuille ordinaire peut payer en font autant.

La conséquence de cette conception est l'ambiguïté, et elle est totale. Une sortie 3 non dépensée ne révèle qu'un hachage, un explorateur de blocs ne peut donc pas vous dire si elle contient une clé unique encapsulée ou un quorum d'entreprise, et l'expéditeur ne le peut pas non plus. L'information n'apparaît que dans la transaction de dépense.

Cette ambiguïté comporte un vrai mode de perte. Récupérer des bitcoins depuis une sortie P2SH nécessite le script de rachat, pas seulement les clés privées. Une phrase de récupération seule ne reconstruira pas un script arbitraire, tout arrangement P2SH plus élaboré qu'une dérivation de portefeuille standard doit donc être sauvegardé sous forme de descripteur ou des octets du script eux-mêmes. Des personnes ont perdu des bitcoins en possédant toutes les clés et aucun script.

Adresse P2SH vs multisig P2SH

Le multisig P2SH est une chose que vous pouvez mettre dans une adresse P2SH, pas un synonyme du format. L'adresse est un conteneur, et le script de rachat qui s'y cache peut être un multisig m-sur-n, un hachage de clé SegWit imbriqué, une clause de récupération à verrouillage temporel, ou un script que personne d'autre n'a jamais écrit. Lire une adresse 3 comme « une adresse multisig » est une supposition qui échoue souvent, car le SegWit encapsulé a fait du 3 le format à clé unique par défaut pendant plusieurs années après 2017 et a laissé des millions de portefeuilles ordinaires derrière ce préfixe.

À ne pas confondre avec

Questions fréquentes

Que contient réellement une adresse 3 ?

Il n'y a aucun moyen de le savoir depuis l'adresse. La sortie contient un hachage de 20 octets d'un script de rachat, et ce script peut être un quorum multisig, une clé SegWit encapsulée ou un contrat à verrouillage temporel. Il ne devient visible qu'au moment où les bitcoins sont dépensés.

Ai-je besoin du script de rachat pour récupérer des bitcoins P2SH ?

Oui, sauf si le script provient d'une dérivation de portefeuille standard que votre logiciel peut reconstruire. Les clés privées seules ne permettront pas de dépenser une sortie P2SH arbitraire, sauvegardez donc le descripteur ou les octets du script en même temps que votre phrase de récupération.

Termes associés

Plus de termes : Adresses et clés

Lire cette page en anglais