0
Is it possible to confirm a transaction offline in the following scenario:
the "receiving" device is first online. There is no restriction at this point. Especially, it can prepare anything needed for the following steps.
the "receiving" device goes offline. It generates a payment request for a specific amount that was not known before and shares it to the "sending" device via an offline means, such as a QR code for instance.
the "sending" device which is always online, completes the transaction.
How could the "receiving" device, while staying offline, can get a confirmation that the transaction has really occurred? In other words, what should the "sending" device share (by QR code for instance) to the "receiving" device that will let it confirm the transaction without being fooled?
Could the "receiving" device have a public key that would verify a signed version of the transaction?
Thanks for the answer. I'm concerned about the size of the required transfer from the "sending" device to the "receiving" one in step 4. Block header is 80 bytes so that should be fine. But I guess that an entire block can be big. How could the required transfer be optimized with the assumption that the transaction amount is limited to something 'small' (1 BTC for instance) and this transfer should happen within minutes of the transaction? – gregoiregentil – 2014-04-05T15:51:52.307
You can include just the transaction, enough of the Merkle tree to prove the transaction is in the block, and the headers of only a few blocks. – David Schwartz – 2014-04-05T16:56:09.030