What is Proof of Work?

Bitcoin uses Proof of Work to ensure blockchain security and consensus. Fine, but what does that mean?

“Proof of Work”, as its name implies, requires that the decentralized participants that validate blocks show that they have invested significant computing power in doing so. As we saw in “How does Bitcoin work?”, bitcoin validators (known as “miners”) compete to process a block of transactions and add it to the blockchain. They do this by churning enough random guesses on their computer to come up with an answer within the parameters established by the bitcoin program.

Hang on, that’s confusing. So, they wildly guess and hope that their resulting answer ends up in a certain range? Sort of. The main character in this game is called a “nonce”, which for trivia lovers, is an abbreviation of “number used once”. In the case of bitcoin, the nonce is an integer between 0 and 4.294.967.296.

The other main character is a “hash”, which is an algorithm (= a really long and complicated formula) that converts any sequence of characters (it could be the word “dog”, or it could be an entire novel) into a string of 64 letters or numbers.

Hashes are a big part of what makes bitcoin secure. If you change so much as a comma in the text that is hashed (= has the algorithm applied to it), or if you so much as add a space, you get an entirely new hash. It could be a little different, or it could be very different, the outcome is random. Only it’s not really random, because every time you pass a particular text through a hash, you get the same string. If you change something, it’s different. For a given text, it’s always the same. Change one thing, and it’s not.

So, if you hash a real estate purchase agreement or a last will and testament or a stock purchase deal, and put that on the blockchain, no-one can change the details without everyone knowing. If a hash on the blockchain suddenly changes, things get messy. That’s what makes historical bitcoin transactions and records tamper-proof.

by Paulo Vizeu for Unsplash - proof of work
by Paulo Vizeu for Unsplash

Now, let’s leave hashes for a second. You have a block of transactions to process. You want to be the first one to process it, because then you get the “mining reward”. The “mining reward” is an amount of new, fresh bitcoins awarded to the first one to process a block. Fresh bitcoins are a good thing to have. So, how do you get them?

You know the hash of the previous block of transactions. That’s public information, it’s on the blockchain. That will form the beginning of your block of text. Next, you take the current block of transactions, the one you want to process, and add it onto the hash of the previous block. Your block of text is growing.

Now, you pick a nonce, the random number that we mentioned above, and add that to your block of text. You perform a hash of that block (= apply the algorithm to it), which now consists of the hash of the previous block + the transactions + a random number. The resulting hash needs to be a string that has a certain number of zeros in front of it.

That doesn’t sound too complicated, right? Well, bear in mind that to find the number, your computer has to perform approximately 10^21 computations. That’s a LOT. It takes on average 10 minutes to find a nonce that gives you the desired string. That is why it takes about 10 minutes to completely process a bitcoin transaction, to get it registered on the blockchain. There isn’t only one nonce that will do it, there are probably several, but you have no way of knowing what they are.

(And if you know your numbers and thought that the possible range for the nonce given above is not very large, you’re right. In most cases all possible nonces in that range won’t get you the hash you want. So then you go and change a second nonce that is buried in the block, incrementing it by 1 or whatever you want, and you start all over again. Complicated, huh? So the total number of possible nonces from the combination of the two is 4.294.967.296^2, which gives you a really huge number.)

Sometimes computing power improves and the pesky nonces are found increasingly quickly. If that happens, the difficulty is increased. This means that the number of zeros needed in front of the resulting hash for the block to be accepted is increased.

Given the immense amount of work that your poor computers have to do, you can see why this system is called “Proof of Work”.

How does that ensure security and integrity?

Imagine that you wanted to go back and change something in a transaction or a document registered on the blockchain a few blocks ago. As I explained above, if you change so much as a comma, the entire hash changes. And since that hash forms part of the next hash, that would change too. And so on. You would effectively have to re-mine every subsequent block. If one is difficult and expensive, how difficult and expensive would it be to successfully get several re-mined? Prohibitively so. Proof of Work helps maintain bitcoin transactions’ integrity.

