Bitcoin at POS using BIP70, NFC and offline payments - implementer feedback



Summary:

Jan Vornberger, a Bitcoin developer, recently shared his experience working on a point-of-sale (POS) terminal that is based on a Raspberry Pi. The device displays QR codes and provides payment requests via NFC. One of the main challenges he faced was maintaining a connection while users confirmed transactions using NFC alone. He eventually decided to use an NFC/Bluetooth combination which allowed communication even if the user takes the device back. Vornberger used the NFC Data Exchange Format (NDEF), which defines various record types, including URI and MIME type. To standardize some of the technology, Vornberger documented his work on implementing NFC and offline payments in the hope of creating a more streamlined process. He outlined several scenarios for consideration, including scanning a QR code and transmitting the transaction via the Bitcoin network or fetching BIP70 details via Bluetooth and posting a transaction via HTTP. He also proposed changing the 'bt' parameter to 'r1' and adding additional 'payment_url's to the payment request.Jan also proposed a change to the BIP70 payment request protocol to prevent a Man-in-the-Middle (MITM) attack on Bluetooth channels. He suggested adding a hash to the payment request, even if it is not signed. However, Mike Hearn expressed concerns about this approach, stating that the BIP70 payment request needs to be finalized at the time the QR code and NFC URI is generated. To get feedback on several questions related to the proposal, Jan asked the Bitcoin development mailing list for input. This included changing the 'optional string payment_url' into 'repeated string payment_url', implementing the r, r1, r2 mechanism in Bitcoin Wallet, and any other comments regarding the 'h' parameter as per TBIP75. To provide context and reference, Jan provided links to his proposals and Andy Schroder's Bitcoin Fluid Dispenser project.


Updated on: 2023-06-09T17:47:17.380751+00:00