Aller au contenu principal
Script

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 :

  1. On part du hash de la clé publique (HASH160).
  2. On construit le witness program : OP_0 <20-byte hash>.
  3. On calcule le HASH160 de ce witness program.
  4. 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

← Retour au glossaire complet

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