Add a configuration option -permitrbf
to set transaction replacement policy for the mempool.
Enabling it will enable (opt-in) RBF, disabling it will refuse all conflicting transactions.
-permitrbf
to set transaction replacement policy
#7386
Add a configuration option -permitrbf
to set transaction replacement policy for the mempool.
Enabling it will enable (opt-in) RBF, disabling it will refuse all conflicting transactions.
Add a configuration option `-permitrbf` to set transaction replacement policy
for the mempool.
Enabling it will enable (opt-in) RBF, disabling it will refuse all
conflicting transactions.
106@@ -107,6 +107,8 @@ static const bool DEFAULT_TXINDEX = false;
107 static const unsigned int DEFAULT_BANSCORE_THRESHOLD = 100;
108
109 static const bool DEFAULT_TESTSAFEMODE = false;
110+/** Default for -permitrbf */
111+static const bool DEFAULT_PERMIT_REPLACEMENT = true;
ACK
Well it might be not very easy to relay something that is not going to be accepted in mempool. But this patch is better than nothing.
Please don’t confuse …
-permitrbf
is a configuration value that allows accepting such replacement-transaction into the nodes mempool@gmaxwell it would only degrade users’ ability to use it if node operators don’t want to turn it on.
Since Bitcoin Core is sensitive to contentious changes, and since Opt-In RBF is contentious, I think the default should be the least contentious option for the sake of consistency.
For those politically minded, this would also contribute into a small way to the perception that Core is responsive to the desires of major businesses in the space.
@kristovatlas This is not a consensus rule, so you’re free to choose a different setting than the default here.
As I’ve said on the PR being linked to, I’m certainly willing to consider changing the default if there is controversy about it. But can someone at least point out one service or wallet that is not dealing with this correctly and has no plans to do so in the near future?
Since Bitcoin Core is sensitive to contentious changes
No, we avoid contentious consensus rule changes (e.g. hardforks); because no one can choose to avoid the consensus behavior of the network around them. Please don’t mix up totally local behavior from the blockchain consensus rules.
Adding an option here– even though there isn’t any rational given to any of the opposition to restoring the original Bitcoin 0.1 functionality for people to choose to consequentially produce non-final transactions was already a purely political response to those desires. The continued attacks in spite of making that requested, but otherwise illogical, accommodation suggests that the complaining parties are not interested in a civilized dialog.
true
.
utACK b768108. This is not controversial because it is not changing behavior of existing 0.12.0rc1 nodes.
If someone feels like changing the default for 0.12.1 or 0.13, a separate pull might be appropriate as introducing new features and discussion about changing the behavior should be split in most cases.
RBF should not be in the code base at all. With that said, default should be no RBF at all. That also means no relaying and mining of RBF transactions.
It’s too late for that. Opt-in RBF is well-deliberated progress, not a random spur of the moment change. The RBF discussion has been going on for years, almost since the beginning of bitcoin, this was eventually the best compromise. For wallets, RBF is the solution to transactions stuck because they have attached too little fee (a very common complaint). And it is non-coercive in any way: Users can opt-in to send their transactions with RBF, or not. Receivers can see if a transaction opts in to RBF (#7222).
This is not controversial because it is not changing behavior of existing 0.12.0rc1 nodes.
The behaviour of 0.12.0rc1 nodes are controversial.
The behaviour of 0.12.0rc1 nodes are controversial.
Can you explain who is hurt by it?
It’s too late for that.
Guess the community have to run Bitcoin Classic then.
For wallets, RBF is the solution to transactions stuck because they have attached too little fee (a very common complaint).
If we increase the blocksize this would not be a problem.
And it is non-coercive in any way
People accepting 0-conf would like to continue to do that.
Can you explain who is hurt by it?
Merchants.
I don’t think this is the proper location to discuss RBF per se.
Ok. I will go away now.
ACK https://github.com/laanwj/bitcoin/commit/b768108d9c0b83330572711aef1e569543130d5e
But yes, we should announce such changes one version before it is actually done. I.e. some form of release plan.
@sandakersmann RBF was already enabled by default in 0.12
.
To change the default now would mean to change expected behaviour for 0.12
, therefore, this could be merged without breaking expectations.
If you (and others) think the default should be changed, its probably best to set it up in a new PR which targets 0.13
.
At least, that is my impression, @laanwj 0.12
has been set in stone now right?
366@@ -367,6 +367,7 @@ std::string HelpMessage(HelpMessageMode mode)
367 strUsage += HelpMessageOpt("-onion=<ip:port>", strprintf(_("Use separate SOCKS5 proxy to reach peers via Tor hidden services (default: %s)"), "-proxy"));
368 strUsage += HelpMessageOpt("-onlynet=<net>", _("Only connect to nodes in network <net> (ipv4, ipv6 or onion)"));
369 strUsage += HelpMessageOpt("-permitbaremultisig", strprintf(_("Relay non-P2SH multisig (default: %u)"), DEFAULT_PERMIT_BAREMULTISIG));
370+ strUsage += HelpMessageOpt("-permitrbf", strprintf(_("Permit transaction replacement (default: %u)"), DEFAULT_PERMIT_REPLACEMENT));
Enabling it will enable (opt-in) RBF, disabling it will refuse all conflicting transactions. @laanwj Given the circumstances, the language for this configuration option is a bit confusing. Did you consider naming the option “-disablerbf” with a default setting of false?
--disable-rbf
flag if the default was to be true
. As it stands, it reads more like a default to false
is expected.
@laanwj Given the circumstances, the language for this configuration option is a bit confusing. Did you consider naming the option “-disablerbf” with a default setting of false?
You can already do this, for every boolean parameter: -nopermitrbf
.