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

<p>Currently, the most mature offline wallet solution is through a client called <a href="http://bitcoinarmory.com/" rel="noreferrer">Bitcoin Armory</a>. Here's what your workflow looks like with offline wallets:</p>

<blockquote>
  <p>Online node creates transaction -> USB key -> Offline computer signs transaction -> USB key -> Online node broadcasts transaction</p>
</blockquote>

<p>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.</p>

<p>Download:</p>

<ul>
<li><a href="https://bitcoinarmory.com/get-armory/" rel="noreferrer">Windows/Linux</a></li>
<li><a href="https://bitcointalk.org/index.php?topic=156250.msg1655941#msg1655941" rel="noreferrer">Mac</a> - Beta</li>
</ul>

<p><a href="https://bitcoinarmory.com/tutorials/armory-advanced-features/offline-wallets/" rel="noreferrer">This page</a> explains offline transactions in greater detail. </p>

CC BY-SA 3.0
2013-03-04T11:23:47.190Z
thanks for the reference. is it possible to skip "USB drive" part?
vi.su.
CC BY-SA 3.0
2013-03-04T15:56:15.700Z
@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
CC BY-SA 3.0
2013-10-31T20:10:28.637Z
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 http://arstechnica.com/security/2013/10/meet-badbios-the-mysterious-mac-and-pc-malware-that-jumps-airgaps/ 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
CC BY-SA 3.0
2013-10-31T20:11:35.110Z
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
CC BY-SA 3.0
2013-10-31T20:13:48.240Z
The "This page" link in your last line is outdated.  http://bitcoinarmory.com/about/using-our-wallet/#offlinewallet is maybe the new link.
Chris Moore
CC BY-SA 3.0
2013-10-31T20:29:54.817Z
@ChrisMoore "The "This page" link in your last line is outdated." Thanks. "I would like to find a way to use QRcodes to transmit the required information" That's an interesting idea, but probably out of the scope of this question.
Nick ODell
CC BY-SA 3.0
2013-11-01T00:39:55.943Z
Do you think so?  The question said "Is it possible to do this without using USB storage?" so an answer using QR codes would seem to be exactly what he was looking for.
Chris Moore
CC BY-SA 3.0
2015-02-27T15:35:36.013Z
The link to the explanatory page appears to be outdated again.
Murch
CC BY-SA 3.0
2013-03-04T05:54:27.950Z
2015-02-27T16:49:53.557Z
2015-02-27T16:49:53.557Z
Nick ODell
<p>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:</p>

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

<p>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.</p>

<p><strong>UPDATE: Implemented.  <a href="http://www.youtube.com/watch?v=ZlSC3mLjNSg" rel="noreferrer">Watch the video</a></strong></p>

<p>Python code <a href="https://github.com/hank/armorycompanion-python" rel="noreferrer">here</a></p>

<p>Android app code <a href="https://github.com/hank/armorycompanion" rel="noreferrer">here</a></p>

CC BY-SA 3.0
2014-02-09T03:49:44.187Z
This explanation doesn't help the asker too much, could you expand on the "creating a transaction" and "signing tx with offline armory" bits?
John T
CC BY-SA 3.0
2014-02-09T22:16:11.097Z
I added a video demoing the entire process.  It assumes you know how to make an offline transaction in armory, which is described [here](https://bitcoinarmory.com/about/using-our-wallet/).  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
CC BY-SA 3.0
2014-02-08T21:31:17.280Z
2014-02-09T23:05:12.560Z
2014-02-09T23:05:12.560Z
Hank
<p>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.</p>

<p>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.</p>

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

CC BY-SA 3.0
2013-03-05T01:39:10.213Z
As long as offline computer is able to sign message and generate a QR Code, the process should be very straightforward.
John Smith
<transactions><offline>
How to sign a transaction using only an offline computer?
vi.su.
# How to sign a transaction using only an offline computer?

(Asked by: username_0 on 2013-03-04)

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?

**Tags:** transactions, offline

> **Comments:**
> **username_1**: As long as offline computer is able to sign message and generate a QR Code, the process should be very straightforward.  

---

## 2 answers

### Answer by username_2 on 2013-03-04. Score: 11

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](http://bitcoinarmory.com/). Here's what your workflow looks like with offline wallets:

> Online node creates 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:

* [Windows/Linux](https://bitcoinarmory.com/get-armory/)
* [Mac](https://bitcointalk.org/index.php?topic=156250.msg1655941#msg1655941) - Beta

[This page](https://bitcoinarmory.com/tutorials/armory-advanced-features/offline-wallets/) explains offline transactions in greater detail.

> **Comments:**
> **username_0**: thanks for the reference. is it possible to skip "USB drive" part?  
> **username_2**: @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.  
> **username_3**: 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 http://arstechnica.com/security/2013/10/meet-badbios-the-mysterious-mac-and-pc-malware-that-jumps-airgaps/ 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.  
> **username_3**: 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.  
> **username_3**: The "This page" link in your last line is outdated.  http://bitcoinarmory.com/about/using-our-wallet/#offlinewallet is maybe the new link.  
> **username_2**: @username_3 "The "This page" link in your last line is outdated." Thanks. "I would like to find a way to use QRcodes to transmit the required information" That's an interesting idea, but probably out of the scope of this question.  
> **username_3**: Do you think so?  The question said "Is it possible to do this without using USB storage?" so an answer using QR codes would seem to be exactly what he was looking for.  
> **username_4**: The link to the explanatory page appears to be outdated again.  

---

### Answer by username_5 on 2014-02-08. Score: 4

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](http://www.youtube.com/watch?v=ZlSC3mLjNSg)**

Python code [here](https://github.com/username_5/armorycompanion-python)

Android app code [here](https://github.com/username_5/armorycompanion)

> **Comments:**
> **username_6**: This explanation doesn't help the asker too much, could you expand on the "creating a transaction" and "signing tx with offline armory" bits?  
> **username_5**: I added a video demoing the entire process.  It assumes you know how to make an offline transaction in armory, which is described [here](https://bitcoinarmory.com/about/using-our-wallet/).  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.  

---

