Blockchain/Niveau II · Mécanismes/2.2 Transactions/Leçon 6
Replace-by-fee et child-pays-for-parent
Augmenter les frais, et l’attaque par pinning
MatérielUn explorateur de blocs qui affiche l’ascendance des transactions (par exemple, mempool.space)Un portefeuille qui permet d’augmenter les frais (fee bumping)
Curiosité
- Que peut faire l’expéditeur lorsqu’une transaction est bloquée avec des frais trop bas ?
- Comment un destinataire peut-il payer les frais d’un paiement qu’il n’a pas encore reçu ?
- Que se passe-t-il lorsqu’une contrepartie retient délibérément vos fonds en otage dans le mempool ?
Explorer
- Une transaction diffusée avec un taux de frais trop bas peut rester non confirmée pendant des jours, voire disparaître complètement des mempools, tandis que des transactions mieux rémunérées sont confirmées autour d’elle. Deux techniques permettent d’augmenter les frais effectifs après la diffusion : l’expéditeur peut remplacer la transaction par une version mieux rémunérée, ou un destinataire peut dépenser l’une de ses sorties avec des frais généreux pour que les mineurs prennent les deux ensemble.
- Le Replace-by-Fee (RBF) permet à l’expéditeur de corriger des frais sous-estimés. Le BIP125 a introduit la signalisation de la remplaçabilité via le champ nSequence des entrées. Selon les règles de remplacement de Bitcoin Core, une transaction de remplacement doit payer au moins le total des frais de tout ce qu’elle évince, plus des frais de relais supplémentaires correspondant à sa propre taille, et offrir un taux de frais supérieur à celui des transactions avec lesquelles elle entre directement en conflit. La version 24 de Bitcoin Core a ajouté l’acceptation du « full RBF », qui traite les transactions comme remplaçables même sans signalisation explicite ; ce comportement est devenu le réglage par défaut dans la version 28.
- Le Child-Pays-For-Parent (CPFP) s’adresse aux destinataires qui ne peuvent pas modifier un paiement entrant. Le destinataire crée une nouvelle transaction qui dépense la sortie non confirmée du parent bloqué, en attachant des frais élevés à cet enfant. Les mineurs évaluent le paquet combiné selon le taux de frais des ancêtres ; inclure l’enfant oblige à inclure le parent, car l’enfant n’est valide que si son parent est confirmé dans le même bloc ou dans un bloc antérieur.
- La logique économique repose sur la valeur globale. Si un parent paie 1 sat/vB et un enfant volumineux paie 50 sat/vB, le paquet combiné offre aux mineurs une occasion rentable de confirmer les deux simultanément. Le destinataire peut ainsi, dans les faits, financer l’inclusion par le mineur de son paiement entrant bloqué, alors même qu’il ne contrôle pas encore les pièces confirmées ; cela exige un calcul précis du poids total et des frais.
- Le pinning de transaction constitue une vulnérabilité critique de ce système. Une contrepartie peut délibérément maintenir dans le mempool une transaction à faible taux de frais dotée de nombreux descendants, afin d’empêcher des transactions urgentes d’être confirmées avant leur échéance. Dans des protocoles comme le Lightning Network, où la fermeture des canaux repose sur des verrous temporels précis, un attaquant qui bloque (pin) votre transaction de fermeture pourrait voler des fonds si vous êtes contraint d’attendre au-delà de votre fenêtre de sécurité.
- Les développeurs ont réagi avec des exceptions de politique (carve-outs), les transactions de version 3 (« TRUC ») et le relais de paquets dans les versions récentes de Bitcoin Core, ainsi qu’avec les ancres éphémères (sorties pay-to-anchor), livrées dans Bitcoin Core 28 et 29. Ces mécanismes permettent à un parent à faibles frais de circuler avec un enfant à frais élevés sous forme de paquet. Ces mesures réduisent, sans l’éliminer totalement, la capacité des acteurs malveillants à bloquer des transactions urgentes ; le pinning concerne la politique de relais, pas le consensus.
Faits clés
- Le child-pays-for-parent permet à un destinataire d’accélérer un paiement entrant en dépensant sa sortie avec des frais élevés.
- Le BIP125 permet de signaler la remplaçabilité via les champs nSequence des entrées de transaction.
- Un remplacement RBF doit payer au moins les frais de tout ce qu’il évince, plus un supplément correspondant à sa propre taille, à un taux de frais plus élevé.
- Le CPFP fonctionne parce que les mineurs évaluent les paquets parent-enfant selon le taux de frais combiné des ancêtres.
- La version 28 de Bitcoin Core a fait de l’acceptation du full RBF le comportement par défaut des nœuds.
- Les versions récentes de Bitcoin Core ajoutent le relais de paquets et les transactions TRUC (version 3) afin de rendre l’augmentation des frais plus fiable face au pinning.
Exercice neuf, six, trois, un
9RassemblerÉnumérez 9 scénarios où la vitesse de confirmation d’une transaction compte : des achats en magasin aux fermetures de canaux Lightning. Notez l’échéance et la conséquence si elle n’est pas respectée.
6RegrouperRegroupez les 9 en 6 selon qui peut accélérer la transaction : l’expéditeur, le destinataire, l’un ou l’autre, un tiers, une règle du protocole, ou personne.
3DistillerRéduisez les 6 à 3 raisons fondamentales pour lesquelles une transaction pourrait rester bloquée dans le mempool au-delà de son temps de confirmation prévu.
1CristalliserRédigez 1 phrase expliquant comment le CPFP crée une dépendance financière entre deux parties qui ne se font pas confiance.
Vérification des faits
Les dates, les chiffres et les affirmations ont été vérifiés à l’aide des sources publiées listées ci-dessous.