I have been reading up on data chains and I have a question about how network failures are handled, specifically net splits.
During a network split, it appears that equally valid but conflicting data chains could be constructed. When the split ends, how are these conflicting chains reconciled? Which one wins?
If that doesn’t make sense, or I have an incorrect assumption, here is a more in depth walk through my reasoning:
From what I understand, the network as a whole can continue to function as long as there is at least one quorum of valid voters for a current section; where valid voters and current sections are defined by a valid chain segment.
In a massive communication failure, the network will remain offline until enough nodes reconnect to each other to find a valid quorum.
A valid quorum can then continue to add blocks to the end of its chain segment, re-adding all orphaned nodes, merging any orphaned chains into its own, and rebuilding the network.
Is this a correct summary?
If that is correct, what happens in a net split scenario, where the network is temporarily split into two subsets of nodes. Each subset can communicate within itself, but the subsets cannot communicate with each other.
From the description above, as long as a valid quorum remains in each subset, they both should be able to repair the network and continue on functioning.
What happens when the subsets regain communication with each other and attempt to build the full network?
Both subsets will have valid chain segments that conflict with each other (as defined by the rules detailed here: https://forum.safedev.org/t/data-chains-general-rules-in-an-eventually-consistent-network/687).
It seems there must be a rule used to choose which chain wins, but I could not find it in the current documentation. Did I miss it somewhere?