Skip to content

2022-11-15 v0.13.0

Choose a tag to compare

@jm-clius jm-clius released this 15 Nov 09:52
· 1357 commits to master since this release

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-RELAY implementation.
  • 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-STORE no 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 TaintedString type. #1326
  • Fixed and replaced unreliable regex library and usage. #1327 #1328
  • Fixed and replaced deprecated ganache-cli node package with ganache for RLN onchain tests. Added graceful daemon termination. #1347

Docs

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 --store must explicitly be set to true (previously this was true by default)
  • the --sqlite-store option 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-messages option is deprecated - simply remove this from config. Messages will be persisted if store is set to true.
  • the --db-path item is deprecated. Replace with --store-message-db-url followed by a URL formatted path, e.g. sqlite://<database-file-path>
  • the --store-capacity and --sqlite-retention-time options are deprecated. Replace with --store-message-retention-policy followed 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-peers option is deprecated. Replace with --peer-persistence.