Withdrawing Bitcoin, Litecoin or BitcoinCash
Make a suggestion Improve this page
In this section, we first construct a transaction, which we then pass to a quarantined environment for signature, verify it, and then use QR codes to extract it from the quarantined environment to pass on to additional quarantined environments (of the other signatories) for additional signatures and eventually extract it for execution.
For brevity purposes, we will use Bitcoin and Electrum as an example, but this should be easily replicable on Litecoin and Electrum-LTC or Bitcoin Cash and ElectronCash.
Building the Transaction
On any Internet-connected computer, set-up the Watch-Only Electrum Wallet (this setup can be re-used from previous transactions):
- Download and install Electrum (see prior steps for information on where to do it)
- Open Electrum
- Select
Auto connect
and clickNext
- If you wish name this wallet and click
Next
- Select
Multi-signature wallet
and clickNext
- Select your
M-of-N
policy. The top bar,cosigners
is theN
and the lower bar,Required signatures
is theM
. ClickNext
. - Select
Use a master key
and clickNext
- Scan your Bitcoin Master Public Key QR Code
- Select
Enter cosigner key
and clickNext
- Scan the rest of the Bitcoin Master Public Key QR Codes
- Do not enter a password, just click
Next
You should be able to see the balance in your bitcoin cold storage address - Click on
Send
, enter the destination address and the amount - Click on
Preview
- Click on the
QR Code
icon - Print the QR Code. This is the transaction that will need to be signed by the Quarantined computers of M signatories.
Signing the transaction
The following steps will need to be done by M signatories:
- Gather required information
- Make sure you have your Cold Storage Information Packets
on hand (you’ll need the 24-word BIP39 Mnemonic).
- You will also need to coordinate with M-1 signatories who will in turn need their Cold Storage Information Packets.
- You should print the QR Code of the transaction to be signed.
- Make sure you have your Cold Storage Information Packets
on hand (you’ll need the 24-word BIP39 Mnemonic).
- Execute Section VI of the Setup Protocol to prepare your quarantined workspace.
-
Sign the transaction
On any of your Quarantined computers:
- Import QR code data
- Start Electrum
$ ~/apps/electrum-3.3.6-x86_64.AppImage
- Load the wallet and your key
- Choose
auto connect
and clickNext
. - Choose whatever name for the wallet and click
Next
- Select
Multi-signature wallet
- Select your
M-of-N
policy. The top bar,cosigners
is theN
and the lower bar,Required signatures
is theM
. ClickNext
. - Select
I already have a seed
and clickNext
- Click on
Options
, selectBIP39 seed
and clickOK
. - Enter your BIP39 seed phrase and click
Next
. - Leave the default settings selected and click
Next
. - Click
Next
- Select
Enter cosigner key
- Use the QR Code reader to read the next signatories’ Bitcoin Master Public Key QR Code
- Repeat steps 9 to 11 for the other N-2 signatories
- Do not enter a password and click
Next
- Choose
- Sign the Transaction
- From the top bar menu, select
Tools
->Load Transaction
->From QR Code
- Scan the printed QR Code of the transaction that needs signing
- Verify that the outputs of the transaction make sense
- You should see one output for the desired amount and destination.
- You will likely see a second output going to a change
address belonging to the same wallet. You can verify that the
change addresses belong to the wallet in the
Addresses
tab
- Click on
Sign
- You should see the
Status
of the transaction, indicating how many signatories have signed
- From the top bar menu, select
- Start Electrum
- Import QR code data
-
Visually hide all critically sensitive data.
We’ll be using a smartphone with a live Internet connection to read QR codes from the quarantined computer screens. Any malware (or a malicious QR reader app) could steal sensitive data if it is not visually hidden.
This step is important. Failing to execute it properly creates a substantial security risk.
- Put your Cold Storage Information Packets out of sight – this prevents a smartphone camera from accidentally seeing them.
- Make sure your BIP39 Mnemonic is nowhere to be seen in your Computer screen or in the physical world.
- Extract the signed transaction from the quarantined environment.
- Remove a smartphone from the Faraday bag and turn it on.
- Open your QR Reader App
- On the Quarantined computer, display the signed transaction QR code
by clicking the
QR Icon
on the bottom left of the screen. - Use the smartphone’s QR code reader to read the QR code.
- Take a picture of the QR code using the smartphone.
- Send both the text version and the QR Code’s picture to the next signatory using a messaging app which the signatory will be able to access from a laptop. If you are the last signatory, send the contents to yourself
- Shut down all quarantined computers entirely. As a precaution against
side channel attacks, the quarantined computers should not be active except
when they absolutely need to be.
$ sudo shutdown now
The recommended Acer laptop may require you to hold down the power button for several seconds to complete the shutdown.
- Repeat the steps above until M signatories have signed the transaction
- The status of Electrum should change to
Signed
once all required signatories have signed the transaction
- The status of Electrum should change to
Verifying and broadcasting the transaction
On any Internet-connected computer, the last signatory should:
- Access the QR Code of the fully signed transaction she previously sent herself.
- Open the watch-only Bitcoin Electrum Wallet
- Load the transaction
- Click on
Tools
->Load Transaction
->From QR Code
- Scan the QR Code of the fully signed transaction
- Click on
- Under “Outputs”
- Verify the destination address is correct.
- Verify the amount going to the destination address is correct.
- If you did not withdraw all funds from these unspent transactions, you’ll also see a second output which “sends” the remainder of the funds “back” to your cold storage address. This is necessary; it’s how Bitcoin is designed to operate.
- Execute the transaction.
- Click on
Broadcast
- You should see a
Payment sent
pop up with the Transaction ID - Copy-paste the Transaction ID
- Click on
- Verify the withdrawal on the public blockchain.
- Go to blockchair, paste the Transaction ID into the search bar, and press Enter.
- Within a couple of minutes (and often much faster), you should be able to refresh this page and see your transaction listed as “Unconfirmed”.
- Periodically refresh the page until you see the funds moved from “Unconfirmed” to be reflected in “Balance”. This generally happens within 15 minutes; if the Bitcoin network is unusually congested, it may take longer.
- You should be able to verify this in the Watch-Only Electrum wallet as well