Bitcoin

Tags: privacy, security, other.
By lucb1e on 2012-12-17 00:02:41 +0100

You know laws and banks right? Financial constructions, interest rates (the magic multiplication of your money), inflation (the magic disappearing of your money), etc. Transferring money across borders is subject to taxes that I don't even know of (why do they mention donations are tax-deducible on Wikipedia and The Internet Archive?), and your bank usually makes you pay a fee.

Paypal partially fixes this, but they are blocked in over 60 countries. Why? Not because of Paypal's own interest surely; the more users they have, the more money they can make. So it must be because of legislations and restrictions by countries and banks.

Bitcoin is new. A totally different concept. It's unlike the currencies that we all use (Euros, Dollars, etc.) because it's not controlled by organisations and governments. In fact, it can not be controlled by organisations and governments. In a way, it's like the internet itself: distributed, global, and uncontrollable. The only way to block Bitcoin from a country, is to block the internet itself.

How Bitcoin works

Every time you visit a website, like Google.com, your computer connects to Google's servers. Not the ones from your ISP, your government, or anyone else. Bitcoin works similarly: you connect to the Bitcoin network, not to a governing organisation of Bitcoin. When Google implements a new feature, the browser on your computer has to support it in order to use it. It works the same with Bitcoin.

Like the internet, Bitcoin is a network that communicates through a set of protocols. Anyone who writes software to work with the Bitcoin network can participate in the network. And yet it's all about money.

How do we prevent someone from writing software that claims to own an infinite amount of coins? Glad you asked.

Coins are sent to Bitcoin addresses, which are rather long texts that look like a code. In fact, they are codes, so that makes sense. You can generate as many addresses as you like for yourself; nobody limits you in that. Nobody can limit you even if they wished!

These addresses are part of an encryption scheme with two parts: a public part and the private part. This is called public key encryption. The public key is public, and the program keeps the private key secret. Anyone who knows the secret key can spend anything that was sent to this address.

As an example, when Alice sends coins to a Bitcoin address from Bob, Bob does not actually receive anything. This is why Bob can receive coins without having his computer turned on. Given that Alice's coins are valid, all computers on the network will see that the coins now belong to the address that Alice sent them to: Bob's. He owns them, everybody knows that (including Bob when he turns his computer on), even though he has not physically received anything.

Then Bob wants to use his coins. When he spends them, he provides something by which he can prove that he owns the private key for that address. With a mathematical trick, you can prove that you have a private key (which pairs with one and only one public key) without revealing it. The network, or everyone on it, deems the transaction of the coins from Bob valid. You can try to do invalid transactions, but the person you're sending it to will reject it as invalid. Like entering an invalid password.

As you see, all transactions on the network are secured, but public. Everyone validates them. Of course, you don't want all your financial information to be public though. This is why it's important that you can (and do) generate an unique Bitcoin address for every time you receive money: everyone can see that 10 coins went from address X to address Y, but nobody knows whose addresses those are.

Also, if you use only one address, you only know "someone just sent me these coins", but you don't know who. You can see which account received a transaction but not who sent it. So when you see it was received with an address that you gave to Microsoft, you know that Microsoft just paid you.

Now you will have many receive addresses with only a few coins on each. But you can combine all of them into a single transaction to buy something bigger. For example:
- You have 4 coins spread over 4 receive addresses: one coin per address.
- You want to send 2.5 coins to address Z.
- Bitcoin transactions have inputs and outputs. The inputs are a combination of receive addresses, and outputs are the addresses that will receive the coins.
- You will simply tell your Bitcoin program to send 2.5 coins to address Z
- Behind the scenes it will use 3 of your addresses as input addresses, which are worth 3 coins (because you had 1 coin per address in this example).
- Because you are only paying 2.5 coins, there will be 2.5 coins of output to Z, and 0.5 coins output will go to yourself again.

It may seem a bit weird at first, but it works fine. You don't see the 0.5 that are returned as a transaction, your Bitcoin program recognizes it as change. Also, you will never have to deal with any of this change and combine thing, it's just interesting to know I think.

How do coins get into circulation?

If you paid attention so far, you'll notice how there is one weird thing: Everyone should start off having zero coins. How can we ever trade with coins then? Glad you asked!

