P2WSH
P2WSH (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.
Définition
P2WSH, Pay-to-Witness-Script-Hash, est le format SegWit natif pour les scripts complexes. C'est l'évolution de P2SH qui passe les données coûteuses (signatures, script) dans la zone witness au tarif réduit. Introduit par BIP-141 en 2017 avec SegWit. Une adresse P2WSH commence par bc1q et est plus longue qu'une P2WPKH : 62 caractères (basée sur un hash SHA-256, donc 32 octets).
Anatomie du script
scriptPubKey :
OP_0 <32-byte SHA256(witnessScript)>
À la dépense, le witness contient :
<sig1> <sig2> ... <witnessScript>
Le witnessScript est le script complet (multisig, timelock, miniscript), évalué après vérification du hash. Le scriptSig de l'input reste vide.
Différence avec P2SH
| Critère | P2SH | P2WSH |
|---------|------|-------|
| Format adresse | Base58 (3...) | Bech32 (bc1q...) |
| Hash utilisé | HASH160 (20 octets) | SHA256 (32 octets) |
| Discount frais | Non | Oui (factor 4) |
| Malléabilité | Possible | Aucune |
| Confidentialité | Script révélé à la dépense | Script révélé à la dépense |
Cas d'usage typiques
Multisig moderne
Un 2-of-3 P2WSH :
OP_2 <pubkey1> <pubkey2> <pubkey3> OP_3 OP_CHECKMULTISIG
Standard de fait pour la trésorerie d'entreprise jusqu'à l'arrivée de Taproot/MuSig2.
Lightning Network
Toutes les transactions d'ouverture de canal classique sont en P2WSH. C'est ce qui permet à Lightning d'utiliser des HTLCs efficaces (SegWit a été un prérequis pour Lightning).
Timelocks et CSV
Les vaults, l'héritage programmé, les contrats temporels utilisent presque tous des scripts P2WSH avec OP_CHECKLOCKTIMEVERIFY ou OP_CHECKSEQUENCEVERIFY.
Atomic swaps
Les swaps Bitcoin ↔ Liquid, Bitcoin ↔ Lightning, Bitcoin ↔ Monero utilisent des HTLC P2WSH.
Avantages
| Avantage | Gain | |----------|------| | Discount SegWit | ~30-40 % de frais en moins vs P2SH | | Pas de malléabilité | Sécurise Lightning | | Hash 32 bits | Résistance collisions accrue | | Bech32 | Détection d'erreur de saisie |
Limites face à P2TR
P2WSH dévoile tout le script à la dépense. Un multisig 2-of-3 est immédiatement reconnaissable sur la blockchain. P2TR supprime ce problème : avec MuSig2, le multisig coopératif ressemble à un singlesig.
Adoption actuelle
P2WSH a été le standard multisig 2019-2023. Depuis Taproot (nov. 2021) :
- Les nouveaux multisigs basculent vers P2TR
- P2WSH reste utilisé pour la compatibilité hardware wallet et l'audit explicite (le script est visible)
- Lightning utilise encore P2WSH pour les canaux non-Taproot (et bascule progressivement)
Migration
Pour migrer un multisig P2WSH vers P2TR (MuSig2 ou Tapscript) :
- Mettre à jour tous les cosignataires vers du hardware/software supportant MuSig2.
- Établir un nouveau descriptor P2TR.
- Dépenser les UTXOs P2WSH vers les nouvelles adresses.
À retenir
P2WSH est le format multisig SegWit qui a permis à Bitcoin de scaler sa programmabilité économiquement. C'est aujourd'hui un standard mature mais en transition vers P2TR pour les nouveaux setups.
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).
- 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).
- Multisig (multisignature)Une transaction multisig requiert plusieurs signatures pour être valide (M-of-N). Permet de partager le contrôle d'un wallet entre plusieurs parties ou clés stockées séparément. C'est l'outil clé pour la sécurité avancée et l'héritage. Standard avec Sparrow, Specter, Liana, Nunchuk.
- WitnessScriptLe witnessScript est l'équivalent SegWit du redeemScript pour P2WSH. Il décrit les conditions de dépense (multisig, timelock...) et est révélé dans la donnée witness. Bénéficie du discount SegWit. Indispensable pour les multisigs P2WSH.
Glossaire inspire du dictionnaire de Loic Morel sur Pandul.fr.