Aller au contenu
buybitcoinsmart

Glossaire / Transactions et frais

Replace-by-fee

Aussi appelé RBF, Replace by fee, Opt-in replace by fee, Full-RBF.

Qu'est-ce que Replace-by-fee ?
Replace-by-fee permet de remplacer une transaction non confirmée par une version d'elle-même qui paie davantage, et les nœuds modernes de Bitcoin Core relayent ce remplacement, que la transaction d'origine l'ait signalé ou non.

Spécifié dans BIP-125.

Les estimations de frais deviennent obsolètes, c'est pourquoi le bitcoin permet à un expéditeur de réécrire un paiement qui n'a pas encore été miné. Le remplacement doit payer à nouveau la totalité des frais de l'original majorée d'au moins un satoshi supplémentaire par octet virtuel, si bien qu'un remplacement n'est jamais gratuit. Pour vous, la règle pratique est sans nuance : rien de non confirmé n'est réglé, et seul l'expéditeur peut procéder au remplacement.

Comment cela fonctionne

Le remplacement est une politique de relais, et non une règle de consensus, c'est pourquoi son comportement a changé deux fois sans aucun fork.

Le BIP125 a défini la version opt-in et Bitcoin Core l'a déployée dans 0.12.0 le 23 février 2016. Un expéditeur signalait sa volonté d'être remplacé en réglant le numéro de séquence d'au moins une entrée sur 0xfffffffd ou moins, et les nœuds transmettaient alors une transaction conflictuelle qui payait davantage. Les portefeuilles qui ne réglaient pas ce signal produisaient des paiements que leurs propres utilisateurs ne pouvaient pas réparer.

Cette distinction a disparu. Bitcoin Core 28.0, publié en octobre 2024, a activé le -mempoolfullrbf par défaut, si bien qu'un nœud bien connecté transmet désormais un conflit mieux payé, quel que soit ce qu'annonçait la première transaction. Tout écran de portefeuille qui promet encore qu'un paiement non signalé « ne peut pas être remplacé » décrit un réseau qui n'existe plus.

Quatre conditions décident si un nœud accepte l'échange, et elles existent pour empêcher que le remplacement serve à inonder le réseau de réécritures gratuites :

  • Le remplacement doit payer des frais absolus plus élevés que chaque transaction qu'il évince, pas seulement un taux de frais plus élevé.
  • Il doit aussi payer un montant supplémentaire d'au moins les frais de relais incrémentiels, qui par défaut correspondent à 1 satoshi par octet virtuel multiplié par la taille de la nouvelle transaction.
  • Il ne peut pas attirer des entrées non confirmées que l'original n'avait pas déjà dépensées.
  • Il ne peut pas évincer plus de 100 transactions à la fois, en comptant les descendants de tout ce avec quoi il entre en conflit.

La règle des frais absolus est celle qui surprend. Un remplacement qui réduit une grosse transaction à une plus petite à un meilleur taux peut encore être rejeté, parce que le total des frais a baissé. Notez aussi que vous payez les nouveaux frais, pas les deux : l'original est écarté et n'est jamais miné, donc les anciens frais ne sont jamais perçus.

Bitcoin Core expose cela sous la forme de la RPC bumpfee, et la plupart des portefeuilles de bureau l'enveloppent dans un bouton intitulé "increase fee" ou similaire. Le mécanisme habituel consiste à réduire la sortie de monnaie du montant des frais supplémentaires, c'est pourquoi un paiement qui a envoyé tout un solde sans monnaie restante ne peut pas être remplacé sans ajouter une autre entrée.

Pourquoi cela compte quand vous achetez du bitcoin

Le moment où le remplacement devient votre problème est celui où vous retirez d'une plateforme d'échange vers votre propre portefeuille, ou envoyez depuis ce portefeuille vers quelqu'un d'autre.

Envoyer depuis votre propre portefeuille est le bon cas. Si vous avez choisi un taux de frais à 2 h 00 et que la mempool s'est réveillée, ouvrez la transaction et remplacez-la. Choisissez un portefeuille qui offre le bouton avant d'en avoir besoin : c'est une fonction normale dans Bitcoin Core, Sparrow, Electrum et Trezor Suite, et une fonction absente dans beaucoup de portefeuilles mobiles qui choisissent les frais pour vous et ne vous laissent aucune issue.

