0

What happens if no (unique) longest chain of blocks exists, so that the current state of Ethereum is ambigious?

I know that the longest chain of blocks are always taken to be the current state of Ethereum.

Say, that there are two longest chain of blocks.

Could it happen that 50% of miners dedicate their work on one chain, while the other miners work on the other chain? In this case, it could be that the chains are extended closely in time, so that Ethereum's state remains ambigious for an arbitrary amount of time?

Does the protocol say anything about how to avoid this scenario?

marked as duplicate by lungj, Richard Horrocks, carver, Ismael, Badr Bellaj Sep 5 '17 at 8:19

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

1

The rule is that miners must mine on the longest chain even if it is only slightly longer than another chain. Since blocks are created at random, a situation where there are rival chains of the same length is highly unlikely to persist for long under normal conditions. See the Bitcoin whitepaper, where the mechanism currently used by Ethereum was first described: https://www.bitcoin.com/bitcoin.pdf

If the network becomes partitioned so that half the miners are unaware of the blocks created by the other half, this could create long divergent chains. Ultimately one would be longer than the other, so the situation would be resolved one way or the other when the network partition was fixed. However, until this happened nodes that were unaware of the partition could be assuming that transactions were adequated confirmed, because they were many blocks deep, only to later see them orphaned when the partition was resolved.

This problem can be somewhat migitated by clients paying attention to the hashrate, and warning the user if it drops. (This will also help with situations where the user is maliciously isolated from the network and fed a shorter chain.) However, a drop in the hashrate can also occur for other reasons, and in theory a partition could coincide with an increase in the total hashrate.

The problem should be solved, or at least greatly improved, if and when Ethereum moves to Proof of Stake: Clients will have a list of validators who they expect to be online, and the network shouldn't be able to finalize blocks if half of them have disappeared to the other side of a network partition.

  • What do you mean by "blocks are created at random" and what does the hashrate say? Orphaned transactions are not executed, right? – Shuzheng Sep 4 '17 at 5:28
1

I think your question can be split in two questions:

  • What happens if two blocks A and B are mined at the same time, and due to latency the miners are split between those receiving A before B and the others receiving B before A.

To solve this problem, which occurs quite often due to the short ethereum block time, there is a mechanism, called GHOST, allowing to include "uncles" in the blockchain. That is, if e.g. a block C is included after A in the blockchain, and if the miner of C is aware of the existence of legitimate block B, then B can be recognized as a legitimate part of the blockchain.

To get more informations about GHOST, you can e.g. look at this question.

  • What happens if the network is split in two parts for a long time.

Then, with probability close to 1, one of the two sides of the network will get a longer blockchain after a small time (one hour is already long).

To resume, such a situation has a small probability to happen and an even small probability to last.

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