3 ms·
A partition of the connectivity graph. Imagine we have two Bitcoin Core nodes connected by an intermediate Segwit2X [sic] node: 1X(a) ----- 2X ----- 1X
by kobeya 9y ago
A partition of the connectivity graph. Imagine we have two Bitcoin Core nodes connected by an intermediate Segwit2X [sic] node:
1X(a) ----- 2X ----- 1X(b)
When the 2x node starts relaying post-fork blocks, it is seen as misbehaving by the 1x peers and dropped by both of its neighbors. The unattended consequence is that 1x(a) is no longer connected to 1x(b). If the mining network is only connected to one of these partitioned networks, then it is possible that the other will not hear of new blocks. The bitcoin nodes will have a different view of the network simply because they are not connected to each other. Worse there might be a few miners on the less hashrate side that still move the network forward a few blocks. If this situation persists, e.g. because network operators are asleep at the wheel, it could be exploited by selectively connecting and broadcasting double-spends to the two networks.
To prevent this from happening the Bitcoin Core team added code to 0.15 and higher that will per-emptively disconnect peers that advertise themselves as Segwit2x. Therefore a 0.15 node will only connect to peers that will relay good blocks from its perspective, and it is much less likely that such a network partition would occur. As long as there exists some nodes that don't auto-disconnect (e.g. old bitcoin nodes) then the Bitcoin Core 0.15+ and the Segwit2x networks will remain connected until the fork occurs.
- theprotocol 9y agoThanks, that was very helpful. This issue did not occur to me.