Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Negotiate aw and protocol versions during the handshake #25

Open
7 tasks
loongy opened this issue Apr 7, 2020 · 0 comments
Open
7 tasks

Negotiate aw and protocol versions during the handshake #25

loongy opened this issue Apr 7, 2020 · 0 comments
Labels
enhancement New feature or request
Milestone

Comments

@loongy
Copy link
Contributor

loongy commented Apr 7, 2020

Right now, peers engage in a simple handshake immediately after establishing a connection to verify their identities. This issue proposes extending the handshake to negotiate the aw version being used, and the application-specific protocols being sent via aw.

Negotiate aw version

After establishing identities, the client is expected to send their aw version to the server. This establishes whether or not the client and server are compatibility based on the aw version. If the version is accepted by the server, then an acknowledgement must be sent back. Otherwise, the highest version supported by the server must be sent back, and the client must send an acknowledgement or drop the connection. Semver must be used to determine compatibility.

  • Implemented
  • Tested
  • Documented

Negotiate protocol versions

If the aw versions are compatible, then the client should send a list of the "application-level" protocols that it will be communicating via aw. For example: in RenVM, the client might send the protocols hy-1.4.0 and zo-1.0.3 to establish the application-specific messages that can appear within the aw messages. If all protocol version are accepted by the server, then an acknowledgement must be sent back. Otherwise, the highest version supported by the server for each protocol must be sent back, and the client must send an acknowledgement or drop the connection. Semver must be used to determine compatibility, but it is not required.

  • Protocol versions standardised
  • Implemented
  • Tested
  • Documented
@loongy loongy added this to the v0.4.0 milestone Apr 7, 2020
@loongy loongy added the enhancement New feature or request label Apr 7, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant