7

From what I understand about Bitcoin, a wallet is really just a pair of public/private keys.

So, if someone needs to send me Bitcoins, all I need to do is just generate a pair or public/private keys using OpenSSL or some other tool, and send the public key to that person, without actually downloading a Bitcoin client (which will download a 12 GB block chain), or saving a wallet.dat.

Am I correct?

sashoalm
  • 429
  • 1
  • 5
  • 15

1 Answers1

10

You are almost correct ;-)

You can create a public/private key using OpenSSL (in fact, some wallets use OpenSSL libaries to generate the keys). However, the bitcoin address is not your public key but a function of such public key. The exact function is defined here https://en.bitcoin.it/wiki/Technical_background_of_Bitcoin_addresses

So, once you generate your pair of keys and compute the bitcoin address from your public key, you can receive bitcoins in such bitcoin address.

jordi
  • 116
  • 1
  • 3
  • Thanks for the answer. Are there reputable tools available that are lightweight (say less than 100kb download) and can create a wallet? I've heard that the official bitcoin client tries to download 12 GB of data. – sashoalm Dec 17 '13 at 12:36
  • 2
    Try the github repository for the bitaddress.org code. Whilst the fact that it is a javascript program to be executed by a browser may not evoke great trust, the code is public, well-publicized, widely used, and reasonably readable. –  Dec 17 '13 at 12:47
  • You can try the python source https://github.com/richardkiss/pycoin where some basic functions are implemented. For instance, the function public_pair_to_bitcoin_address is clearly defined. I'm not aware of its reputation, but python is really easy to follow and you can check the part of the code you want to use. – jordi Dec 17 '13 at 14:28
  • @sashoalm: vanitygen can also be used conveniently for this purpose. Note that while you can receive Bitcoins this way, in order to spend them again, you will have to install a wallet client. – Nate Eldredge Dec 17 '13 at 18:25
  • 1
    This is the clearest example I've seen of this - https://gist.github.com/colindean/5239812 – matja Dec 17 '13 at 22:14