Bitcoin "mining" is modeled to vaguely resemble gold mining. Besides the looks there is nothing related about the two though. Just by proving that you have done some work, you can get a certain reward. Like with gold mining, by searching for gold (which costs work) you find gold (your reward). And at first there is a lot of gold, and later on there is less and less. With Bitcoin you get a lot of reward at first, and later you get less and less. At the moment of writing, it's already not worth the costs. But Bitcoin mining is just a byproduct to get coins into circulation, a process done just once.

Eventually there will be around 21 million coins. Never will there be more, unless the network agrees on that. The way to agree on this is by changing the software, having everyone update it (like you have to update your virus scanner periodically), and then it works out.

So there is this proof of work. You might wonder how you can prove to a computer that you did work, and that's a very good question. Actually, this is where the story gets complicated. I mentioned Bitcoin mining only a byproduct, and it is, so I'll have to explain the whole thing to explain how this byproduct is generated.

I mentioned how the network decides whether a transaction is valid or not. What if someone disagrees? In fact, what if the United States government puts up a network of computers that all disagree on the validity of transactions? They would control the network easily.

That's where the proof of work comes in.

You generate a proof of work by letting a your computer run for a while. Roughly every 10 minutes a proof is found by someone, somewhere. Then this proof is used to cryptographically sign all valid transactions done since the last proof was found. This proof combined with the valid transactions is called a block. The block is linked to the previously found block (where a previous proof was used). Together, all blocks make up the block chain. You will see this term quite regularly.

Everyone looking for a proof of work will hear of this new block, and will start looking for a new proof (to generate the next block). As you see, these proofs are vital to make transactions happen at all. Without them, transactions would never get included in the block chain, so they would never happen. And as you see, computational power is required to do it. If the government of the United States wanted to take over the Bitcoin network and decide upon the validity of transactions, they would have to match the computational speed of the entire Bitcoin network together. I think it suffices to say: May the force be with them. They'll need it.

You may raise a few questions here:
1. What happens if two people find a proof for the same block at the same time?
Let's say we are all at block #1000. Then two people find a different proof for block #1001. Let's call them #1001v1 and #1001v2.
#1000 -- #1001v1
      \_ #1001v2


The rule that Bitcoin programs follow is: always work on the longest block chain. But both versions of #1001 are the longest, because there is no #1002 yet. A part of the network will continue working on branch #1001v1, and another part on #1001v2. Whichever they received first.

Then #1002 is found by someone. It spreads through the network again, which is done at an amazing speed by the way (around six seconds to spread around the world, I timed it), and all programs will switch over to this new proof because it's the longest once again.
#1000 -- #1001v1
      \_ #1001v2 -- #1002


Everybody using #1001v1 will see that #1002 is found, and switch over. As I mentioned: the rule is to work on the longest block chain. All transactions included in #1001v1 that were not included in #1001v2 will be put in #1002.

This is why the biggest computing power rules. The more power, the higher the chance that you find the new block. When you hold the majority of the power for an extended period of time, you can make everybody switch over to your version of the block chain. And you can exclude certain transactions from being validated and included in the chain, thus allowing yourself to spend your coins any number of times to multiple merchants, because they appear not to have been spent before.

This attack is the only known attack that works against the network, and it costs an incredible amount of money to perform. At the present time, it's much cheaper to pay some guys to rob a bank for you, and it will only get more expensive to do as the network grows.

2. How are these proof of works generated?
Imagine you have to calculate the square root of a big number without calculator. It would take you some time to figure out, but given that there is a solution without decimals, you will find it. You then proved to me that you did some work. I can very easily check that you actually did the work, because multiplying the number by itself should give me the big number that I gave to you. I can also easily adjust how much work you need to do by giving you a smaller or bigger number.

Bitcoin's proof of works are similar, only there can be multiple solutions. It's something with hashing; a long story. With some formula, the difficulty of finding a proof is adjusted roughly every two weeks. This is done so that finding a proof of work still happens every 10 minutes.

Why Bitcoin is a good idea

Your money is yours. You own it, and you can mathematically and indisputably prove it. If banks all go bankrupt, you will still own your coins, just like everybody else.

A good example is Iran. US Dollars are hard to come by, and their own currency is crashing. They are slowly discovering Bitcoins as an alternative currency.

