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?

  • 2
    Take a look at bitaddress.org. Actually generating usable bitcoin addresses is somewhat complicated – aland Dec 17 '13 at 11:58
  • Is bitaddress.org a reputable site? – sashoalm Dec 17 '13 at 12:35
  • Judging from [source code](github.com/pointbiz/bitaddress.org], it generates address with JavaScript on your PC, so the server can not get your private key anyway. – aland Dec 17 '13 at 12:45

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.

| improve this answer | |
  • 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. – pyramids Dec 17 '13 at 12:47
  • You can try the python source 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 - gist.github.com/colindean/5239812 – matja Dec 17 '13 at 22:14

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.