Within the coming weeks both Namecoin and SolidCoin have been threatened with the same attack. What can be done by the users, pool operators and developers of these forks to either;
A. Minimise damage.
B. Stop it altogether.
There are two basic fronts on which they can defend, and they really do have to do both.
First, they need to increase their total hashing power. 51% of a very large number is much harder for an attacker to muster than 51% of a small number. Merged mining is probably the most realistic way for these currencies to accomplish this.
Second, they need to fix specific vulnerabilities in their difficulty adjusting algorithms. Some of these attacks requires less than 51% of the hashing power or do more damage than they should because of specific weaknesses in the difficulty-adjusting algorithm.
Alternative currencies are vulnerable to hash rate decrease attacks. To resist them, they've adjusted their difficulty algorithms so that difficulty can drop rapidly. Unfortunately, these algorithms have been found to have unexpected defects. Because strict timestamp accuracy can't be enforced, an attacker can maliciously inject false timestamps into mined blocks to cause the difficulty to drop very, very quickly. This allows a malicious group of coordinated miners to extract a very large number of coins in a very small period of time with relatively little hashing power.
Effort will be needed to fix these algorithms so that they still provide protection against a hash rate decrease attack but don't create even more serious new vulnerabilities.
It may well be a rocky road these next few weeks. The 51% attack is fundamental to the decentralized nature of these currencies -- the only solution is more hashing power. But the difficulty algorithm attack issues will likely be solved by fixing the algorithms.
The Bitcoin network is currently the worlds fastest distributed computing network. It gains security through size.
The large pool issue is real however it can be overcome without flawed centrally controled digital currencies.
One example is p2pool. It is a pool where miners share rewards but each miner independently generates their own block header including only valid transactions.
The only risk that large pools represent is the fact that currently miners are "dumb". The pool generates header and submit the merkle tree hash to the miner which "blindly" hashes it. If the pool has nefarious goals it can use the miner's hashing power against the network. Now it is unlikely this would happen because large pools have a vested interest in keeping the network and thus coins valuable and continuing their existance. Still the network would be improved if the miner generates the header rather than the pool.
Now p2pool is a completely decentralized mining pool. They don't even have a website. Miners simply join the peer to peer network and are compensated for their work.
Still many miners may like the advantages of a more traditional pool. This doesn't mean the header generation can't be distributed. Using algorithms implemented in p2pool a traditional pool could decentralize the header generation. With decentralized header generation each miner is working indendepdently. The purpose of the pool is merely to reduce volatility.
This would complete eliminate the small risk of a pool operator using miner's to work against the network.
Bitcoin users who are concerned about the influence of large pools and the risk that centralized header generation represent should either use p2pool or push for other pools to adopt a distributed block generation mechanism similar to p2pool. If blocker header generation is decentralized then there is no risk of subversion even if a single pool has 100% of hashing power.
Solidcoin has restarted in version 2.0, with the following scheme intended to prevent a 51% attack:
As with existing cryptocurrencies, SolidCoin 2.0 stores transactions in a "block chain" which is essentially what it sounds like. Transactions go into a block, nodes do work on that block to verify it, and if the work is good enough they can submit it to the rest of the network. SolidCoin 2.0 then comes into action, every other block in the chain must be worked on by someone with at least a million (1,000,000) SolidCoins in an account.
There has to be consequence to the attacker, large enough for him to feel the blow of his own attack.
To create the consequence for him: The voter (trusted Node/Full Node) has to have bitcoin, and the more bitcoin the node has, the more voting power (more trusted they are). Example, if the attacker really wants to kill the whole bitcoin network, he has to have at least 51% of bitcoin in circulation. If a bitcoin network is worth $100 billion. He has to buy $50 billion worth of it. Try killing the network and he will lose his $50 billion. Yes, others will lose some little value, but he'll lose much more value, and we can start another cryptocurrency.
It doesn't have to be a linear 1 bitcoin = 1 voting power. It can be a function. like voting power = root2(bitcoin), or other functions.
The only problem with this is that most people will use a centralized node (because they're either using a light node and do not want to waste resources for full node), so their voting power may be centralized somewhere and can be used by the attacker to attack (assuming that more bitcoin = more voting power). The solution to this is probably applying a slowing function (like the root function) to limit their voting power. But then the attacker may use many small value wallet to undermine the big centralized wallet. (Everything in moderation tactic, too much or too little is not good) So we should as well lower the voting power of those who has very little bitcoin in their node - see picture.
So what happens to the node that doesn't have a bitcoin? It's going to be useless anyway because they will leech from the network. I'd say to assign no bandwidth and voting power at all to them since they're not using bitcoin anyway and only wasting network resources. perhaps let them be a low priority reference, just to make them a bit useful.
Same goes to the miners. we should assign similar function as in the picture. We don't want big miners to make the network centralized and in the end having too much power to ruin the network. Since the bitcoin community is by the people and for the people; That is the point of the whole decentralization thing, isn't it? So that we don't get bullied by the big power who wants to centralize everything. We definitely should limit the big power, as well as the useless people who don't use bitcoin and leeching from the network and slowing the real community as a whole.
Can this help dealing with the DDOS attack as well?
------------------------Additional Thought on 2017-4-12-------
Bitcoin Design is fundamentally flawed. I decided to move on to other cryptocurrency like Peercoin. Bitcoin consumes too much electricity, large blockchain size and counting, 51% attack, etc.
Why risk our hard-earned money to some chance that it may/may not happen? Everytime it happens, bitcoin value will drop, and we will lose value. Every time we have to move our money in and out of the bitcoin because of our fear. The financial brokers love to see that because every time we move our money, they get a percentage of our money. The implication of 51% attack is bad. Values will be lost over and over again. In the end we will be slaves to the biggest financial institutions: the banks.
Why don't we convert our currency to Peercoin? As simple as that. I am just starting to.
PEERCOIN is shielded from 51% attack, and it encourages decentralization by giving minting incentives. It does not consume much electricity too because it uses a genius Proof of Stake system. (No one will be motivated to kill the network if they have 51% of the stake in it. It will be stupid to stab himself.)
Their design has successfully slowed down the blockchain size increase to 0.6GB after 5 years, compared to 110 GB for bitcoin. This will also make bitcoin more centralized in the future because a full node will need a lot of hard drive space.
Read this forum discussion to understand more about PEERCOIN: (At first I was also skeptical) https://talk.peercoin.net/t/suggestion-for-better-ppc-better-system-for-reward-less-transaction-fee-when-trading-one-that-will-make-ppc-better-than-bitcoin-for-sure/4504/16
There is nothing "stopping' any Bitcoin technology chain from being 51% attacked. It can happen at any time , and it will likely be completely unannounced, which is my own personal concern with it. Furthermore, since Bitcoin is heavily centralized around one major pool, and 2 other large ones, if those pools were ever hacked and pointed towards malicious intent then it could happen at very little cost.
SolidCoin was recently released with 51% protection, you can read more about it here. http://solidcoin.info/solidcoin-most-secure-currency.php
The 51% problem is something inherent in the design of a 100% no trust system like Bitcoin, it will never be overcome. So if you like that about Bitcoin technology chains then learning to live with 51% attacks is all you can do. You can try to limit it by securing more network power in the hands of so called "good" people, but that's a never ending game and one where you will likely be outspent by a large attacker (government or large corporations).