Of course, Bitcoin is only worth something if there are merchants who sell you goods or services for coins. So what can you already buy in Bitcoin?
- Websites, webhosting, domains, servers, etc.
- Computers, laptops and other electronics.
- Socks. Alpaca socks.
- (Motion) Pictures of girls. I'm not even kidding!
- And for the girls around here: reddit.com/r/GuysGoneBitcoin
- You can buy cupcakes with Bitcoin in New York.
- Lots and lots of other stuff: https://en.bitcoin.it/wiki/Trade
- And not to forget: Euros, Dollars, etc.

Recently, a Bitcoin exchange has partnered with a Payment Services Provider in France, practically becoming a legal European bank. They will soon be able to give you an IBAN numbered account when you can scan and send them your ID card, whereas the other leading Bitcoin exchange (Mt. Gox) requires much more paperwork. Also, any deposited Euros will be guaranteed by the French government up to €100.000. They have even said to start issuing debit cards soon!

I would so love to walk into any shop and pay with freaking Bitcoins :)

There are people who do not like Bitcoin

The financial business will not like Bitcoin of course. Heck, there is an entire industry living off your deposited money. And all merchants accepting debit cards pay to that industry too. And you pay them again by owning a debit card. Then Bitcoin came around and all banks lost their customers. You can see the issue here.

It's a bit like with horses really. When cars came around, horses suddenly found themselves largely unemployed. It must have been a financial crisis for them.

There are also those who think that Bitcoin is a fraudulent scheme. It can not exist because of this and that. They will not listen to your argument, consider it, and then reply. As the saying goes, haters gonna hate.

You can go against all their stories and explain Bitcoin to them like the children they are, but you might as well prove that there is no milk in my bowl, or prove anything else for which you cannot produce proof because it's not there.

A few common misconceptions though:

Bitcoin is said, by some, to be a pyramid scheme. I cannot even begin to imagine who came up with this, because Bitcoin doesn't promise you wealth for little work (like a pyramid scheme does). No more than that trading dollars for euros and then buying European chocolate makes you rich.

Bitcoin is said, by some, to be a ponzi scheme. A ponzi scheme is a scheme where the creator convinces investors that they will profit from it. In the end the creator runs away and the investors get nothing. If you paid any attention whatsoever to my explanation, you can see how this is clearly not the case. There isn't a single group of people who benefit from this. Of course some people use it to setup services, but they make money off Bitcoin the same way as I make money off Euros by building websites.

Lastly, you will encounter a problem by yourself: Because all transactions are public and stored, the blockchain will be huge. We've already calculated that this is no real issue as long as the law of Moore continues as it does. On top of that, to ease the requirements for computers using Bitcoin, a solution is being worked on. I don't know the technical details, but it's something that only the last X number of blocks are required.

Conclusion

I think Bitcoin is a very interesting currency to look into. I learned much from it, both tech-wise and about how currencies work in general. It has sparked my interesting in the economy a little too, something I never had before.

Here are some interesting links:
See transactions as they happen: blockchain.info
A lot of statistics and charts: blockchain.info/charts
Getting started: weusecoins.com
The semiofficial Bitcoin website: bitcoin.org
The biggest Bitcoin wiki: bitcoin.it
The biggest Bitcoin forums: bitcointalk.org
A Q&A website for Bitcoin: bitcoin.stackexchange.com


Bloopers
Scene 1 take 1: I wanted to describe Bitcoin as a peer to peer network, similar to BitTorrent and Gnutella. Then I realized Gnutella is shut down and BitTorrent is very much frowned upon by most legal instances.

Scene 2 take 1: Although posting the links to the GirlsGoneBitcoin and GuysGoneBitcoin Reddits might be a bit risky already, I thought I'd better not explain how the real early adopters are drugs dealers and people making special kinds of porn with people whose age counts one digit.

Scene 3 take 1: Typing the link to bitcoin.org, I wanted to remark something along the lines of: "The semiofficial website for Bitcoin. As I mentioned, Bitcoin is a protocol and not controlled by anyone, but it has a creator of course. This website is the creator's." Then, as an afterthought: "Although the creator is long gone and worked under a false pseudonym that nobody has been able to identify. You can still download and use his software though!" Yes, that would certainly be the ideal way to introduce the leading client.
lucb1e.com
Another post tagged 'security': To curl|bash or not to curl|bash

Look for more posts tagged other, privacy or security.

Previous post - Next post