-
Notifications
You must be signed in to change notification settings - Fork 38.7k
policy: enable full-rbf by default #30493
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers. Code CoverageFor detailed information about the code coverage, see the test coverage report. ReviewsSee the guideline for information on the review process.
If your review is incorrectly listed, please react with 👎 to this comment and the bot will ignore it on the next update. ConflictsReviewers, this pull request conflicts with the following ones:
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. |
|
mempoolfullrbf should be removed, and RBF is a redundant unenforceable feature. If we believe miners only care about the the largest fee/rate then simply providing them with all txns is good enough. Miners can choose how to sort themselves. |
|
ACK |
This comment was marked as abuse.
This comment was marked as abuse.
|
Concept ACK Given the majority of the hashrate using |
Sorry for the confusion. To clarify, I had deleted my own comment. I wanted to think a bit more about it before commenting again. |
This comment was marked as abuse.
This comment was marked as abuse.
|
@1440000bytes hello from your friendly neighborhood moderator. This is just a reminder to keep all discussions technical. Pull request comments should be focused on the code in question. Discussions about personal opinions, moderator or maintainer actions (including responses to this comment) can be opened here |
This comment was marked as abuse.
This comment was marked as abuse.
This comment was marked as off-topic.
This comment was marked as off-topic.
|
Concept ACK. For the same vector of DoS attack about contracting protocols and multi-party explained in my I believe one of the best long-term solution to avoid new use-case conflict (in the present "0 Historically, there has been some attempt to have the policy rules validated in an external |
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
|
FWIW, I had some friends running nodes either do nothing or turn this on. In the last 144 blocks, a default node sees only 64.58% blocks reconstructed with zero round trips which, in my view, means compact blocks is significantly broken for its latency reducing purpose. A node with this enabled sees 94.44% reconstruct without a roundtrip, which is maybe a little low but not broken. I imagine that if more of the network were running enabled that number might increase further, as it may still be held down due to transactions that fail to propagate well (consistent with that, it seems most nodes with no inbound have low rates regardless of the setting, which presumably wouldn't be so if most nodes had this setting). I shared my concerns with another bitcoiner who likes to monitor network health, they replicated, and got similar results (which I presume they'll share eventually). |
|
concept ack given the above data from @gmaxwell. |
murchandamus
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ACK 406cdd56e1065fe721f62a0c52fa024455748bbb
I reviewed the code and replicated the test changes to confirm that these are the minimal changes to pass all tests.
That would be a reason to support this PR, as full-RBF simply provides miners with all txns. Without full RBF enabled by relays, miners would typically only see the "first" transaction.
This behaviour was originally intended to put pressure on miners to match node policies; it's not supposed to be an excuse to pressure nodes to adapt to miner policies. (Personally, I'm ~0 on whether this actually gets merged or not; Knots has had full RBF by default for years, and "first seen" doesn't really make sense as a policy) |
|
@luke-jr I don't know that I'd say 'intended', particularly since poor propagation either helps or hurts miners depend on their hashrate-- it benefits sufficiently large centralized miners when other miners take more time to get their blocks-- but regardless of intent it works the way it works. I would say that to the extent someone is ambivalent with respect to the policy, as you just expressed, it's preferable to improve block propagation latency since higher latency is a centralization pressure. The existence of the extrapool is intended to decouple policy from block propagation-- allowing nodes to keep around some txn they wouldn't prefer to mine/relay for the benefit of reconstructing blocks, but it only goes so far. Ultimately it would be best if block relay latency were less fragile-- methods have been implemented (the FEC reconstruction of fibre, for example) but never incorporated in widely deployed node software. And even those work particularly well if only a few transactions are missing relative to the node's mempool and extrapool. So even if more robust block relay was in use, it's preferable to do whatever lowers the discrepancy, all other things equal (and they're not always equal, for sure). |
|
I say "intended" because policy centralization was a concern I had and raised about compact blocks before they were merged, and @sipa explicitly justified CB's behaviour in this regard as a way for nodes to exert influence on miners in this respect. |
Correct, I too found enabling By analyzing compact block reconstructions in the debug.logs (with I suspected that the divergence might originate from nearly all pools mining with mempoolfullrbf. I enabled Concept ACK
|
instagibbs
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ACK fbd4ca6ea9a3d2f6fe0af3cb5dfe8e1a7fdb4032
Given the weight of evidence on block propagation and the implied miner uptake, I think it's a conservative flip of the switch.
|
If the conclusion is that it's now better for a node to have this "on", rather than "off", and this is merged for
|
murchandamus
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
reACK fbd4ca6
This comment was marked as abuse.
This comment was marked as abuse.
|
reACK 590456e |
|
reACK 590456e |
ariard
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
tested ACK 590456e
murchandamus
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
reACK 590456e
|
ACK 590456e I did my own testing a few weeks ago where I made transactions that did not signal and replaced them to see how many were mined. The methodology was to create a transaction and replace it after 2 minutes. A total of 122 transactions were created, with 118 of the replacements being accepted. This took place on July 10th to 11th over the course of about 30 hours. With a 96.7% success rate, I think that's pretty good evidence that miners have enabled mempoolfullrbf. This gist contains the script that I used as well as a log of all of the transactions that were created. |
|
Concept NACK: Opposition to Full-RBF by Default Without Broad Consensus
Given these points, I strongly recommend a reevaluation of RBF's role and its implementation strategy. We need to consider more robust and decentralized scaling solutions that adhere to Bitcoin's original intentions, supporting its development into a reliable and universally accessible digital currency. |
|
Backported for |
…cation 1f93e3c add deprecation warning for mempoolfullrbf (glozow) 4400c97 [doc] update documentation for new mempoolfullrbf default (glozow) Pull request description: Followup to #30493. Update bips.md and policy/*.md to reflect new default rules around signaling requirements in RBF. Also, log a warning when `-mempoolfullrbf=0` that this config option is deprecated and will be removed in a future release. ACKs for top commit: petertodd: ACK 1f93e3c instagibbs: ACK 1f93e3c tdb3: ACK 1f93e3c Tree-SHA512: f60a9524f15cfaa4c10c40b6f62b787d3f9865aac48ca883def30efac4f8a118f1359532f1b209ea34e201f0b1c92398abc8bc1e439e6b60910cc7f75c51e9ae
c189eec doc: release note for mempoolrullrbf removal (Greg Sanders) d47297c rpc: Mark fullrbf and bip125-replaceable as deprecated (Greg Sanders) 04a5dce docs: remove requirement to signal bip125 (Greg Sanders) 111a23d Remove -mempoolfullrbf option (Greg Sanders) Pull request description: 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. ACKs for top commit: stickies-v: re-ACK c189eec achow101: ACK c189eec murchandamus: ACK c189eec rkrux: reACK c189eec Tree-SHA512: 9447f88f8f291c56c5bde70af0a91b0a4f5163aaaf173370fbfdaa3c3fd0b44120b14d3a1977f7ee10e27ffe9453f8a70dd38aad0ffb8c39cf145049d2550730

This pull request enables full rbf (mempool policy) by default. #28132 was closed recently with this comment.
Rationale:
Full RBF config option was added in July 2022: Add a
-mempoolfullrbfnode setting #25353It is used regularly: https://mempool.space/rbf#fullrbf
Most mining pools are using it: policy: Enable full-rbf by default #28132 (comment)