Bitcoin Q&A: BitPay and BIP-70 controversy

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

Leave a Reply

Your email address will not be published. Required fields are marked *