Aller au contenu
buybitcoinsmart

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.

À ne pas confondre avec

Questions fréquentes

Toute adresse 3 est-elle une adresse Nested SegWit ?

Non. Nested SegWit est un type d'adresse P2SH, et une adresse 3 peut tout aussi bien cacher un quorum multisig ou un contrat verrouillé dans le temps. Rien dans l'adresse elle-même ne permet de les distinguer avant que les bitcoins ne soient dépensés.

Vaut-il la peine de passer du nested au SegWit natif ?

Seulement quand les frais sont bas. L'écart est d'environ 23 vbytes par entrée, donc un portefeuille avec quelques UTXO économise peu, tandis qu'un portefeuille détenant des dizaines de petites entrées économise sensiblement sur chaque dépense future.

À lire ensuite

Termes associés

Plus de termes : Adresses et clés

Lire cette page en anglais