P2SH-P2WPKH
P2SH-P2WPKH est un format SegWit imbriqué dans P2SH (Nested SegWit). Permet à un wallet d'envoyer à une adresse 3... tout en bénéficiant des bonus SegWit. Conçu comme un pont de migration. De moins en moins utilisé au profit du Native SegWit.
Pourquoi un format imbriqué ?
Quand SegWit est activé en août 2017, beaucoup de wallets (notamment d'exchange) ne savent pas envoyer à des adresses Bech32 commençant par bc1q. Pour faciliter la migration, le BIP-49 propose P2SH-P2WPKH : une adresse classique commençant par 3... qui, sous le capot, est un SegWit déguisé. Cela permet à un utilisateur de profiter du discount SegWit même quand son émetteur ne sait envoyer qu'à des 3....
Comment c'est construit
L'idée est d'imbriquer un script P2WPKH dans une enveloppe P2SH :
- On part du hash de la clé publique (HASH160).
- On construit le witness program :
OP_0 <20-byte hash>. - On calcule le HASH160 de ce witness program.
- Ce hash devient le destinataire d'une adresse P2SH classique.
scriptPubKey (output) :
OP_HASH160 <HASH160(OP_0 <pubkey hash>)> OP_EQUAL
Le scriptSig au moment de la dépense ne contient que le witness program ; la vraie signature et la clé publique vont dans le witness, donc bénéficient du discount.
Chemin de dérivation BIP-49
Les wallets HD utilisent le chemin m/49'/0'/0'/... pour distinguer les adresses P2SH-P2WPKH des autres :
| BIP | Format | Chemin |
|-----|--------|--------|
| BIP-44 | P2PKH (1...) | m/44'/0'/0'/ |
| BIP-49 | P2SH-P2WPKH (3...) | m/49'/0'/0'/ |
| BIP-84 | P2WPKH (bc1q...) | m/84'/0'/0'/ |
| BIP-86 | P2TR (bc1p...) | m/86'/0'/0'/ |
Avantages historiques
- Compatibilité maximale : tout wallet sachant envoyer à
3...peut payer un P2SH-P2WPKH. - Discount SegWit : la signature pèse 25 % de son poids brut (témoin = factor 1, base = factor 4).
- Adresses lisibles : Base58 connu de l'écosystème.
Limites
- Adresses plus longues que P2WPKH natif.
- Légèrement plus coûteuses : un peu plus de bytes dans le scriptSig que le pur P2WPKH.
- Devenu obsolète : presque tous les wallets supportent Bech32 depuis 2019-2020.
Adoption actuelle
P2SH-P2WPKH représentait l'écrasante majorité du SegWit en 2018 ; en 2025, c'est l'inverse :
- ~5-8 % des UTXOs en P2SH-P2WPKH
- ~50-60 % en P2WPKH natif
- ~15-20 % en P2TR
- Le reste en P2PKH et P2SH classiques
Migration
Si vous avez encore des fonds en 3..., les déplacer vers bc1q... ou bc1p... est simple : un envoi suffit. Le gain en frais à long terme dépasse vite le coût de la migration unique.
À retenir
P2SH-P2WPKH a été le pont entre l'ancien monde (Base58) et le nouveau (Bech32). Il a accéléré l'adoption de SegWit dès 2017-2018, mais il a aujourd'hui rempli sa mission : son usage décline naturellement au profit du SegWit natif et de 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.
- P2WPKHP2WPKH (Pay-to-Witness-Public-Key-Hash) est le format SegWit natif équivalent à P2PKH (préfixe bc1q...). Plus économique en frais grâce au discount des données witness. Standard de fait pour les wallets singlesig modernes. Spécifié dans BIP-141 et BIP-173.
- 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).
- BIP-49BIP-49 spécifie le chemin de dérivation pour Nested SegWit (P2SH-P2WPKH). Format ypub.
Glossaire inspire du dictionnaire de Loic Morel sur Pandul.fr.