Remove mempoolfullrbf #30592

pull instagibbs wants to merge 4 commits into bitcoin:master from instagibbs:2024-08-remove-mempoolfullrbf changing 12 files +20 −241
  1. instagibbs commented at 9:07 pm on August 5, 2024: member

    Given #30493 and the related discussion on network uptake it’s probably not helpful to have an option for a feature that will not be respected by the network in any meaningful way.

    Wallet changes can be done in another PR on its own cadence to account for possible fingerprinting, waiting for fullrbf logic to permeate the network, etc.

  2. DrahtBot commented at 9:07 pm on August 5, 2024: contributor

    The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.

    Code Coverage & Benchmarks

    For details see: https://corecheck.dev/bitcoin/bitcoin/pulls/30592.

    Reviews

    See the guideline for information on the review process.

    Type Reviewers
    ACK stickies-v, murchandamus, rkrux, achow101
    Concept ACK 1440000bytes
    Stale ACK petertodd

    If your review is incorrectly listed, please react with 👎 to this comment and the bot will ignore it on the next update.

    Conflicts

    Reviewers, this pull request conflicts with the following ones:

    • #29954 (RPC: Return permitbaremultisig and maxdatacarriersize in getmempoolinfo by kristapsk)

    If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first.

  3. DrahtBot added the label CI failed on Aug 5, 2024
  4. DrahtBot commented at 10:30 pm on August 5, 2024: contributor

    🚧 At least one of the CI tasks failed. Debug: https://github.com/bitcoin/bitcoin/runs/28374307572

    Make sure to run all tests locally, according to the documentation.

    The failure may happen due to a number of reasons, for example:

    • Possibly due to a silent merge conflict (the changes in this pull request being incompatible with the current code in the target branch). If so, make sure to rebase on the latest commit of the target branch.

    • A sanitizer issue, which can only be found by compiling with the sanitizer and running the affected test.

    • An intermittent issue.

    Leave a comment here, if you need help tracking down a confusing failure.

  5. petertodd commented at 9:36 am on August 6, 2024: contributor

    I’d suggest waiting until after v28 has been released to do this. There may be a handful of users remaining that are not vulnerable to double spends in general. But run software that is incompatible with full-RBF. For example, the Wasabi coordinator software used to be an example of this, which they noticed when they were running with Knots (long since fixed).

    Perfectly reasonable to give those handful of users a bit more time to fix their software.

    But other than that, Concept ACK. Might as well rip out all that obsolete code eventually.

  6. instagibbs force-pushed on Aug 6, 2024
  7. murchandamus commented at 1:28 pm on August 6, 2024: contributor
    Agree with @petertodd’s assessment: I don’t think this should be included in v28.0. It might be nice to issue a deprecation warning in v28 on the startup parameter, though.
  8. instagibbs commented at 1:30 pm on August 6, 2024: member
    @murchandamus feel free to open the deprecation PR :+1: I’m leaving as draft as noted in OP until post-28
  9. DrahtBot removed the label CI failed on Aug 6, 2024
  10. fanquake added this to the milestone 29.0 on Aug 6, 2024
  11. ariard commented at 9:41 pm on August 6, 2024: contributor

    I think mempoolfullrbf could be left in core, if some users wishes to have first-seen of received transactions. E.g for lightning type option_zeroconf where double spend can only happen if (a) funding keys leak which is a bigger problem or (b) double-spend by the the zero-conf inbound conf seller, though here the paid invoices can be used as fraud proofs.

    Ultimately, it’s a wider conversation to have mempool policy being more configurable in its own module as jtimon tried to implement years years ago, and let the end-user evaluate with more fine-granularity its own security risks, so I’m ~0 if mempoolfullrbf got removed or not.

  12. petertodd commented at 7:39 am on August 7, 2024: contributor

    @ariard First of all, with ~100% of hash power mining full-rbf, mempoolfullrbf=0 clearly provides no security benefit.

    Users may have their own reasons to want a record of the first-seen transaction. But there’s no reason why we in Core need to support such a niche use-case. It would make much more sense for users who need that functionality to get it directly, eg with some kind of “incoming transaction feed” hook.

    For the use-case of zeroconf channels, I don’t see how mempoolfullrbf=0 is relevant. Either the user’s software has seen the first transaction, and thus has a record of it, or it doesn’t, in which case the channel might as well have never been created. Lightning node software certainly doesn’t need to rely on Core to record and create a proof-of-doublespend in this circumstance.

  13. murchandamus commented at 1:01 pm on August 7, 2024: contributor

    @murchandamus feel free to open the deprecation PR 👍 I’m leaving as draft as noted in OP until post-28

    I am hearing that someone else is already working on that. :)

  14. instagibbs commented at 1:37 pm on August 7, 2024: member
  15. DrahtBot added the label Needs rebase on Aug 7, 2024
  16. ariard commented at 6:44 pm on August 7, 2024: contributor

    @petertodd On the lightning side, in a world where as a node you have a scarcity of UTXO to allocate seeing locally a record of transaction-relay policy and consensus transaction, it’s very useful to start to have (unsafe indeed) HTLC flowing or fee-bump the transaction to increase funds velocity.

    I’m not insisting on keeping mempoolfullrbf. It’s more very likely that your first-seen log of transaction to monitor double-spend will ressemble an in-memory pool of transactions and as your computing host ressources are limited that pool has to be size bounded, yet a “first-seen” acceptance policy (any ulterior incoming transactions, if you take actions on it like CPFP fee-bumping which locks UTXO it’s consuming ressources).

    Anyway, as I was saying it’s a wider conversation if lightning nodes shall have a more custom log of seen transactions or mempool. If we see controversies again on “first-seen” as a transaction-relay policy in the few years, at least I would have warned so now :)

  17. instagibbs force-pushed on Aug 8, 2024
  18. DrahtBot removed the label Needs rebase on Aug 8, 2024
  19. in src/rpc/mempool.cpp:682 in 79fb720fb7 outdated
    678@@ -679,7 +679,7 @@ UniValue MempoolInfoToJSON(const CTxMemPool& pool)
    679     ret.pushKV("minrelaytxfee", ValueFromAmount(pool.m_opts.min_relay_feerate.GetFeePerK()));
    680     ret.pushKV("incrementalrelayfee", ValueFromAmount(pool.m_opts.incremental_relay_feerate.GetFeePerK()));
    681     ret.pushKV("unbroadcastcount", uint64_t{pool.GetUnbroadcastTxs().size()});
    682-    ret.pushKV("fullrbf", pool.m_opts.full_rbf);
    683+    ret.pushKV("fullrbf", true);
    


    maflcko commented at 7:27 am on August 9, 2024:

    RPC doc-nit: Could mention this field is “deprecated”, because it returns a constant and only kept for historic reasons to avoid changing the RPC interface now?

    There is almost no cost to keeping it, but I think at some point in the future, it can be removed.

    Same for the bip125-replaceable fields, which also only have historic value to keep around a bit, but can be removed at some point into the future.


    instagibbs commented at 2:18 pm on October 1, 2024:
    done
  20. maflcko commented at 7:28 am on August 9, 2024: member
    left a RPC doc nit, feel free to ignore
  21. 1440000bytes commented at 2:56 pm on August 10, 2024: none
    Concept ACK
  22. instagibbs force-pushed on Aug 28, 2024
  23. instagibbs marked this as ready for review on Aug 28, 2024
  24. instagibbs commented at 2:01 pm on August 28, 2024: member
    rebased for cmake and un-drafted since we have split off 28.X branch
  25. DrahtBot added the label CI failed on Sep 8, 2024
  26. petertodd commented at 2:35 pm on September 8, 2024: contributor
    ACK 4f65c8e98957a6d8fe48ef56383d9d5776d5acd4
  27. DrahtBot removed the label CI failed on Sep 9, 2024
  28. petertodd commented at 11:14 am on September 11, 2024: contributor
    This could probably be done in a separate pull-req. But we can also remove the bip125-replaceable code from the wallet at some point. There’s quite a bit of complexity there tracking it; I was just looking at run_rbf_opt_in_test in test/functional/wallet_listtransactions.py myself for Libre Relay.
  29. DrahtBot added the label Needs rebase on Sep 30, 2024
  30. instagibbs force-pushed on Oct 1, 2024
  31. instagibbs commented at 0:43 am on October 1, 2024: member
    rebased due to conflict in master
  32. instagibbs force-pushed on Oct 1, 2024
  33. DrahtBot added the label CI failed on Oct 1, 2024
  34. DrahtBot commented at 1:06 am on October 1, 2024: contributor

    🚧 At least one of the CI tasks failed. Debug: https://github.com/bitcoin/bitcoin/runs/30886829600

    Try to run the tests locally, according to the documentation. However, a CI failure may still happen due to a number of reasons, for example:

    • Possibly due to a silent merge conflict (the changes in this pull request being incompatible with the current code in the target branch). If so, make sure to rebase on the latest commit of the target branch.

    • A sanitizer issue, which can only be found by compiling with the sanitizer and running the affected test.

    • An intermittent issue.

    Leave a comment here, if you need help tracking down a confusing failure.

  35. DrahtBot removed the label Needs rebase on Oct 1, 2024
  36. DrahtBot removed the label CI failed on Oct 1, 2024
  37. maflcko commented at 8:17 am on October 1, 2024: member

    Have you seen https://github.com/bitcoin/bitcoin/pull/30592/files#r1710942068 ?

    I am now thinking this should probably be done in this pull request. Otherwise there will be another follow-up for a trivial doc update.

  38. instagibbs commented at 2:18 pm on October 1, 2024: member
    @maflcko done, thanks
  39. in src/validation.cpp:845 in ab7d2a07aa outdated
    841-                const bool allow_rbf{m_pool.m_opts.full_rbf || SignalsOptInRBF(*ptxConflicting) || ptxConflicting->version == TRUC_VERSION};
    842-                if (!allow_rbf) {
    843-                    return state.Invalid(TxValidationResult::TX_MEMPOOL_POLICY, "txn-mempool-conflict");
    844-                }
    845-
    846-                ws.m_conflicts.insert(ptxConflicting->GetHash());
    


    rkrux commented at 5:41 am on October 21, 2024:
    Nice to see these checks going away!
  40. rkrux approved
  41. rkrux commented at 5:43 am on October 21, 2024: none
  42. in test/functional/feature_rbf.py:29 in ab7d2a07aa outdated
    28@@ -29,15 +29,13 @@ def set_test_params(self):
    29         # both nodes disable full-rbf to test BIP125 signaling
    


    murchandamus commented at 6:03 pm on October 21, 2024:
    This comment is outdated

    instagibbs commented at 7:12 pm on October 21, 2024:
    will fix if I touchup

    stickies-v commented at 1:26 pm on October 28, 2024:
    (note: this did not get fixed - it’s a trivial re-ack, would be ideal to get this in this PR - it’s very confusing when reading the code)

    instagibbs commented at 3:53 pm on October 28, 2024:
    oops, fixed and removed more vestigial signaling code and comments in test
  43. murchandamus commented at 6:07 pm on October 21, 2024: contributor
    Concept ACK
  44. in test/functional/mempool_truc.py:118 in ab7d2a07aa outdated
    111@@ -115,7 +112,6 @@ def test_truc_replacement(self):
    112             from_node=node,
    113             fee_rate=DEFAULT_FEE,
    114             utxo_to_spend=utxo_v3_bip125,
    115-            sequence=MAX_BIP125_RBF_SEQUENCE,
    


    murchandamus commented at 1:18 pm on October 23, 2024:
    I’m a bit surprised, why would we have been signaling replaceability for TRUC transactions in the first place? The only nodes that accept V3 transactions would be upgraded to understand TRUC at the same time, so shouldn’t we create TRUC transactions without signaling replaceability?

    instagibbs commented at 1:53 pm on October 23, 2024:
    Seems erroneous, indeed.

    glozow commented at 7:41 pm on October 28, 2024:
    There is a test for both cases v3 + BIP125 and for v3 + non-BIP125 iirc
  45. in test/functional/mempool_truc.py:170 in ab7d2a07aa outdated
    158@@ -163,30 +159,6 @@ def test_truc_replacement(self):
    159         self.check_mempool([tx_v3_bip125_rbf_v2["txid"], tx_v3_parent["txid"], tx_v3_child["txid"]])
    160 
    161 
    162-    @cleanup(extra_args=["-mempoolfullrbf=0"])
    163-    def test_truc_bip125(self):
    164-        node = self.nodes[0]
    165-        self.log.info("Test TRUC transactions that don't signal BIP125 are replaceable")
    166-        assert_equal(node.getmempoolinfo()["fullrbf"], False)
    


    murchandamus commented at 1:19 pm on October 23, 2024:
    It seems to me that we would still want to test that TRUC transactions that don’t signal replaceability can be replaced. Obviously the assert_equal here that checks that the node does not use fullrbf would fail, but the rest of the test seems like it could be kept.

    instagibbs commented at 1:55 pm on October 23, 2024:

    ~0 on keeping it, we’re reducing loc and don’t really need the coverage anymore imo

    Willing to be over-ridden by other reviewers.

  46. murchandamus commented at 1:20 pm on October 23, 2024: contributor
    ACK f863f5a4f991ccfdf865d39c73269b196eeb4902
  47. stickies-v commented at 4:59 pm on October 23, 2024: contributor
    Concept ACK
  48. fanquake added the label Needs release note on Oct 24, 2024
  49. fanquake commented at 8:45 am on October 24, 2024: member
    Also needs a release note.
  50. instagibbs commented at 12:55 pm on October 24, 2024: member
    @fanquake pushed
  51. fanquake removed the label Needs release note on Oct 24, 2024
  52. in test/functional/mempool_accept.py:164 in d295638890 outdated
    162             rawtxs=[raw_tx_0],
    163         )
    164 
    165-        self.log.info('A transaction that conflicts with an unconfirmed tx')
    166-        # Send the transaction that replaces the mempool transaction and opts out of replaceability
    167+        # Send the transaction that replaces the mempool transaction
    


    stickies-v commented at 4:14 pm on October 24, 2024:
    nit: would just drop this line (+newline entirely), already covered in self.log.info('A transaction that replaces a mempool transaction')

    instagibbs commented at 3:53 pm on October 28, 2024:
    done
  53. ariard commented at 2:06 am on October 25, 2024: contributor
    if one can go and publish on the mailing list in which core release this is expected to land and indicates the expected deployment timelines for the downstream softwares. learning a bit from the ecosystem controversies raised when mempoolfullrbf was actually introduced back in 24.0.1.
  54. in doc/release-notes-30592.md:4 in d295638890 outdated
    0@@ -0,0 +1,4 @@
    1+Full Replace-By-Fee
    2+===================
    3+
    4+`mempoolfullrbf` option is removed, with full rbf the fixed behavior.
    


    stickies-v commented at 12:32 pm on October 28, 2024:

    nit: suggestion to provide a bit more context. Ideally, at least the PR number is added.

    0Starting with v28.0, the `mempoolfullrbf` startup option was set to
    1default to `1`. With widespread adoption of this policy, users no longer
    2benefit from disabling it, so the option has been removed, making full
    3replace-by-fee the standard behavior. (#30592)
    

    instagibbs commented at 3:53 pm on October 28, 2024:
    sure, than verbatim
  55. in doc/policy/mempool-replacements.md:13 in d295638890 outdated
     9@@ -10,7 +10,9 @@ A transaction ("replacement transaction") may replace its directly conflicting t
    10 their in-mempool descendants (together, "original transactions") if, in addition to passing all
    11 other consensus and policy rules, each of the following conditions are met:
    12 
    13-1. If `-mempoolfullrbf=0` (the value is 1 by default), the directly conflicting transactions all signal replaceability explicitly. A transaction is
    14+1. DEPRECATED: BIP125 signaling is no longer required. The below text is kept for historical completeness.
    


    stickies-v commented at 1:23 pm on October 28, 2024:
    Keeping this section here feels unnecessarily confusing to me. Since it’s no longer relevant, I’d just remove the entire paragraph, and potentially add a line in the ## History section?

    instagibbs commented at 3:53 pm on October 28, 2024:
    This may be me being too attached to the BIP125 rule numbers. Moved things around a bit, let me know if it’s better.

    stickies-v commented at 12:00 pm on October 29, 2024:

    Ah, I see. We don’t mention BIP125 until further down the document, so I don’t think (most) readers are expecting that symmetry here, so I still think it’d least awkward to just remove the item entirely (and renumbering the following items).

    We’re in bikeshed territory, so I’ll stop commenting on it further.

  56. stickies-v commented at 1:31 pm on October 28, 2024: contributor

    Edit: sorry, hit send before finishing review. Will finalize later today, so more comments may follow.

    Note: doc/bips.md needs updating, “opt-in” is no longer accurate: https://github.com/bitcoin/bitcoin/blob/1c7ca6e64de9b47b2295c81cb0fedd432ffaf001/doc/bips.md?plain=1#L37

  57. stickies-v approved
  58. stickies-v commented at 2:09 pm on October 28, 2024: contributor

    ACK d295638890719a009b480148545288e2dbdd1a5a - although I’ll quickly re-ACK if you address my outstanding comments too.

    Nice clean-up, both for users and the codebase, I don’t see the point of keeping this option around any longer.

    if one can go and publish on the mailing list in which core release this is expected to land and indicates the expected deployment timelines for the downstream softwares.

    I don’t think we typically announce all backwards-incompatible changes on the ML? Since this was marked as deprecated (+ raised a warning upon usage) since v28.0 (https://github.com/bitcoin/bitcoin/pull/30594), I think this is fine to go in as-is given that I think it’s much less controversial now. Ideally, the deprecation would’ve been marked explicitly in the v28 release notes too, but I missed that in my review.

  59. DrahtBot requested review from murchandamus on Oct 28, 2024
  60. DrahtBot requested review from rkrux on Oct 28, 2024
  61. Remove -mempoolfullrbf option 111a23d9b3
  62. instagibbs force-pushed on Oct 28, 2024
  63. instagibbs commented at 3:54 pm on October 28, 2024: member
    @stickies-v re doc/bips.md/ bip125 is still opt-in, we are drifting further and further away from that BIP and will finally basically kill it off with cluster mempool. Not sure what we want to do there.
  64. in doc/policy/mempool-replacements.md:13 in 33d554c855 outdated
    14-   signaling BIP125 replaceability if any of its inputs have an nSequence number less than (0xffffffff - 1).
    15-   A transaction also signals replaceability if its version field is set to 3.
    16-
    17-   *Rationale*: See [BIP125
    18-   explanation](https://github.com/bitcoin/bips/blob/master/bip-0125.mediawiki#motivation).
    19+1. DEPRECATED: BIP125 signaling is no longer required.
    


    glozow commented at 7:37 pm on October 28, 2024:

    Deprecated means still supported but discouraged

    01. (Removed)
    

    instagibbs commented at 8:06 pm on October 28, 2024:
    taken
  65. in doc/policy/mempool-replacements.md:61 in 33d554c855 outdated
    57@@ -63,6 +58,8 @@ This set of rules is similar but distinct from BIP125.
    58 
    59 ## History
    60 
    61+* Signaling for replace-by-fee is no longer required as of [PR 30592](https://github.com/bitcoin/bitcoin/pull/30592).
    


    glozow commented at 7:38 pm on October 28, 2024:
    Move to bottom to retain chronological ordering?

    instagibbs commented at 8:06 pm on October 28, 2024:
    done
  66. glozow commented at 7:45 pm on October 28, 2024: member

    doc/bips.md/ bip125 is still opt-in, we are drifting further and further away from that BIP and will finally basically kill it off with cluster mempool. Not sure what we want to do there.

    I think usually if we stop implementing a BIP we can just remove it from bips.md. Or you can say “BIP 125 is not supported. See doc/policy/mempool-replacements.md for replacement policy” ?

  67. instagibbs force-pushed on Oct 28, 2024
  68. instagibbs commented at 8:07 pm on October 28, 2024: member
    @glozow tried a version of your suggestion which should be more future proof
  69. in doc/bips.md:37 in 806ecd6958 outdated
    33@@ -34,7 +34,7 @@ BIPs that are implemented by Bitcoin Core:
    34 * [`BIP 111`](https://github.com/bitcoin/bips/blob/master/bip-0111.mediawiki): `NODE_BLOOM` service bit added, and enforced for all peer versions as of **v0.13.0** ([PR #6579](https://github.com/bitcoin/bitcoin/pull/6579) and [PR #6641](https://github.com/bitcoin/bitcoin/pull/6641)).
    35 * [`BIP 112`](https://github.com/bitcoin/bips/blob/master/bip-0112.mediawiki): The CHECKSEQUENCEVERIFY opcode has been implemented since **v0.12.1** ([PR #7524](https://github.com/bitcoin/bitcoin/pull/7524)), and has been *buried* since **v0.19.0** ([PR #16060](https://github.com/bitcoin/bitcoin/pull/16060)).
    36 * [`BIP 113`](https://github.com/bitcoin/bips/blob/master/bip-0113.mediawiki): Median time past lock-time calculations have been implemented since **v0.12.1** ([PR #6566](https://github.com/bitcoin/bitcoin/pull/6566)), and has been *buried* since **v0.19.0** ([PR #16060](https://github.com/bitcoin/bitcoin/pull/16060)).
    37-* [`BIP 125`](https://github.com/bitcoin/bips/blob/master/bip-0125.mediawiki): Opt-in full replace-by-fee partially implemented: signaling is enforced if configured. For other replacement rules, see doc/policy/mempool-replacements.md.
    38+* [`BIP 125`](https://github.com/bitcoin/bips/blob/master/bip-0125.mediawiki): Not supported. For replacement rules, see doc/policy/mempool-replacements.md.
    


    stickies-v commented at 11:58 am on October 29, 2024:

    This list enumerates “BIPs that are implemented by Bitcoin Core”. Adding one that isn’t implemented seems confusing. I’d just remove the line entirely, we already reference BIP125 in https://github.com/bitcoin/bitcoin/blob/da10e0bab4a3e98868dd663af02c43b1dc8b7f4a/doc/policy/mempool-replacements.md?plain=1#L62

    If you’re worried about discoverability, adding the hyperlink there could be an alternative:

     0diff --git a/doc/policy/mempool-replacements.md b/doc/policy/mempool-replacements.md
     1index eb370672e4..3cddc5f037 100644
     2--- a/doc/policy/mempool-replacements.md
     3+++ b/doc/policy/mempool-replacements.md
     4@@ -54,7 +54,8 @@ other consensus and policy rules, each of the following conditions are met:
     5    preferable for block-inclusion, compared to what would be removed from the mempool. This rule
     6    predates ancestor feerate-based transaction selection.
     7 
     8-This set of rules is similar but distinct from BIP125.
     9+This set of rules is similar but distinct from [`BIP
    10+125`](https://github.com/bitcoin/bips/blob/master/bip-0125.mediawiki).
    11 
    12 ## History
    13 
    

    instagibbs commented at 2:00 pm on October 29, 2024:
    I’ll let the others weigh in a bit before touching docs more

    sipa commented at 2:11 pm on October 29, 2024:
    You can mimic what we did for BIP61 in the same document (which just lists the history of when it was introduced, and when it was removed).

    instagibbs commented at 4:14 pm on October 31, 2024:
    Guess I’d prefer to remove it, since it’s been a slippery slope of noncompliance over time

    instagibbs commented at 5:20 pm on October 31, 2024:
    removed the line and updated commit message
  70. stickies-v approved
  71. stickies-v commented at 12:10 pm on October 29, 2024: contributor

    re-ACK 806ecd6958e4c0fe2a51bee04e20e0dca515bd40

    Documentation changes to address review comments, and further functional test cleanups.

  72. petertodd commented at 4:36 pm on October 31, 2024: contributor

    On Thu, Oct 31, 2024 at 09:14:40AM -0700, Gregory Sanders wrote:

    @@ -34,7 +34,7 @@ BIPs that are implemented by Bitcoin Core:

    Guess I’d prefer to remove it, since it’s been a slippery slope of noncompliance over time

    Note that we just changed the status of BIP-125 in the BIPS repo to Obsolete.

    I’m fine with removing all mentions of BIP-125 from the Bitcoin Core docs.

  73. docs: remove requirement to signal bip125
    Also remove stated support of BIP125 from bips file.
    04a5dcee8a
  74. rpc: Mark fullrbf and bip125-replaceable as deprecated d47297c6aa
  75. doc: release note for mempoolrullrbf removal c189eec848
  76. instagibbs force-pushed on Oct 31, 2024
  77. stickies-v commented at 11:39 am on November 4, 2024: contributor

    re-ACK c189eec848e3c31f438151d4d3422718a29df3a3

    Only change is to remove mention of BIP-125 in doc/bips.md.

  78. in doc/release-notes-30592.md:7 in c189eec848
    0@@ -0,0 +1,7 @@
    1+Full Replace-By-Fee
    2+===================
    3+
    4+Starting with v28.0, the `mempoolfullrbf` startup option was set to
    5+default to `1`. With widespread adoption of this policy, users no longer
    6+benefit from disabling it, so the option has been removed, making full
    7+replace-by-fee the standard behavior. (#30592)
    


    murchandamus commented at 4:16 pm on November 4, 2024:

    This is a bit confusing, because defaulting to mempoolfullrbf=1 already made full replace-by-fee the standard behavior, but this reads as if removing the option makes it the standard behavior. Perhaps something like this:

    0After the policy was broadly adopted by miners, starting with v28.0, the `mempoolfullrbf` startup option was set to 
    1default to `1`. With widespread adoption of full replace-by-fee, it becomes the standard behavior on the network. Users no longer benefit from disabling it, so the option has been removed. (#30592)
    

    instagibbs commented at 2:46 pm on November 5, 2024:
    will take language if I touch PR again
  79. murchandamus commented at 4:28 pm on November 4, 2024: contributor
    ACK c189eec848e3c31f438151d4d3422718a29df3a3
  80. in src/init.cpp:636 in c189eec848
    632@@ -633,7 +633,6 @@ void SetupServerArgs(ArgsManager& argsman, bool can_listen_ipc)
    633                              "is of this size or less (default: %u)",
    634                              MAX_OP_RETURN_RELAY),
    635                    ArgsManager::ALLOW_ANY, OptionsCategory::NODE_RELAY);
    636-    argsman.AddArg("-mempoolfullrbf", strprintf("(DEPRECATED) Accept transaction replace-by-fee without requiring replaceability signaling (default: %u)", DEFAULT_MEMPOOL_FULL_RBF), ArgsManager::ALLOW_ANY, OptionsCategory::NODE_RELAY);
    


    rkrux commented at 11:30 am on November 5, 2024:

    I ran the node with mempoolfullrbf=0 and it correctly ignored the option.

    02024-11-05T09:53:52Z Ignoring unknown configuration value regtest.mempoolfullrbf
    
  81. in src/rpc/mempool.cpp:704 in c189eec848
    700@@ -701,7 +701,7 @@ static RPCHelpMan getmempoolinfo()
    701                 {RPCResult::Type::STR_AMOUNT, "minrelaytxfee", "Current minimum relay fee for transactions"},
    702                 {RPCResult::Type::NUM, "incrementalrelayfee", "minimum fee rate increment for mempool limiting or replacement in " + CURRENCY_UNIT + "/kvB"},
    703                 {RPCResult::Type::NUM, "unbroadcastcount", "Current number of transactions that haven't passed initial broadcast yet"},
    704-                {RPCResult::Type::BOOL, "fullrbf", "True if the mempool accepts RBF without replaceability signaling inspection"},
    705+                {RPCResult::Type::BOOL, "fullrbf", "True if the mempool accepts RBF without replaceability signaling inspection (DEPRECATED)"},
    


    rkrux commented at 11:43 am on November 5, 2024:
    After the PR is merged: Thinking out loud, should the fullrbf option in this RPC output still be shown at all? Would it hold any meaningful significance or would it be just unnecessary information? I’m inclining towards the latter.

    instagibbs commented at 2:45 pm on November 5, 2024:
    That is changing the API somewhat unnecessarily for this PR. We can properly remove it with deprecation flag in follow-up PR, or in a following release.
  82. rkrux approved
  83. rkrux commented at 12:01 pm on November 5, 2024: none
    reACK c189eec848e3c31f438151d4d3422718a29df3a3
  84. achow101 commented at 6:42 pm on November 8, 2024: member
    ACK c189eec848e3c31f438151d4d3422718a29df3a3
  85. achow101 merged this on Nov 8, 2024
  86. achow101 closed this on Nov 8, 2024


github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2024-11-21 15:12 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me