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

[Rendezvous] Is a PoW requirement useful? #337

Closed
thomaseizinger opened this issue Jun 21, 2021 · 2 comments · Fixed by #342
Closed

[Rendezvous] Is a PoW requirement useful? #337

thomaseizinger opened this issue Jun 21, 2021 · 2 comments · Fixed by #342

Comments

@thomaseizinger
Copy link
Contributor

thomaseizinger commented Jun 21, 2021

Originally raised by @burdges in libp2p/rust-libp2p#2107 (comment).

I think DDoS adversaries are botnets, so they often have massive untapped CPU, GPU, and even hard drive. I'd think honest peers cannot quickly solve a challenge within a difficulty level that presents an obstacle for adversaries.

You should probably make applications choose their rendezvous points and simply document that they should do so carefully using their own deterministic randomness. We'll eventually use a rendezvous-like protocol in polkadot, but we'll dictate the rendezvous point by VRF. Tor also dictates introduction points also via deterministic randomness, not a VRF per se but is satisfies their security properties, including being anonymous to the rendezvous point.

@thomaseizinger
Copy link
Contributor Author

thomaseizinger commented Jun 22, 2021

According to #334 (comment), we don't actually want PoW in the protocol.

I'll leave this ticket open to track that the spec needs to be changed to clarify that, in particular I think we should:

  • State the idea of using verifiable randomness to choose a rendezvous node among a fleet of nodes. This should properly address the DDoS concern. The exact behaviour is TBD.
  • Include an "alternative designs considered" section that explains why things like PoW are not useful.

@burdges
Copy link

burdges commented Jun 22, 2021

Any deterministic/verifiable randomness sounds application specific, but that's fine given the applications being build on libp2p. I only gave examples with a radomness beacon, but anyone without one could consider H("app" ++ date ++ dest_pk) if dest_pk stays hidden from the network, or somehow VRF.Sign(sk, "app" ++ date) and VRF.Verify(pk, "app" ++ date) if pk is public.

thomaseizinger added a commit to thomaseizinger/specs that referenced this issue Jun 29, 2021
thomaseizinger added a commit to thomaseizinger/specs that referenced this issue Jun 29, 2021
mxinden pushed a commit that referenced this issue Jul 11, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants