"The BIP-70 controversy."
"BitPay invoices are [formatted] according to BIP-70, instead of the more widely used BIP-21 standard."
"For example, Samourai Wallet does not support BIP-70 and refuses to implement that feature."
"Could you explain why BIP-70 is controversial and why BitPay implements a non-universal BIP?"
"Do users have a role to play in this controversy?"
A quick explanation on what BIP-21 and BIP-70 are:
BIP-21 is a standard for creating bitcoin payment [uniform resource identifiers] (URIs), like HTTP URLs...
only of the Bitcoin type.
These [URIs] would start with "bitcoin:" and then they have a bitcoin address. That is the simplest form.
It may also have a label [with how much you are paying]. The standard has been extended in different ways.
There are proposals now to provide alternative payment addresses [beyond] a basic " bitcoin:1,"
[such as] a SegWit P2SH address like "bitcoin:3" or pure native SegWit bech32 address that start with "bc1."
BIP-21 has been wildly successful as a standard because the simple [URI] format makes it...
very easy to make payments.
However, it does have one fairly fundamental weakness.
It is fairly easy to spoof and substitute the address inside a BIP-21 URI;
there is nothing authenticating that the address you receive, shown to you as a QR code,
is the one that the merchant actually put on their site.
If anybody hacks the website, manages to intercept traffic, or there is a trojan on your computer that has...
privileges in your browser environment, can inject JavaScript or change the DOM,
then they can substitute the bitcoin address in the URI so that [your] payment goes to the attacker.
BIP-70 was created to solve this problem.
It [has the merchant sign a payment message] that [is authenticated with a] X.509 certificate,
kind of like an SSL certificate, whereby the company that produces the address...
uses a private key to digitally sign the message.
[That way, you will know the] BIP-70 address you see in browser is signed [by the correct merchant].
Theoretically, you could have clients that validate the signature and show you a green padlock like with SSL.
That allows you to make sure the address hasn't been modified en route between you and the merchant.
This [would] obviously [be] an additional layer of security, but there is some controversy about BIP-70,
specifically the way it coalesced around an already centralized protocol,
which is the issuance mechanism for X.509 certificates.
That is a closed market with a number of centralized providers.
Additionally, there was some controversy about the possibility of also having clients...
provide a certificate to authenticate the user,
which could then allow for KYC / AML policies [justifying] identity surveillance.
There is obviously a lot of resistance in the Bitcoin community [to centralization and surveillance].
[Those were the] controversies around the standard.
I don't think the real controversy here is that BitPay provides BIP-70 certificates.
They were doing that before and there wasn't much of an uproar.
I think the real issue is that, in the past, [they had] a button to show the bitcoin address as an alternative...
to the BIP-70 signed address, so you could extract [it] and pay with any client that supported BIP-21.
You [were not forced] to use BIP-70, you could use either BIP-70 or BIP-21:
the allegedly more secure solution with a certificate, or the BIP-21 URI with broad compatibility.
However, several months [ago], BitPay chose to remove BIP-21 as an option;
you can only access the BIP-70 address now.
That caused controversy, because [many] wallets were not and did not want to support BIP-70,
for political reasons, and as a result they were not willing to process BIP-70 payment requests.
From BitPay's perspective, I can also see that if you have something signed with a certificate,
then that [is supposedly] the [more] secure way.
By offering the [supposedly] insecure way, you are undermining the security [model].
Most sites [with SSL] don't let you go to an unencrypted, HTTP version of the site as an alternative to HTTPS.
From a certain perspective, I think that makes sense. However, [in Bitcoin] it has created a lot of pushback.
[It led to] the emergence of alternatives and competitors to BitPay, with projects such as BTCPay Server.
That is all I have to say [as] a quick explanation of what is going on.
You can also take the BIP-70 payment instruction and decode it into a BIP-21 URI.
[Then] you can make a payment even [with] a wallet that doesn't support BIP-70 payment requests.
However, that [may be more or less secure].
The merchant [isn't] decoding it, but [if you are using] a third-party website, now you have to trust another party,
which I think is an even worse solution.
So inadvertently, by choosing to not offer BIP-21 URIs, maybe BitPay is pushing [users] to third-party sites.
Or poor implementations. But you can make your own choices here.