Replace mempoolfullrbf with more compatible and flexible mempoolreplacement (plus more tests) #25626

pull luke-jr wants to merge 3 commits into bitcoin:master from luke-jr:mempoolreplacement_2022 changing 8 files +70 −37
  1. luke-jr commented at 11:41 PM on July 16, 2022: member

    Followup to #25353 using traditional mempoolreplacement option that is clearer, more compatible (with Core 0.12-0.18 & Knots), and flexible with other policies.

    Also runs test_opt_in against "full RBF" mode (expectations adjusted).

  2. Replace mempoolfullrbf with more compatible and flexible mempoolreplacement f4f83f73a7
  3. QA: feature_rbf: Refactor test_opt_in to take node as a parameter f71e50d6a9
  4. QA: feature_rbf: Test full RBF mode 475d87b534
  5. DrahtBot commented at 3:35 AM on July 17, 2022: contributor

    <!--e57a25ab6845829454e8d69fc972939a-->

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

    <!--174a7506f384e20aa4161008e828411d-->

    Conflicts

    Reviewers, this pull request conflicts with the following ones:

    • #25648 (refactor: Remove all policy globals by MarcoFalke)
    • #21422 (Add feerate histogram to getmempoolinfo by kiminuo)

    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.

  6. unknown approved
  7. unknown commented at 8:26 AM on July 17, 2022: none
  8. MarcoFalke commented at 12:30 PM on July 17, 2022: member

    Need a janitorial maintainer to merge this with 1 ACK like #25153

    25153 did not change the user-facing binary at all, nor the internal code structure. This one does change both the code structure as well as the end-user behaviour and experience.

  9. ariard commented at 10:59 PM on July 17, 2022: member

    I think I share the opinion of @Xekyo here: #25353 (review). As of today, mempool "full RBF" sounds sufficiently established across the ecosystem's minds, than switching to another name might provoke the opposite effect of confusing people than anything else.

  10. luke-jr commented at 11:05 PM on July 17, 2022: member

    -mempoolfullrbf is the switch. This PR implements what is already in use and has been for years.

  11. ariard commented at 1:11 AM on July 18, 2022: member

    -mempoolfullrbf is the switch. This PR implements what is already in use and has been for years.

    I don't know if a similar feature present in another bitcoin software should bind this project to be compliant with it and under which conditions. I'm concerned such principle would make us subject to tweak our code in function of any change requested by a weird Erlang or Prolog implementation. I'll let other contributors or users weigh in their opinions.

  12. luke-jr commented at 2:58 AM on July 18, 2022: member

    If there's no reason to be incompatible, it's always better to be compatible.

  13. glozow commented at 9:36 AM on July 18, 2022: member

    AFAICT this is a rebase of #25373, changing the interface to achieve the same thing. #25373 was closed in favor of #25353 which was favored by reviewers. If people change their mind and want this interface instead, sure, but that doesn't seem to be the case atm.

    more compatible (with Core 0.12-0.18 & Knots)

    I see no dev/contrib guidelines or precedent suggesting we should prioritize being compatible with versions 0.12-0.18 (all no longer maintained for at least a year) or Knots.

  14. luke-jr commented at 7:05 PM on July 18, 2022: member

    AFAICT this is a rebase of #25373, changing the interface to achieve the same thing. #25373 was closed in favor of #25353 which was favored by reviewers.

    #25373 was the years-old code, while #25353 was newer code based on recent refactoring, and for that reason better. But the PR author refused to address this issue, so it is here as a followup instead.

    I see no dev/contrib guidelines or precedent suggesting we should prioritize being compatible with versions 0.12-0.18 (all no longer maintained for at least a year) or Knots.

    If you want it in the guidelines, feel free to add it... For one example, there's the prioritisetransaction RPC method. In any case, prioritising compatibility over incompatibility is plainly obvious. The only reason to prioritise incompatibility, is if there is an active interest in harming Bitcoin by enforcing a centralised monopoly over controlling it.

  15. MarcoFalke commented at 7:06 AM on July 19, 2022: member

    NACK, there are many issues, but to name a few:

    • fullrbf is a simple boolean setting, but the new one turns it (or at least the docs) into a string setting that is harder to understand for users
    • It is unclear what other policies could be supported, given that the setting appears wholly undocumented in Knots: https://github.com/bitcoinknots/bitcoin/blob/23.x-knots/src/init.cpp#L588
    • Even if there were other policies, they'd require at least one miner to support them. Ideally a good portion of the network, see also #25600#pullrequestreview-1041170369 . Absent a use case (or a single user) for those policies, it would be better to not add support for them for now.
    • All versions of Bitcoin Core and Bitcoin Knots are already fully compatible to disable rbf, see #25373 (comment) . So writing "dead" code to achieve a goal which is already achieved will just confuse devs and users. Thus may actually decrease effective compatibility due to user confusion.
    • If there was a need to make Bitcoin Knots compatible, it can be done with a 3-line "settings-alias" patch in Bitcoin Knots itself. Instead of a +70-35 patch in Bitcoin Core. See #25373 (comment)
  16. ghost commented at 3:11 PM on July 19, 2022: none

    fullrbf is a simple boolean setting, but the new one turns it (or at least the docs) into a string setting that is harder to understand for users

    String used instead of boolean won't be confusing for users as lot of config options already use string. The values could be confusing for some users. I think you had even agreed to add the option with same name in 2019: #16171 (comment).

    Even if there were other policies, they'd require at least one miner to support them. Ideally a good portion of the network, see also #25600#pullrequestreview-1041170369 . Absent a use case (or a single user) for those policies, it would be better to not add support for them for now.

    Users, miners etc. only try policies that are available in a bitcoin core based on the trend since RBF was implemented in core. So developers are deciding the policies not the users. If full RBF really increases miners revenue as claimed in #25353 they would be running bitcoin knots in last few years instead of core which isn't true. It would be interesting to ask some mining pools if they care to experiment with RBF policies or use the ones available in core.

    So writing "dead" code to achieve a goal which is already achieved will just confuse devs and users. Thus may actually decrease effective compatibility due to user confusion.

    It is a workaround and a few other config options can be removed if such workarounds are less confusing for users.

  17. MarcoFalke commented at 6:03 AM on July 22, 2022: member

    I think you had even agreed to add the option with same name in 2019:

    This was under the assumption that the setting has a easily recognizable value, such as "fullrbf", not "fee,-optin".

  18. luke-jr commented at 6:41 AM on July 22, 2022: member

    This was under the assumption that the setting has a easily recognizable value, such as "fullrbf", not "fee,-optin".

    "fee,-optin" describes the policy clearly. "fullrbf" does not at all.

  19. ghost commented at 12:06 PM on July 24, 2022: none

    I think you had even agreed to add the option with same name in 2019:

    This was under the assumption that the setting has a easily recognizable value, such as "fullrbf", not "fee,-optin".

    I agree, NACK for this pull request with these values. With bitcoin core at least I can share my opinion on such changes. Can't do with Knots although I like it for a few reasons and we can have different options, values etc. 🌿

  20. ghost commented at 12:18 PM on July 24, 2022: none

    This was under the assumption that the setting has a easily recognizable value, such as "fullrbf", not "fee,-optin".

    "fee,-optin" describes the policy clearly. "fullrbf" does not at all.

    Nobody needs full description in config values

    A value that makes sense, one word they can understand or search

  21. luke-jr commented at 9:24 PM on July 24, 2022: member

    With bitcoin core at least I can share my opinion on such changes. Can't do with Knots

    Sure you can. Almost everything in Knots has an associated PR (typically here, so it can be included in Core too), and exceptions could use the issue tracker.

  22. MarcoFalke commented at 7:20 AM on July 26, 2022: member

    Closing for now due to controversy. This has 16 comments, but not a single approval or concept ACK. Happy to reopen if there is one.

  23. MarcoFalke closed this on Jul 26, 2022

  24. bitcoin locked this on Jul 26, 2023

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: 2026-04-14 15:13 UTC

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