Discussion:
[bitcoin-dev] BIP-21 amendment proposal: -no125
Sjors Provoost via bitcoin-dev
2017-12-05 19:24:04 UTC
Permalink
One way to reduce fees is to encourage usage of Replace-By-Fee, BIP 125 [0]. It allows wallets to recommend lower fees, because if a transaction gets stuck due to underestimation, the fee can easily be bumped.

Bitcoin Core has had support for RBF for a while, and as of v0.15.0 recommends lower fees [1] when the user chooses to use RBF.

I recently submitted a pull request that would turn on RBF by default, which triggered some discussion [2]. To ease the transition for merchants who are reluctant to see their customers use RBF, Matt Corallo suggested that wallets honor a no125=1 flag.

So a BIP-21 URI would look like this: bitcoin:175t...45W?amount=20.3&no125=1

When this flag is set, wallets should not use RBF, regardless of their default, unless the user explicitly overrides the merchant's preference.

Afaik adding this flag won't break existing BIP-21 support. It doesn't use the req- prefix, because it's optional. I'm also not aware of any ad hoc standards that use no125 in BIP-21-ish URIs.

- Sjors

P.S. I'd similarly suggest adding a bech32 param, but that's for another discussion

[0] https://github.com/bitcoin/bips/blob/master/bip-0125.mediawiki
[1] https://bitcoincore.org/en/2017/09/01/release-0.15.0/#better-fee-estimates
[2] https://github.com/bitcoin/bitcoin/pull/11605
[3] https://github.com/bitcoin/bitcoin/issues/11828
Luke Dashjr via bitcoin-dev
2017-12-05 19:39:32 UTC
Permalink
Post by Sjors Provoost via bitcoin-dev
I recently submitted a pull request that would turn on RBF by default,
which triggered some discussion [2]. To ease the transition for merchants
who are reluctant to see their customers use RBF, Matt Corallo suggested
that wallets honor a no125=1 flag.
bitcoin:175t...45W?amount=20.3&no125=1
When this flag is set, wallets should not use RBF, regardless of their
default, unless the user explicitly overrides the merchant's preference.
This seems counterproductive. There is no reason to ever avoid the RBF flag.
I'm not aware of any evidence it even reduces risk of, and it certainly
doesn't prevent double spending. Plenty of miners allow RBF regardless of the
flag, and malicious double spending doesn't benefit much from RBF in any case.
Post by Sjors Provoost via bitcoin-dev
P.S. I'd similarly suggest adding a bech32 param, but that's for another discussion
Bech32 addresses are just normal addresses. What need is there for a param?

Luke
Sjors Provoost via bitcoin-dev
2017-12-05 20:00:01 UTC
Permalink
Perhaps instead of a flag that can be used to disable a specific operation, there should be a "-ignoredflags=x,y,z" section of the URI that can be used to ignore whatever BIP this might also be useful for in the future?
I don't think all BIPs lend themselves to this pattern. Can you think of another example? I also suspect each ignored flag requires carefully defined behavior, so it's probably better to spell that out in the BIP.

I also wouldn't be surprised if this BIP will get superseded in its entirety in the not too distant future; I believe there's some earlier discussion on this list about variations on BIP-71. So I don't think there will be many additional params in the future that warrant abstraction.
Post by Sjors Provoost via bitcoin-dev
P.S. I'd similarly suggest adding a bech32 param, but that's for another discussion
Bech32 addresses are just normal addresses. What need is there for a param?
Luke
Most wallets consider bech32 addresses to be invalid. This would allow merchants to display a backwards compatible P2SH address and allow modern wallets to use bech32. In fact, this should be encouraged because it's slightly cheaper for the recipient to spend these funds (but not worth even a tiny increase in shopping cart abandonment).

Once the new format has sufficient adoption, merchants can simply drop support for old wallets and not use this parameter.

Sjors
CryptAxe via bitcoin-dev
2017-12-05 20:06:31 UTC
Permalink
On Dec 5, 2017 12:00 PM, "Sjors Provoost" <***@sprovoost.nl> wrote:

