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.
- Dependency on Vac/DST to run 10k nodes simulations. Tracked under
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