15

I am new to Bitcoin and this question is based on 3 assumptions that may be incorrect.

Assumption 1: If I understand correctly, the Bitcoin address is generated algorithmically independent of the network, so I should be able to create a public address and private key offline correct?

Assumption 2: I can receive funds through the network using my public address without ever having to make my private key known to anyone correct?

Assumption 3: Now when it's time to spend my funds, offline I can create a Bitcoin transaction authorizing the transfer from my address to another location and sign it with my private key entirely offline. I can then transfer that transaction to a separate computer with internet access and then publish that transaction to the Bitcoin network to be mined/verified in the blockchain?

Conclusion: If all 3 points are true then I should be able to keep my private key from the internet for it's entire life correct?

  • 3
    Yep, only nitpick is on assumption 3, the transaction is not just "pay from my address to other address(es)", but "pay from transaction(s) xyz to other address(es)". What this means in practice is that you'll get the transaction ready on an online computer, sign it on the offline computer, then publish it from the online computer. – Tim S. Jan 14 '15 at 18:02
12

Yes, all three assumptions are correct. You can with some effort keep your private keys offline for their entire life.

A description of how to sign transactions offline is found here: How to sign a transaction using only an offline computer?


Adding a bit of detail on Assumption 3 along the lines of Tim S.'s comment: A computer that is offline would obviously not get updates from the network, so it would also not know which transaction outputs are available for spending. This could be mitigated by importing the blockchain data to the offline computer (for example with the bootstrap.dat).

However, it would be much easier to create a two wallet setup, where one online wallet knows only the addresses, and the offline wallet has the private keys. You then create the transaction on the online wallet, which has the transactional information and sign it on the offline wallet. That's what is described in the above linked question as well.

Update in 2017: The creation of a transaction on the online device and signing on the offline device is essentially what hardware wallets such as Trezor do.

  • 1
    There are also solutions like Ledger Wallet in which private keys are kept on a hardware chip and never leave the hardware; it performs signing on-chip. – Chuck Batson Jan 14 '15 at 17:37

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.