nanocurrency / nano-node

Nano is digital currency. Its ticker is: XNO and its currency symbol is: Ӿ
https://nano.org
BSD 3-Clause "New" or "Revised" License
3.48k stars 786 forks source link

Proposal: features #1308

Open rotilho opened 5 years ago

rotilho commented 5 years ago

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

cryptocode commented 5 years ago

https://github.com/nanocurrency/raiblocks/issues/1120 is somewhat relevant

rkeene commented 5 years ago

This is similar to SMTP's EHLO