Retirer depuis une plateforme d'échange est le mauvais cas. La plateforme a construit cette transaction, elle détient les clés des entrées, et elle seule peut la remplacer. Les services d'assistance ne le font généralement pas, parce que leurs lots de retraits servent des dizaines de clients à la fois. Votre seul levier côté destinataire est le child pays for parent, qui fonctionne parce que le bitcoin qui vous arrive est dépensable dès qu'elle existe, même non confirmée.

La réception est le domaine où le remplacement change votre comportement. Un vendeur sur une place de marché pair-à-pair, un échange en face à face, ou un exploitant de distributeur automatique de bitcoin qui remet les biens sur un paiement non confirmé fait confiance à une transaction que quiconque disposant d'une mempool peut voir être remplacée. Le remplacement total étant la norme par défaut, l'ancien conseil, selon lequel une transaction non signalée était sûre à accepter à zéro confirmation, est abandonné. Attendez un bloc. Pour les montants qui comptent, attendez-en plusieurs.

Remplacer un retrait à 3 sat/vB qui est resté bloqué

Supposez que vous envoyez 0,05 BTC depuis votre propre portefeuille avec une entrée SegWit native et deux sorties, une pour le destinataire et une pour la monnaie. Cette transaction fait environ 141 octets virtuels et, à 3 sat/vB, elle porte des frais de 423 satoshis.

Le lendemain matin, le taux de confirmation le moins cher est de 20 sat/vB et votre paiement n'a pas bougé. Vous remplacez. Le remplacement fait les mêmes 141 octets virtuels, donc 20 sat/vB signifie des frais de 2 820 satoshis, prélevés sur la sortie de monnaie plutôt que sur le montant du destinataire. Le plancher de politique pour ce remplacement est de 423 satoshis d'origine plus 1 sat/vB sur 141 octets, soit 564 satoshis, donc 2 820 le dépasse confortablement.

Vous ne payez pas 3 243 satoshis. Vous payez 2 820, et la première version meurt sans être minée. Le destinataire reçoit toujours exactement 0,05 BTC, et l'identifiant de transaction change, donc si vous avez déjà donné l'ancien identifiant à quelqu'un, vous devez lui envoyer le nouveau.

Là où cela devient coûteux, c'est quand il ne reste plus de sortie de monnaie à réduire. Le portefeuille doit alors ajouter une autre entrée, la transaction passe à environ 209 octets virtuels, et les mêmes 20 sat/vB coûtent désormais 4 180 satoshis.

Replace-by-fee vs double dépense

Le replace-by-fee et une tentative de double dépense utilisent le même mécanisme et ne diffèrent que par l'endroit où l'argent aboutit. Un remplacement conserve généralement le même destinataire et prélève les frais supplémentaires sur la monnaie. Une double dépense réécrit les sorties pour que les bitcoins reviennent à l'expéditeur ou entièrement ailleurs, et le commerçant qui a remis les biens ne reçoit rien.

Aucun nœud ne peut faire la différence, parce que les deux sont simplement des transactions conflictuelles et que celle qui paie le plus l'emporte. C'est tout l'argument pour attendre des confirmations plutôt que de se fier à l'étiquette que votre portefeuille appose sur un paiement entrant. La protection est la profondeur dans la chaîne, pas l'intention déclarée de l'expéditeur.

À ne pas confondre avec

Questions fréquentes

Puis-je annuler une transaction bitcoin avec le replace-by-fee ?

Seulement dans une mesure limitée, et uniquement depuis le portefeuille qui l'a créée. Tant que le paiement n'est pas confirmé, vous pouvez le remplacer par une transaction conflictuelle qui dépense les mêmes entrées vers vous-même et paie des frais plus élevés. Une fois qu'elle est confirmée, rien ne peut l'annuler.

Dois-je encore activer le replace-by-fee dans mon portefeuille ?

Pas pour le réseau. Depuis Bitcoin Core 28.0 en octobre 2024, les nœuds relaient un conflit qui paie davantage, que l'original l'ait signalé ou non. Le réglage compte encore dans votre propre portefeuille, car certains portefeuilles n'offrent le bouton d'augmentation que sur les transactions qu'ils ont signalées.

Le retrait de ma plateforme d'échange n'est pas confirmé. Puis-je utiliser le replace-by-fee sur ce retrait ?

Non. Le remplacement exige les clés privées qui ont signé les entrées, et pour un retrait de plateforme d'échange, c'est la plateforme qui les détient. De votre côté, l'outil est le child pays for parent : dépensez le bitcoin entrant avec une transaction à frais élevés et les mineurs traiteront les deux.

À lire ensuite

Termes associés

Plus de termes : Transactions et frais

Lire cette page en anglais