Could you explain why BIP-70 is controversial and why BitPay implements a non-universal BIP?

"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?"

BIP-21

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

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].

I don't think the real controversy here is that BitPay provides BIP-70 certificates

[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.