Aller au contenu principal
Script

P2SH

P2SH (Pay-to-Script-Hash, BIP-16) verrouille les fonds sur le hash d'un script de dépense. Permet des conditions complexes (multisig, timelock) avec des adresses commençant par 3.... Très utilisé pour les multisig avant l'ère SegWit. Il est désormais souvent imbriqué (P2SH-P2WPKH/P2WSH).

Origine et BIP-16

P2SH, Pay-to-Script-Hash, est introduit en 2012 par le BIP-16 (Gavin Andresen). C'est l'une des premières grandes évolutions de Bitcoin : il permet d'envoyer des fonds à un hash de script plutôt qu'à une simple clé publique. Le destinataire choisit librement la condition de dépense, sans que l'émetteur ait à la connaître ni à la payer.

Anatomie du script

scriptPubKey :

OP_HASH160 <20-byte script hash> OP_EQUAL

Pour dépenser, l'input doit fournir :

<sig1> <sig2> ... <redeemScript>

Le redeemScript est le vrai script (par exemple un multisig 2-of-3). Le hash160 de ce redeemScript doit correspondre au hash inscrit dans le scriptPubKey. La validation se fait en deux temps : d'abord le hash, ensuite l'évaluation du redeemScript avec les signatures fournies.

Format d'adresse

Adresses commençant par 3 sur mainnet, encodées en Base58Check avec préfixe 0x05. Exemple : 3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy.

Cas d'usage classiques

Multisig

2 <pubkey1> <pubkey2> <pubkey3> 3 OP_CHECKMULTISIG

Un classique 2-of-3 pour la trésorerie d'entreprise ou la sécurité d'un héritage. Avant P2SH, l'émetteur devait fournir lui-même tout le script encombrant ; avec P2SH il envoie à une simple adresse 3....

Timelocks

OP_CHECKLOCKTIMEVERIFY (BIP-65) et OP_CHECKSEQUENCEVERIFY (BIP-112) permettent des conditions du type « dépensable seulement après le bloc N ». P2SH cache la complexité au payeur.

Atomic swaps

Hash-time locked contracts (HTLC) historiques sur Bitcoin et Litecoin.

Avantages

| Avantage | Bénéfice | |----------|---------| | Adresses courtes | Compatible UX wallet | | Coût payé par le dépensier | Économique pour l'émetteur | | Conditions privées | Le script n'apparaît qu'à la dépense | | Inter-opérable | Tous les wallets supportent les 3... |

Limites et évolution

P2SH a deux faiblesses :

  1. Malléabilité : avant SegWit, les TXIDs étaient sensibles à des modifications du scriptSig.
  2. Coût witness : tout le script s'inscrit dans la zone payante de la transaction, pas dans le witness à tarif réduit.

D'où l'apparition de P2SH-P2WPKH et P2SH-P2WSH (BIP-141), qui imbriquent du SegWit dans une enveloppe P2SH pour la compatibilité visuelle (3...) avec les vieux wallets, tout en bénéficiant du discount SegWit. Plus tard, P2WSH et P2TR ont rendu cette imbrication superflue.

Adoption actuelle

P2SH non-wrapped est en déclin (~5 % des UTXOs en 2025). Les multisig modernes utilisent P2WSH ou P2TR qui offrent confidentialité et discount.

À retenir

P2SH a démocratisé les scripts complexes dans Bitcoin. C'est l'innovation qui a rendu le multisig accessible à tous, jetant les bases de toute la programmabilité moderne.

Termes lies

← Retour au glossaire complet

Glossaire inspire du dictionnaire de Loic Morel sur Pandul.fr.