Howto work with Bitcoins

Introduction

Bitcoin is a digital, cryptographic currency that works without any central intelligence. Once a computer is equipped with a Bitcoin client software (a so-called wallet) it takes part in the Bitcoin network and is able to conduct transactions. Every one of these transactions is saved with a timestamp in the blockchain to achieve consensus about every single transaction and to solve that Bitcoins cannot be spent twice. Furthermore, Bitcoin transactions are not reversible.

This Howto describes how to use Bitcoins. It tells you how to set up a Bitcoin client application and how to get actual Bitcoins into that wallet that you can then use for payments.

Parental advisory

Most people think of Bitcoins as if they were a completely anonymous way to do payments. This is not the case (at least not out-of-the-box). Bitcoins are a cryptographically secured currency, but this does not mean that it is anonymous to pay with them or that nobody can see how many Bitcoins somebody else has transferred. Have a look at the paragraph Bitcoin is not anonymous a bit down this document to find out more about how you can improve your privacy when using Bitcoins.

Every transaction is saved in the blockchain and visible to everybody. Every transaction has a reference to the wallets involved. So it is always traceable when which transaction has happened.

The only thing you can do is always run your Bitcoin application through a VPN-secured link. This way you do not expose your real public IP from your ISP when connecting to the Bitcoin network.

 

To add another layer of abstraction, you should always run Tor on top of the VPN connection and only allow Bitcoin wallets to talk to the Bitcoin network through Tor.

Digital wallets

Bitcoins are kept in digital wallets. You can have a wallet on your personal computer, you can store them on mobile devices and you can get your wallet hosted on servers with one of the many online wallet providers. Having a wallet is required to do any transactions.

Choosing a local wallet

There are multiple Bitcoin Clients available. They differentiate in how they synchronize to the Bitcoin network, if they do backups themselves and if they store your wallet encrypted. The following table lists an excerpt of recommended clients from Bitcoin Clients listed at the bitcoin.it wiki running on Linux, Mac OS X and Windows:

WalletBackupsWallet securityBlockchain sync
Bitcoin QTmanualencryptedyes
Multibitnononeno

The two main clients around are Bitcoin QT and Multibit for Linux, Mac OS X and Windows. Although there are wallets for mobile devices, we do not recommend to use these. More about that later.

The main difference between these two clients is how fast they synchronize with the Bitcoin network. Multibit synchronizes very fast, because it does not keep track of the complete blockchain, it only keeps record about what is needed for the transactions it is responsible for. Because Bitcoin QT synchronizes the complete blockchain, it can take from everywhere between 15 minutes to multiple days until the wallet is ready for use (depends on the speed of your Internet connection). A full sync of the blockchain is about 11GB at the moment.

Multibit does not do wallet encryption, while Bitcoin QT does. Network security features are implemented into Bitcoin QT completely, whereas Multibit does not feature them all.

Basically you should decide on how capable the computer is the wallet is supposed to run on. If you do not have a small or embedded device, Bitcoin QT is a good choice to start with.

Securing your wallet

You need to keep an eye on your Bitcoin wallet in the same way as you do with your regular wallet. The good thing about a digital wallet is that you can create backups of it and that you can store these at a secure location, e.g. if you lost it due to a hard disk failure or because your laptop was stolen. It is very important to have full disk encryption in place on the machine your Bitcoin wallet is stored, e.g. consider using TrueCrypt or LUKS depending on whether you use Linux or Windows or both.

Although some clients are able to make backups of the wallet, this only solves half of the problem. While the application can keep always get back a broken wallet that way, this does not help when your hardware fails. Please do regular and off-site backups. You can use a separate external and encrypted hard disk or USB stick to store backups of your wallet.

Getting Bitcoins

The usual ways to get Bitcoins are mining or buying. Mining makes no sense with even the strongest personal computer, because you need to have dedicated and specialized hardware these days to generate Bitcoins at modest costs in respect to time and power consumption.

Bitcoins can be bought and sold at trading places. There also exists a very creative approach to buy Bitcoins through a special mobile phone service. Both methods are described in the following two paragraphs.

Bitcoin trading places

