P2SH-P2WSH
P2SH-P2WSH est un Nested SegWit pour des scripts complexes. Combine la rétro-compatibilité de P2SH et l'efficacité de SegWit. Surtout utilisé pour les multisigs migrant depuis P2SH. Aujourd'hui dépassé par P2WSH et P2TR.
Définition
P2SH-P2WSH est le pendant script de P2SH-P2WPKH. Comme lui, il enveloppe un programme SegWit dans une enveloppe P2SH classique pour offrir une adresse compatible commençant par 3..., mais bénéficie en interne du witness discount. La différence : à la place d'une simple clé publique hashée, il référence un script complet (multisig, timelock, miniscript).
Comment c'est construit
- On définit le redeemScript (multisig 2-of-3, par exemple).
- On calcule le SHA256(redeemScript) — 32 octets.
- On forme le witness program :
OP_0 <32-byte hash>. - On hash ce witness program en HASH160.
- Ce HASH160 devient le destinataire d'une adresse P2SH classique.
Dépenser une UTXO P2SH-P2WSH demande, dans le witness, à la fois les signatures et le redeemScript ; le scriptSig ne contient que le witness program.
Pourquoi cette imbrication
En 2017-2019, beaucoup d'entreprises utilisaient déjà du multisig P2SH natif (adresses 3...). Migrer vers P2WSH bc1q... cassait la compatibilité avec :
- les anciens exchanges
- les outils internes
- les contrats juridiques liant à une adresse
3...
P2SH-P2WSH permettait d'améliorer la performance (frais réduits, signatures dans le witness) sans changer le format visuel. C'est le compromis « SegWit invisible ».
Cas d'usage typiques
| Cas | Pourquoi P2SH-P2WSH | |-----|---------------------| | Multisig d'entreprise legacy | Compatibilité émetteurs | | Custodien (BitGo, Casa v1) | Migration progressive | | Atomic swaps inter-chaînes | Format universellement reconnu |
BitGo, l'un des plus gros custodien institutionnel, a longtemps proposé P2SH-P2WSH par défaut pour ses clients.
Limites
- Taille : un wrap supplémentaire = ~20-30 octets de plus par dépense qu'un P2WSH natif.
- Pas de Taproot benefits : pas de signatures Schnorr agrégées, pas de privacy MAST.
- Pas de witness commitment direct dans le scriptPubKey.
Adoption
P2SH-P2WSH a connu son apogée entre 2018 et 2021. Depuis l'activation de Taproot (nov. 2021) et la normalisation de P2WSH, son usage décline rapidement. Les nouveaux deployments multisig institutionnels privilégient :
- P2TR avec MuSig2 / FROST pour la confidentialité on-chain.
- P2WSH pour les setups Miniscript explicites.
Migration vers P2WSH ou P2TR
Pour un multisig, la migration consiste à dépenser les UTXOs vers une nouvelle adresse, en utilisant les mêmes clés mais un format différent. Cela demande un nouveau descriptor (Output Script Descriptor) et la coordination des cosignataires.
À retenir
P2SH-P2WSH est le « SegWit caché » des scripts complexes : il a permis aux multisigs institutionnels d'adopter SegWit sans bouleverser leur infrastructure. Aujourd'hui, c'est un format en sursis, dépassé par P2WSH et surtout par Taproot.
Termes lies
- Nested SegWitNested SegWit (P2SH-P2WPKH/P2WSH) est un type d'adresse SegWit imbriquée dans une adresse P2SH. Préfixe 3.... Conçu pour faciliter l'adoption de SegWit par des wallets ne supportant pas encore Bech32. Largement remplacé par Native SegWit aujourd'hui.
- P2WSHP2WSH (Pay-to-Witness-Script-Hash) est l'équivalent SegWit de P2SH (préfixe bc1q... longue). Verrouille sur un hash de script (multisig par ex.). Plus économique que P2SH-P2WSH. Standard pour les multisigs SegWit jusqu'à l'arrivée de Taproot.
- P2SHP2SH (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).
Glossaire inspire du dictionnaire de Loic Morel sur Pandul.fr.