Glossaire / Adresses et clés
Nested SegWit
Aussi appelé SegWit imbriqué, Wrapped SegWit, P2SH-P2WPKH, adresse 3.
- Qu'est-ce que Nested SegWit ?
- Nested SegWit encapsule un hachage de clé SegWit natif dans une adresse P2SH, ce qui apporte la compatibilité avec les logiciels qui ne pouvaient pas lire les chaînes bc1, au prix d'environ 23 vbytes supplémentaires par entrée.
Spécifié dans BIP-49.
En 2017, presque aucune plateforme d'échange ne savait analyser une adresse bech32, c'est pourquoi le BIP-141 a permis à un programme témoin de se loger dans une sortie pay to script hash ordinaire. Le résultat ressemble pour l'expéditeur à n'importe quelle autre adresse 3 et se dépense pour environ 91 vbytes, contre 148 pour une entrée héritée et 68 pour une entrée bc1q simple. C'était un pont, et la traversée est ouverte depuis des années.
Comment cela fonctionne
Une sortie Nested SegWit est une sortie P2SH banale : OP_HASH160, un hachage de 20 octets, OP_EQUAL. Ce qui se trouve derrière le hachage est inhabituel. Le script de rachat n'est pas vraiment un script mais le programme témoin de 22 octets lui-même, l'octet de version 0x00 suivi d'un push du HASH160 de 20 octets de votre clé publique compressée.
La dépense utilise donc les deux mondes. Le scriptSig contient exactement un élément, ce programme de 22 octets, qui satisfait la vérification P2SH. La signature et la clé publique vont dans le témoin, où elles obtiennent la réduction. Ajoutez l'opcode de push et le scriptSig apporte 23 octets hors témoin pesant 92 unités, et 92 divisé par quatre donne toute la pénalité de 23 vbytes par rapport au SegWit natif.
Les portefeuilles gardent ces adresses sur leur propre branche. Le BIP-49 attribue le chemin de dérivation m/49'/0'/0', et le SLIP-132 a donné à cette branche le préfixe de clé étendue ypub, ce qui fait qu'une restauration de sauvegarde produit des adresses 3 plutôt que des adresses bc1q. Un mauvais préfixe lors d'une restauration affiche un portefeuille vide alors même que la phrase de récupération est correcte.
Où le rencontrer
Tout écran de dépôt ou de retrait proposant « SegWit » et « Native SegWit » comme deux choix distincts propose, dans cet ordre, la forme imbriquée puis la forme native. Les écrans de configuration de compte Ledger et Trezor font de même. Les plateformes d'échange qui ont adopté SegWit tôt ont fait de la forme imbriquée la norme et beaucoup n'ont jamais changé, si bien qu'une grande quantité de stockage à froid en conservation se trouve encore derrière des adresses 3.
Passer au SegWit natif est une transaction on-chain, pas un changement de réglage, car les deux formats viennent de branches différentes de la même phrase de récupération. Faites-le quand les frais sont bas, envoyez d'abord un petit montant de test, et vérifiez ensuite que votre portefeuille affiche le compte m/84'/0'/0'. Il n'y a aucune différence de sécurité entre les deux, donc rien ne presse. L'arbitrage porte uniquement sur les frais contre la compatibilité, et la compatibilité a cessé d'être rare.
Nested SegWit vs adresse P2SH
Nested SegWit est un type d'adresse P2SH, et on-chain il est impossible de distinguer les deux avant une dépense. Une chaîne commençant par 3 peut engager un programme témoin de 22 octets, un script de rachat multisig 2-sur-3, ou une clause de récupération verrouillée dans le temps, et la sortie non dépensée ne révèle rien. Cette opacité a autrefois compté comme un avantage pour la vie privée. En pratique, elle signifie aujourd'hui qu'un explorateur de blocs ne peut pas vous dire ce que vous détenez, et qu'un expéditeur ne peut pas vous avertir que l'adresse coûtera plus cher à vider qu'une adresse bc1q.