It can also prevent double-spending attacks. Let’s say that you send bitcoins to one person. The person that you sent the coins to in the first transactions sees that you did that, and releases or sends the goods you wanted to purchase. A second later, you send the same bitcoins to another address that you own. Given bitcoin’s latency (it can take a few seconds for transactions to spread around the nodes, and your second one may arrive at some nodes before your first one), it’s possible that your second transaction gets processed and validated first. Your first transaction is invalid. Are you going to send back the goods? Probably not. This is why, if you are a merchant accepting bitcoin, it is recommendable to wait for a few blocks to pile on top of the one that sends you the bitcoins, to make sure that yours is the one that got processed, not the “nice try!” fraudulent attempt by the sender.

Now let’s assume again that you’re an unethical bitcoin user (shame on you!). To make it likely that your block with the dodgy transaction is the one processed and added onto the chain, you would need to control over 51% of the validating nodes. If it weren’t for the amount of work that each validating node has to perform, you could create as many as you wanted. As many as you needed, in fact, to get 51% of the network. With Proof of Work, you simply can’t afford to. All of those nodes would have to, you know, do the work. There’s no way that the colossal cost would be compensated by the economic benefit.

What does that have to do with consensus?

For any system to work, you have to assume that at least half of the participants have good intentions. You don’t know who they are, though. With bitcoin, it doesn’t matter. Since there’s no way of knowing who the successful validator will be (because the successful choice of the necessary nonce is random), there’s a greater than 50% chance that it is an honest participant.

But that’s not really consensus, true. That’s where the concept of the chain comes in. In bitcoin you can assume that the longest chain, the one with the most blocks, is the “correct” one, and has the network “consensus” behind it. Why? Because the most amount of work has gone into that chain. We’ve seen how each block requires a lot of computing power. So the one with the most blocks has the highest amount of accumulated work invested in it.

And bear in mind that since the blockchain is distributed amongst all participants, they all know what’s on there. If the validators are adding on to a chain, and if it is impossible to know who the validator is going to be, then we can safely trust that the longest chain has the network’s consensus.

If it turned out that we could not trust at least half of the bitcoin validators, and that there was a strong chance that bitcoin transactions could be filtered, manipulated or duplicated, we would pack up and go home and start work on a new system in which we could rely on that assumption. If that happened, all bitcoin validators would lose not only the value of the bitcoins that they hold, but also the investment they made in the super-fast computers that do the validating (and they’re not cheap). So, the network has an economic incentive to stay honest. The network needs the trust in the system to remain intact.

Another way in which Proof of Work helps consensus is the time it takes for each block to be validated. In 10 minutes, you can be reasonably sure that the latest blockchain has been propagated to all nodes. Everyone has had time to receive the updated version. That version has consensus.

by Aaron Li for Unsplash - proof of work
by Aaron Li for Unsplash

Problem solved, right? Not so fast.

Let’s look at the drawbacks.

First, it’s inefficient. Imagine hundreds of computers all around the world churning power looking for a solution to a pointless puzzle. It sounds crazy, right? But the puzzle is only pointless in that it that it doesn’t solve anything. It just acts as a barrier. It does its best to make mining difficult, so that it would be expensive to fake.

Second, it’s expensive. Electricity costs. The super-fast computers cost. To compensate for the high cost of processing these blocks and churning computer power to find the elusive nonce, the first participant who finds the elusive nonce automatically gets a reward of new bitcoins. This is why the block processors are called “miners”. It’s almost as if they dig fresh “gold” out of the ground.

Third, the high cost is leading to centralization of bitcoin block processing. Remember how I said “hundreds of computers all around the world”? Well, they’re not really. Most of them are in China, where electricity is cheap. A kilowatt/hour in China costs $0.11, vs $0.18 in the US and $0.21 in the UK. In Spain, where I live, the variable rate for heavy users reaches almost $0.17/KwH. There are not a lot of miners in Spain (we had headlines just last week of bitcoin miners getting arrested for, among other things, stealing electricity from the neighbours to run their fast computers). Over 70% of bitcoin computing power (evocatively called “hashing power”) is in China.

So where does that leave us?

That leaves us with a secure and decentralized protocol that solves the problem of verifiable consensus, and incentives. It works. It’s not perfect, but so far it seems to be the best option available, at least for bitcoin. It’s not the only option, though, and we will soon look at alternatives, both conceptual and real. The number of blockchains out there is increasing, and each uses a different way of achieving security and consensus. Some are based on Proof of Work, some aren’t, and each has advantages and disadvantages. And if that weren’t confusing enough, there are more and more ideas emerging to improve on or even radically change the current Proof of Work system. Innovators don’t tend to sit still for long.

