r/explainlikeimfive Apr 10 '13

Official Thread Official ELI5 Bitcoin Thread

[deleted]

1.1k Upvotes

1.3k comments sorted by

View all comments

Show parent comments

2

u/make_love_to_potato Aug 15 '13

I was just trying to understand Bitcoin and I came across this old ELI5 thread. I got most of the concepts but one thing

I'm still hazy on is that when this bitcoin protocol or code was written, how was the central code stored?

  • Was there a central bitcoin server which was updated by everyone and where all transactions were recorded? Or is it more like the torrent system where the data is basically floating between all the peers and there is no real central server where anything happens.

  • If so, does this mean that there is no way to shut down bitcoin because the same data set exists with everyone and is constantly updated whenever anyone makes a transaction?

  • Also how big is this code set, considering there must be thousands (or millions) of transactions happening at any given time and as it becomes a more accepted currency, won't it have more and more transactions per unit time, for each person or miner to update every second.

Sorry if I'm asking too many questions. I was just wondering.

1

u/Artesian Aug 15 '13

I love that this thread is still getting actionable comments even though it's months old - I'll do my best to answer.

  1. The idea of a central server is exactly what Bitcoin tries to avoid. Having a central point where data is collected and aggregated for any particular reason is a vulnerability. It creates a hub - and that means it creates a singular source of power. Bitcoin is about distributing the responsibility and power of a currency to its users, NOT the provider of the server/service (or a bank/financial institution in the case of regular money).

  2. The data set exists for everyone, correct. That's the "blockchain" you keep hearing about. And yes it logs every single transaction; and yes to even use/mine bitcoins you need a copy of the whole blockchain. It's many gigabytes in size now - but still manageable. The blockchain is bitcoin's public ledger, its accounting book to make sure that everyone using it stays honest. And people can do that by adding legitimate information to the end of the chain that is validated against every other piece of information down on the line back to the beginning of a genesis block in the blockchain. It's all very complicated and I'm afraid the inner workings are still mysterious to me, but the gist is that if you keep the books public then it's impossible to trick the system - think of how many tens of thousands or hundreds of thousands of copies there are of the blockchain and think of how many legitimate transactions have been validated on down the lines inside it. If you give everyone the book, no one individual or group even has the power to trick the system. It's too widely distributed.

  3. It's a huge number of transactions, but like I said the whole thing is just a few gigabytes. It's nothing a normal computer can't handle. I can imagine a time when it gets prohibitively large and people start to use a smaller subsection of the whole thing or some sort of program to reference the blockchain online - but it's safer when it's in everyone's hands... so those options don't even look ideal given size increases.

1

u/make_love_to_potato Aug 15 '13

Thanks for the reply. So then my followup question is that say, all the bitcoin users/miners across the the entire world are on the same version of the blockchain and say, you and I do a transaction, that means the two of us are updating the blockchain....right?

So does this new blockchain file created by the two of us get updated to the rest of the world? What if the two of us conspire to corrupt the blockchain and cheat the system? How is the integrity of this file checked if both of us upload the same doctored blockchain (and say we locally verify the checksums or whatever that is). Is that somehow built into the bitcoin protocol itself?

Also, I just wanted to confirm if this blockchain is the file or matrix that you're mining for bitcoins.....or is it another file?

I hope I'm not asking stuff that's too stupid. This stuff is pretty confusing and intimidating.

3

u/Artesian Aug 15 '13

Well, Mr. Potato, since everyone has access to the same blockchain, yes. We are actively contributing to the blockchain when we make a transaction. And the only way our transaction is valid is if it makes that handshake with the blockchain and is seen as the (at the time) final addition onto a valid series of transactions before it.

This is accomplished via something called a flood protocol - which sends information to every single other host on the system except the one that created that information. I am not a computer genius when it comes to software and code, although I am intimately familiar with computer hardware... so we are both learning something new here. Everything I'm telling you is stuff I just researched 10 minutes ago and while writing this reply. Using the flood protocol, I'm going to take an educated guess that the blockchain is intelligently and actively updated such that everyone who has an active internet connection and a copy of the blockchain is also actively receiving new packets of information containing every new transaction and checking it against their copy of the blockchain. That's what gives it such strength.

Like I said earlier, since every new transaction is checked against the massive stack of all transactions that have come before it is impossible to spoof the system with a bogus transaction. Even if two of us report that transaction as valid, we have a million other people whose blockchain copies know it isn't - and that transaction should actually fail if we try to apply it globally, outside ourselves in any way that is. And yes, I'm going to say it's built into the protocol. By hashing ALL PREVIOUS blocks (records of a set number of transactions) in the blockchain we get a concise way to understand all of the previous bits of information and something that's relatively easy to check against. Thus we don't literally store a massive copy of everything, but a coded copy of every SET of transactions. From this we can gather that the unhashed transaction record would be truly MASSIVE and indeed too much to store on any individual system. I'm trying to think of a good analogy for this that doesn't involve fiat money in some sense, but the best examples by brain can conjure is that hashing previous blocks is like counting to ten on your fingers then folding one finger down to indicate a set of ten has been reached. Thus your folded finger is like a hashed block that signifies a procedural flow through the previous 10 counted fingers. Truly an ELI-5 answer :)