/ Management

Bitcoin

This post is intended as an overview of Bitcoin and the most important related companies and tools.

Overview

See the CoinDesk State of BlockChain 2016, the List of notable Bitcoin companies on wikipedia, and the Bitcoin wiki.

How Bitcoin works

The blockchain is a public ledger of every Bitcoin transaction that is distributed on every machine connected to the Bitcoin network.

  • Every computer that participates in the Bitcoin network (as a full node - cf. bitnodes.21.co) stores and maintains a copy of the blockchain. All blocks in the blockchain are stored in order from oldest to newest. Only new blocks are added to the blockchain, and existing blocks cannot be modified. This is enforced using cryptographic hashing.

  • When a user spends their bitcoins, they broadcast the transaction to the network, and other nodes (called miners) collect, verify, and save the new transactions in the blockchain. These new updates to the blockchain are grouped and stored as a chunk of data known as a block. You can see transactions happen and the latest blocks at blockchain.info (the most popular site), and blockexplorer.com, btc.com, smartbit.com.au, BitCoinChain, or Blockr.io. There is a fun visualisation of transactions at bitlisten.com.

  • When bitcoins are spent in a transaction, the transaction is digitally signed by the sender using their private key.

  • If a transaction does not have a valid, verifiable signature, it is rejected and ignored by nodes on the Bitcoin network. If a new block contains any transaction that does not have a valid signature, or a transaction that attempts to spend more than the sender owns, then the entire block is rejected.

  • However the above does not prevent conflicts of new transactions that try to spend the same bitcoins. A user could broadcast two different valid transactions, that spend the same bitcoins, to different nodes on the network. This is known as a double spend, and Bitcoin solves this issue using a method called proof-of-work.

  • When a miner solves a competition (known as solving a block), they publish the result, which includes all the most recent valid transactions they’ve collected from the network in a new block for the blockchain. This block is broadcast throughout the network, and other nodes receive it and verify: (1) The solution to the mining competition is valid (proof-of-work), and (2) that all the transactions within the block are valid based on the existing blockchain.

  • Solving a block involves finding a random nonce (some random data) that goes into a block and makes the block have a (SHA256) hash that starts with a certain amount of 0's.

  • When a block is solved, all transactions included in that block are shown on the network to have 1 confirmation. Every time a new block is solved, the number of confirmations for transactions already existing in the blockchain are incremented by 1.

  • Occasionally, two different miners will solve a block at the same time. This can cause a fork in the blockchain: both miners broadcast their own block, and some nodes will accept one block, while other nodes accept the other block. The nodes on the network will keep track of both versions of the blockchain. Miners continue to mine for a new block using the blockchain of their choice. Eventually, a new block is solved and added to one of these blockchains, making it longer than the other blockchain. The network and miners then abandon the shorter blockchain for the longer blockchain. It is generally agreed upon that once a transaction is six blocks deep in the blockchain (know as reaching 6 confirmations), it is irreversibly confirmed and will permanently exist on the blockchain.

  • Mining involves the competitive use of computational power to calculate a number that falls within a certain range. The valid number range is periodically adjusted by the Bitcoin network to make it more or less difficult to find the solution; the target rate is 1 solution every 10 minutes.

  • The first miner to discover a number that meets the criteria is rewarded with a set amount of brand new bitcoins (currently 25 bitcoins), plus any recent transaction fees that have been paid by other people sending bitcoin on the network.

  • The amounts of bitcoins created per competition is cut in half every 210,000 competitions. It’s estimated that this amount will be halved to 12.5 bitcoins by the year 2016, and by 2140, the amount will go to zero, and no new bitcoins will ever be created again. This is how the creation of bitcoins is limited over time, with the maximum amount of bitcoins that can ever exist limited to 21 million.

  • The maximum number of transactions/second for Bitcoin can be estimated as follows. The bitcoin blockchain has a hardcoded block size limit of 1 MiB. With an average transaction size of around 600 B and a target block time of 10 minutes, you get 1024 * 1024 / 600 B = 1747.7 transactions per block, which translates down to 1747.7 / 600 s = 2.9127 transactions per second. However, if you reduce the average transaction size, it's possible in theory to reach higher rates, maybe 7 transactions per second, which is the often-cited number.

