This repository has been archived by the owner on Nov 6, 2020. It is now read-only.
Parity violates EIP-8, causing the network to partition #6647
Labels
F2-bug 🐞
The client fails to follow expected behavior.
M4-core ⛓
Core client code / Rust.
P0-dropeverything 🌋
Everyone should address the issue now.
Milestone
The DEVp2p protocol originally expected version numbers to match exactly for two peers to communicate with each other. This turned out to be a very bad idea because it locked in the protocol to one particular version, and upgrading became semi-impossible due to the network needing to switch over all at once to any update.
As a result, in 2015, EIP-8 was proposed and accepted to add forward compatibility into the DEVp2p layer. In essence, the important points of the EIP were:
Both clients will then be aware of the highest common version number and speak that.
Unfortunately, Parity did not yet implement the part of ignoring the remote version number, rather forces it to be exactly
v4
.With the approval of EIP-706, the DEVp2p protocol was extended with Snappy support, and version bumped to
v5
. The Byzantium release of Geth v1.7.1 includes this new protocol feature, and correctly advertises it's highest version as5
.All older peers in the network should ignore
v5
, advertisev4
themselves, which will cause Geth v1.7.1 to correctly identify an older protocol version and not enable Snappy. This works correctly for all old Geth nodes (Homstead and above), however Parity rejects such connections:The net effect is, that as people upgrade for Byzantium, the network will fall apart unless Parity is patched to fully implement the 2015 spec of ignoring the announced DEVp2p version number.
The text was updated successfully, but these errors were encountered: