back

by magnetic·9y ago·view on hn ↗
If I "control 50%+" of the hash power of the network can't I write my own transaction history from a given point for the world to gobble? If that is so, can't I simply transfer all the coins to my account, and go to some exchange and get $$ for my $COINs? You can roll back the history if you want, but as long as I controlled the network long enough to get $$ out of my ill gotten $COINs, it seems like I've been able to rob the network of it's market cap. And if you roll back history, isn't the exchange (that gave me $$ for my $COINs) going to be extremely upset to have neither the coins nor the $$?
1 comments
any point, yes but you'll have to play catch-up with the main chain. suppose you want to take over all the chain starting from 2 weeks ago. even if you have 51% of the network, you're at a disadvantage already because your chain is 2 weeks behind, and the main chain is constantly advancing. you only have a 1% speed advantage over the main chain, so it will take ages for you to catch up (almost 4 years to be exact, assuming the hashrate stays constant). keep in mind that getting 51% is hard as it is because it requires you to either double the current hash rate (ie. you add hashing power equal to the network's current hash rate) which is incredibly expensive, or hack 51% the pools which is easier, but also likely to be noticed. in either case, once the fork occurs, alarm bells will go off everywhere and every competent exchange/payment processor is going to shut down all withdraws/deposits until the situation is investigated. once it's discovered that a malicious actor successfully attempted a 51% attack, the price of the coin will drop to 0 and your efforts would be wasted.

if all you want to do is crash bitcoin then you'd have achieved your goal (albeit at a huge expense), but it's certainly not a good way of making money.

Thanks for the reply. Could you please elaborate on a couple of things I didn't quite understand? First, why would I want to start from "2 weeks ago"? Why can't I simply start from the tip of the chain and start "writing history" as I see fit? (in other words: why do I need to start with a handicap?) Second, you claim that it is incredibly expensive, but have you done the math? As long as the cost is smaller than the market cap, it seems there's a reasonable opportunity for a positive ROI, and I know the market cap is very very large... For sure there will be some alarm bells that go off at some point, but the question is whether the window between the attack and the "exchanges shutting down" is large enough to have a positive ROI on the cost of the attack.
>First, why would I want to start from "2 weeks ago"? Why can't I simply start from the tip of the chain and start "writing history" as I see fit

because blocks contains transactions, not balances, and transactions are validated individually (simplified: bitcoins are sent to public keys, and to spend those coins, you need to sign "send coins to public key x" with your private key), thus ensuring that if you took control right now, you can't make arbitrary transactions, and you're stuck with the current transaction state.

Maybe I didn't ask correctly. I understand that the blocks contain transactions, not balances, but what I don't understand is why there would be a 2 week lag when I start my fork. It seems like any client can get to the "tip of chain" pretty easily, which is close to the "now" point, except for the blocks that are currently being mined left and right. That's the point where a 51% mining power would be able to start writing history, by basically creating the longest chain (due to its superior mining power). Why would I be trying to fork at now minus 2 weeks? What am I missing? (I can't sign transactions for other people, but I could attack via double spending, couldn't I?)
Because if you got 51% hashing power and started mining your fork today, what you can't do are:

* mine arbitrary amounts of money, since how much you can get from each block is enforced by every node in the network

* generate arbitrary transactions (ie. stealing people's money) since those transactions would need to be signed by those peoples' private keys (which you don't have), and the validity of those signatures are checked by every node in the network.

* rewrite history (ie. saying a transaction from a year ago never happened), since your block builds on top of those blocks, and forcibly putting transactions in your block that contradict the history contained in those blocks would cause other clients to reject your block. you could get around this by building your block on top of a block that was around before that transaction occurred, but then you will be met by the "catching up" problem, since the "tip" of the chain is determined by the sum of the proof of work in all of its blocks. your chain of 7 years + 1 block would have much less proof of work than the legitimate chain of 8 years. by proof of work i'm referring to the same mechanism that controls the difficulty in mining blocks.

what you could do:

* collect the 12.5 BTC/block mining reward (but you can get this without being evil)

* block other people's transactions from being processed, essentially freezing other peoples' balances at the point when the fork started (doesn't get you any money though)

* doubling your income as a miner by not building on top of other miners' blocks, allowing you to capture all the block rewards instead of only 51%. (the ensuing panic and market crash would most likely make this move not profitable)

Thanks for the details. Yes, I agree with what you are saying. There aren't many things you can do when you have the majority of the hash power, but isn't there at least a (few?) double spend attack(s) you could attempt?