4

Let's call it a "time machine attack".

Suppose I have an isolated network of n clients with a significant hash rate, install my client software on that and start mining on an older blockchain.

Since the difficulty was lower back then, I get lots of blocks in very little time, but my timestamps could be forged, and the difficulty increases, but not so much as the real network difficulty (however I am fully in control of my network and can do anything on my blockchain, increasing and decreasing difficulty if I need to, faking timestamps, and so on).

As soon as my chain is longer than the official one, I rejoin the network. What happens then? Does my longer chain overwrite the other one, effectively giving me all of the bitcoins ever generated after my split?

Update - explanation

The attacker doesn't need 51% of the computing power of the network. A single pool could start hashing from some point back in time when the difficulty was low, then increase or decrease it in order to grow the blockchain faster. The last "few" blocks could even be harder than the official network difficulty (and take days instead of minutes). The attacker can do what he wants on his network, changing network difficulty and forging timestamps, and the length of the blockchain does not depend only on the current network difficulty. I think it's possible to generate a longer blockchain with "relatively low" hash rates (2% - 20% of the network), it could take months (instead of years) but it could be possible in theory.

1

You would not be able to fool any bitcoin client that had progressed further than your point of split.

However if you fed your blockchain to a client that was starting at the beginning or just starting from before you point of split you could feed them false blocks indefinitely as long as you were the only other peer they talked too.

I don't think it would be a practical attack. There is no practical way to prevent them from talking to another peer, and the moment another peer presents a blockchain of greater difficulty yours would be ignored.

3

How can it be longer if you don't have more computing power than the entire network? Remember that the network converges on the chain that was hardest to generate, not the one with more blocks.

  • I don't have more computing power than the entire network now, but a recent GPU alone has more than the entire network at the beginning. Say I have enough computing power multiplied by the number of blocks I can generate before rejoining. It would take some time, but it would still be less than 51% of the network (today). – G B Mar 6 '14 at 13:42
  • For example: a big mining pool suddenly "disappears" from the official network, and starts mining alone on an older blockchain, getting the equivalent of 1 year (or more) in a few weeks/months, at a constant hash rate. The last few blocks could even be harder than the official network (it would take some hours instead of 10 minutes, but why not...). So, now I have the longest chain. Who is king? :-) – G B Mar 6 '14 at 14:02
  • 1
    Longest chain means highest total difficulty NOT largest number of blocks. – uminatsu Mar 6 '14 at 19:29
3

You misunderstood concept of "longest chain". It must have higher total cumulative difficulty, not just more blocks.

  • You misunderstood my explanation: "higher total cumulative difficulty" can be forged, if you have enough hash power, (but still much less than 51%). I can go "fast forward and back" in time, then get some high diff blocks (at current network difficulty or higher) at the end, cumulative difficulty is the problem, not the solution. – G B Mar 7 '14 at 8:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.