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

v2: Node Pools #5

shazow opened this Issue May 27, 2018 · 0 comments


None yet
1 participant

shazow commented May 27, 2018

Pool flow

  • Receive connection from host (websocket),
    verify signed stats payload,
    add to poolnodes,
    receive signed stats recurringly (update node metadata).
  • Receive Connect from client (verify signed jsonrpc2),
    send connect request to hosts subset (websocket),
    respond with host candidates (jsonrpc2) when all responses complete or timeout is
  • When host disconnects (websocket), remove from poolnodes.

Host flow

  • Connect to pool (websocket) and send signed stats (sync state, peers).
  • Receive connect request (websocket),
    respond when whitelist is complete (ethrpc.AddTrustedPeer).
  • Receive disconnect request (websocket),
    issue eth RPC to disconnect (ethrpc.RemoveTrustedPeer).

Client flow

  • TODO: Register flow
  • Send Connect to pool (signed jsonrpc2),
    receive a set of host candidates (jsonrpc2),
    add hosts to ethrpc (ethrpc.AddTrustedPeer).
  • Send Update to pool (signed jsonrpc2),
    receive balance update

  • vipnode-host frontend: Registration process to join the vipnode pool.
  • vipnode-client frontend: Registration process (can be a smart contract, or anything else) to associate a light client's enodeID with the account.
  • vipnode-pool will act as a bootstrapping server, routing connecting vipnode light clients to the next available vipnode full node.
  • vipnode-pool will keep track of which light client is connected to which full node, and other usage-related analytics.
  • vipnode-pool will keep track of full node availability and capacity, in order to avoid routing light clients if the full node is full or down.
  • vipnode-host will run on fulll nodes which will interface with the geth or parity RPC and keep track of which enodeIDs need to be whitelisted, and which ones are connected and for how long (from the host's perspective).
  • vipnode-client will implement an vipnode-pool API to:
    1. Register the current enodeID (if not already registered)
    2. Send back the set of connected peers (to allow time-usage billing), from the client's perspective.

@shazow shazow closed this Oct 3, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment