Skip to content

ENR Size limit #189

@fryorcraken

Description

@fryorcraken

Problem

31/WAKU2-ENR conforms to the EIP-778 size limit of 300 bytes.

Solutions

  1. The preliminary idea is limiting (or not using) multiaddrs in ENRs that have the rs attribute.
  2. Add fqdn and wss_port fields to the ENR and prefer it over multiaddrs to suport secure websocket information. Also do not encode wss_port if value is 443. 31/WAKU2-ENR: Move websocket connection info from multiadrrs to ws_port + fqdn rfc#578
  3. We encode information in several ENRs. Meaning that one node can produce 2 ENRs: one contains rs, other contains multiaddrs for wss address, (and a 3rd one could contains rendez vous multiaddrs)
  4. We replace ENR with something else that does not have a size limit (libp2p's signed envelops?)
  5. Introduce a simple req/resp protocol that allows retrieving additional info from a node (maybe extending libp2p's identify protocol).

Evaluation of solutions

  1. Is fine short term but js-waku (status-web) does need access to the rs field even if only using store/filter/light push
  2. Is the current preferred solution
  3. Not a solution we want to push
  4. waku2 info is covered as part of identify so it could be removed from ENR?

Acceptance criteria

  • Define a way to convey all necessary information in ENR

Notes

a. For efficiency reason, the rs information must be present in the ENR and cannot be transmitted via req/resp protocol (4)
b. Connection information (ws/tcp/ip/fqdn details) must be present in the ENR otherwise the req/resp protocol cannot happen
c. waku2 information is already covered as part of identify so could be removed?
d. A node that provide circuit relay info would not also provide ws info: if it needs to provide circuit relay info to be connected to, then it means it does not expose a direct port to the internet and hence ws connection is not possible @richard-ramos to confirm this point.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions