nim-waku/CHANGELOG.md

160 KiB

v0.27.0 (2024-04-19)

Note:

  • Filter v1 protocol and its REST-API access have been deprecated.
  • A new field of the WakuMetadataRequest protobuf for shards was introduced. The old shards field (2) will be deprecated in 2 releases time
  • CLI flags --requestRateLimit and --requestRatePeriod have been added for rate limiting configuration. Period is measured in seconds. Limits are measured per protocol per period of time. Over limit will result in TOO_MANY_REQUEST (429) response.

What's Changed

Release highlights:

  • Introduced configurable rate limiting for lightpush and store requests
  • Sync time has been considerably reduced for node initialization
  • Significant refactors were made to node initialization and WakuArchive logic as work towards C-bindings and Store V3 features

Features

Bug Fixes

Changes

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
/vac/waku/filter-subscribe/2.0.0-beta1
/vac/waku/filter-push/2.0.0-beta1
13/WAKU2-STORE draft /vac/waku/store/2.0.0-beta4
19/WAKU2-LIGHTPUSH draft /vac/waku/lightpush/2.0.0-beta1
66/WAKU2-METADATA raw /vac/waku/metadata/1.0.0

The Waku v1 implementation has been removed from this repository and can be found in a separate Waku Legacy repository.

v0.26.0 (2024-03-07)

Note:

  • JSON-RPC API has been removed completely. Instead we recommend you to utilize REST API endpoints that have same and extended functionality. Please have a look at Waku's REST-API reference: https://waku-org.github.io/waku-rest-api
  • Support for Cross-Origin-Resource-Sharing (CORS headers) is added for our REST-API services. This allows you to access our REST-API from a browser. New repeatable CLI flag is added by this feature: --rest-allow-origin="example.com" or --rest-allow-origin="127.0.0.0:*" Flag allows using wildcards (* and ?) in the origin string.
  • Store protocol now has a better support for controlling DB size of Postgres store. This feature needs no user action.

Announcement:

Please notice that from the next release (0.27.0) we will deprecate features.

  • We will decomission the Filter v1 protocol and its REST-API access.

Features