How can I get bitcoins?

Once you have your wallet set up, you can buy bitcoins online (in some cases directly through the wallet provider) or offline, you can earn them, or you can create them by becoming a miner.

Online bitcoin exchanges will sell you bitcoins for any of a wide range of fiat currencies (dollars, euros, yuan, yen, etc.). Kraken, Bitfinex and Bitstamp are just some of the main ones, and several offer wallet services in which to store the bitcoins you buy.

In many cities, you can buy bitcoins physically. LocalBitcoins, for instance, will post bitcoin offers, and it’s up to you to arrange to physically meet the seller to exchange cash for a bitcoin transfer. Some cities have regular gathering spots where you can just show up and offer cash in exchange for digital currency. You hand your cash to the seller, and he or she transfers bitcoin to your electronic wallet with a few taps on his or her computer or phone. More and more cities have bitcoin ATMs, where you feed your cash into the machine and then hold your bitcoin address (in QR code form) in front of the scanner so that it knows where to transfer the equivalent amount of bitcoins to.

You can also earn bitcoins, just as you can earn any other type of currency, by working for them. Several companies prefer to pay their employees in bitcoins, especially if that’s the currency that the business operates in. And the subreddit Jobs4Bitcoin posts one-off tasks that will be paid in bitcoins.

gold mining

The most complicated way of earning bitcoins is by becoming a miner. You’ll need a very powerful processor (the current standard is ASICS) onto which you download the Bitcoin program. You then compete against other miners to solve a mathematical puzzle that at the same time validates a block of transactions and adds it onto the blockchain. If you get the right answer first (which depends mainly on guesses and very fast computing), you earn 25 bitcoins (this amount halves every 4 years, in approximately 2017 it will go down to 12.5).

These methods of acquisition may remind you of another currency from hundreds of years ago: gold. Back then you could get gold by mining it, by earning it or by buying it. Like gold, bitcoins are backed by no-one. Like gold, bitcoins are not in unlimited supply. I think that we can all agree that bitcoins are easier to carry.

(For more on how Bitcoin works, see Bitcoin Basics.)

How Bitcoin works

(This is the first in a series of articles about the basics of Bitcoin, which I will also include in a separate section on the web called Bitcoin Basics.)

bitcoin-nodes-2

Understanding how bitcoin works is not necessary to be able to see its potential and genius. Most of us use the Internet without understanding transfer protocols and IPs, right? We will, as a society, end up being quite comfortable with the underlying technology without thinking about hash functions and state outputs. We probably won’t even notice that we’re using bitcoin, the blockchain or whatever it will be called by then. Much like how now, when we click, we don’t think about data packets.

But if you’re like me, understanding how it works is fun. And for many, it’s a question of trust: understanding is believing. So, without going into too much cryptographic detail, here goes:

(As a convention, when I introduce a technical-ish term for the first time, I’ll put it in quotation marks, but after that, it gets treated as a normal word. And Bitcoin = the system and the concept, while bitcoin = the currency.)

Simple version:

If I want to send one of my bitcoins to you, I “publish” my intention and the entire bitcoin network validates that I have the bitcoin that I want to send, and that I haven’t already sent it to someone else. Once that information is validated, my transaction gets included in a “block” which gets attached to the previous block. Hence the term “blockchain”. Transactions can’t be undone or tampered with, because the blockchain can’t be tampered with. A bit like Lego and superglue.

Getting a bit more complicated:

I keep my bitcoins in my “bitcoin address”, which is a long string of 34 letters and numbers. This address is also known as my “public key”.  I don’t mind that the whole world can see this sequence. Each address/public key has a corresponding “private key” of 64 letters and numbers. This is private, it’s crucial that I keep it secret, and that I don’t lose it. The two keys are related, but there’s no way that you can figure out my private key from my public key.

That’s important, because any transaction I issue from my bitcoin address needs to be “signed” with my private key. To do that, I put both my private key and the transaction details (that I want to send you 1 bitcoin, for example) into the bitcoin software on my computer or phone. With this information, the program spits out a digital “signature”. I send this out to the network for validation.

This transaction can be validated – that is, it can be confirmed that I own the bitcoin that I am transferring to you, and that I haven’t already sent it to someone else – by plugging the signature and my public key (which everyone knows) into the bitcoin program. This is one of the genius parts of Bitcoin: if the signature was made with the private key that corresponds to that public key, the program will validate the transaction, without knowing what the private key is. Very clever.

The network then confirms that I haven’t previously spent the bitcoin by running through my address history, which it can do because it knows my address (= my public key), and because all transactions are public on the bitcoin ledger.

Even more complicated:

Once my transaction has been validated, it gets included into a “block”, along with a bunch of other transactions.

A brief detour to discuss what a “hash” is, because it’s important for the next paragraph: a hash is produced by a “hash function”, which is a complex math equation that reduces any amount of text or data to 64-character string. It’s not random – every time you put in that particular data set through the hash function, you’ll get the same 64-character string. But if you change so much as a comma, you’ll get a completely different 64-character string. This whole article could be reduced to a hash, and unless I change, remove or add anything to the text, the same hash can be produced again and again. This is a very effective way to tell if something has been changed, and is how Bitcoin can confirm that a transaction has not been tampered with.

Back to our blocks: each block includes, as part of its data, a hash of the previous block. That’s what makes it part of a chain, hence the term “blockchain”. So if one small part of the previous block was tampered with, the current block’s hash would have to change (remember that one tiny change in the input of the hash function changes the output). So if you want to change something in the previous block, you also have to change something (= the hash) in the current block, because the one that is currently included is no longer correct. That’s very hard to do, especially since by the time you’ve reached half way, there’s probably another block on top of the current one. Since the current hash needs to be changed, the hash of the current block included in the next one would also need to be changed. And so on.

This is what makes Bitcoin virtually tamper-proof. I say virtually because it’s not impossible, just very very very very very difficult and therefore unlikely.

How are bitcoin created?

This part is actually simpler than it seems (thank goodness).

Bitcoins are created as a reward for creating blocks of validated transactions and including them in the blockchain.

Backtracking a bit, let’s talk about “nodes”. A node is a powerful computer that runs the bitcoin software. Anyone can run a node, you just buy the right hardware (pretty expensive if you want to be a “mining node”) and download the Bitcoin software (free). Nodes spread bitcoin transactions around the network. One node will send information to a few nodes that it knows, who will relay the information to nodes that they know, etc. That way it ends up getting around the whole network pretty quickly.

Not all nodes are mining nodes. Some just help to keep Bitcoin running by participating in the relay of information. Mining nodes actually create blocks and add them to the block chain. How do they do this? By solving a complex mathematical puzzle that is part of the Bitcoin program, and including the answer in the block. The puzzle that needs solving is to find a number that, when combined with the data in the block and passed through a hash function, produces a result that is within a certain range.

How do they find this number? By guessing at random. The hash function makes it impossible to predict what the output will be. Changing a text or data set by just a little bit could change the resulting hash value by a lot, or by a little, there’s no way of knowing ahead of time. So, miners will start guessing what the mystery number could be, and applying the established hash function to the combination of that number and the data in the block. The first mining node to get a resulting hash within the desired range announces its victory to the rest of the network. All the other mining nodes immediately stop work on that block and start trying to figure out the mystery number for the next one. As a reward for its amazing work lucky guess, the victorious mining node gets to send itself some new bitcoins.

At the time of writing, the reward is 25 bitcoins, which at $270/BTC is worth about $7,000. Not bad for 10 minutes’ work.

Although it’s not nearly as cushy a deal as it sounds. There are a lot of mining nodes competing for that reward, and it is a question of luck. Also, the costs of being a mining node are considerable, not only because of the powerful hardware needed (if you have a slower processor than your competitors, it’s unlikely that you’ll find the correct number before they do), but also because of the large amounts of electricity that running these processors consumes. And, the number of bitcoins awarded as a reward for solving the puzzle halves approximately every four years. It’s 25 now, but should go down to 12.5 sometime in 2017, then 6.25 in 2021, etc. It’s likely that the value of bitcoin relative to the dollar will go up over the next few years to partially compensate this reduction, but it’s not certain.

Why 10 minutes? That is the amount of time that the Bitcoin developers think is necessary to keep the entry of new bitcoins to a trickle rather than a flood. It’s arbitrary, and is controlled via the difficulty of solving the block puzzle. They could make it easier or more difficult by changing the puzzle rules (reducing or expanding the range of acceptable answers, for example), but they like 10 minutes.

Why try to keep the introduction of new bitcoins down? Because the limit on the eventual supply of bitcoins is one of the factors that gives it value (you can’t have a currency that’s in unlimited supply, right?). To enforce this control, the Bitcoin program stipulates that there can never be more than 21 million bitcoins in existence. Given the halving of the reward, plus the timed entry of new bitcoins, we should reach that level in 2140.

If you’ve made it this far, then congratulations! There is still so much more to explain about the system, but at least now you have an idea of the broad outline of the genius of the programming and the concept. For the first time we have a system that allows for convenient digital transfers in a decentralized, trust-free and tamper-proof way. The repercussions, the applications and the potential of this will be huge.

(For more on how Bitcoin works, see Bitcoin Basics.)

Where’s the knife? The possible repercussions of a hard fork

A hard fork in Bitcoin is nothing new, and is generally not a problem. But the launch of BitcoinXT and the controversy surrounding the block size increase has given the phrase “hard fork” a sinister tone, with some claiming it portends the end of Bitcoin as we know it. Should we be worried?

photo by Alejandro Escamilla for Unsplash
photo by Alejandro Escamilla for Unsplash

First, some background. A hard fork is a change to the current Bitcoin Core protocol, the “program” that defines how Bitcoin is run by the mining nodes. The change is such that nodes running the previous protocol will reject new blocks created on the new protocol as invalid. So, some nodes will not add a block onto the chain, while other nodes will. Chaotic, confusing, and risky, as it’s possible that bitcoins spent in a new block could then be spent again on an old block (since the nodes running the previous code would not detect the spending on the new code, which they deem invalid).

Hard forks happen when a bug has been found: the programmers fix it, and inform the nodes that they need to switch to the new version. The old version is vulnerable to the bug, so a change to the new version is imperative. “New” blocks will not be valid on the “old” chain. Hard forks can also happen when a policy change needs to be made. When a hard fork happens, everyone switches as soon as possible to avoid the chaos described above.

So, no problem. However, a hard fork can come with controversy attached, as with the block size increase, which is an important component of the protocol. The current block size is 1MB. While bitcoin transactions are currently taking up less than half that, the use is growing. Some developers strongly believe that a block size increase is urgently needed, so urgently that they are urging a hard fork which will increase the limit by a factor of 8. Others think that a block size increase is a bad idea, that we should let the block sizes fill up and allow economics to regulate supply and demand. Bitcoin transaction fees would rise, as only the “profitable” ones will be allocated the scarce space. Others have no problem with a block size increase, but argue that a factor of 8 is either too much or too little.

Most developers seem to recognize that an increase is necessary, but that consensus is vital. There seems to be a consensus that we need a consensus (sorry, couldn’t resist). Why is consensus so important? Because without it, we could end up having two or more Bitcoin protocols. Coins could be spent and mined on one of two or more chains. This could lead to not only confusion and a collapse of the bitcoin price, but also to double-spending and fraud. If I spend my bitcoins on one chain, and it’s verified, I could also spend the same bitcoins on another chain, which will not have the information from the first chain.

The resulting lack of trust, combined with the fall in price, could well kill Bitcoin’s future.

For the first time since Bitcoin’s launch, a split Bitcoin community looks possible. It’s not because of a looming hard fork. Whatever size increase is agreed upon, a hard fork is necessary. The hard fork itself is not the problem. The main worry is the acceptable definition of “consensus”.

In August, Mike Hearn and core developer Gavin Andresen launched BitcoinXT, which will implement an increase to 8MB on the 6th of January 2016, if 75% of the nodes agree. The problem here is the threshold of 75%. Until now, the threshold necessary for implementation of the new Bitcoin protocol has been 95%, since everyone can agree that that is more or less unanimous. Yet if even if 75% agree, 25% choosing to stick with the current Bitcoin Core is still enough to maintain its own chain and thus cause a split. Two “current” bitcoin chains would not be good.

But don’t miners have to add blocks to the longest chain? Wouldn’t “old-school” miners have to add to the longer, newer chain? And wouldn’t that sort things out automatically? No, “old-school” miners have the obligation to add blocks onto the longest valid chain. And for them, the new chains are not valid. So they would continue adding blocks to the old chain. And 25% of miners doing so is enough to make that chain a viable alternative to the newer one.

This is a huge issue, which goes much deeper than the actual technicality of the amount of transactions that can fit in any one block. This issue speaks to the governance of Bitcoin. Bitcoin theoretically doesn’t have any governance, it is a decentralized network run by the network’s many operators. A team of core developers maintains and updates the code, relying on consensus to push forward. Decisions have been made with the well-being of Bitcoin in mind. Up until now, pretty much everyone has been able to agree on what that requires.

The move by BitcoinXT’s promoters is motivated by the conviction that if their plan is not adopted, then Bitcoin will fail. Hence the need for an urgent hard fork, with a lower consensus threshold.

It’s risky.

But it might happen. So far BitcoinXT has only received explicit support of 10% of the mining community. However, the underlying premise of BitcoinXT seems to be popular, with most of the “big players” in the sector behind it (Xapo, Circle, BitPay, Blockchain.info, Bitnet and others). That means that mining support could well increase significantly over the next few months. If that happens, more miners will sign on, “just in case”, which will gather momentum towards the 75% threshold. And if that is passed, two weeks later, the new block size limit of 8MB is in place, and Bitcoin has a hard fork.

It is very likely that consensus will be reached, simply because everyone has so much to lose if trust in Bitcoin fails. Yet the debate does highlight the difficulties in running a growing yet decentralized network. Personally, I believe that Bitcoin will remain Bitcoin, that some of the dissenting core developers will splinter off into altcoins or sidechain development, and that tempers will cool down. Until the next fundamental disagreement arises. But hopefully by then, Bitcoin’s use will have spread to the extent that its structure and market penetration are different from today. That in itself will give rise to a new decision-making organization, probably still decentralized, but with a clearer consensus-generating communication and with more to lose if it fails.

It’s not the size that matters, it’s what you do with it

When Clay Shirky said that “collaborative production is simple: no one person can take credit for what gets created, and the project could not come into being without the participation of many,” he could have been talking about Bitcoin. The digital currency was created anonymously, and is currently run by a handful of core programmers and a broad network of “miners” whose computers do the actual work of validating and publishing transactions, and an even broader network of “nodes” who help to maintain the public ledger of who sent what to whom. This is crowdsourcing almost at its purest. No one person decides what happens to the program, and no one person can unilaterally make a change to how it works.

While that no doubt has already raised some sceptical eyebrows, the system has worked pretty well since its initial roll-out in 2009. There have been differences of opinion, and accidents that needed fixing, but so far decisions have been made with the common good in mind. Because one of the beauties of this system is that the common good has, so far, equated to the individual good. If Bitcoin were to fail, all players would lose out.

Image by Jens Lelie for Unsplash
Image by Jens Lelie for Unsplash

The scene has changed, though. Now Bitcoin is coming up against a fundamental problem that has generated heated debate, with its share of prognoses of doom. The various sides are digging in, because each seems to be convinced that Bitcoin will fail if his adaptation isn’t universally adopted. This weekend core Bitcoin developers are gathering – apparently for the first time – in Montreal, Canada in the first (and sold-out) “bitcoin scalability workshop” to start the attempt to reach a consensus.

The upcoming problem is this: the volume of transactions is growing. It’s a problem because transactions are grouped into blocks for processing, and the original and current protocol stipulates a block size limit of 1MB. At first that wasn’t a problem, and even now, it’s not really an issue, as the average block size hovers around 425K. But if Bitcoin keeps growing, which it will, the limit is expected to be hit sometime next year. Smaller transactions will start to get pushed aside until a block comes along with space. The current confirmation time lag of about 10 minutes (the time between each block confirmation) could end up being hours or even days, which would seriously reduce its utility. We could end up in a bidding war, with miners giving preference to transactions with higher fees attached. Fees would climb to a level that would price out smaller transactions, which would further limit Bitcoin’s usefulness.

The debate is centred on the issue of a block size limit increase. Should there be one? And if so, to what? And when? It’s not a simple matter, as bigger block sizes can slow down the system and require even more bandwidth and energy to process. The main complication, though, comes from the democratic process. Opinion is divided. So who decides? Which option is best for the system as a whole?

The jury is still out on that, and will be at least until the end of the year. That’s when, effectively, the votes will be counted on the various proposals put forward by the Bitcoin factions (yes, I know, “votes” is an over simplification… I’ll talk more about this process another time). Let’s go over them:

  • Stay as we are. This group doesn’t see any reason to touch the block size. Miners like the idea of higher transaction fees, as it means more profits for them. Most, however, do realize that if Bitcoin transactions slow down, its growth will be limited, which will eventually hurt their income. Another possibility is that Bitcoin continues to grow, but with more and more transactions being done on sidechains (more on these later), so the actual blockchain capacity won’t need to increase. Sidechains tend to not enjoy the same level of decentralization as Bitcoin. But larger blocks could also lead to an erosion of the fundamental decentralizing principle.
  • BIP100. (BIP stands for Bitcoin Improvement Proposal). This proposal was authored by core developer Jeff Garzik, and stipulates a gradual increase of the block size, with thorough testing at each stage. This option is popular, largely due to the gradual increases proposed, and the voting power given to the miners. Every 90 days or so, miners can state what block size limit they would like to see, and the winning target becomes the new block size. This means that the block size can go down as well as up. The mining pools like this idea, but other major stakeholders (wallets, exchanges, etc.) worry about the concentration of influence.
  • BIP101 – by core developer Gavin Andresen, this proposal also suggests that the block size be gradually increased over time, at a linear rate, starting from 8MB on 11th of January 2016, and increasing linearly up to 8,192MB on the 6th of January 2036. This proposal has received support from big players such as Xapo, BitPay, Blockchain.info and Circle, among others.
  • BIP102 – another proposal by core developer Jeff Garzik (confused yet?), who proposes here an increase of the limit to 2MB. Jeff suggests this as an “emergency fallback” if consensus is not achieved on the other proposals.
  • BIP103 (actually, for some reason this BIP doesn’t technically have a number, but people seem to be referring to it as BIP103) – Bitcoin core developer Peter Wiulle thinks that we should increase the block size by 17.7% a year, starting in January 2017. Why 17.7%? Apparently that’s the estimated amount needed to stay in line with technological growth.
  • BIP105 – this is similar to BIP100 in that it lets the miners vote on block size increases. The difference is that BIP105 stipulates a cost to the miners if they vote for an increase. Miners would pay for an increase if it is profitable for them, but it would become costly to do so just to gain a competitive or political advantage. Although it sounds counterintuitive, adding a cost to a proposed increase would increase efficiency, as miners would not want to waste their resources on a vote unless they were reasonably sure that other miners would vote the same. BIP100 stipulates an upper limit of 32MB. BIP105 lowers that to 8MB.
  • BIP106 calls for a dynamically adjusted block size limit, according to the previous block size, with the possibility of including the previous transaction fees in the calculation. If the average block size is almost full, double the size. If it’s not even half full, halve the size. If it’s sort of in the middle, the block size stays the same.
  • Reassess. Adam Back’s idea is similar to BIP102 (Jeff Garzik’s suggestion that the block size increases to 2MB in the short term if no other solution has been agreed on) in that the increases only contemplate the short term, since no-one really knows what the Bitcoin world will look like in the future. Back proposes a 2MB increase as soon as possible, eventually going up to 8MB after four years. Once we get there, then we can reassess, and see if further increases are necessary.

There are actually a ton of other interesting ideas out there to solve the scalability issue, but these seem (to me) to be the main ones. How important is the question of size? That itself is open to debate. Satoshi himself said back in 2010:

It would be nice to keep the [block chain] files small as long as we can.

The eventual solution will be to not care how big it gets.

But it is worth bearing in mind that Satoshi started the ball rolling, and then left the developer community to continue with the experimentation, tweaking and adjustments. As with just about any invention, no creator can foresee all future bottlenecks, bugs and case scenarios.

More than the future of Bitcoin is at stake here. Bitcoin is more than an efficient payment system. It’s more than an entirely new way to transfer value and verified information. It’s a social experiment. Can we, as a group, manage a concept as potentially powerful as Bitcoin, without a clear chain of command? Are we capable of that level of teamwork?

Looking further ahead, a more interesting question than “Can we?”, is “What if we can?”.