2023-10-23 Waku weekly

Waku Network Can Support 10K Users

  • achieved:
    • Vac/DST team has done further runs with up to 600 nodes in the network as part of wrapping up a blog post report.
    • Staging fleet for Status with static sharding and PostgreSQL deployed and being tested by go-waku team using local changes in Status Desktop.
  • next:
    • Dogfooding of Status Desktop with Status staging fleet. Will aim to create a small internal Waku community.
    • Continue integration of static sharding in status-go.
  • risks:
    • Dependency on Vac/DST to conclude ~1k nodes simulations.
    • PostgreSQL implementation has not yet been proven more performant than SQLite. Further improvements and testing in progress.
    • Implementation of static sharding in Status Communities and design decisions mostly driven by go-waku developer, with minimal input from Status dev (1, 2, 3). See status-go#4057 for remaining work. Mitigation by on-boarding Chat SDK lead on 6 Nov to drive effort.

Targeted dogfooding for Status Communities

  • achieved: hardcoded bootnodes ENRs in addition to DNS Discovery URLs as a way to overcome nameserver issues. Use a static shard instead of the default pubsub topic. Update tool to crawl and discover nodes via discv5.
  • next: fix if necessary strange behavior with discv5 when ENRs in DNS discovery URL do not contain shards. Document steps for dogfooding.

Waku Network can Support 1 Million Users - 2023-11-30

  • achieved: See 10k milestone update for PostgreSQL status.
  • risks:
    • Dependency on Vac/DST to run 10k nodes simulations. Tracked under vac:dst:eng-10ktool.
    • Wakutorsis tool is being dropped, meaning new tooling needs to be developed for 10k nodes simulations. It is currently uncertain whether such tool can be developed.
    • Large scale simulations done by Vac/DST only covered nwaku relay. go-waku, status-go simulations are not planned short term (theoretical review of Status Communities messages is), nor are simulations including request-response protocols such as store and filter.

Waku Network Gen 0 - 2023-12-01

  • achieved:
    • Critical path work for autosharding done in nwaku, in progress on go-waku
    • Parameters for the Waku Network Gen 0 have been captured in an RFC and use as a basis for simulations and theoretical analysis, removing uncertainty on this milestone around message rates, performance and expected bandwidth usage.
  • risks:
    • Usage of RLN in js-waku and dependency on a (centralized?) Web3Provider remains unclear as one needs to know the merkle tree state (on chain) to generate proofs.
    • We are progressively moving a nwaku engineer to a solution engineer role we need to backfill the role.
    • js-waku team is juggling between dev ex and gen 0 with only 2 engineers (3rd one joining at end of Oct) so delivery in this client is likely to lag behind other clients.

3.2: Basic DoS protection in production

[js-waku] Task: Manage RLN membership(s) and keys

  • achieved: completed flow up items and main stream of work;

[js-waku-examples] feat: re-create rln-js

  • achieved: experimented with different frameworks, almost complete rewriting the example;

[research] Message propagation times with waku-rln

  • achieved: Ran simulations with 1000 nwaku nodes with rln enabled, with the goal of measuring message propagation delays under different conditions.
  • next: Some issues with the current simulations, need to investigate shadow tool to simulate CPU “time passing”. Some results are not valid.

2.1: Production testing of existing protocols

[js-waku] chore: improve logging when fails to connect to a node

  • achieved: setup a Logger for more verbose and modular error readbility

[js-waku] Peer Management: Connection and Disconnection

  • achieved: The Connection and Disconnection Peer Management epic has been closed

[waku-rust-bindings] feat: filterv2 support

  • achieved: added support to waku_filter_subscribe
  • next: write unit tests for filterv2 and publish new version

Quality Assurance processes are in place - 2024-03-31

This work is tracked with vac:dst:software-testingwaku

Support Many Platforms - 2024-04-30

Ship RLN as part of non-native SDKs

[go-waku] refactor: add user_data to c-bindings

  • achieved: exposed filterv2 subscription details (useful for rust bindings)

REST API service node

[nwaku] chore: reorganize rest-api types

  • achieved: Enhancements on Rest request error handling.
  • next: Finalize api spec and doc after PR review. Work in progress: rest api type reorganization. RFC changes to enhance light-push failure response.
  • blocking: Fixing found issues during release.

[go-waku] feat: lightpush REST API

  • achieved: Add lightpush rest api and test. Rest Filter v2 in progress.

Other Work

Enhancements

[nwaku] feat: allowing users to choose port 0 for dynamically allocated ports

  • achieved: fixed failed tests, added a test case to cover the changes, small refactor and raised PR
  • next: get PR reviewed and implement feedback

[nwaku] feat: provide a way to define advertised addresses

  • achieved: merged PR with initial fix. Implemented and raised PR for the --ext-multiaddr-only CLI flag
  • next: get PR reviewed, implement feedback and merge

Bugs

[nwaku] bug: WSS enabled node stops accepting websocket connections after some time

  • achieved: discovered and debuged WSS issue, discovered and debugged REST API causing SIGSEGV, oversaw release v0.21.0
  • next: help with release v0.21.1, investigate existing bandwidth management work

Ecosystem Development - Docs

  • achieved:
    • got familiar with what The Graph is doing with Waku, @waku/sdk update in @waku/react
    • Preparation to Polygon Enugu
    • Peer management disconnection docs
  • next:
    • Work on metrics dashboard
    • Record some explainer videos
    • Docs redesign
    • Outline for encryption docs