At current when two peers first connect they exchange some information about the current state of their chains with the status message, but there is some information that can be useful to help peers know how to interact with each other. This should not be added to the status message, as the information is static per connection and sending it with every status update would be wasteful. Instead, a new handshake message hello is proposed.
An initial stab at the contents of a hello message might be:
- genesis state root (32 bytes)
- genesis fork version (4 bytes)
- client name/semver e.g.
prysm/1.2.3 (bytes)
- supported version(s) of the networking spec (repeated uint32)
This provides a basis for understanding if the two peers could talk to each other, even if either or both of them have no state information beyond genesis. It also allows for peers to tweak their behaviour depending on known idiosyncrasies in particular client/spec versions.
At current when two peers first connect they exchange some information about the current state of their chains with the
statusmessage, but there is some information that can be useful to help peers know how to interact with each other. This should not be added to thestatusmessage, as the information is static per connection and sending it with every status update would be wasteful. Instead, a new handshake messagehellois proposed.An initial stab at the contents of a
hellomessage might be:prysm/1.2.3(bytes)This provides a basis for understanding if the two peers could talk to each other, even if either or both of them have no state information beyond genesis. It also allows for peers to tweak their behaviour depending on known idiosyncrasies in particular client/spec versions.