Bug Fixes

  • rln-relay: make nullifier log abide by epoch ordering (#2508) (beba14dc)
  • postgres: import under feature flag (#2500) (e692edf6)
  • notify Waku Metadata when Waku Filter subscribe to a topic (#2493) (91e3f8cd)
  • time on 32 bits architecture (#2492) (0a751228)
  • return message id on waku_relay_publish (#2485) (045091a9)
  • bindings: base64 payload and key for content topic (#2435) (d01585e9)
  • rln-relay: regex pattern match for extended domains (#2444) (29b0c0b8)
  • checking for keystore file existence (#2427) (8f487a21)
  • rln-relay: graceful shutdown with non-zero exit code (#2429) (22026b7e)
  • check max message size in validator according to configured value (#2424) (731dfcbd)
  • wakunode2: move node config inside app init branch (#2423) (0dac9f9d)

Changes

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
/vac/waku/filter-subscribe/2.0.0-beta1
/vac/waku/filter-push/2.0.0-beta1
13/WAKU2-STORE draft /vac/waku/store/2.0.0-beta4
19/WAKU2-LIGHTPUSH draft /vac/waku/lightpush/2.0.0-beta1
66/WAKU2-METADATA raw /vac/waku/metadata/1.0.0

The Waku v1 implementation has been removed from this repository and can be found in a separate Waku Legacy repository.

v0.25.0 (2024-02-06)

Note: Waku Filter v2 now has three additional configuration options --filter-max-peers-to-serve=1000 drives how many peers can subscribe at once and --filter-max-criteria=1000 defines what is the maximum criterion stored per each peers

This release introduces a major change in Filter v2 protocol subscription management. From now each subscribed peer needs to refresh its living subscriptions by sending a SUBSCRIBER_PING message every 5 minutes by default, otherwise the peer's subscription will be removed. --filter-subscription-timeout=300 defines configurable timeout for the subscriptions (in seconds).

New experimental feature, shard aware peer manager for relay protocol can be activated by the flag: --relay-shard-manager=true|false It is disabled by default.

Announcement:

Please notice that from the next release (0.26.0) we will deprecate features.

  • JSON-RPC API will be removed completely. Instead we recommend you to utilize REST API endpoints that have same and extended functionality.
  • We will retire websockets support for RLN on-chain group management. You are expected to use HTTP version of ETH_CLIENT_ADDRESS

Features

  • running validators in /relay/v1/auto/messages/{topic} (#2394) (e4e147bc)
  • rln-relay-v2: update C FFI api's and serde (#2385) (b88facd0)
  • running validators in /relay/v1/messages/{pubsubTopic} (#2373) (59d8b620)
  • shard aware relay peer management (#2332) (edca1df1)

Bug Fixes

  • adding rln validator as default (#2367) (bb58a63a)
  • Fix test for filter client receiving messages after restart (#2360) (7de91d92)
  • making filter admin data test order independent (#2355) (8a9fad29)

Changes

  • rln-relay-v2: use rln-v2 contract code (#2381) (c55ca067)
  • v0.25 vendor bump and associated fixes (#2352) (761ce7b1)
  • handle errors w.r.t. configured cluster-id and pubsub topics (#2368) (e04e35e2)
  • add coverage target to Makefile (#2382) (57378873)
  • Add check spell allowed words (#2383) (c1121dd1)
  • adding nwaku compose image update to release process (#2370) (4f06dcff)
  • changing digest and hash log format from bytes to hex (#2363) (025c6ec9)
  • log messageHash for lightpush request that helps in debugging (#2366) (42204115)
  • rln-relay: enabled http based polling in OnchainGroupManager (#2364) (efdc5244)
  • improve POST /relay/v1/auto/messages/{topic} error handling (#2339) (f841454e)
  • Refactor of FilterV2 subscription management with Time-to-live maintenance (#2341) (c3358409)
  • Bump nim-dnsdisc (#2354) (3d816c08)
  • postgres-adoption.md add metadata title, description, and better first-readable-title (#2346) (2f8e8bcb)
  • fix typo (#2348) (a4a8dee3)

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
/vac/waku/filter-subscribe/2.0.0-beta1
/vac/waku/filter-push/2.0.0-beta1
13/WAKU2-STORE draft /vac/waku/store/2.0.0-beta4
19/WAKU2-LIGHTPUSH draft /vac/waku/lightpush/2.0.0-beta1
66/WAKU2-METADATA raw /vac/waku/metadata/1.0.0

The Waku v1 implementation has been removed from this repository and can be found in a separate Waku Legacy repository.

v0.24.0 (2024-01-10)

Note: The Waku message size limit (150 KiB) is now enforced according to the specifications. To change this limit please use --max-msg-size="1MiB"

Note: --ip-colocation-limit=2 is the new parameter for limiting connections from the same IP

What's Changed

Release highlights:

  • IP colocation filter can now be changed via a configuration parameter.
  • New filter admin endpoint can now be used to access subscription data.
  • Waku message size limit can now be changed via a configuration parameter.

Features

  • feat: adding filter data admin endpoint (REST) #2314
  • ip colocation is parameterizable. if set to 0, it is disabled #2323

Bug Fixes

  • fix: revert "feat: shard aware peer management #2151" #2312
  • fix: setting connectivity loop interval to 15 seconds #2307
  • fix: set record to the Waku node builder in the examples as it is required #2328
  • fix(discv5): add bootnode filter exception #2267

Changes

  • update CHANGELOG.md for 0.23.0 #2309
  • test(store): Implement store tests #2235, #2240
  • refactor(store): HistoryQuery.direction #2263
  • test_driver_postgres: enhance test coverage, multiple and single topic #2301
  • chore: examples/nodejs - adapt code to latest callback and ctx/userData definitions #2281
  • chore: update CHANGELOG.md to reflect bug fix for issue #2317 #2340 in v0.23.1
  • test(peer-connection-managenent): functional tests #2321
  • docs: update post-release steps #2336
  • docs: fix typos across various documentation files #2310
  • test(peer-connection-managenent): functional tests #2321
  • bump vendors for 0.24.0 #2333
  • test(autosharding): functional tests #2318
  • docs: add benchmark around postgres adoption #2316
  • chore: set max Waku message size to 150KiB according to spec #2298

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
/vac/waku/filter-subscribe/2.0.0-beta1
/vac/waku/filter-push/2.0.0-beta1
13/WAKU2-STORE draft /vac/waku/store/2.0.0-beta4
19/WAKU2-LIGHTPUSH draft /vac/waku/lightpush/2.0.0-beta1
66/WAKU2-METADATA raw /vac/waku/metadata/1.0.0

The Waku v1 implementation has been removed from this repository and can be found in a separate Waku Legacy repository.

v0.23.1 (2023-01-09)

This patch release fixes the following bug:

  • Sort order ignored in store nodes.

Bug Fix

This is a patch release that is fully backwards-compatible with release v0.23.0.

It supports the same 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
/vac/waku/filter-subscribe/2.0.0-beta1
/vac/waku/filter-push/2.0.0-beta1
13/WAKU2-STORE draft /vac/waku/store/2.0.0-beta4
19/WAKU2-LIGHTPUSH draft /vac/waku/lightpush/2.0.0-beta1
66/WAKU2-METADATA raw /vac/waku/metadata/1.0.0

The Waku v1 implementation has been removed from this repository and can be found in a separate Waku Legacy repository.

v0.23.0 (2023-12-18)

What's Changed

Release highlights:

  • Bug fix in Postgres when querying more than one content topic.
  • ⚠️ Add new DB column messageHash. This requires a manual database update in Postgres.
  • Updated deterministic message hash algorithm.
  • REST admin can inform whether a node supports lightpush and/or filter protocols.
  • Improvements to cluster id and shards setup.
  • Properly apply RLN when publishing from REST or jsonrpc API.
  • Remove trailing commas from the RLN keystore json generated during credentials registration.
  • General test cleanup, better relay tests and new filter unsubscribe tests.
  • Rewrite docs for clarity and update screenshots.

Features

  • setting image deployment to harbor registry (93dd5ae5)
  • Add new DB column messageHash (#2202) (aeb77a3e)

Bug Fixes

  • make rln rate limit spec compliant (#2294) (5847f49d)
  • update num-msgs archive metrics every minute and not only at the beginning (#2287) (0fc617ff)
  • rln-relay: graceful retries on rpc calls (#2250) (15c1f974)
  • add protection in rest service to always publish with timestamp if user doesn't provide it (#2261) (42f19579)
  • remove trailing commas from keystore json (#2200) (103d3981)
  • dockerfile: update dockerignore and base image (#2262) (c86dc442)
  • waku_filter_v2/common: PEER_DIAL_FAILURE ret code change: 200 -> 504 (#2236) (6301bec0)
  • extended Postgres code to support retention policy + refactoring (#2244) (a1ed517f)
  • admin REST API to be enabled only if config is set (#2218) (110de90f)
  • rln: error in api when rate limit (#2212) (51f36099)
  • relay: Failing protocol tests (#2224) (c9e869fb)
  • tests: Compilation failure fix (#2222) (a5da1fc4)
  • rest: properly check if rln is used (#2205) (2cb0989a)

Changes

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
/vac/waku/filter-subscribe/2.0.0-beta1
/vac/waku/filter-push/2.0.0-beta1
13/WAKU2-STORE draft /vac/waku/store/2.0.0-beta4
19/WAKU2-LIGHTPUSH draft /vac/waku/lightpush/2.0.0-beta1
66/WAKU2-METADATA raw /vac/waku/metadata/1.0.0

The Waku v1 implementation has been removed from this repository and can be found in a separate Waku Legacy repository.

v0.22.0 (2023-11-15)

Note: The --topic option is now deprecated in favor of a more specific options --pubsub-topic & --content-topic

Note: The --ext-multiaddr-only CLI flag was introduced for cases in which the user wants to manually set their announced addresses

What's Changed

Release highlights:

  • simplified the process of generating RLN credentials through the new generateRlnKeystore subcommand
  • added support for configuration of port 0 in order to bind to kernel selected ports
  • shards are now automatically updated in metadata protocol when supported shards change on runtime
  • introduced messageHash attribute to SQLite which will later replace the id attribute

Features

Bug Fixes

Changes

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
/vac/waku/filter-subscribe/2.0.0-beta1
/vac/waku/filter-push/2.0.0-beta1
13/WAKU2-STORE draft /vac/waku/store/2.0.0-beta4
19/WAKU2-LIGHTPUSH draft /vac/waku/lightpush/2.0.0-beta1
66/WAKU2-METADATA raw /vac/waku/metadata/1.0.0

The Waku v1 implementation has been removed from this repository and can be found in a separate Waku Legacy repository.

Upgrade instructions

  • Note that the --topic CLI option is now deprecated in favor of a more specific options --pubsub-topic & --content-topic.

v0.21.3 (2023-11-09)

This patch release adds the following feature:

  • Adding generateRlnKeystore subcommand for RLN membership generation

Features

This is a patch release that is fully backwards-compatible with release v0.21.0, v0.21.1 and v0.21.2.

It supports the same 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
/vac/waku/filter-subscribe/2.0.0-beta1
/vac/waku/filter-push/2.0.0-beta1
13/WAKU2-STORE draft /vac/waku/store/2.0.0-beta4
19/WAKU2-LIGHTPUSH draft /vac/waku/lightpush/2.0.0-beta1

The Waku v1 implementation has been removed from this repository and can be found in a separate Waku Legacy repository.

v0.21.2 (2023-11-07)

This patch release addresses the following issue:

  • Inability to send RLN messages through the REST API

Bug Fixes

  • rest: fix bug in rest api when sending rln message (#2169) (33decd7a)

This is a patch release that is fully backwards-compatible with release v0.21.0 and v0.21.1.

It supports the same 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
/vac/waku/filter-subscribe/2.0.0-beta1
/vac/waku/filter-push/2.0.0-beta1
13/WAKU2-STORE draft /vac/waku/store/2.0.0-beta4
19/WAKU2-LIGHTPUSH draft /vac/waku/lightpush/2.0.0-beta1

The Waku v1 implementation has been removed from this repository and can be found in a separate Waku Legacy repository.

v0.21.1 (2023-10-26)

This patch release addresses the following issues:

  • WSS connections being suddenly terminated under rare conditions
  • Ability for the user to control announced multiaddresses

Changes

This is a patch release that is fully backwards-compatible with release v0.21.0.

It supports the same 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
/vac/waku/filter-subscribe/2.0.0-beta1
/vac/waku/filter-push/2.0.0-beta1
13/WAKU2-STORE draft /vac/waku/store/2.0.0-beta4
19/WAKU2-LIGHTPUSH draft /vac/waku/lightpush/2.0.0-beta1

The Waku v1 implementation has been removed from this repository and can be found in a separate Waku Legacy repository.

v0.21.0 (2023-10-18)

Note: This is the last release supporting the --topic option. It is being deprecated in favor of a more specific options --pubsub-topic & --content-topic

What's Changed

Release highlights:

  • Implemented a req/resp protocol that provides information about the node's medatadata
  • Added REST APIs for Filter v2 and Lightpush protocols' services
  • Ported /admin endpoint to REST
  • Added a size-based retention policy for the user to set a limit for SQLite storage used

Features

Bug Fixes

  • fix wrong install of filter rest api (#2133) (5277d122)
  • consider WS extMultiAddrs before publishing host address (#2122) (a5b1cfd0)
  • return erring response if lightpush request is invalid (#2083) (2c5eb427)
  • sqlite limited delete query bug (#2111) (06bc433a)
  • cluster id & sharding terminology (#2104) (a47dc9e6)
  • ci: update the dependency list in pre-release WF (#2088) (e85f05b0)
  • ci: fix name of discord notify method (aaf10e08)
  • update wakuv2 fleet DNS discovery enrtree (89854a96)
  • libwaku.nim: unsubscribe -> unsubscribeAll to make it build properly (#2082) (3264a4f5)
  • archive: dburl check (#2071) (a27d005f)
  • filter discv5 bootstrap nodes by shards (#2073) (d178105d)
  • rln-relay: segfault when no params except rln-relay are passed in (#2047) (45fe2d3b)
  • sqlite: Properly set user_version to 7 so that the migration procedure is not started (#2031) (aa3e1a66)

Changes

  • remove js-node tests as release candidate dependencies (#2123) (ce5fb340)
  • added size based retention policy (#2098) (25d6e52e)
  • Clarify running instructions (#2038) (12e8b122)
  • rln: add more hardcoded memberhips to static group (#2108) (1042cacd)
  • Revert lightpush error handling to allow zero peer publish again succeed (#2099) (f05528d4)
  • adding NetConfig test suite (#2091) (23b49ca5)
  • cbindings: Adding cpp example that integrates the 'libwaku' (#2079) (8455b8dd)
  • networkmonitor: refactor setConnectedPeersMetrics, make it partially concurrent, add version (#2080) (c5aa9704)
  • resolving DNS IP and publishing it when no extIp is provided (#2030) (7797b2cd)
  • Adding -d:postgres flag when creating a Docker image for release and PRs (#2076) (7a376f59)
  • Moved external APIs out of node (#2069) (3e72e830)
  • bump nim-libp2p, nim-toml-serialization, nim-unicodedb, nim-unittest2, nim-websock, nim-zlib, & nimbus-build-system (#2065) (dc25057a)
  • ci: add js-waku as a dependency for pre-release createion (#2022) (28b04000)
  • Updating nim-chronicles, nim-chronos, nim-presto, nimcrypto, nim-libp2p, and nim-nat-transversal (#2043) (f617cd97)
  • cbindings: Thread-safe communication between the main thread and the Waku Thread (#1978) (72f90663)
  • rln-relay: logs, updated submodule, leaves_set metric (#2024) (2e515a06)
  • release: update changelog for v0.20.0 release (#2026) (9085b1b3)
  • postgres: not loading the libpq library by default & better user feedback (#2028) (e8602021)
  • move SubscriptionManager under waku_core (#2025) (563b2b20)
  • README: List possible WSL Issue (#1995) (ebe715e9)
  • ci: add js-waku test to pre-release workflow (#2017) (e8776fd6)

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
/vac/waku/filter-subscribe/2.0.0-beta1
/vac/waku/filter-push/2.0.0-beta1
13/WAKU2-STORE draft /vac/waku/store/2.0.0-beta4
19/WAKU2-LIGHTPUSH draft /vac/waku/lightpush/2.0.0-beta1

The Waku v1 implementation has been removed from this repository and can be found in a separate Waku Legacy repository.

Upgrade instructions

  • Note that the --topic CLI option is being deprecated in favor of a more specific options --pubsub-topic & --content-topic. This is the last release supporting the --topic option.
  • The size-based retention policy has been tested with SQLite storage and is still on validation phases for Postgres

2023-09-14 v0.20.0

Note: IP address 0.0.0.0 is no longer advertised by a node

Note: Multiple CLI options have been removed in this release, please see Upgrade instructions section for details.

What's Changed

Release highlights:

  • RLN is now part of standard release (is no longer EXPERIMENTAL feature)
  • Interop tests between nwaku and js-waku are now gating PRs and releases
  • Libwaku has been made more threadsafe (1 out of 3 improvements applied.)
  • Added autosharding option on various protocol APIs

Features

Bug Fixes

  • rln-relay: waku_rln_number_registered_memberships metrics appropriately handled (#2018) (a4e78330)
  • prevent IP 0.0.0.0 from being published and update peers with empty ENR data (#1982) (47ae19c1)
  • rln-relay: missed roots during sync (#2015) (21604e6b)
  • p2p: fix possible connectivity issue (#1996) (7d9d8a3f)
  • rln-db-inspector: use valueOr pattern (#2012) (a8095d87)
  • tests: relay tests use random port to avoid conflict (#1998) (b991682b)
  • ci: incorrect use of braces (#1987) (4ed41457)
  • Makefile: invalid path to crate build (#1981) (1a318c29)
  • --topic should be ignore when using --pubsub-topic or --content-topic (#1977) (037b1662)
  • tests: fix flaky test (#1972) (f262397d)
  • rln-relay: deserialization of valid merkle roots (#1973) (d262837e)
  • ci: rename tools artifact to prevent conflict (#1971) (26c06b27)
  • Makefile: rln was enabled by default (#1964) (9b1d2904)
  • rln-relay: modify keystore credentials logic (#1956) (e7b2b88f)
  • Makefile: error out if rln-keystore-generator not compiled with rln flag (#1960) (ac258550)
  • rln-relay: sync from deployed block number (#1955) (bd3be219)
  • rln-relay: window of acceptable roots synced to rln metadata (#1953) (01634f57)
  • rln-relay: bump zerokit to v0.3.2 (#1951) (32aa1c5b)
  • rln-relay: flush_interval incorrectly set (#1933) (c07d63db)
  • rln-relay: RLN DB should be aware of chain and contract address (#1932) (1ae5b5a9)
  • rln-relay: waitFor startup, otherwise valid proofs will be marked invalid (#1920) (6c6302f9)
  • test: fix flaky rln test (#1923) (0ac8a7f0)
  • rln-relay: remove registration capability (#1916) (f08315cd)
  • rln-relay: invalid start index being set results in invalid proofs (#1915) (b3bb7a11)
  • rln-relay: should error out on rln-relay mount failure (#1904) (8c568cab)
  • rln-relay: timeout on macos runners, use fixed version of ganache (#1913) (c9772af0)
  • no enr record in chat2 (#1907) (fc604ca5)

Changes

  • ci: add js-waku test to pre-release workflow (#2017) (e8776fd6)
  • rln-relay: updated docs (#1993) (76e34077)
  • ci: execute js-waku integration tests on image build (#2006) (5d976df9)
  • rln-relay: add isReady check (#1989) (5638bd06)
  • rln-relay: clean up nullifier table every MaxEpochGap (#1994) (483f40c8)
  • ci: use commit instead of master for docker image (#1990) (98850192)
  • rln-relay: log levels for certain logs (#1986) (97a7c9d0)
  • rln-relay: use the only key from keystore if only 1 exists (#1984) (a14c3261)
  • ci: enable experimental for the PR image builds (#1976) (1b835b4e)
  • rln-relay: confirm that the provided credential is correct using onchain query (#1980) (be48891f)
  • api: validate rln message before sending (rest + rpc) (#1968) (05c98864)
  • cbindings: Thread-safe libwaku. WakuNode instance created directly from the Waku Thread (#1957) (68e8d9a7)
  • add debug log indicating succesful message pushes and also log the message hash (#1965) (e272bec9)
  • rln-keystore-generator: log out the membership index upon registration (#1963) (7d53aec1)
  • rln-relay: integrate waku rln registry (#1943) (cc9f8d42)
  • ci: add a job checking config options and db schema (#1927) (505d1967)
  • rln_keystore_generator: generate and persist credentials (#1928) (07945a37)
  • rln-relay: rename keystore application to waku-rln-relay (#1924) (8239b455)
  • rln: remove old and add new rln metric (#1926) (56c228f8)
  • rln: run rln in all relay pubsubtopics + remove cli flags (#1917) (af95b571)
  • release: update changelog for delayed v0.19.0 release (#1911) (78690787)

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
/vac/waku/filter-subscribe/2.0.0-beta1
/vac/waku/filter-push/2.0.0-beta1
13/WAKU2-STORE draft /vac/waku/store/2.0.0-beta4
19/WAKU2-LIGHTPUSH draft /vac/waku/lightpush/2.0.0-beta1

The Waku v1 implementation has been removed from this repository and can be found in a separate Waku Legacy repository.

Upgrade instructions

  • Note that the --topic CLI option is being deprecated in favor of a more specific options --pubsub-topic & --content-topic. The --topic option will be available for next release with a deprecation note.
  • CLI option --store-resume-peer has been removed.
  • Following options related to RLN have been removed:
    • --rln-relay-membership-group-index
    • --rln-relay-pubsub-topic
    • --rln-relay-content-topic

2023-08-16 v0.19.0

Note that the --topic CLI option is being deprecated in favor a more specific option --pubsub-topic.

The Waku v1 implementation has been removed from this repository and can be found in a separate Waku Legacy repository.

What's Changed

Release highlights:

  • Improved connection management, including management for non-relay peers and limiting the number of connections from a single IP
  • Postgres support has been added as a backend for archive module
  • RLN initialization optimizations
  • Update to the latest nim-libp2p
  • Removed Waku v1 and also references to v2 from the current version
  • Basic implementation of Autosharding for the Waku Network
  • REST API implementation for Filter protocol

Features

Bug Fixes

  • bring back default topic in config (#1902) (d5d2243c)
  • ci: only add comment on PR and do not duplicate it (#1908) (b785b6ba)
  • ci: add mising OS arch option to image build (#1905) (2575f3c4)
  • wakucanary: add missing return on timeout (#1901) (7dce0b9e)
  • fixes out of bounds crash when waku2 is not set (#1895) (03363f1b)
  • wakucanary: add enr record to builder (#1882) (831a093f)
  • check nil before calling clearTimer (#1869) (2fc48842)
  • rln-relay: mark duplicated messages as spam (#1867) (4756ccc1)
  • ci: do not depend on number of procesors with job name (#1863) (c560af11)
  • libp2p: Updating nim-libp2p to fix the wss connectivity issue (#1848) (1d3410c7)
  • rln-relay: chunk event fetching (#1830) (e4d9ee1f)
  • discv5: Fixing issue that prevented the wakunode2 from starting (#1829) (3aefade6)
  • sanity-check the docker image start (ae05f0a8)
  • ci: fix broken test with wrong import (#1820) (4573e8c5)
  • temporary fix to disable default experimental builds on fleets (#1810) (e9028618)
  • rln-relay: tree race condition upon initialization (#1807) (f8e270fb)
  • fix mac docker build alpine version (#1801) (fce845bb)
  • rln-relay: flaky static group manager test (#1798) (0e9ecbd6)

Changes

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
/vac/waku/filter-subscribe/2.0.0-beta1
/vac/waku/filter-push/2.0.0-beta1
13/WAKU2-STORE draft /vac/waku/store/2.0.0-beta4
19/WAKU2-LIGHTPUSH draft /vac/waku/lightpush/2.0.0-beta1

The Waku v1 implementation has been removed from this repository and can be found in a separate Waku Legacy repository.

Upgrade instructions

  • Note that the --topic CLI option is being deprecated in favor a more specific option --pubsub-topic. The --topic option will be available for next 2 releases with a deprecation note.

2023-06-14 v0.18.0

Note that there is a new naming scheme for release artifacts.

What's Changed

Release highlights:

  • Support for Gossipsub scoring
  • Rendezvous discovery protocol enabled by default with relay
  • Initial support for postgresql as Store backend
  • Atomic operations for insertions and deletions included in rln-relay

Features

  • postgres: complete implementation of driver and apply more tests (#1785) (5fc5770d)
  • postgres: adding a postgres async pool to make the db interactions asynchronous (#1779) (cb2e3d86)
  • rln-relay: pass in index to keystore credentials (#1777) (a00aa8cc)
  • networking: integrate gossipsub scoring (#1769) (34a92631)
  • discv5: added find random nodes with predicate (#1762) (#1763) (21737c7c)
  • wakunode2: enable libp2p rendezvous protocol by default (#1770) (835a409d)
  • postgresql: align previous work's PR#1590 changes into master (#1764) (7df6f4c8)
  • networking: prune peers from same ip beyond collocation limit (#1765) (047d1cf0)
  • ci: add nightly builds (#1758) (473af70a)
  • postgresql: 1st commit to async sql (waku_archive/driver...) (#1755) (59ca03a8)
  • ci: add release-notes target (#1734) (ceb54b18)
  • rln-relay: use new atomic_operation ffi api (#1733) (611e9539)

Bug Fixes

Changes

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
/vac/waku/filter-subscribe/2.0.0-beta1
/vac/waku/filter-push/2.0.0-beta1
13/WAKU2-STORE draft /vac/waku/store/2.0.0-beta4
19/WAKU2-LIGHTPUSH draft /vac/waku/lightpush/2.0.0-beta1

The Waku v1 implementation is stable but not under active development.

Upgrade instructions

There is a new naming scheme for release artifacts - nwaku-${ARCHITECTURE}-${OS}-${VERSION}.tar.gz. If you use any automation to download latest release, you may need to update it.

The --topics config option has been deprecated to unify the configuration style. It is still available in this release but will be removed in the next one. The new option --topic is introduced, which can be used repeatedly to achieve the same behavior.

2023-05-17 v0.17.0

Note that the --topics config item has been deprecated and support will be dropped in future releases. To configure support for multiple pubsub topics, use the new --topic parameter repeatedly.

What's Changed

Release highlights:

  • New REST API for Waku Store protocol.
  • New Filter protocol implentation. See 12/WAKU2-FILTER.
  • Initial C bindings support.
  • Support for Heaptrack to investigate memory utilization (tutorial).

Features

  • cbindings: first commit - waku relay (#1632) (#1714) (2defbd23)
  • example using filter and lightpush (#1720) (8987d4a3)
  • configure protected topics via cli (#1696) (16b44523)
  • mem-analysis: Adding Dockerfile_with_heaptrack (#1681) (9b9172ab)
  • add metrics with msg size histogram (#1697) (67e96ba8)
  • curate peers shared over px protocol (#1671) (14305c61)
  • enr: added support for relay shards field (96162536)
  • add tools maket target and build tools in CI (#1668) (d5979e94)
  • integrate new filter protocol, other improvements (#1637) (418efca2)
  • rest-api-store: new rest api to retrieve store waku messages (#1611) (#1630) (b2acb54d)
  • node: added waku node builder type (e931fa5d)
  • dos protected topic relay msgs based on meta field (#1614) (c26dcb2b)
  • further filter improvements (#1617) (d920b973)
  • common: added extensible implementation of the enr typed record (ac56e1dc)
  • rln-relay: fetch release from zerokit ci, or build (#1603) (179be681)
  • filter-v2: new filter protocol increment - message handling and clients (#1600) (be446b98)

Fixes

Changes

  • ci: cache all of submodules/deps to speed up build time (#1731) (4394c69d)
  • rln-relay: update args to contract (#1724) (b277ce10)
  • rln-relay: use new config for ffi (#1718) (44c54312)
  • adding new tutorial on how to handle heaptrack with nim waku (#1719) (4b59e472)
  • add timestamp and ephemeral for opt-in dos validator (#1713) (3e0a693d)
  • add test vectors dos protection validator (#1711) (eaa162ee)
  • add validator for dos protec metrics and move to app (#1704) (3e146869)
  • use QUICK_AND_DIRTY_COMPILER flag for CI (#1708) (21510425)
  • move networkmonitor and wakucanary to apps directory (209579b0)
  • wakunode2: flatten and simplify app setup (#1705) (ce92fc1a)
  • wakunode2: split setup logic into app module (c8081c88)
  • add payload bytes to trace log (#1703) (c6d291d3)
  • refactor flaky test with while (#1698) (dca0e9b2)
  • core: move peers utils module to waku_core (e041e043)
  • decouple test2 target from testcommon (91baa232)
  • core: move utils time module to waku_core (93b0c071)
  • add deprecation notice to utils module. move heartbeat to common (e8dceb2a)
  • core: rename waku_message module to waku_core (c9b6b230)
  • flatten waku v2 protocols folder (d7b72ac7)
  • fix test failing intermittently (#1679) (8d213e85)
  • networking: get relay number of connections from protocol conns/streams (#1609) (73cbafa6)
  • allow to call store api endpoints without a storenode (#1575) (#1647) (0b4a2e68)
  • bump container image versions to v0.16.0 in quickstart (#1640) (5c33d9d1)
  • node: remove deprecated constructor and extend testlib with builder (9dadc1f5)
  • do not mount relay more than once (#1650) (5d853b86)
  • pointed all waku node imports to the barrel import (e8448dfd)
  • node: added waku_node barrel import and split config module (13942888)
  • remove deprecated enr record init method (0627b4f8)
  • deps: upgrade nim-chronos and nim-presto to latest version (7c229ece)
  • remove waku swap protocol (2b5fd2a2)
  • deps: upgrade nim-confutils to latest version (67fa736d)
  • rln-relay: gracefully handle chain forks (#1623) (00a3812b)
  • bump nim-libp2p 53b060f (#1633) (11ff93c2)
  • added testcommon target to makefile (048ca45d)
  • increase meta size to 64 bytes + tests (#1629) (1f793756)
  • enr: move waku enr multiaddr to typedrecord and builder extensions (2ffd2f80)
  • enr: added waku2 capabilities accessor (157724d9)
  • rln-relay: reduce exports (#1615) (2f3ba3d6)
  • add dash between target and version (#1613) (24d62791)
  • release: added regression checking and clarifications (#1610) (b495dd7b)

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
/vac/waku/filter-subscribe/2.0.0-beta1
/vac/waku/filter-push/2.0.0-beta1
13/WAKU2-STORE draft /vac/waku/store/2.0.0-beta4
19/WAKU2-LIGHTPUSH draft /vac/waku/lightpush/2.0.0-beta1

The Waku v1 implementation is stable but not under active development.

Upgrade instructions

  • The --topics config option has been deprecated to unify the configuration style. It still available in this and will be in next release, but will be removed after that. The new option --topic is introduced, which can be use repeatedly to achieve the same behaviour.

2023-03-15 v0.16.0

What's Changed

Release highlights:

  • a fix for an issue that prevented the node from generating high-resolution (up to nanosecond) timestamps
  • introduction of an application-defined meta attribute to the Waku Message. This can be quite valuable for network-wide deduplication, deterministic hashing, validity checking and other planned improvements to the protocol
  • many optimizations in RLN implementation and its underlying dependencies

Features

  • Integrated a new group manager for RLN-protected relay 1496
  • Added application-defined meta attribute to Waku Message according to RFC 14/WAKU2-MESSAGE 1581
  • Implemented deterministic hashing scheme for Waku Messages according to RFC 14/WAKU2-MESSAGE 1586

Changes

  • Upgraded nim-sqlite3-abi to the latest version 1565
  • Better validation of protocol buffers 1563
  • Improved underlying Zerokit performance and FFI 1571
  • Node peer ID now logged with relay trace logging 1574
  • Continued refactoring of several protocol implementations to improve maintainability and readability
  • Refactored and cleaned up peer manager 1539
  • Removed unused and legacy websocket submodule 1580 1582
  • Use base64 URL-safe encoding for noise 1569
  • Various general improvements to RLN implementation 1585 1587
  • Started on implementation for new and improved filter protocol 1584
  • Updated pubsub and content topic namespacing to reflect latest changes in RFC 23/WAKU2-TOPICS 1589
  • Unified internal peer data models 1597
  • Improved internal implementation of Waku ENR encoding and decoding 1598 1599
  • Underlying dependency for RLN implementation now loaded as a static library 1578

Fixes

  • Fixed internally generated timestamps to allow higher resolution than seconds 1570
  • Fixed padded base64 usage for encoding and decoding payloads on the JSON RPC API 1572
  • Fixed incorrect relative module imports 1591
  • Fixed RLN relay erroneously storing messages from multiple apps 1594

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.

2023-02-15 v0.15.0

Release highlights:

  • Relay connectivity is now maintained by a management loop that selects from the peerstore
  • Ability to manually specify multiaddrs for the nwaku node to advertise
  • Two important fixes related to historical message queries:
    • fixed archive bug that resulted in duplicate messages in store query response
    • fixed query page size limit not being respected

Features

  • New connectivity loop to maintain relay connectivity from peerstore 1482 1462
  • Support for manually specifying multiaddrs to advertise 1509 1512
  • Added dynamic keystore for membership credential storage and management 1466

Changes

  • Abstracted RLN relay group management into its own API 1465
  • Prune peers from peerstore when exceeding capacity 1513
  • Removed Kilic submodule 1517
  • Continued refactoring of several protocol implementations to improve maintainability and readability
  • Refactored and improved JSON RPC API
  • Added safe default values for peer-store-capacity 1525
  • Improvements in regular CI test reliability and repeatability
  • Improved archive query performance 1510
  • Added better e2e trace logging for relay messages 1526
  • Relay RPC API now encodes message payloads in base64 572 1555

Fixes

  • Fixed Waku archive queries returning duplicate messages due to incorrect reordering 1511
  • Fixed Admin RPC API crashing on returning peer with no multiaddresses 1507
  • Fixed page size limit not being respected in store query responses 1520
  • Fixed nwaku subscribing to default pubsub topic even if not configured 1548
  • Fixed underlying issue causing node to incorrectly report it's unreachable 1518 1546
  • Fixed Relay RPC API not adhering to RFC 1139
  • Fixed message IDs in nwaku diverging from those in go-waku 1556

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.

2023-01-16 v0.14.0

Release highlights:

  • An important fix for the Waku message archive returning inconsistent responses to history queries.
  • Support for AutoNAT and libp2p Circuit Relay that allows, among other things, for NAT hole punching.
  • Support for structured logging in JSON format.
  • A fix for an underlying file descriptor leak that affected websocket connections.

Features

  • Support for AutoNAT
  • Support for libp2p Circuit Relay (server only)
  • New Waku Archive implementation. This allows easy addition of drivers for different technologies to store historical messages.
  • Support for structured logging and specifying log format.
  • Node now keeps track of its external reachability.

Changes

  • Zerokit RLN library now statically linked.
  • Use extended key generation in Zerokit API to comply with 32/RLN.
  • Re-enable root validation in 17/WAKU-RLN-RELAY implementation.
  • Network monitoring tool now supports DNS discovery.
  • Added dashboard for network monitoring.
  • Continued refactoring of several protocol implementations to improve maintainability and readability.
  • Removed swap integration from store protocol.
  • Peerstore now consolidated with libp2p peerstore.
  • Peerstore now also tracks peer direction.
  • SIGSEGV signals are now handled and logged properly.
  • Waku v2 no longer imports libraries from Waku v1.
  • Improved build and CI processes:
    • Added support for an EXPERIMENTAL compiler flag.
    • Simplified project Makefile.
    • Split Dockerfile into production and experimental stages.
    • Removed obsolete simulation libraries from build.
  • Improved parallellisation (and therefore processing time) when dialing several peers simultaneously.
  • Waku Archive now responds with error to historical queries containing more than 10 content topics.

Fixes

  • Fixed support for optional fields in several protocol rpc codecs. #1393 #1395 #1396
  • Fixed clients with --store=false not installing Store Client JSON-RPC API handlers. #1382
  • Fixed SQLite driver returning inconsistent responses to store queries. #1415
  • Fixed peer exchange discv5 loop starting before discv5 has started. #1407
  • Fixed wakubridge test timing. #1429
  • Fixed bug in Noise module types equating T_ss incorrectly to "se" and not "ss". #1432
  • Fixed Ctrl-C quitting resulting in unreleased resources and exit failures. #1416
  • Fixed CI workflows not cloning repo on startup. #1454 #1455
  • Fixed Admin API peer connection not returning error response if peer can't be connected. #1476
  • Fixed underlying file descriptor leak. #1483

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.

2022-11-15 v0.13.0

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.

2022-10-06 v0.12.0

Release highlights:

  • The performance and stability of the message store has improved dramatically. Query durations, even for long-term stores, have improved by more than a factor of 10.
  • Support for Waku Peer Exchange - a discovery method for resource-restricted nodes.
  • Messages can now be marked as "ephemeral" to prevent them from being stored.
  • Zerokit is now the default implementation for spam-protected relay with RLN.

The full list of changes is below.

Features

Changes

  • 17/WAKU-RLN-RELAY implementation now handles on-chain transaction errors.
  • 17/WAKU-RLN-RELAY implementation now validates the Merkle tree root against a window of acceptable roots.
  • Added metrics for 17/WAKU-RLN-RELAY implementation.
  • Continued refactoring of several protocol implementations to improve maintainability and readability.
  • Cleaned up nwaku imports and dependencies.
  • Refactored and organised nwaku unit tests.
  • Nwaku now periodically logs node metrics by default.
  • Further improvements to the store implementation:
    • Better logging and query traceability.
    • More useful metrics to measure query and insertion time.
    • Reworked indexing for faster inserts and queries.
    • Reworked data model to use a simple, single timestamp for indexing, ordering and querying.
    • Improved retention policy management with periodic execution.
    • Run sqlite database vacuum at node start.
    • Improved logging when migrating the database to a newer version.
  • relay no longer auto-mounted on all nwaku nodes.
  • The most complete node ENR now included in response to API requests for node info().
  • Updated Grafana dashboards included with nwaku.
  • Github CI test execution now skipped for doc-only changes.

Fixes

  • Fixed nwaku unnecessary sleep when no dynamic bootstrap nodes retrieved.
  • Fixed 12/WAKU2-FILTER not working from browser-based clients due to nwaku peer manager failing to reuse existing connection.
  • Waku Message payload now correctly encoded as base64 in the Relay REST API.
  • Fixed handling of bindParam(uint32) in sqlite.
  • chat2 application now correctly selects a random store node on startup.
  • Fixed macos builds failing due to an unsupported dependency.
  • Fixed nwaku not reconnecting to previously discovered nodes after losing connection.
  • Fixed nwaku failing to start switch transports with external IP configuration.
  • Fixed SIGSEGV crash when attempting to start nwaku store without db-path configuration.

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.

2022-08-15 v0.11

Release highlights:

  • Major improvements in the performance of historical message queries to longer-term, sqlite-only message stores.
  • Introduction of an HTTP REST API with basic functionality
  • On-chain RLN group management. This was also integrated into an example spam-protected chat application.

The full list of changes is below.

Features

  • Support for on-chain group membership management in the 17/WAKU-RLN-RELAY implementation.
  • Integrated HTTP REST API for external access to some wakunode2 functionality:
    • Debug REST API exposes debug information about a wakunode2.
    • Relay REST API allows basic pub/sub functionality according to 11/WAKU2-RELAY.
  • 35/WAKU2-NOISE implementation now adds padding to ChaChaPoly encryptions to increase security and reduce metadata leakage.

Changes

  • Significantly improved the SQLite-only historical message store query performance.
  • Refactored several protocol implementations to improve maintainability and readability.
  • Major code reorganization for the 13/WAKU2-STORE implementation to improve maintainability. This will also make the store extensible to support multiple implementations.
  • Disabled compiler log colors when running in a CI environment.
  • Refactored 35/WAKU2-NOISE implementation into smaller submodules.
  • 11/WAKU2-RELAY implementation can now optionally be compiled with Zerokit RLN. Previously only Kilic's RLN was supported.

Fixes

  • Fixed wire encoding of protocol buffers to use proto3.
  • Fixed Waku v1 <> Waku v2 bridge losing connection to statically configured v1 nodes.
  • Fixed underlying issue causing DNS discovery to fail for records containing multiple strings.

Docs

  • Updated release process documentation.
  • Added tutorial on how to run a spam-protected chat2 application with on-chain group management.

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.

2022-06-15 v0.10

Release highlights:

  • Support for key exchange using Noise handshakes.
  • Support for a SQLite-only historical message store. This allows for cheaper, longer-term historical message storage on disk rather than in memory.
  • Several fixes for native WebSockets, including slow or hanging connections and connections dropping unexpectedly due to timeouts.
  • A fix for a memory leak in nodes running a local SQLite database.

Features

  • Support for 35/WAKU2-NOISE handshakes as key exchange protocols.
  • Support for TOML config files via --config-file=<path/to/config.toml>.
  • Support for --version command. This prints the current tagged version (or compiled commit hash, if not on a version).
  • Support for running store protocol from a filter client, storing only the filtered messages.
  • Start of an HTTP REST API implementation.
  • Support for a memory-efficient SQLite-only store configuration.

Changes

  • Added index on receiverTimestamp in the SQLite store to improve query performance.
  • GossipSub Peer Exchange is now disabled by default. This is a more secure option.
  • Progress towards dynamic group management for the 17/WAKU-RLN-RELAY implementation.
  • Nodes with --keep-alive enabled now sends more regular pings to keep connections more reliably alive.
  • Disabled swap protocol by default.
  • Reduced unnecessary and confusing logging, especially during startup.
  • Added discv5 UDP port to the node's main discoverable ENR.

Fixes

  • The in-memory store now checks the validity of message timestamps before storing.
  • Fixed underlying bug that caused connection leaks in the HTTP client.
  • Fixed Docker image compilation to use the correct external variable for compile-time flags (NIMFLAGS instead of NIM_PARAMS).
  • Fixed issue where --dns4-domain-name caused an unhandled exception if no external port was available.
  • Avoids unnecessarily calling DB migration if a --db-path is set but nothing is persisted in the DB. This led to a misleading warning log.
  • Fixed underlying issues that caused WebSocket connections to hang.
  • Fixed underlying issue that caused WebSocket connections to time out after 10 mins.
  • Fixed memory leak in nodes that implements a SQLite database.

Docs

  • Added tutorial on how to generate and configure a node key.
  • Added first guide for nwaku operators.

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.

2022-03-31 v0.9

Release highlights:

  • Support for Peer Exchange (PX) when a peer prunes a 11/WAKU2-RELAY mesh due to oversubscription. This can significantly increase mesh stability.
  • Improved start-up times through managing the size of the underlying persistent message storage.
  • New websocket connections are no longer blocked due to parsing failures in other connections.

The full list of changes is below.

Features

Changes

  • Waku v1 <> v2 bridge now supports DNS multiaddrs
  • Waku v1 <> v2 bridge now validates content topics before attempting to bridge a message from Waku v2 to Waku v1
  • Persistent message storage now auto deletes messages once over specified --store-capacity. This can significantly improve node start-up times.
  • Renamed Waku v1 <> v2 bridge make target and binary to wakubridge
  • Increased store logging to assist with debugging
  • Increased rln-relay logging to assist with debugging
  • Message metrics no longer include the content topic as a dimension to keep Prometheus metric cardinality under control
  • Waku v2 toy-chat application now sets the sender timestamp when creating messages
  • The type of the proof field of the WakuMessage is changed to RateLimitProof
  • Added method to the JSON-RPC API that returns the git tag and commit hash of the binary
  • The node's ENR is now included in the JSON-RPC API response when requesting node info

Fixes

  • Fixed incorrect conversion of seconds to nanosecond timestamps
  • Fixed store queries blocking due to failure in resource clean up
  • Fixed underlying issue where new websocket connections are blocked due to parsing failures in other connections
  • Fixed failure to log the ENR necessary for a discv5 connection to the node

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.

2022-03-03 v0.8

Release highlights:

  • Working demonstration and integration of 17/WAKU-RLN-RELAY in the Waku v2 toy-chat application
  • Beta support for ambient peer discovery using a version of Discovery v5
  • A fix for the issue that caused a store node to run out of memory after serving a number of historical queries
  • Ability to configure a dns4 domain name for a node and resolve other dns-based multiaddrs

The full list of changes is below.

Features

  • 17/WAKU-RLN-RELAY implementation now supports spam-protection for a specific combination of pubsubTopic and contentTopic (available under the rln compiler flag).
  • 17/WAKU-RLN-RELAY integrated into chat2 toy-chat (available under the rln compiler flag)
  • Added support for resolving dns-based multiaddrs
  • A Waku v2 node can now be configured with a domain name and dns4 multiaddr
  • Support for ambient peer discovery using 33/WAKU-DISCV5

Changes

  • Metrics: now monitoring content topics and the sources of new connections
  • Metrics: improved default fleet monitoring dashboard
  • Introduced a Timestamp type (currently an alias for int64).
  • All timestamps changed to nanosecond resolution.
  • timestamp field number in WakuMessage object changed from 4 to 10
  • 13/WAKU2-STORE identifier updated to /vac/waku/store/2.0.0-beta4
  • toy-chat application now uses DNS discovery to connect to existing fleets

Fixes

  • Fixed underlying bug that caused occasional failures when reading the certificate for secure websockets
  • Fixed store memory usage issues when responding to history queries

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.

2022-01-19 v0.7

Release highlights:

  • Support for secure websockets.
  • Ability to remove unreachable clients in a filter node.
  • Several fixes to improve store performance and decrease query times. Query time for large stores decreased from longer than 8 min to under 100 ms.
  • Fix for a long-standing bug that prevented proper database migration in some deployed Docker containers.

The full list of changes is below.

Features

  • Support for secure websocket transport

Changes

  • Filter nodes can now remove unreachable clients
  • The WakuInfo listenStr is deprecated and replaced with a sequence of listenAddresses to accommodate multiple transports
  • Removed cached peerInfo on local node. Rely on underlying libp2p switch instead
  • Metrics: added counters for protocol messages
  • Waku v2 node discovery now supports 31/WAKU2-ENR
  • resuming the history via resume now takes the answers of all peers in peerList into consideration and consolidates them into one deduplicated list

Fixes

  • Fixed database migration failure in the Docker image
  • All HistoryResponse messages are now auto-paginated to a maximum of 100 messages per response
  • Increased maximum length for reading from a libp2p input stream to allow largest possible protocol messages, including HistoryResponse messages at max size
  • Significantly improved store node query performance
  • Implemented a GossipSub MessageIdProvider for 11/WAKU2-RELAY messages instead of relying on the unstable default
  • Receiver timestamps for message indexing in the store now have consistent millisecond resolution

This release supports the following libp2p protocols:

Protocol Spec status Protocol id
17/WAKU-RLN-RELAY raw /vac/waku/waku-rln-relay/2.0.0-alpha1
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-beta3
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.

2021-11-05 v0.6

Some useful features and fixes in this release, include:

  • two methods for Waku v2 node discovery
  • support for unsecure websockets, which paves the way for native browser usage
  • a fix for nim-waku store nodes running out of memory due to store size: the number of stored messages can now easily be configured
  • a fix for densely connected nodes refusing new connections: the maximum number of allowed connections can now easily be configured
  • support for larger message sizes (up from 64kb to 1Mb per message)

The full list of changes is below.

Features

Changes

  • Pagination of historical queries are now simplified
  • GossipSub prune backoff period is now the recommended 1 minute
  • Bridge now uses content topic format according to 23/WAKU2-TOPICS
  • Better internal differentiation between local and remote peer info
  • Maximum number of libp2p connections is now configurable
  • udp-port CLI option has been removed for binaries where it's not used
  • Waku v2 now supports unsecure WebSockets
  • Waku v2 now supports larger message sizes of up to 1 Mb by default
  • Further experimental development of RLN for spam protection. These changes are disabled by default under a compiler flag. Changes include:
    • Per-message rate limit proof defined
    • RLN proof generation and verification integrated into Waku v2
    • RLN tree depth changed from 32 to 20
    • Support added for static membership group formation

Docs

Fixes

  • Bridge between toy-chat and matterbridge now shows correct announced addresses
  • Bridge no longer re-encodes already encoded payloads when publishing to V1
  • Bridge now populates WakuMessage timestamps when publishing to V2
  • Store now has a configurable maximum number of stored messages
  • Network simulations for Waku v1 and Waku v2 are runnable again

This release supports the following libp2p protocols:

Protocol Spec status Protocol id
17/WAKU-RLN raw /vac/waku/waku-rln-relay/2.0.0-alpha1
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-beta3
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.

2021-07-26 v0.5.1

This patch release contains the following fix:

  • Support for multiple protocol IDs when reconnecting to previously connected peers: A bug in v0.5 caused clients using persistent peer storage to only support the mounted protocol ID.

This is a patch release that is fully backwards-compatible with release v0.5. It supports the same libp2p protocols:

Protocol Spec status Protocol id
17/WAKU-RLN raw /vac/waku/waku-rln-relay/2.0.0-alpha1
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-beta3
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.

2021-07-23 v0.5

This release contains the following:

Features

  • Support for keep-alives using libp2p ping protocol.
  • DB migration for the message and peer stores.
  • Support for multiple protocol IDs. Mounted protocols now match versions of the same protocol that adds a postfix to the stable protocol ID.

Changes

  • Bridge topics are now configurable.
  • The resume Nim API now eliminates duplicates messages before storing them.
  • The resume Nim API now fetches historical messages in page sequence.
  • Added support for stable version of relay protocol, with protocol ID /vac/waku/relay/2.0.0.
  • Added optional timestamp to WakuRelayMessage.
  • Removed PCRE as a prerequisite for building Waku v1 and Waku v2.
  • Improved swap metrics.

General refactoring

  • Refactored modules according to Nim best practices.
  • Simplified the way protocols get notified of new messages.
  • Refactored wakunode2 setup into 6 distinct phases with improved logging and error handling.
  • Moved Whisper types and protocol from the nim-eth module to nim-waku.

Docs

Schema

  • Updated the Message table of the persistent message store:
    • Added senderTimestamp column.
    • Renamed the timestamp column to receiverTimestamp and changes its type to REAL.

API

Fixes

  • Conversion between topics for the Waku v1 <-> v2 bridge now follows the RFC recommendation.
  • Fixed field order of HistoryResponse protobuf message: the field numbers of the HistoryResponse are shifted up by one to match up the 13/WAKU2-STORE specs.

This release supports the following libp2p protocols:

Protocol Spec status Protocol id
17/WAKU-RLN raw /vac/waku/waku-rln-relay/2.0.0-alpha1
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-beta3
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.

2021-06-03 v0.4

This release contains the following:

Features

Changes

  • The toy-chat application can now perform lightpush and request content-filtered messages from remote peers.
  • The toy-chat application now uses default content topic /toy-chat/2/huilong/proto
  • Improve toy-chat briding to matterbridge
  • Improve swap logging and enable soft mode by default
  • Content topics are no longer in a redundant nested structure
  • Improve error handling

API

Fixes

  • Connections between nodes no longer become unstable due to keep-alive errors if mesh grows large
  • Re-enable lightpush tests and fix Windows CI failure

The Waku v2 suite of protocols are still in a raw/draft state. This release supports the following libp2p protocols:

Protocol Spec status Protocol id
17/WAKU-RLN raw /vac/waku/waku-rln-relay/2.0.0-alpha1
11/WAKU2-RELAY draft /vac/waku/relay/2.0.0-beta2
12/WAKU2-FILTER draft /vac/waku/filter/2.0.0-beta1
13/WAKU2-STORE draft /vac/waku/store/2.0.0-beta3
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.

2021-05-11 v0.3

This release contains the following:

Features

Changes

  • Enable swap protocol by default and improve logging

General refactoring

  • Split out waku_types types into the right place; create utils folder.
  • Change type of contentTopic in ContentFilter to string.
  • Replace sequence of contentTopics in ContentFilter with a single contentTopic.
  • Add timestamp field to WakuMessage.
  • Ensure CLI config parameters use a consistent naming scheme. Summary of changes here.

Docs

Several clarifications and additions aimed at contributors, including

Schema

  • Add Message table to the persistent message store. This table replaces the old messages table. It has two additional columns, namely
    • pubsubTopic, and
    • version.
  • Add Peer table for persistent peer storage.

API

  • JSON-RPC Admin API: Added a post method to connect to peers on an ad-hoc basis.
  • Nim API: PubSub topic subscribe and unsubscribe no longer returns a future (removed async designation).
  • HistoryQuery: Added pubsubTopic field. Message history can now be filtered and queried based on the pubsubTopic.
  • HistoryQuery: Added support for querying a time window by specifying start and end times.

Fixes

  • Running nodes can now be shut down gracefully
  • Content filtering now works on any PubSub topic and not just the waku default.
  • Nodes can now mount protocols without supporting relay as a capability

The Waku v2 suite of protocols are still in a raw/draft state. This release supports the following libp2p protocols:

Protocol Spec status Protocol id
17/WAKU-RLN raw /vac/waku/waku-rln-relay/2.0.0-alpha1
18/WAKU2-SWAP raw /vac/waku/swap/2.0.0-alpha1
19/WAKU2-LIGHTPUSH raw /vac/waku/lightpush/2.0.0-alpha1
11/WAKU2-RELAY draft /vac/waku/relay/2.0.0-beta2
12/WAKU2-FILTER draft /vac/waku/filter/2.0.0-beta1
13/WAKU2-STORE draft /vac/waku/store/2.0.0-beta3

The Waku v1 implementation is stable but not under active development.

2021-01-05 v0.2

This release contains the following changes:

  • Calls to publish a message on wakunode2 now await instead of discard dispatched WakuRelay procedures.
  • StrictNoSign enabled.
  • Add JSON-RPC API for external access to wakunode2 functionality:
    • Admin API retrieves information about peers registered on the wakunode2.
    • Debug API exposes debug information about a wakunode2.
    • Filter API saves bandwidth by allowing light nodes to filter for specific content.
    • Private API enables symmetric or asymmetric cryptography to encrypt/decrypt message payloads.
    • Relay API allows basic pub/sub functionality.
    • Store API retrieves historical messages.
  • Add tutorial on how to use JSON-RPC API.
  • Refactor: Move waku_filter protocol into its own module.

The Waku v2 implementation, and most protocols it consist of, are still in a draft/beta state. The Waku v1 implementation is stable but not under active development.

2020-11-30 v0.1

Initial beta release.

This release contains:

  • A Nim implementation of the Waku v1 protocol.
  • A Nim implementation of the Waku v2 protocol.
  • CLI applications wakunode and wakunode2 that allows you to run a Waku v1 or v2 node.
  • Examples of Waku v1 and v2 usage.
  • Various tests of above.

Currenty the Waku v2 implementation, and most protocols it consist of, are in a draft/beta state. The Waku v1 implementation is stable but not under active development.

Feedback welcome!