The best way to find out what trading places are in your country is to visit http://howtobuybitcoins.info/.

After having found a suitable trading place, create an account there. A trading place most often also provides a hosted Bitcoin wallet, which is exactly what you would like to have. Now there are different ways to buy Bitcoins. You either use your credit card to exchange real money for Bitcoins or the trading place support storing real money in an separate account. With these two accounts it is possible to trade Bitcoins, either you buy them which costs real money or you sell them which gives you back real money.

Your steps to get Bitcoins by visiting a trading place are:

  1. Make sure to have the VPN and/or Tor connection running.
  2. Open your Bitcoin wallet and wait until it finished synchronizing the blockchain.
  3. Buy a new prepaid credit card, pay for it using cash. Do not use this credit card multiple times.
  4. Get an account at a trading place. Do not use trading places that require you to enter personal data. Only use an anonymous email address.
  5. Trade Bitcoins and transfer them to your local wallet. Never leave too many Bitcoins at the trading place — just enough to be able to continue trading.
  6. Pay for services using your local wallet.

Getting Bitcoins locally

There is a service named localbitcoins.com where you can search for places near you to buy Bitcoins locally. Especially the section Buy Bitcoins is interesting, as there are also places listed where you can aquire Bitcoins with cash.

The mechanism to aquire Bitcoins is nearly the same as with other trading places. You should have at least two Bitcoin wallets, an inbound wallet and an outbound wallet. The inbound wallet receives Bitcoins after buying them with cash, the outbound wallet is used to pay with. Preferably each wallet resides on different machines, both hooked up via VPN.

The preferred mechanism to aquire Bitcoins in cash is:

  1. Make sure to have a VPN connection and/or Tor running on both the machine serving the inbound wallet and the machine serving the outbound wallet.
  2. Open both Bitcoin wallets and wait until they finished synchronizing the blockchain.
  3. Buy Bitcoins in cash and have them transferred into your inbound wallet.
  4. Transfer the new Bitcoins to your outbound wallet.
  5. Pay for services using your outbound wallet.
 

The inbound wallet should not be a hosted wallet for a reason. When running the inbound wallet on a personally owned/controlled machine you can easily replace the inbound wallet every time you buy new Bitcoins via cash — this effectively eliminates the generation of repeating Bitcoin aquisition patterns and thus helps hiding your identity.

Storing Bitcoins

Once you have Bitcoins on your hosted wallet at a trading place, you should transfer these Bitcoins to your personal wallet hosted on your computer. We recommend to not leave large amounts of Bitcoins in hosted wallets, because these wallets have shown the tendency to vanish quite abruptly these days.

With Bitcoins in your personal wallet, you can now pay for all kinds of services.

Hints

A wallet's network access

To hide the identity of the person owning a wallet, always use VPN secured network links to access the Bitcoin network. Do not run it through your regular ISPs uplink.

Secure the computer running the wallet with a firewall. Make sure to have the latest patches installed. Bitcoin clients are well-known targets for attackers.

Virtual machines

To provide an easy way for doing backups, use a virtual machine to run your Bitcoin wallet in. The virtual machine file can easily be copied to an USB stick or hard disks and serve as a backup.

Depending on your hosts Operating System, you can use one of these Hypervisors to create virtual machines: Parallels Desktop, VirtualBox or VMware (Fusion or Workstation).

Use multiple wallets

If you tend to own a lot of Bitcoins, think about spreading them into multiple wallets. There are two reasons for doing this. On the one hand you can categorize payments and do certain transactions only from certain wallets. On the other hand you protect yourself from not losing all Bitcoins in case an attacker tries to hack your Bitcoin wallet to transfer Bitcoins elsewhere. Remember, transactions are not reversible.

Mobile wallets

Because most mobile devices do not access the Internet through VPN only, it is a bad idea to run your Bitcoin wallet on your mobile device. With such an application running, you are feeding one more parameter to the data hungry agencies.

Furthermore application security on many mobile devices is questionable, so it might not be a good idea to have an application running on your mobile phone where a lot of personal data is stored at the same time. Since Bitcoin wallets are targets for attacks, this can compromise the overall mobile system security.