One still unsolved issue of cryptocurrency Point of Sale systems is that they require both the sender and the receiver to be online. New solutions are on the horizon though, which enable Bitcoin payments, even in the event of a blackout, or when connectivity cannot be established.
Imagine all lights suddenly going out. From one second to the next, you are in an emergency situation, as your area experiences a massive power blackout. As we have learned from Texas in February 2021, a large-scale blackout can last for days or even weeks.
As soon as people know what’s going on, the run on supermarkets starts. Without traffic lights, the ride to the nearest supermarket is both tedious and dangerous. Finally, you arrive at your destination, only to find closed doors. The store manager would certainly like to sell his perishable goods as soon as possible, but without power, the automatic sliding doors won’t open.
With brute force, staffers manage to pry the doors open and let in the waiting customers. When you finally make it to the cashier, the next problem arises, since all electronic payment systems are out of order. In this situation, the Bitcoin wallet on your phone won’t save you either, since by that time, all cell towers in your area have broken down as well.
Without a mobile connection, you cannot issue any Bitcoin payments. As of today, some solutions have been proposed to enable crypto transactions without requiring constant connectivity, but there is still a lot of work to do to create a blackout-resistent crypto infrastructure.
Pre-loaded offline wallets
In 2017, Dmitrienko et al. published a research paper titled Secure Wallet-Assisted Offline Bitcoin Payments with Double-Spender Revocation, which so far seems like the most promising approach towards true offline crypto payments. In the paper, the researchers detail some of the problems associated with not being constantly connected and synchronized to the Bitcoin blockchain.
In principle, offline payments can be realized by having the payer send the payee an IOU, which he can redeem once he establishes connectivity again. The problem with offline merchants is that they can neither confirm that the payer has the requested coins in his wallet in the first place, nor can they make sure that the payer won’t double-spend until the IOU is redeemed.
The solution proposed in the paper relies on using a special offline wallet, which is kept on a tamper-proof secure hardware device, which nowadays is used in most hardware wallets and finds increasing use in PCs and mobile devices. In order to issue an offline payment, the payer must first pre-load his offline wallet using a regular Bitcoin transaction. The offline wallet connects to the recipient’s wallet using Near-Field Communication or Bluetooth to confirm that the payer indeed has the necessary funds to issue a payment and locks any outgoing funds, making sure that they cannot be double-spent.
Although there are significant costs attached to hacking a secure hardware chip, there is no way to effectively make sure that an offline wallet cannot be compromised. The authors therefore propose an on-chain method to revoke offline wallets, thus limiting the damage of double-spends and rendering attacks cost-effective.
The authors further note that the same can be achieved by requiring the offline wallet to make an on-chain deposit to a trusted wallet that gets slashed in the event of a double-spend. This can be achieved by sending the deposit to a burn address. Honestly behaving offline wallets can then withdraw the burned funds again by having the Bitcoin blockchain issue a coinbase transaction.
Offline PoS Devices
Recently, Bitcoin tinkerer Ben Arc has released a specification on GitHub for a DIY Point of Sale system that makes it possible to accept Lightning Network payments without requiring an Internet connection itself.
— LightRider ⚡️ (@LightRider5) October 1, 2021
For this purpose, the PoS device creates a Lightning Network invoice and displays it as a QR-code, which is scanned and signed by the payer. The payer then receives an encrypted PIN, which can be used as a confirmation for the merchant that the funds have arrived.
The problem with this approach is that it merely shifts the burden of requiring connectivity to the sender. While the receiver can operate his PoS device offline, the payer still needs to be connected to the Lightning Network in order to issue the payment.
LoRaWAN for minimal connectivity
In the event of a blackout, it would be more effective to have a PoS device that is connected to some sort of emergency network and does not require each customer to establish a mobile Internet connection. LoRaWAN networks such as Helium would be suitable for creating such a blackout-resistent network.
The Long Range (LoRa) technology standard is optimized for minimal energy requirements. A single access point only has a power consumption of 5W and can transmit a signal that reaches for up to 10 miles. Under normal instances, LoRa is supposed to be an energy-efficient way for Internet-of-Things devices to communicate, but in the event of a blackout, a LoRaWAN network can easily be kept online by emergency generators and batteries.
The idea here is to create a PoS system that can connect to a LoRaWAN network and transmits blockchain messages that were signed by the customer offline. This can be achieved by connecting an offline wallet to the PoS via NFC or Bluetooth, or by connecting a hardware wallet via USB to sign off transactions.
The main drawback of LoRa technology is its low data throughput of only a few kilobytes per second. This makes it infeasible to keep PoS devices fully synchronized to the blockchain, so this system would likely require a trusted third-party server to ensure that the payer has the necessary funds in his wallet.
Theoretically, LoRaWAN could also be used to propagate new blocks to offline blockchain nodes. While it is not feasible to download full blocks using LoRaWAN, the blocks could be copied over using device-to-device connections. The node then downloads just the block headers using LoRaWAN, to make sure that all blocks are valid.