Take the 2-minute tour ×
Bitcoin Stack Exchange is a question and answer site for Bitcoin crypto-currency enthusiasts. It's 100% free, no registration required.

I think it is possible to generate keys on an offline computer and sign. To create a transaction I need to input transactions detail, and somehow I have to transfer signed transaction from offline computer to a online computer to relay the transaction.

Is it possible to do this without using USB storage? I can use a keyboard, or barcode reader to transfer the input transaction hash to an offline computer and the signed transaction back to the online computer. So that private key stays with the offline computer.

What are step-by-step instructions to do this, with any required error check / correction?

share|improve this question
    
I will set 100 points bounty once this question is eligible for bounty.. –  vi.su. Mar 4 '13 at 4:52
    
As long as offline computer is able to sign message and generate a QR Code, the process should be very straightforward. –  John Smith Mar 5 '13 at 1:39

2 Answers 2

You're correct that the offline node needs to how to claim its funds, so it can't be totally isolated.

Currently, the most mature offline wallet solution is through a client called Bitcoin Armory. Here's what your workflow looks like with offline wallets:

Online node makes transaction -> USB key -> Offline computer signs transaction -> USB key -> Online node broadcasts transaction

You can use Windows, Linux, or Mac for your offline wallet, but I'd recommend Linux, as it's difficult to disable AutoRun/AutoPlay on Windows.

Download:

This page explains offline transactions in great detail.

share|improve this answer
    
thanks for the reference. is it possible to skip "USB drive" part? –  vi.su. Mar 4 '13 at 11:23
    
@vi.su. You need some way to get the inputs/index onto the offline computer, and some way to get the signed transactions out. You could do it by manually typing them out, but that seems overly difficult. –  Nick ODell Mar 4 '13 at 15:56
    
I currently use a USB stick to copy unsigned transactions to an offline computer where I sign them, then use the same USB stick to copy them back to an online computer. But today I read arstechnica.com/security/2013/10/… which is pretty terrifying if true. I would like to find a way to use QRcodes to transmit the required information between computers rather than a USB stick to avoid this risk of infection. –  Chris Moore Oct 31 '13 at 20:10
2  
The unsigned raw transaction itself is small enough to fit into a QRcode, but the offline computer also needs access to the input transactions for the transaction it is trying to sign, which I currently provide by copying a wallet file over as well. Wallet files are too big to fit in a QRcode. –  Chris Moore Oct 31 '13 at 20:11
    
The "This page" link in your last line is outdated. bitcoinarmory.com/about/using-our-wallet/#offlinewallet is maybe the new link. –  Chris Moore Oct 31 '13 at 20:13

I'm working on this right now. Currently, I have online and offline armory set up to use the USB key as has been described here before. I just created a new android app that will peer with the bitcoin network, and allow you to scan a QR code representing ANY signed transaction, and broadcast it to the peers. This makes it so you can do this:

  • Make an unsigned transaction in armory
  • Create a QR code from it
  • Scan it with phone (so far, QR Droid and Barcode Scanner work)
  • Take phone to offline wallet
  • Display QR code for unsigned transaction on phone (using history in QR droid works well)
  • Scan using webcam in offline wallet computer (I successfully did this with the zbar Linux application in Ubuntu - package details to follow)
  • Sign tx with offline armory
  • Display QR code for signed tx (more packages to follow)
  • Scan with new android app to broadcast

This is almost done - the app is currently peering with bitcoin nodes and will scan the QR code and send it to a broadcasting activity, but the broadcast part and the parsing of the armory format remains.

UPDATE: Implemented. Watch the video

Python code here

Android app code here

share|improve this answer
    
This explanation doesn't help the asker too much, could you expand on the "creating a transaction" and "signing tx with offline armory" bits? –  Jacob Torba Feb 9 at 3:49
1  
I added a video demoing the entire process. It assumes you know how to make an offline transaction in armory, which is described here. All one has to do is convert the unsigned transaction text to a QR code (I used QREncoder from the App Store on my Mac to do this), then follow the steps in the video. I'll be posting the scripts soon and linking from the video and probably here. –  Hank Feb 9 at 22:16

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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