2022-11-15 v0.13.0
NB: this release contains important configuration changes for store service nodes and nodes that persist peers. See the Upgrade Instructions under the release notes for more.
Release highlights:
- A Waku canary tool to check if nodes are reachable and what protocols they support.
- Simplified configuration for store protocol. This new guide explains how to configure store from this release forward.
- Support for environment variables to configure a nwaku node. See our configuration guide for more.
- A Waku network monitoring tool to report network metrics, including network size, discoverable peer capabilities and more.
Features
- Added Waku canary tool to check if i) a given node is reachable and ii) it supports a set of protocols.
- Simplified Waku store configuration.
- Decoupled Waku peer persistence configuration from message store configuration.
- Added keyfile support for secure storage of RLN credentials.
- Added configurable libp2p agent string to nwaku switch.
- Support for configuration with environment variables.
- Added example module to showcase basic nwaku relay usage.
- Added a nwaku network monitoring tool to provide metrics on peers, network size and more.
Changes
- Removed support for Kilic's RLN library (obsolete).
- Improved logging for
17/WAKU-RLN-RELAYimplementation. - Connection to eth node for RLN now more stable, maintains state and logs failures.
- Waku apps and tools now moved to their own subdirectory.
- Continued refactoring of several protocol implementations to improve maintainability and readability.
- Periodically log metrics when running RLN spam protection.
- Added metrics dashboard for RLN spam protection.
- Github CI test workflows are now run selectively, based on the content of a PR.
- Improved reliability of CI runs and added email notifications.
- Discv5 discovery loop now triggered to fill a 34/WAKU2-PEER-EXCHANGE peer list cache asynchronously.
- Upgraded to Nim v1.6.6.
- Cleaned up compiler warnings on unused imports.
- Improved exception handling and annotation.
13/WAKU2-STOREno longer enabled by default on nwaku nodes.- Merkle tree roots for RLN membership changes now on a per-block basis to allow poorly connected peers to operate within a window of acceptable roots.
Fixes
- Fixed encoding of ID commitments for RLN from Big-Endian to Little-Endian. #1256
- Fixed maxEpochGap to be the maximum allowed epoch gap (RLN). #1257
- Fixed store cursors being retrieved incorrectly (truncated) from DB. #1263
- Fixed message indexed by store cursor being excluded from history query results. #1263
- Fixed log-level configuration being ignored by the nwaku node. #1272
- Fixed incorrect error message when failing to set 34/WAKU2-PEER-EXCHANGE peer. #1298
- Fixed and replaced deprecated
TaintedStringtype. #1326 - Fixed and replaced unreliable regex library and usage. #1327 #1328
- Fixed and replaced deprecated
ganache-clinode package withganachefor RLN onchain tests. Added graceful daemon termination. #1347
Docs
- Added cross client RLN testnet tutorial.
- Fixed broken link to Kibana in cluster documentation.
- Added an improved quickstart guide for operators.
- Added a Docker usage guide for operators.
- Added operator guide on running RLN spam prevention on nwaku nodes.
- Extended guidelines on nwaku configuration methods for operators.
- Added new store configuration guide to reflect simplified options.
This release supports the following libp2p protocols:
| Protocol | Spec status | Protocol id |
|---|---|---|
11/WAKU2-RELAY |
stable |
/vac/waku/relay/2.0.0 |
12/WAKU2-FILTER |
draft |
/vac/waku/filter/2.0.0-beta1 |
13/WAKU2-STORE |
draft |
/vac/waku/store/2.0.0-beta4 |
18/WAKU2-SWAP |
draft |
/vac/waku/swap/2.0.0-beta1 |
19/WAKU2-LIGHTPUSH |
draft |
/vac/waku/lightpush/2.0.0-beta1 |
The Waku v1 implementation is stable but not under active development.
Upgrade instructions
NB: this release contains important changes to the configuration for nodes that (a) store historical messages, or (b) persist peers
(a) if your node is configured as a store service node:
- it is now mandatory that
--storemust explicitly be set totrue(previously this wastrueby default) - the
--sqlite-storeoption is deprecated - simply remove this from config. The SQLite store will now automatically be selected if you've set a--store-message-db-url(see below). - the
--persist-messagesoption is deprecated - simply remove this from config. Messages will be persisted ifstoreis set totrue. - the
--db-pathitem is deprecated. Replace with--store-message-db-urlfollowed by a URL formatted path, e.g.sqlite://<database-file-path> - the
--store-capacityand--sqlite-retention-timeoptions are deprecated. Replace with--store-message-retention-policyfollowed by either a time-based policy (time:<duration-in-seconds>) or absolute capacity (capacity:<messages-count>)
See this configuration guide for more on the simplified store config items.
(b) if your node has peer persistence enabled:
- the
--persist-peersoption is deprecated. Replace with--peer-persistence.