Developer Tobias Ruck has created an offline wallet for Bitcoin Cash.
For now it’s just a demo version, but it is fully operational. Ruck has also published a video explaining how it works:
This wallet, based on a smart contract, allows a user to make a payment without being online. Using a special interface, which is still very basic as it is only a test version, the wallet is able to generate and sign a transaction even without being connected to the Internet.
This generates the code of the signed transaction, which could also be represented by a QR: this code must be sent to the recipient of the payment, for example by simply scanning it.
The receiver also needs to use a special interface, however, this one must be connected to the Internet. Thanks to this interface, the receiver can use the code created by the sender’s offline wallet, which was received without an Internet connection, to validate the transaction.
In fact, the code contains the signature to authorise that specific transaction but does not contain the private key with which the signature was generated.
The smart contract is able to recognise that the signature is correct and can send the transaction to the mempool, so that it can then be recorded on the Bitcoin Cash blockchain.
In the video, Ruck illustrates one of the possible applications of this technology, but to actually use it, a more user-friendly interface is essential.
He gives the example of a person who is abroad, with a smartphone that has no connection or is connected in roaming, and who wants to make a payment in BCH. With this wallet, there’s no need for an Internet connection to make the payment, but only to be able to transfer the signed transaction code to the seller.
The use of a simple QR code makes sending this information very simple and fast, and once the seller scans the code, their device connected to the Internet can easily broadcast the transaction to the network.
The goal is obviously to make it easier to make payments even in the absence of a connection, although to actually execute the transaction it is essential that at least the receiver is connected.