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

Lokinet integration #936

Merged
merged 8 commits into from Nov 27, 2019

Conversation

@jagerman
Copy link

jagerman commented Nov 26, 2019

This adds some RPC end points we need for lokinet integration:

  • RPC endpoint to retrieve the ed25519 private key (also adds the missing ed25519/x25519 pubkeys to the public key RPC response)
  • adds RPC endpoint for lokinet to ping lokid
jagerman added 6 commits Nov 8, 2019
This allows a `"if_block_not_equal": "hash"` parameter to be given to
`get_n_service_nodes` which, if the given value matches the current
top block hash, skips building and returning a reply.

This is primarily aimed at lokinet which polls fairly frequenty for an
update but where the vast majority of those polls contain no new
information.

It also removes the get_all_service_nodes_public_keys RPC request
completely as lokinet was the only consumer of it (particularly unlikely
that anyone else was using this because it was returning the keys
base32z-encoded).
With the previous commit we no longer need this conversion (and lokinet
is perfectly happy just getting hex encoded values instead).
Also adds unordered_set serialization support (not that we currently
need it, but it's just two lines to support).
This simplifies lokinet as it doesn't need to worry about finding the
private key files; sometime after the next fork we do the same
simplification to loki-storage-server to use this RPC call as well.

Aside from simplifying the external components, I also have an idea here
of an advanced SN setup that hosts multiple lokid's on an internal,
beefy dedicated server with good redundant storage and lots of memory,
combined with multiple VPSes with lots of bandwidth for
lokinet/loki-storage but not enough storage/memory capacity to host the
blockchain, and not having to coordinate storage across machines makes
this setup substantially easier.
This abstracts much of the storage server ping code to work for both
storage server and lokinet.
@jagerman jagerman force-pushed the jagerman:lokinet-integration branch from e5a460d to b64097a Nov 26, 2019
@jagerman

This comment has been minimized.

Copy link
Author

jagerman commented Nov 26, 2019

(The other commit here is cherry-picked (unmodified) std::array serialization support commit from the blink PR.)

@Doy-lee

This comment has been minimized.

Copy link
Collaborator

Doy-lee commented Nov 27, 2019

looks good to me, you want to cherry-pick #880 in + code review? some overlap.

jagerman added 2 commits Nov 27, 2019
Renamed:
  - `if_block_not_equal` -> `poll_block_hash`
  - `gave_if_not_equal` -> `polling_mode`

Added lokidocs documentation for the new and existing get_n_service_node
fields, and adds magic codes to disable the internal variables.
@jagerman

This comment has been minimized.

Copy link
Author

jagerman commented Nov 27, 2019

looks good to me, you want to cherry-pick #880 in + code review? some overlap.

That explains my feeling of deja vu when I added the pubkeys again. #880 review comments are addressed, and merged everything into here.

@Doy-lee Doy-lee merged commit 29e65e0 into loki-project:dev Nov 27, 2019
1 check was pending
1 check was pending
continuous-integration/travis-ci/pr The Travis CI build is in progress
Details
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
2 participants
You can’t perform that action at this time.