Bitcoin transactions

  • The smallest fraction of a Bitcoin that can currently be sent is a Satoshi (0.00000001 BTC, that is, a hundredth of a millionth BTC).

  • There is no minimum transaction fee. However if you send a transaction without any fee you can expect a significant delay in it getting into the blockchain and therefore getting it confirmed.

  • In order to fight transaction spam, some measures have been recently introduced to limit very small transactions (so called "dust" transactions). These are not changes to the protocol, but simply new default configurations on both clients and miners' software, that makes it fairly hard to get very small amounts accepted.

  • A Bitcoin Faucet is a site that gives away small amounts of bitcoins for free. All you have to do is provide a wallet address and solve a captcha. For example claimbtc.com, earnfreebitcoins.net, www.btc-faucet.com.

  • The following sites plot the required fee, in satoshi per (kilo)byte, required to get a transaction mined in a certain number of blocks: statoshi.info, bitcoinfees.github.io/, bitcoinfees.21.co.

Bitcoin addresses

A Bitcoin address:

  • is an identifier of 26-35 alphanumeric characters, beginning with the number 1 or 3, that represents a possible destination for a bitcoin payment. Most Bitcoin addresses are 34 characters.

  • Addresses can be generated at no cost by any user of Bitcoin.

  • Bitcoin addresses are case-sensitive.

  • Creating addresses can be done without an Internet connection and does not require any contact or registration with the Bitcoin network. The chance of any collision with another address is infinitesimally small.

  • A Bitcoin address is derived from two very large randomly generated numbers: a private key and a public key. For every Bitcoin address you create, a private key is randomly generated by the Bitcoin software (the private key is simply a random 256 bit number). Then a mathematical process is used to create a public key from the private key. Together these two pieces of data form a cryptographic key pair. Your Bitcoin address is a simplified representation of that public key.

  • You can safely share your Bitcoin address. It's the private key that needs to be kept secret. Anyone with access to your private key can spend any Bitcoins associated with your public key and Bitcoin address.

  • You can use for example Bitaddress.org to generate a Bitcoin address and private key.

  • An address can be verified using an address verification tool

  • A unique address should be used for each transaction. Address re-use is a bad idea.

  • The balance of any Bitcoin address can be found by analysing the blockchain (e.g. with BitEasy). Note that if you want to work out the balance of any bitcoin address, the information isn’t held at that address - it must reconstructed by looking at the blockchain.

  • MultiSignature addresses require one or more keys to authorize a transaction. Since these take advantage of newer features, they begin with the newer prefix of 3 instead of the older 1.

Private Key generation

As mentioned above, for every Bitcoin address you create, a private key is randomly generated by the Bitcoin software (the private key is simply a random 256 bit number).

Whereas in old-style Bitcoin wallets, which generate new Bitcoin addresses and private keys randomly, in a deterministic wallet (aka HD wallet, i.e. hierarchical deterministic wallet) all of the data is generated using a specific algorithm from a single seed. In other words, a deterministic wallet is any system which uses a passphrase to build a keypair in a repeatable manner. So long as you remember the passphrase, the keypair can be re-generated from it.

There are two major types of deterministic wallets currently in use: Electrum wallets and BIP32 wallets (in which the seed is a 12 word mnemonic using common English words).

Bitcoin Wallets

A wallet is a collection of private keys but may also refer to client software used to manage those keys and to make transactions on the Bitcoin network. You can explore the wallets of big bitcoin companies at walletexplorer.com.

Hardware wallets

Hardware wallets are the safest way to store Bitcoin.

Desktop wallets

Desktop wallets offer one of the highest levels of security in terms of bitcoin storage. You must download the software to your computer and perform bitcoin transactions from desktops.

Without MultiSignature facilities:

  • Bitcoin Core (the first and original wallet; requires >100GB of disk space, which is inconvenient)
  • Recommended: Multibit (works with KeepKey)

With MultiSignature facilities:

  • Armoury (has the most features, but doesn't work on MacOS beta)
  • mSIGNA (didn't work for me)
  • Recommended: Copay.io (however the app won't exit on my MacOs beta)
Web wallets

Not recommended for large amounts of bitcoin.

Without MultiSignature facilities:

  • Recommended: Blockchain.info is the most popular (8m wallets) website everyone uses to perform and check bitcoin transactions. Blockchain's wallet service is set up in a way that users shouldn't need to be concerned about security infrastructure on the server side. All the important encryption related to the security of users' bitcoins happens on the client side, in the browser.
  • GreenAddress (provide a watch-only mode). (For whatever reason didn't work for me on MacOS Chrome)
  • Coinb.in

With MultiSignature facilities:

Mobile wallets

It is a good idea to keep only a small amount of bitcoins in mobile wallets while keeping the rest in more secure options.

Paper wallets

Paper wallets are not recommended for day-to-day use, because they only allow you to withdraw the entire balance.

Learn how to spend from a paper wallet.

Bitcoin Statistics

Bitcoin news

Exchanges

Largest exchanges (according to Coinmarketcap):

Large transactions

The following services specialise in large Bitcoin transactions:

Bitcoin payment service providers

Mixer/Tumbler services