Glossaire / Protocole et mises à jour
Ancrage éphémère
- Qu'est-ce qu'un ancrage éphémère ?
- Un ancrage éphémère est une sortie de valeur nulle ajoutée à une transaction dans le seul but de permettre à quelqu'un d'y rattacher un enfant qui paie des frais et de faire entrer la transaction parente dans un bloc.
Spécifié dans BIP-431.
Les protocoles de contrat tels que Lightning doivent signer des transactions bien avant que quiconque sache quels seront les frais, et ils ont donc besoin d'un moyen de majorer les frais plus tard. Bitcoin Core 28.0 a fait d'un script de quatre octets que chacun peut dépenser un standard répondant exactement à cette fonction, et 29.0 a permis qu'une telle sortie ne contienne rien du tout, à condition que sa transaction parente ne paie aucun frais. Le bénéfice : des fermetures de canaux qui coûtent moins cher et laissent moins de fonds bloqués.
Comment cela fonctionne
Un ancrage éphémère résout un problème de calendrier : une transaction présignée porte un taux de frais choisi des mois avant sa diffusion, et le moment venu, le marché a évolué.
L'ancienne solution consistait à donner à la transaction une petite sortie dépensable et à laisser quiconque en avait besoin diffuser un enfant qui paie pour les deux. Les canaux à ancrage de Lightning procèdent ainsi avec deux sorties de 330 satoshis, une par partie. Cela fonctionne, mais cet argent est engagé dans chaque transaction d'engagement, et les sorties restent ensuite dans l'ensemble des sorties non dépensées, que quelqu'un les récupère ou non.
Pay-to-anchor a supprimé la majeure partie de ce coût. Bitcoin Core 28.0 a reconnu une nouvelle sortie standard dont le script fait exactement quatre octets : OP_1, un push de deux octets, et les octets 0x4e 0x73. Il s'agit d'un programme segwit de version 1 de longueur deux, et comme Taproot laisse les programmes de version 1 inconnue sans restriction, chacun peut le dépenser avec un témoin vide. Aucune clé, aucun script à révéler, et une entrée assez petite pour ne valoir presque rien.
La règle de la poussière a toutefois gêné au début. Bitcoin Core évalue une sortie d'après ce que coûterait sa dépense, et pour celle-ci le calcul donne 80 octets virtuels, ce qui, au taux de poussière standard de 3 satoshis par octet virtuel, signifie qu'elle doit contenir au moins 240 satoshis. Mieux que 330, mais toujours pas gratuit.
Bitcoin Core 29.0 a comblé l'écart avec la poussière éphémère : une transaction peut porter une seule sortie inférieure au seuil de poussière, y compris une sortie ne valant rien, à condition que la transaction elle-même ne paie aucun frais. Des frais nuls, voilà l'astuce. Une transaction parente qui ne paie rien ne peut jamais être minée seule, ce qui garantit que l'ancrage ne sera jamais laissé à l'abandon parmi les sorties non dépensées. Il n'existe qu'à l'intérieur d'un paquet, aux côtés de l'enfant qui le dépense, d'où son nom.
Deux autres éléments de Bitcoin Core 28.0 rendent le dispositif utilisable. Les transactions TRUC, spécifiées dans le BIP431 et signalées par la version 3, autorisent une transaction parente non confirmée et une transaction enfant non confirmée et plafonnent la transaction à 10 000 octets virtuels, ce qui élimine les attaques d'épinglage qui rendaient la majoration des frais peu fiable. La retransmission opportuniste par paquets permet ensuite à une transaction parente de voyager avec son enfant comme une paire, de sorte qu'une transaction parente à frais nuls peut atteindre un mineur.
Où cela se voit
Les ancrages éphémères apparaissent dans les fermetures de canaux Lightning et dans les protocoles de contrat plus récents bâtis sur des transactions présignées, jamais dans les paiements ordinaires.
Sur un explorateur, ils semblent anormaux au premier regard : une sortie qui ne vaut rien, dépensée dans la transaction suivante par une entrée au témoin vide. Si vous exploitez un nœud Lightning, l'effet est qu'une fermeture forcée n'a plus besoin de réserver de la poussière dans chaque engagement, et que majorer une fermeture bloquée a bien plus de chances d'aboutir quand vous en avez besoin. Si vous détenez du bitcoin uniquement on-chain, vous n'en créerez jamais, et le bénéfice vous parvient par un Lightning moins cher à utiliser.
Ancrage éphémère vs limite de poussière
La limite de poussière existe pour empêcher l'ensemble des sorties non dépensées de se remplir de sorties trop petites pour valoir la peine d'être dépensées, et un ancrage éphémère est le seul cas où enfreindre cette règle est démontrablement sûr. Une sortie de poussière ordinaire peut rester non dépensée indéfiniment, coûtant à chaque nœud de la planète un peu de mémoire pour une fraction de centime. Un ancrage éphémère ne le peut pas : sa transaction parente ne paie aucun frais, donc aucun mineur ne prendra la transaction parente à moins que l'enfant qui dépense l'ancrage n'arrive avec elle. L'exemption n'est pas un assouplissement du principe. C'est la démonstration que le principe ne s'applique pas.