11

As far as I gather a wallet can remain offline indefinitely transactions are being sent to it. The network will keep track of the transaction so that the next time it is connected it will catch up.

Is the entire wallet file necessary for this process? is it possible in theory to strip it down at all and recreate from even less than a minimal wallet file?

I would essentially like to know what is the minimum theoretical data footprint required to obtain access to balance. The motivation behind my question is that many long term archival data formats are not very dense. Like stone etchings for example

  • Wow amazing answers for this. Very interesting stuff! thanks to all! – barrymac Oct 26 '11 at 12:12
7

Nmat answer is correct the absolute minimum you would need to rebuild a wallet is the private key of the address.

An alternative is a deterministic wallet.

What is a deterministic wallet?

A deterministic wallet can use cryptographic algorithms to create (and recreate) and wallet containing multiple public/private keys from a single passphrase.

A deterministic wallet has the advantage of being able to create an infinite number of addresses from a single passphrase.

A deterministic wallet has the disadvantage that if the passphrase is retained but the software & algorithm is lost then the addresses can never be recreated and all value lost.

That risk could be partially mitigated by keeping multiple copies of the wallet generation software both online and offline. As a final backup the algorithm (and optionally the passphrase) could be etched or cut into a thin sheet of aluminum (8.5" x 11" to simplify storage) using a laser cutter. This would provide a time resistant disaster recovery method. Using a sheet with dimensions of standard documents would allow it to be easily stored in a safe or safety deposit box. This task is simplified because many cryptographic algorithms can be expressed using diagrams which reduces the amount of space necessary to express the algorithm.

For example SHA-256 (and SHA-512) can be partially expressed by this diagram:

SHA-256 diagram

To completely express the algorithm you also need to record each variable, the number of rounds, and the meaning of the symbol operators.

4

You only need to have the private key of the address. So if you have a wallet with lots of address, you need to store at least the private key for each of these addresses.

To export/import the private keys from/into a wallet file you can use Pywallet (check this question).

For long term archival it is common to write down private keys in a piece of paper and keep it in a safe place. Bitaddress.org might be useful for that.

  • 2
    Deterministic wallets are also growing in popularity, and allow you to generate a series of privkeys from a passphrase. This is especially handy since most folks will have far more than one privkey in their wallet. – David Perry Oct 19 '11 at 17:25
3

Any 256-bit value is a valid private key. And any value at all has a SHA-256 hash that is a 256-bit value. So essentially, anything that an attacker cannot predict is sufficient.

The method is as follows:

  1. Pick something an attacker cannot predict, like "U cannot h4z my b1tCOINz!!".

  2. Compute the SHA-256 hash of that string.

  3. Compute the corresponding public key for that ECDSA private key.

  4. Compute the corresponding bitcoin address for that public key.

  5. Send the funds to that address.

To retrieve the funds, perform step 2 again, import that private key into your wallet, and re-scan.

Casascius uses this same method in their physical bitcoins. They use it to minimize the amount of information that needs to be printed inside the coin. So you can actually use the same tools.

  • Nice clear steps! That's pretty cool what Casascius have done with a physical representation, wasn't aware of that! – barrymac Oct 26 '11 at 12:06

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.