What is a BIP?
Bitcoin Improvement Proposals, or BIPs, are design documents in which Bitcoin developers are able to present new features and ideas for Bitcoin. Each presented BIP is assigned a sequential number; the first being BIP0001 back in 2011.
What is BIP70?
BIP70‘s creation was intended to reduce payment errors, such as broadcasting the incorrect amount of requested Bitcoin, sending a payment to a wrong address or choosing an insufficient mining fee for a timely transaction. These are all very common mistakes that are made, even by those well versed in the process of sending Bitcoin payments. This has resulted in failed transactions between customer and merchant, and BIP70 sought to prevent payment errors by locking in the correct amount, correct address and set the mining fee (which is NOT determined by the sender (customer)). So, instead of being presented with a standard Bitcoin address and an invoice amount, as per traditional Bitcoin payments, the customer is given a Bitcoin URI, in which all of the information and specifics are already entered.
Sounds like a good idea; so what’s the problem?
The primary issue is that only some wallets support BIP70, and with BIP 70 payment request, there is no Bitcoin address displayed to the customer, only a QR Code representing the URI (URL?) payment protocol. Before BIP70, BIP 21 also presented the issuance of a QR code, representing the payment request, which would be universally recognized by any wallet software and interpreted in a standardized manner.
Currently, BitPay, one of the largest global Bitcoin payment processors, will only process payments from BIP70 compatible wallets, and since there is no actual Bitcoin address displayed with a BIP70 payment request, users would be required to switch over to one of these compatible wallets in order to complete a payment to anyone choosing BitPay as their payment processor. This decision from BitPay has triggered some backlash from wallets choosing not to support the BIP70 protocol.
Samourai Wallet made it very clear that they will not be supporting BIP70 as they believe their decision to require BIP70 is bullying and taking advantage of customers by exploiting their own dominant share of the market. Aside from this opinion, others have pointed out that BIP70 also has the potential to increase “blacklisting” coins, which effectively degrades the fungibility and decentralized nature of Bitcoin.
Another potential issue with BIP70 is that the payment can be rejected by the receiving party(see image). In this event, a new transaction must be then be initiated and the process starts over. In theory, the rejected transaction should be canceled and never broadcast to the blockchain. However, there is no safeguard in place guaranteeing that the party rejecting the transaction won’t broadcast the already signed “rejected” transaction, as well as the new transaction sent by the sending party. That would mean there is potential for charging a customer twice for the same payment request.
So what options do we have?
Much of the intent of Bitcoin is to put money transmitting in the hands of those who own it. Using Bitcoin gives us the option to set our mining fees how we want, and be responsible for sending our transactions to a specified address as we see fit. Obtaining the Bitcoin address from a BIP70 payment request can be done manually, but it isn’t easy, and it’s certainly not feasible if you’re transacting this way on a regular basis: see here. However, we at Coin Ninja have provided a very simple solution for extracting the Bitcoin address from a BIP70 payment request, and it just takes a second!
Coin Ninja’s new BIP70 Buster