Aller au contenu
buybitcoinsmart

Glossaire / Référence pour développeurs

Script témoin

Qu'est-ce que le script témoin ?
Le script témoin contient les conditions de dépense réelles d'une sortie P2WSH et voyage dans le témoin, où ses octets sont pondérés au quart du coût habituel.

Spécifié dans BIP-141.

SegWit a donné aux scripts leur propre section de la transaction, et le script témoin est ce qui s'y trouve lorsqu'un coffre bc1q est dépensé. Chaque octet à l'intérieur du témoin compte pour une unité de poids plutôt que quatre, une remise de 75 pour cent arrivée au bloc 481 824 en août 2017. Cette remise explique pourquoi la conservation multisig a cessé d'être coûteuse.

Comment cela fonctionne

Le script témoin est engagé par un simple hachage SHA-256 présent dans la sortie, et il reste secret jusqu'au jour où quelqu'un dépense. Celui qui dépense remplit la pile du témoin avec les arguments exigés par les conditions, puis ajoute le script sérialisé comme dernier élément. Un nœud hache cet élément, vérifie les 32 octets par rapport à l'engagement, et exécute ce qu'il vient de vérifier.

Le consensus applique les mêmes plafonds de script que les dépenses héritées : 10 000 octets de script et 201 instructions de travail. La politique de relais s'arrête bien plus bas, à 3 600 octets avec au plus 100 éléments sur la pile, si bien que tout ce qui est plus grand exige un arrangement direct avec un mineur plutôt qu'une diffusion ordinaire.

C'est l'arithmétique qui a changé les comportements. Un script 2-sur-2 fait 71 octets : deux poussées de clés publiques de 33 octets, les deux opcodes de comptage et l'opcode de vérification. À l'intérieur d'un témoin, ces 71 octets coûtent 71 unités de poids, soit moins de 18 octets virtuels. Les mêmes 71 octets portés à l'ancienne, dans un script de signature, coûtent 284 unités de poids, soit 71 octets virtuels. Rien n'a changé à la sécurité, seulement le prix de son usage.

Où vous le voyez

Lightning fonctionne sur des scripts témoins. Chaque canal est financé dans une sortie 2-sur-2, et les transactions d'engagement à l'intérieur d'un canal sont construites à partir d'une petite bibliothèque de scripts de révocation et de paiements à hash verrouillé spécifiés dans le BOLT 3, ce qui signifie que la plupart sont créés et détruits sans jamais atteindre la chaîne.

Le matériel de signature les voit comme un champ nommé. Le format PSBT définit un emplacement de script témoin sur les entrées comme sur les sorties, de sorte qu'un coordinateur peut remettre à un cosignataire les conditions exactes qui sont satisfaites et que l'appareil peut montrer à l'utilisateur ce qu'il approuve plutôt qu'un hachage.

Vous les voyez aussi enveloppés. Une adresse P2SH-P2WSH imbriquée, courante sur les plateformes d'échange qui n'ont jamais mis à jour leurs écrans de retrait, porte un script de rachat de 34 octets dont le seul rôle est de pointer vers le programme témoin, le script témoin en dessous faisant le vrai travail.

Les sauvegardes ont besoin des octets du script, pas seulement des clés. Conservez le descripteur de sortie avec chaque phrase de récupération, car un script témoin que personne n'a noté par écrit transforme un quorum pleinement signé en bitcoins que personne ne peut déplacer.

Script témoin vs Tapscript

Un script témoin est un script unique qui est révélé en entier ; une feuille tapscript est une branche d'un arbre où seule la branche que vous utilisez est publiée. Selon le BIP-341, une sortie engage une racine de merkle sur de nombreuses feuilles, de sorte qu'un coffre doté de cinq chemins de récupération distincts n'en montre qu'un seul au moment de la dépense et garde les quatre autres privés pour toujours. Tapscript supprime aussi la limite de 10 000 octets, désactive OP_CHECKMULTISIG au profit d'OP_CHECKSIGADD, adapté au traitement par lots, et applique un budget de poids pour les vérifications de signature plutôt qu'un nombre fixe d'instructions. Si votre portefeuille écrit bc1q, vous utilisez des scripts témoins ; bc1p désigne plutôt la conception Taproot.

À ne pas confondre avec

Questions fréquentes

Que se passe-t-il si je perds le script témoin mais que je conserve toutes les clés ?

Les bitcoins ne peuvent pas être dépensés. La sortie engage un hachage du script, et aucun nœud n'acceptera une dépense qui ne le reproduit pas, donc le script ou un descripteur qui l'enregistre doit être conservé avec vos sauvegardes de phrase de récupération.

Un script témoin est-il identique à une feuille tapscript ?

Non. Un script témoin est révélé en entier chaque fois que la sortie est dépensée, tandis qu'une sortie Taproot engage un arbre de feuilles et ne révèle que la branche réellement utilisée, gardant privé tout autre chemin de dépense.

Termes associés

Plus de termes : Référence pour développeurs

Lire cette page en anglais