You can sign a transaction offline, but the vendor will need access to an internet connection at some point in order to get the transaction recorded in the blockchain.
But the vendor may only verify the transaction, after the buyer has connected to internet and broadcasted the transaction. Am I right? that means the vendor still do not know if he or she has received the money or not, right on spot.
Because paying bitcoin is a one-way transaction. even
the vendor has internet on spot, he or she has no clue about where the money is coming from.
If vendor cannot confirm a transaction on spot, then bitcoin is a lot worse than dollars.
As long as the vendor has internet connection, then [b
]the vendor could broadcast the signed transaction[/b]. There aren't any wallets that make this easy for the user right now, but it is technically possible (I just did it earlier today) and in the future I suspect there will be wallets that will make such activities easier.
how the vendor could brodcast the signed transaction? The vendor may only provide its address to the buyer. But the buyer has no internet, how does the vendor get a signed transaction? I thought in bitcoin system, it's the giver always initiate a transaction. Am I right?
It would require that the vendor have a specially designed wallet for the purpose. To make it safe for the buyer, there would need to be some new hardware for the buyer as well.
Think about the way that bitcoin works. The buyer signs a transaction, and then broadcasts it only to the peers that the buyer's wallet is connected to. Then those peers re-broadcast the transaction to their peers who re-broadcast it to their peers and so on.
So the vendor simply becomes the first peer.
The buyer would have a standardized piece of hardware that stores their private keys and that has enough logic in it to sign transactions.
The vendor would have a standardized piece of hardware that interfaces with the buyers hardware.
The buyer's hardware would provide (through the standardized interface) the vendor's hardware with a list of bitcoin addresses that the hardware can sign. The vendor's hardware would then search the blockchain for unspent outputs and build an unsigned transaction that pays the vendors address with bitcoins under the buyer's control.
The vendor's hardware would then transmit the unsigned transaction to the buyer's hardware.
The buyer's hardware would display the transaction to the buyer so they could see that they weren't being scammed, and then allow the buyer to confirm that they wish to sign the transaction.
The buyer's hardware would sign the transaction and transmit it via the standardized interface to their first (only) peer, the vendor's hardware.
The vendor's hardware would then re-broadcast the transaction to all of their connected peers to ensure that the rest of the bitcoin network was aware of the transaction and that it would get confirmations from miners.
This is just one possible way to handle the transaction with future hardware.
It can be done today with the "Debug Window" on the Bitcoin-Qt wallet, but it requires some technical know-how and some way of getting the unsigned transaction to the buyer and the signed transaction back to the vendor. It could be done by just typing it in, but that would be a big hassle and very inconvenient. Bitcoin isn't ready for transactions like this yet, but it is technically possible. We just need to wait for some enterprising entrepreneur to create and market the devices that will simplify the process.