Let's have some FUD vs. FACT now.
------------------
FUD: Double-spends: GHash actually engaged in such an attack before it reached the 51% mark, and it could do so again
FACT: Ghash.io has never committed double spending against a CONFIRMED transaction. Apparently at one time Ghash.io had committed fraud against an online gambling site by performing a Finney attack to cancel their non-winning bet transactions. This was possible because the casino recognized payment on 0/unconfirmed transactions -- something that NOBODY would recommend a merchant do for an anonymous, online service.
---------------
FUD: Mining power =50%: Double-spends against 6-confirmed transactions are certain to succeed.
FACT: A pool does not have its own hashing capacity, it instead has suppliers -- those individual and corporate miners performing the pool's mining work. A pool that is doing evil will in time lose hashing capacity as those mining there discover that the pool is harming Bitcoin and take their hashing capacity elsewhere. For a pool to try to do a 51% attack for the purpose of double spending a transaction with confirmations 6-deep means that pool would need to take the hashing capacity offline and use it to start mining a private fork. Additionally, no subsequent blocks mined on the public Bitcoin network (while the attack is occurring) would be solved by the ghash.io pool. If ghash.io's 45,000 Th/s were to go offline, that would be bad. If at the same time no blocks over the next couple hours were ghash.io's, that would be a "network event" that would indicate quite possibly that a pool is attempting a 51% attack. There are a couple hours then, at least, before this attack could be successful at reaching the six confirmations needed (as, with only 51% of the hashing capacity but the same difficulty, blocks on the private fork get solved at about one block every twenty minutes). Miners, alerted to a potential 51% attack, could start pulling their hashing capacity from the pool causing it to drop below 51% before the private fork has reached six confirmations -- thus causing the attack to fail. i.e., An attempt at double spending by the pool is not certain to succeed. The pool would be taking a gamble that it can pull off such an attack before that activity is detected or that the response by its suppliers after detection would be too little, too late.
---------------
Now if you have a 51% attack performed not by a pool but by an attacker with its own resources, then many of your points are valid. What that attacker would need to do is simply procure access to about $200M worth of SHA-2 ASIC hardware. Unfortunately for you in making your point -- that amount of hashing capacity likely exceeds the capacity of all the Bitcoin mining ASIC manufacturers, combined, today.
Bitcoin transactions: Why it is recommended to wait for at least six confirmations?
Due to its decentralized nature, bitcoin can’t rely on a master authoritative source to prevent double-spending, when an attacker tries to spend some money more than once. Anyway, various defensive strategies have been implemented to minimize chances for such a fraudulent activity to happen in the bitcoin network.
One particular approach, described by the Bitcoin Wiki as a Brute force attack, can be attempted by an attacker with relatively high mining hashrate, but not necessarily above 50% level. The attack would follow this pattern:
1. The attacker submits a transaction to the network which pays the merchant.
2. At the same time, he will immediately start to privately mine his own blocks, where he will include the double-spending transaction instead of the one where he pays the merchant. But if he manages to find a new block, he will not broadcast it to the network.
3. The merchant will wait for 6 confirmations and then sends the product. But if the attacker managed to mine more than 6 blocks at this time, he can release his own private fork to the network, and since he has the longest chain, other nodes would accept it and the original transaction will get rejected. This way, the attacker gets both the merchant product and also his bitcoins back.
It might seem that such an attack is statistically unlikely to happen, but when we suppose, that the attacker possess for example 25% of the network hashpower, the probability that he will mine 7 blocks in a row is 0.25^7 = 0.006%. This looks like a very small probability, but with block time being 10 minutes, mining 7 block in a row will happen approximately once per four months.
Fortunately, there is another measure implemented in the Bitcoin protocol, which eliminates the possibility of such an attack. In the Protocol rules description at Bitcoin wiki, it is listed as a Rule 13 for “block” messages:
13. Reject if timestamp is the median time of the last 11 blocks or before
This can be interpreted in a following way: If the attacker will try to mine his own private blockchain fork, other nodes will almost certainly reject it, if his length is more than 6 blocks, since the timestamp of the first such mined block will be almost certainly older than the median time of the last 11 mined blocks. Replacing 6 or less blocks is possible, but when attacker tries to replace 7 or more blocks, the first one will be too old to be accepted.
TL;DR: Six bitcoin confirmations is not an arbitrary number. If payee accepts a transaction with less than six confirmations, it is possible that the attacker, even without a majority of the hashpower, can launch a brute force attack by mining his private blockchain fork and reverse the transaction. With six or more confirmations, such an attack will be rejected by the Protocol rule 13 described above.
Note for programmers: The check is implemented in the method GetMedianTimePast() and called in method AcceptBlock(), file main.cpp:
bool CBlock::AcceptBlock(CValidationState &state, CDiskBlockPos *dbp)
{
...
// Check timestamp against prev
if (GetBlockTime() GetMedianTimePast())
return state.Invalid(error("AcceptBlock() : block's timestamp is too early"));
...
}
http://btc-base.blogspot.sk/2014/01/bitcoin-transactions-why-it-is.html