...

I don't think all BIPs lend themselves to this pattern. Can you think of
another example?


Not right now, just seemed like a good idea to consider making it useful
for more than one thing (maybe CT or something else could use it in the
future?).

I also suspect each ignored flag requires carefully defined behavior, so
it's probably better to spell that out in the BIP.

Sjors


Agreed, no reason they couldn't reuse the same section of the payment
request URI though. (And define that behavior in the BIP)
Peter Todd via bitcoin-dev
2017-12-11 18:19:43 UTC
Permalink
Post by Luke Dashjr via bitcoin-dev
Post by Sjors Provoost via bitcoin-dev
I recently submitted a pull request that would turn on RBF by default,
which triggered some discussion [2]. To ease the transition for merchants
who are reluctant to see their customers use RBF, Matt Corallo suggested
that wallets honor a no125=1 flag.
bitcoin:175t...45W?amount=20.3&no125=1
When this flag is set, wallets should not use RBF, regardless of their
default, unless the user explicitly overrides the merchant's preference.
This seems counterproductive. There is no reason to ever avoid the RBF flag.
I'm not aware of any evidence it even reduces risk of, and it certainly
doesn't prevent double spending. Plenty of miners allow RBF regardless of the
flag, and malicious double spending doesn't benefit much from RBF in any case.
I'll second the objection to a no-RBF flag.
--
https://petertodd.org 'peter'[:-1]@petertodd.org
Matt Corallo via bitcoin-dev
2017-12-23 16:25:08 UTC
Permalink
While the usability of non-RBF transactions tends to be quite poor, there are some legitimate risk-analysis-based reasons why people use them (eg to sell BTC based on a incoming transaction which you will need to convert to fiat, which has low cost if the transaction doesn't confirm), and if people want to overpay on fees to do so, no reason not to let them, including if the merchant is willing to CPFP to do so.

Honestly, I anticipate very low usage of such a flag, which is appropriate, but also strongly support including it. If things turn out differently with merchants reducing the usability of BTC without taking over the CPFP responsibility we could make the option imply receiver-pays-fee, but no reason to overcomplicate it yet.
Post by Sjors Provoost via bitcoin-dev
Post by Luke Dashjr via bitcoin-dev
Post by Sjors Provoost via bitcoin-dev
I recently submitted a pull request that would turn on RBF by
default,
Post by Luke Dashjr via bitcoin-dev
Post by Sjors Provoost via bitcoin-dev
which triggered some discussion [2]. To ease the transition for
merchants
Post by Luke Dashjr via bitcoin-dev
Post by Sjors Provoost via bitcoin-dev
who are reluctant to see their customers use RBF, Matt Corallo
suggested
Post by Luke Dashjr via bitcoin-dev
Post by Sjors Provoost via bitcoin-dev
that wallets honor a no125=1 flag.
bitcoin:175t...45W?amount=20.3&no125=1
When this flag is set, wallets should not use RBF, regardless of
their
Post by Luke Dashjr via bitcoin-dev
Post by Sjors Provoost via bitcoin-dev
default, unless the user explicitly overrides the merchant's
preference.
Post by Luke Dashjr via bitcoin-dev
This seems counterproductive. There is no reason to ever avoid the
RBF flag.
Post by Luke Dashjr via bitcoin-dev
I'm not aware of any evidence it even reduces risk of, and it
certainly
Post by Luke Dashjr via bitcoin-dev
doesn't prevent double spending. Plenty of miners allow RBF
regardless of the
Post by Luke Dashjr via bitcoin-dev
flag, and malicious double spending doesn't benefit much from RBF in
any case.
I'll second the objection to a no-RBF flag.
--
Paul Iverson via bitcoin-dev
2017-12-23 18:33:21 UTC
Permalink
Allowing a "no-RBF" flag serves only to fool new users into believing that
0-conf is more secure than it is. There is already too much confusion about
this point.

In Bitcoin was assume that miners are profit-maximizing agents, and so we
must assume that (flag or not) miners will replace transactions from
mempool with conflicts paying a higher fee. From that viewpoint, full RBF
is already "de facto" policy in Bitcoin. So I agree with Luke and Peter:
remove the flag and make all transactions RBF as "de jure" policy too.

At the same time, we need more outreach and education to clarify the risks
of 0-conf, and we need to show miners how they can earn more profits by
adopting full RBF.

Paul.

On Sat, Dec 23, 2017 at 8:25 AM, Matt Corallo via bitcoin-dev <
Post by Matt Corallo via bitcoin-dev
While the usability of non-RBF transactions tends to be quite poor, there
are some legitimate risk-analysis-based reasons why people use them (eg to
sell BTC based on a incoming transaction which you will need to convert to
fiat, which has low cost if the transaction doesn't confirm), and if people
want to overpay on fees to do so, no reason not to let them, including if
the merchant is willing to CPFP to do so.
Honestly, I anticipate very low usage of such a flag, which is
appropriate, but also strongly support including it. If things turn out
differently with merchants reducing the usability of BTC without taking
over the CPFP responsibility we could make the option imply
receiver-pays-fee, but no reason to overcomplicate it yet.
On December 11, 2017 1:19:43 PM EST, Peter Todd via bitcoin-dev <
Post by Peter Todd via bitcoin-dev
Post by Luke Dashjr via bitcoin-dev
Post by Sjors Provoost via bitcoin-dev
I recently submitted a pull request that would turn on RBF by default,
which triggered some discussion [2]. To ease the transition for merchants
who are reluctant to see their customers use RBF, Matt Corallo suggested
that wallets honor a no125=1 flag.
bitcoin:175t...45W?amount=20.3&no125=1
When this flag is set, wallets should not use RBF, regardless of their
default, unless the user explicitly overrides the merchant's preference.
This seems counterproductive. There is no reason to ever avoid the RBF flag.
I'm not aware of any evidence it even reduces risk of, and it certainly
doesn't prevent double spending. Plenty of miners allow RBF regardless of the
flag, and malicious double spending doesn't benefit much from RBF in any case.
I'll second the objection to a no-RBF flag.
_______________________________________________
bitcoin-dev mailing list
https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
CryptAxe via bitcoin-dev
2017-12-05 19:40:42 UTC
Permalink
Perhaps instead of a flag that can be used to disable a specific operation,
there should be a "-ignoredflags=x,y,z" section of the URI that can be used
to ignore whatever BIP this might also be useful for in the future?

On Dec 5, 2017 11:34 AM, "Sjors Provoost via bitcoin-dev" <
Post by Sjors Provoost via bitcoin-dev
One way to reduce fees is to encourage usage of Replace-By-Fee, BIP 125
[0]. It allows wallets to recommend lower fees, because if a transaction
gets stuck due to underestimation, the fee can easily be bumped.
Bitcoin Core has had support for RBF for a while, and as of v0.15.0
recommends lower fees [1] when the user chooses to use RBF.
I recently submitted a pull request that would turn on RBF by default,
which triggered some discussion [2]. To ease the transition for merchants
who are reluctant to see their customers use RBF, Matt Corallo suggested
that wallets honor a no125=1 flag.
So a BIP-21 URI would look like this: bitcoin:175t...45W?amount=20.
3&no125=1
When this flag is set, wallets should not use RBF, regardless of their
default, unless the user explicitly overrides the merchant's preference.
Afaik adding this flag won't break existing BIP-21 support. It doesn't use
the req- prefix, because it's optional. I'm also not aware of any ad hoc
standards that use no125 in BIP-21-ish URIs.
- Sjors
P.S. I'd similarly suggest adding a bech32 param, but that's for another discussion
[0] https://github.com/bitcoin/bips/blob/master/bip-0125.mediawiki
[1] https://bitcoincore.org/en/2017/09/01/release-0.15.0/#
better-fee-estimates
[2] https://github.com/bitcoin/bitcoin/pull/11605
[3] https://github.com/bitcoin/bitcoin/issues/11828
_______________________________________________
bitcoin-dev mailing list
https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
Loading...