Gavin Andresen, a longtime Bitcoin core developer, writes about Bitcoin security, scaling, attacks, and contract design.
Commenters cite it for his proposal of semi-trusted oracles for contracts, his 51% attack mitigation, and the hacked Bitcoin faucet.
While I mostly agree with you - it's easier said than done. How exactly are you going to buy $150 million (or whatever the needed amount is) of ASICs without being noticed? The government could obviously do it - but at least in the near future that sounds far fetched.
Like wise as soon as your attack is noticed your IP addresses would be blocked by the other clients preventing you from adding to the chain.
Edit: after looking more into the 51% attack IP blocking wont really solve it since it only would take a handful of unique IPs to pull off.
Edit2: Couldn't we prevent the double spend part of the 51% attack (or at least make it more like 90%) by doing 2 things:
1) Merchants would only accept bit coins that have been in the block chain at least 6 blocks ago (this already is the recommended case)
2) Nodes reject any blocks received if they receive it over an hour (6 blocks worth) past receiving the 'sister' block in the competing (true) chain. This would prevent an attacker from 'reversing history.' What would be the drawbacks to this?
Edit3: like wise we could stop the "prevent other people from making transactions" part of it (the only other part) by doing this:
http://gavintech.blogspot.com/2012/05/neutralizing-51-attack.html
I would love it if someone responded to this.
That's fair point.
""So I’ll start there, and imagine that there are semi-trusted ‘oracles’ that compete to be the most reliable and trustworthy verifiers of contracts. People involved in contracts choose N of them, and then require that contract conditions be validated by one or more of them before the contract pays out. Pick more than one so no single oracle can steal the contract’s funds, but less than N in case some of them go out of business or just aren’t around to validate contracts when it is time for the contract to pay out."
http://gavintech.blogspot.com/2014/06/bit-thereum.html
So you can "just" write contract in some language so that:
- it will cover most of cases without human intervention
- if there will be bug with code oracle will read (as human) content of terms to get idea about contract intent (basically dispute)
But it seems that good marketing and some really interesting technology can switch focus from asking basic question - "we are trying to solve existing business problem or just create cool tech?" And yet when i read blogposts about ethereum i see more and more complicated contraptions (ruby goldberg machines in fact) and reason why this whole thing is even build is not clear.
Speed is not a function of capacity in this particular context. A car with 1 seat driving 500 m/h is faster, don't you think, than a car with 4 seats that drives 50 m/h.
I mean we can argue semantics, but if you want to send $100 from the US to the Philippines, bitcoin is generally a lot faster than your bank, even when you have to buy bitcoin and sell it in the Philippines because of international transactions taking much longer than local ones.
As for capacity, bitcoin's 'Chief Scientist' just wrote a blog post on scalability: http://gavintech.blogspot.de/2015/01/twenty-megabytes-testing-results.html
To make a long story short, thousands of transactions per second (Visa averages about 2k) is certainly possible. I'd be more worried about bitcoin adoption (from an interest/tech/growth point of view) as a limit than technical scalability issues as a limit, especially with things like sidechains. (Look at Blockstream's Sidechains for example as a solution, just got a $21m investment.)
It's generally held that it can scale, whether it can grow and become popular and well used remains to be seen (I think it's likely but it's far from certain).
EDIT: Deleted parent comment pointed to [1].
The article lines out how to neutralize an attacker mindlessly building a chain of useless transaction but this obviously does not solve the problem. What if the attacker forks and rebuilds the chain of the last week but randomly leaves out every tenth transaction while slowly poisoning the genuine chain with useless transactions until the algorithm decides to switch? You just undid thousands of transaction originally confirmed a week ago. If you could just make up a couple of rules to prevent all 51 % attacks they would not be an issue in the first place. But this again would imply that it does not matter how the computing power is distribute between the good guys and the bad guys which obviously completely contradicts the fundamental design of Bitcoin.
[1] http://gavintech.blogspot.de/2012/05/neutralizing-51-attack.html
NSA, China, Russia, most governments really, and possibly a lot of banks, could do a 51% attack and shut down transaction processing... or do double spends, but shutting down all transaction processing seems more damaging. This won't ever change, unless Bitcoin really causes governments to lose most of their power and money.
Edit: gavin has a plan (http://gavintech.blogspot.com/2012/05/neutralizing-51-attack.html) but my guess is if they did the work to start an attack in the first place they'd have planned for gavin's plan and acquired enough older coins to foil it. It'd be nice if more thought went into other ways to thwart a possible attack but I'm not sure there really are any. Most people seem to discount and completely avoid the issue.
A 2012 Bitcoin hack victim was none other than a lead developer of Bitcoin. Back then, they ran a Bitcoin faucet on it that gave out a paltry 0.25 Bitcoin at a time.
I never bothered to jump through those hoops for like a dollar (now about US$10k):
http://gavintech.blogspot.com/2012/03/bitcoin-faucet-hacked.html?m=1
He only lost 5 bitcoin (like $20 then or $200k today), but another lost 3100, or around… $124 million today:
https://bitcointalk.org/index.php?topic=66916.0
They ran a Bitcoin mining pool and this hack motivated them to create a hardware wallet:
https://blog.trezor.io/how-trezor-was-born-from-a-hacking-attack-that-affected-slush-pool-7a538f03fd8f