P2WPKH
P2WPKH (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.
Définition et histoire
P2WPKH, Pay-to-Witness-Public-Key-Hash, est le format SegWit natif équivalent à P2PKH. Introduit par les BIPs 141 (SegWit, 2016) et 173 (Bech32, 2017), il est activé sur le réseau le 24 août 2017. Une adresse P2WPKH typique commence par bc1q et fait 42 caractères, par exemple : bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq.
Anatomie du script
scriptPubKey (compact) :
OP_0 <20-byte pubkey hash>
Aucun OP_CHECKSIG explicite : Bitcoin Core reconnaît la pattern et exige automatiquement une signature valide dans le witness.
À la dépense, l'input :
scriptSig: videwitness:<signature> <pubkey>
Toutes les données de signature passent dans la zone témoin (witness) qui bénéficie du discount à un quart du poids.
Avantages par rapport à P2PKH
| Critère | P2PKH | P2WPKH | Gain | |---------|-------|--------|------| | Poids transaction | ~108 vbytes | ~68 vbytes | ~37 % | | Frais payés | x | 0,63 x | ~37 % | | Malléabilité | Possible | Aucune | Sécurité | | Format adresse | Base58 | Bech32 | Détection erreur | | Checksum | 32 bits | 30 bits | Similaire |
Le format Bech32
Bech32 (BIP-173) apporte plusieurs améliorations :
- insensible à la casse :
bc1q...=BC1Q... - détection d'erreur jusqu'à 4 caractères
- lisible vocalement : 32 caractères alphanumériques (excluant
1bio) - plus court que Base58Check pour la même quantité d'information
Bech32m (BIP-350) est utilisé pour Taproot (P2TR).
Discount SegWit en pratique
Le poids d'une transaction est calculé : base * 4 + witness * 1 = weight. Les vbytes sont weight / 4. Concrètement, un input P2WPKH consomme :
- 41 octets dans la zone base (×4 = 164)
- 107 octets dans le witness (×1 = 107)
- Total : 271 weight units = 68 vbytes
Là où un input P2PKH consomme 148 vbytes environ. Donc à frais fee_rate identique, P2WPKH coûte ~55 % de moins.
Cas d'usage
C'est le format par défaut des wallets modernes singlesig depuis 2019-2020 :
- BlueWallet, Sparrow, Electrum, Specter, Mempool, BitBox app
- Ledger Live (depuis longtemps)
- Hardware wallets : tous le supportent
Limites
- Pas de support pour des scripts complexes (utiliser P2WSH pour cela)
- Toujours devancé en confidentialité par P2TR
- Les frais identiques à Taproot pour singlesig
Migration vers P2TR
Si vous avez encore des wallets en P2WPKH, vous pouvez :
- Continuer à les utiliser : pas urgent.
- Créer un nouveau wallet en P2TR pour les futurs bitcoins.
- Pas besoin de migrer chaque UTXO sauf si vous voulez tout regrouper.
À retenir
P2WPKH a démocratisé SegWit en proposant un format simple, plus économique et résistant aux erreurs de saisie. C'est aujourd'hui le standard du wallet singlesig classique, en attendant la généralisation de P2TR.
Termes lies
- SegWit (Segregated Witness)SegWit, activé en août 2017, sépare la donnée witness du reste de la transaction. Cela résout la malléabilité, augmente la capacité effective des blocs et active Lightning. Soft fork emblématique issu de la Blocksize War. Existe en V0 (P2WPKH/P2WSH) et V1 (Taproot).
- P2PKHP2PKH (Pay-to-Public-Key-Hash) est le format historique d'adresse Bitcoin (préfixe 1...). Le script verrouille les fonds sur le HASH160 de la clé publique. Il dévoile la clé publique uniquement à la dépense. Toujours valide mais peu utilisé sur les nouveaux wallets.
- Bech32 / Bech32mBech32 est l'encodage des adresses SegWit (BIP-173), reconnaissable au préfixe « bc1 ». Il améliore la détection d'erreurs et la lisibilité. Bech32m (BIP-350) en est la variante pour Taproot. Plus efficace en QR code et plus sûr que Base58Check.
- Weight Unit (WU)Le Weight Unit est l'unité de poids des transactions Bitcoin (1 vB = 4 WU). Un bloc fait au plus 4 000 000 WU. Permet de comptabiliser les discounts SegWit (witness comptée 1 WU/byte). Standard depuis SegWit (BIP-141).
Glossaire inspire du dictionnaire de Loic Morel sur Pandul.fr.