RBF concerne les transactions avant leur confirmation. BIP125 a décrit la signalisation opt-in et les règles de remplacement associées à Bitcoin Core 0.12. Full-RBF n’exige pas cette signalisation : Core 24 l’a rendu configurable, Core 28 l’a activé par défaut et Core 29 a supprimé l’option mempoolfullrbf. RBF ne modifie ni le consensus ni un bloc confirmé ; il influence le choix de la transaction valide, non confirmée et conflictuelle que le nœud conserve et relaie.
RBF remplace dans le mempool une ou plusieurs transactions non confirmées avec lesquelles la transaction de remplacement partage au moins une entrée dépensée. Il ne réécrit pas les transactions déjà confirmées dans un bloc. Le remplacement modifie les données de transaction et possède un autre txid ; il doit lui-même satisfaire les conditions de dépense des entrées, y compris les signatures requises. [BIP 125 — Opt-in Full Replace-by-Fee Signaling] [Bitcoin Core v30.0 — Mempool replacement policy]
BIP125 décrit un signal opt-in explicite lorsqu’au moins une entrée possède une valeur nSequence inférieure à 0xfffffffe, ainsi que l’héritage du signal d’un ancêtre non confirmé. Il s’agit d’une politique historique, pas d’une condition de consensus. Full-RBF permet d’évaluer un remplacement même sans ce signal ; son absence ne garantit pas qu’un paiement ne puisse être remplacé. [BIP 125 — Opt-in Full Replace-by-Fee Signaling] [Bitcoin Core 0.12.0 release notes]
RBF est une politique locale du mempool et du relais, pas une règle de consensus. Un mineur peut choisir une transaction conflictuelle valide au regard du consensus qu’un autre nœud n’avait pas auparavant dans son mempool. Un Full Node vérifie le bloc obtenu selon le consensus, indépendamment de la préférence antérieure de son mempool. [BIP 125 — Opt-in Full Replace-by-Fee Signaling] [Bitcoin Core 29.0 release notes]
La politique de Bitcoin Core 30 pour une transaction de remplacement unique limite aussi les nouvelles entrées non confirmées et le nombre de transactions évincées. Le remplacement doit respecter les règles de standardité, de propagation et de validité, et pas seulement dépenser le même UTXO. Ces limites protègent le processeur, la mémoire et la capacité de transmission ; les règles de remplacement de paquets doivent être examinées séparément selon la version du nœud. [Bitcoin Core v30.0 — Mempool replacement policy]
Les frais totaux sont un montant en satoshis ; le taux de frais est un montant par octet virtuel en sat/vB. Pour un remplacement unique dans Core 30, les frais doivent couvrir la somme des frais de toutes les transactions évincées, plus le coût calculé selon incrementalrelayfee pour la taille du remplacement. Son taux doit dépasser ceux des transactions directement conflictuelles. Un taux supérieur à lui seul ou le simple ajout de satoshis ne suffit pas ; Core 30 utilise par défaut incrementalrelayfee de 0,1 sat/vB, mais le réglage du nœud peut différer. [Bitcoin Core v30.0 — Mempool replacement policy] [Bitcoin Core 30.0 release notes]
Remplacer une transaction parente peut également évincer du mempool les descendants qui dépensent ses sorties. Il ne s’agit donc pas toujours de comparer seulement deux transactions. Pour un remplacement unique, Core 30 limite à 100 la somme des nombres de descendants des transactions directement conflictuelles, en incluant ces transactions elles-mêmes ; ce calcul peut compter plusieurs fois les descendants communs. Les frais et les relations dans le paquet peuvent donc influencer la réussite du remplacement. [Bitcoin Core v30.0 — Mempool replacement policy]
RBF augmente les frais en remplaçant la transaction dépensière elle-même. Child Pays for Parent (CPFP) conserve la transaction parente et ajoute un enfant doté de frais suffisants pour que le mineur puisse évaluer leur taux combiné. Le choix dépend des sorties contrôlées, de la capacité à signer les entrées nécessaires et du graphe des transactions ; CPFP ne remplace pas le parent. [Bitcoin Core v30.0 — Mempool replacement policy]
La double dépense désigne des tentatives conflictuelles de dépenser le même UTXO. RBF est une manière pour le nœud de choisir entre ces transactions non confirmées selon sa politique. Un remplacement conflictuel peut servir aussi bien à augmenter honnêtement les frais qu’à rediriger un paiement non confirmé. RBF n’autorise pas un tiers à dépenser les entrées sans satisfaire leurs conditions. [BIP 125 — Opt-in Full Replace-by-Fee Signaling]
Zero-conf signifie un paiement sans confirmation, pas sans configuration. Bitcoin ne garantit pas que la première transaction observée par un commerçant soit incluse dans un bloc. Full-RBF souligne cette limite : accepter du zero-conf est une décision de risque commercial, pas un règlement Bitcoin définitif. [BIP 125 — Opt-in Full Replace-by-Fee Signaling]
La RPC getmempoolentry indique l’état d’une transaction non confirmée ; testmempoolaccept teste une seule transaction candidate de remplacement signée contre le mempool actuel et les règles de son propre nœud, sans la diffuser. Le résultat ne promet ni l’acceptation par les autres nœuds ni l’inclusion dans un bloc miné. Core 28 a activé full-RBF par défaut via mempoolfullrbf ; Core 29 a supprimé cette option. La RPC getmempoolinfo indique les paramètres de frais, mais le champ fullrbf est déclaré obsolète dans Core 30 ; vérifiez toujours la version et la configuration précises. [Bitcoin Core 28.0 release notes] [Bitcoin Core 29.0 release notes] [Bitcoin Core getmempoolinfo RPC] [Bitcoin Core testmempoolaccept RPC] [Bitcoin Core getmempoolentry RPC] [Bitcoin Core v30.0 — Mempool RPC implementation]
Pour une vision complète, lisez aussi Frais de transaction, Mempool, CPFP (Child Pays for Parent), Double dépense, Confirmation, Fee Rate. Cette entrée est également citée par Sortie de monnaie, Confirmation, Double dépense, Fee Rate.