10

I have two paper wallets and want to transfer 10 bitcoins between them. I do not want to use any other 3rd party software or hard wallet because they're created by individuals, so they can access my data if they try hard enough. And no exchanges, for the same reason.

Once I enter my private key anywhere but receiver side, it gets stolen. So naturally I have a question, how, if regardless of the way someone is involved?

Please correct me if I misunderstand something.

0

5 Answers 5

10

If you want to avoid all third parties, you need to run a node yourself. Download bitcoin-core and let it sync might take a day or two depending on your machine.

You can import your paper wallet by taking the WIF private key and using the importprivkey command in the bitcoin console. Note the rescan will take a while, but once it is done you can spend to any address you like.

3
  • 1
    Do you really need a full node, or can you create (and send out) a transaction without it? I guess you just need the identifier of the incoming transaction and the private key, in theory? Commented Jan 5, 2021 at 1:20
  • 3
    You could but then you'd rely on a 3rd party for the UTXO info, a 3rd party for the software library to perform the functions to build and sign a transaction, and a 3rd party to broadcast.
    – m1xolyd1an
    Commented Jan 5, 2021 at 1:39
  • 2
    Don't worry about third parties. Worry about: 1) ensure that 'the math' does not leak your signing key and 2) ensure that you can verify that the transaction was accepted by the public network and is now part of the permanent record. For item 1: do the (relatively simple) calculations offline / by hand (ish) and for 2: verify the transaction fro multiple sources. Commented Jan 5, 2021 at 13:27
8

No matter which wallet you use, use one with offline transaction functionality. That's what you need.

Use Electrum offline: https://electrum.readthedocs.io/en/latest/coldstorage.html?highlight=usb

You need two Electrums. You can use the watch-only one on your daily computer, and the air-gapped one on one Tails Linux burned CD.

You may instead generate a raw transaction and sign it using Core as Prayank suggested but Bitcoin Core, if it hasn't changed recently, needs hours of sync before you can act.

1
  • 10 bitcoins is enough that it's worth buying a computer just to run Electrum off-line. It makes the whole process just that little bit simpler.
    – UEFI
    Commented Jan 5, 2021 at 17:19
4

Use bitcoin core: https://bitcoincore.org/en/download/

If interested to review and compile yourself, follow the instructions mentioned here: https://jonatack.github.io/articles/how-to-compile-bitcoin-core-and-run-the-tests

4

You can do it manually with highly secure way:

  1. Get UTXO's of coins that you want to transfer (TX Hash, Value in Satoshi and No of output).
  2. Form the unsigned transaction using outputs from the previous paragraph as inputs to your's new receiving address. Remember that the value of new outputs must be less than summary value of inputs on the estimated fee rates.
  3. Get sha256 from unsigned TX.
  4. Calculate signatures for each spending output.
  5. Form signed TX.
  6. Send TX to nodes, for example using this service or directly send raw tcp packet to your known nodes.

If you need, I may explain this process with more details.

0

I'd strongly suggest you don't do that, unless you really have the skills required for the job. Since you asked this question, you probably don't. There are a few risks:

  • Somehow you reveal the private key.
  • You lose your bitcoins as a fee.
  • You send to a wrong address, making your bitcoins eternally un-spendable.

For 10 bitcoins, it's worth investing in hardwallet. Trezor are very good and with Electrum you can have an airgapped setup with Trezor.

  • Generate your new private key in an airgapped PC.
  • Use a very strong passphrase. Even if your private key is not quite secure, it's practically impossible to crack your derived key.
  • Use your Trezor with Electrum while being disconnected from the internet. Or if you are patient, you can generate your transactions and convert them to QR-Code that you scan later on a connected laptop/phone.

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