Hello, I'm working in jnano-node a JVM implementation of the protocol and I came up with an idea: features.
During the handshake we could exchange information about the capabilities of each node and decide how to communicate (i.e. a feature is not supported by one of the nodes won't be used). This can cover situations like:
New fatures (vote-by-hash)
Experimental features (new serialization protocol)
Expose characteristics which is useful in some context (historical node vs light wallet)
This could lead to way more flexible protocol allowing to introduce big chances without waiting for other nodes to upgrade and after enough adoption you could make an experimental feature part of protocol.
EDIT: including more details
We could add a new extension 4 for handshake which will have fixed length and in the end we could add the features ids (with some limitation like max 10 features) replacing the handshake with extension 1, 2, 3
Or just keep it as it is and add to the end of each handshake answer the features.
It's also important to keep the track of those extensions to avoid collision (I'm imagining a scenario with multiple implementations of the protocol) similar to coin-type
Hello, I'm working in jnano-node a JVM implementation of the protocol and I came up with an idea: features.
During the handshake we could exchange information about the capabilities of each node and decide how to communicate (i.e. a feature is not supported by one of the nodes won't be used). This can cover situations like:
This could lead to way more flexible protocol allowing to introduce big chances without waiting for other nodes to upgrade and after enough adoption you could make an experimental feature part of protocol.
EDIT: including more details
We could add a new extension 4 for handshake which will have fixed length and in the end we could add the features ids (with some limitation like max 10 features) replacing the handshake with extension 1, 2, 3
Or just keep it as it is and add to the end of each handshake answer the features.
It's also important to keep the track of those extensions to avoid collision (I'm imagining a scenario with multiple implementations of the protocol) similar to coin-type