Bitcoin Mining in Plain English
codinginmysleep.com
codinginmysleep.com
Since all clients implement the same algorithm, they all get the same difficulty value.
If you could convince others to run your client then your network would get bigger. If it got >50% of the entire network then your blockchain would effectively be the main chain.
Is it like a teacher telling a class 'what are the prime factors of 91' and awarding a sweet to the winner? Or are there many sums to calculate and anyone providing an answer gets a sweet? When the result comes out how is the source verified - in a classroom if I were sly I might be able to relay the answer to the teacher faster than the one who calculated it??
Think I'll have to find a proper mathematical treatment of the process ... anyone recommend a link, wikipedia didn't do it for me.
There's no "many sums to calculate" contributing towards a result. It's more a lottery - did my one calculation produce the right number.
Great explanation. That's exactly it. Having more hardware lets you guess more numbers faster.
This is important because once a newer block has signed off on the block before it, you can't change that old block without invalidating every block after it. If I want to rewrite the most recent block it's astronomically difficult, but still technically possible, to do so. The deeper each block is buried in the chain, the more blocks I would have to rewrite history on to undo transactions in that block.
To my knowledge no one has ever successfully re-written history and the amount of processing power required to do so is beyond astronomical at this point. This is also why the standard client does not consider transactions to be "confirmed" until it's 6 blocks deep - that's the point at which the likelihood of rewriting history becomes so low that it's effectively zero.
How does this not end up with having to eventually transmit multiple gigs of data every time you want to do a transaction?
There are light-weight clients out there that rely on a web service of some form for keeping track of the whole block chain[2].
In order to issue a new transaction, though, you only need to transmit the transaction itself: a list of signed transactions: "transfer x bitcoins from this address to this address", basically.
[1] Some suggested implementations are listed here https://bitcointalk.org/index.php?topic=74559.0
[2] https://en.bitcoin.it/wiki/Thin_Client_Security
(Edit: fixed formatting)
Say you send out the same coins to two different people at once, in a centralised system, that would be detected at the centralised server and the second transaction would fail. With the distributed system that's not possible, so the block chain serves as a timestamp. Whichever transaction gets into the blockchain first is the successful transaction.
However, generating the blockchain requires a lot of processing power, and therefore needs to be subsidized. Initially that is done by rewarding those who generate blocks with coins (i.e. mining). However, as the number of generated coins falls, transaction fees should make up the short-fall.
Each block that gets mined means that in order to undo a transaction that was previously in the block chain, an attacker would have to mine a block before the network produced another block on the main chain.
So if your transaction was in block 33123, and the chain looks like
block 41873 : [ parent : ... ]
block 33123 : [ parent : block 41873 ]
block 71282 : [ parent : block 33123 ]
then in order to undo block 33123, an attacker would have to produce three blocks: block 41234 : [ parent : block 41873 ]
block 39834 : [ parent : block 41234 ]
block 58762 : [ parent : block 39834 ]
before the network produced a new block on the main block chain. So the attacker would have to have 3x the computing power of the remainder of the network.The advantage nodes in the P2P network (people running the client software not necessarily mining) don't have to trust any other node or central serve, they just trust the longest block chain in he knowledge that's what everyone else will be doing.
As transactions are only accepted if signed by a private key, so the block chain is just an agreement of the order and time that transactions happen. Also if someone tries to double spend the same money by signing two transactions the block chain is the decision on which one is accepted and which ignored. No one can fake that decision without providing the solution to the extremely hard problem.
There's a difference between using the currency in transactions - which is potentially simple for both dollars and bitcoins - and managing the behind the scenes of the money supply and control mechanisms. Few people need to be central bankers, and few people need to be bitcoin miners, so I don't feel it's that big a deal.
Think about it: if 1% of people are using Bitcoin then that means there's only a 1 in 100 chance that any given transaction you make can be made with Bitcoins. That's an admittedly low degree of usefulness. If you can get 2% of the people to start using Bitcoin it just became twice as useful and half as many transactions will now require you to convert funds back to traditional currencies. At some "critical mass" adoption level, Bitcoin becomes just as useful as any other currency without such a constant need to move in or out of traditional currencies.
It's called the Network Effect and it's a hell of a market force.
Also your argument is invalid because you could say the exact same thing about holding a bank balance in USD while living in Europe: "But I have to exchange these dollars for Euros in order to even use them at all, man this U.S. Dollar is just completely worthless and unnecessarily complex because no one around me will accept it."
You're going with the "we just need to get 1% thing", huh? What percent of the world's population is currently using Bitcoin?
Which brings us full-circle back to my original point.
So let's extrapolate: There were about 5.84 billion people in the world in 1997, 2% of which is about 117 million people on the internet (round numbers). Thus, in 1997, we can estimate one in every 6 internet users had their own web site.
Today there are about 6.97 billion people in the world and about 35% of them have internet access (74% in the developed world, but I digress). This means that about 2.4 billion people are responsible for about 900 million web sites - that's one web site per 2.7 internet users. If we work backwards from this imaginary (and probably wrong) line, we can estimate that there were about 3,000 internet users back in 1983.
There are currently estimates that the Bitcoin network is made up of between 15 and 20 thousand users. Let's call it 15, just to be pessimistic. Adjusting for world population that puts us about on-par with the internet's adoption level in 1987. Bitcoun is about 4 years old, while the 1987 internet was about 6 years old, which means we're growing 50% faster than the internet did. Assuming nothing gigantic implodes along the way, Bitcoin is on its way to greatness.
Of course that's assuming you can compare Bitcoin to the internet, which you probably can't ;-)
It still doesn't make your claim correct. Your claim that Bitcoin can't achieve widespread adoption because of the complexity of mining doesn't even make sense.
Not every user has to mine and mining is what this article was about, not the parts of Bitcoin that everyone will use, but the parts that only a few will use but everyone seems curious about.
This article was akin to "How the printing presses the Fed uses works" combined with "How the Visa/MasterCard payment system works" - again, something you don't need to know to use the consumer end of that system, but which quite a lot of us are curious about anyway.