122 KiB
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
- archive - move error to trace level when insert row fails (#2283) (574cdf55)
- including content topics on FilterSubscribeRequest logs (#2295) (306c8a62)
- vendor bump for 0.23.0 (#2274) (385daf16)
- peer_manager.nim - reduce logs from debug to trace (#2279) (0cc0c805)
- Cbindings allow mounting the Store protocol from libwaku (#2276) (28142f40)
- Better feedback invalid content topic (#2254) (72a1f8c7)
- fix typos (#2239) (958b9bd7)
- creating prepare_release template (#2225) (5883dbeb)
- rest: refactor message cache (#2221) (bebaa59c)
- updating nim-json-serialization dependency (#2248) (9f4e6f45)
- store-archive: Remove duplicated code (#2234) (38e100e9)
- refactoring peer storage (#2243) (c301e880)
- postres driver allow setting the max number of connection from a parameter (#2246) (b31c1823)
- deterministic message hash algorithm updated (#2233) (a22ee604)
- REST: returning lightpush support and updated filter protocol (#2219) (59ee3c69)
- mics. improvements to cluster id and shards setup (#2187) (897f4879)
- update docs for rln-keystore-generator (#2210) (8c5666d2)
- removing automatic vacuuming from retention policy code (#2228) (9ff441ab)
- decoupling announced and listen addresses (#2203) (ef8ffbdb)
- release: update changelog for v0.22.0 release (#2216) (9c4fdac6)
- Allow text/plain content type descriptor for json formatted content body (#2209) (6d81e384)
- rewrite for clarity, update screenshots (#2206) (a0ef3c2f)
- release: update changelog for v0.21.3 release (#2208) (f74474b4)
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
--topicoption is now deprecated in favor of a more specific options--pubsub-topic&--content-topic
Note: The
--ext-multiaddr-onlyCLI 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
generateRlnKeystoresubcommand - 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
messageHashattribute to SQLite which will later replace theidattribute
Features
- rln-keystore-generator is now a subcommand (#2189) (3498a846)
- amending computeDigest func. + related test cases (#2132)" (#2180) (d7ef3ca1)
- discv5: filter out peers without any listed capability (#2186) (200a11da)
- metadata protocol shard subscription (#2149) (bcf8e963)
- REST APIs discovery handlers (#2109) (7ca516a5)
- implementing port 0 support (#2125) (f7b9afc2)
- messageHash attribute added in SQLite + testcase (#2142)" (#2154) (13aeebe4)
- messageHash attribute added in SQLite + testcase (#2142) (9cd8c73d)
- amending computeDigest func. + related test cases (#2132) (1669f710)
Bug Fixes
- typo (6dd28063)
- lightpush rest (#2176) (fa467e24)
- ci: fix Docker tag for latest and release jobs (52759faa)
- rest: fix bug in rest api when sending rln message (#2169) (250e8b98)
- updating v0.21.1 release date in changelog (#2160) (3be61636)
Changes
- Optimize postgres - prepared statements in select (#2182) (6da1aeec)
- release: update changelog for v0.21.2 release (#2188) (d0a93e7c)
- upgrade dependencies v0.22 (#2185) (b9563ae0)
- Optimize postgres - use of rowCallback approach (#2171) (2b4ca4d0)
- networking: lower dhigh to limit amplification factor (#2168) (f0f69b32)
- Minor Postgres optimizations (#2166) (282c2e81)
- adding patch release instructions to release doc (#2157) (cc01bb07)
- release: update changelog for v0.21.1 release (#2155) (b109a583)
- adding ext-multiaddr-only CLI flag (#2141) (944dfdaa)
- bumping nim-libp2p to include WSS fix (#2150) (817a7b2e)
- cbindings: avoid using global var in libwaku.nim (#2118) (1e8f5771)
- adding postgres flag to manual docker job instructions (#2139) (459331e3)
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
--topicCLI 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
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
- adding ext-multiaddr-only CLI flag (#2141) (e2dfc2ed)
- bumping nim-libp2p to include WSS fix (#2150) (18b5149a)
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
--topicoption. 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
- add new metadata protocol (#2062) (d5c3ade5)
- /admin rest api endpoint (#2094) (7b5c36b1)
- coverage: Add simple coverage (#2067) (d864db3f)
- added RELAY openapi definitions (#2081) (56dbe2a7)
- wakucanary: add latency measurement using ping protocol (#2074) (6cb9a8da)
- Autosharding API for RELAY subscriptions (#1983) (1763b1ef)
- networkmonitor: add ping latencies, optimize reconnections (#2068) (ed473545)
- peer manager can filter peers by shard (#2063) (0d9e9fbd)
- lightpush rest api (#2052) (02a814bd)
- HTTP REST API: Filter support v2 (#1890) (dac072f8)
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
--topicCLI option is being deprecated in favor of a more specific options--pubsub-topic&--content-topic. This is the last release supporting the--topicoption. - 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
- rln-relay: removed rln from experimental 🚀 (#2001) (645b0343)
- Rest endoint /health for rln (#2011) (fc6194bb)
- rln_db_inspector: create rln_db_inspector tool (#1999) (ec42e2c7)
- relay: ordered validator execution (#1966) (debc5f19)
- discv5: topic subscriptions update discv5 filter predicate (#1918) (4539dfc7)
- topic subscriptions updates discv5 ENR (#1875) (c369b329)
- rln_keystore_generator: wired to onchain group manager (#1931) (c9b48ea1)
- rln: init rln_keystore_generator (#1925) (3d849541)
- update various protocols to autoshard (#1857) (cf301396)
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
--topicCLI option is being deprecated in favor of a more specific options--pubsub-topic&--content-topic. The--topicoption will be available for next release with a deprecation note. - CLI option
--store-resume-peerhas 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
--topicCLI 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
v2from the current version - Basic implementation of Autosharding for the Waku Network
- REST API implementation for Filter protocol
Features
- ci: add docker image builds per PR (#1881) (84f94d5d)
- Rest API interface for legacy (v1) filter service. (#1851) (08ff6672)
- autosharding content topics in config (#1856) (afb93e29)
- autosharding core algorithm (#1854) (bbff1ac1)
- cbindings: tiny waku relay example in Python (#1793) (0b2cfae5)
- rln-relay: close db connection appropriately (#1858) (76c73b62)
- enable TcpNoDelay (#1470) (08f3bba3)
- limit relay connections below max conns (#1813) (17b24cde)
- postgres: integration of postgres in wakunode2 (#1808) (88b7481f)
- discovery peer filtering for relay shard (#1804) (a4da87bb)
- rln-relay: resume onchain sync from persisted tree db (#1805) (bbded9ee)
- rln-relay: metadata ffi api (#1803) (045f07c6)
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
wssconnectivity 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
- remove references to v2 (#1898) (b9d5d28a)
- submodules: use zerokit v0.3.1 only (#1886) (311f5ea0)
- remove Waku v1 and wakubridge code (#1874) (ab344a9d)
- cbindings: libwaku - run waku node in a secondary working thread (#1865) (069c1ad2)
- update docs link (#1850) (d2b6075b)
- changelog: release notes for v0.19.0 (#1861) (32c1276f)
- rln-relay: verify proofs based on bandwidth usage (#1844) (3fe4522a)
- rln-relay: bump zerokit (#1838) (4f0bdf9a)
- bump nim-libp2p to 224f92e (661638da)
- refactor: Move record creation & fix libwaku compilation (#1833) (97d3b9f7)
- discv5 re-org clean-up (#1823) (cf46fb7c)
- networking: disconnect due to colocation ip in conn handler (#1821) (e12c979c)
- rln-relay: bump zerokit for version fix (#1822) (add294a9)
- move discv5 out of node. (#1818) (62d36530)
- archive: Moving waku archive logic from app.nim to the archive module (#1817) (52894a82)
- add peer manager config to builder (#1816) (71c4ac16)
- discv5 re-org setup (#1815) (44f9d8dc)
- databases: Creation of the databases folder to keep the logic for sqlite and postgres (#1811) (a44d4bfb)
- deps: bump libp2p & websock (#1800) (f6e89c31)
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
--topicCLI option is being deprecated in favor a more specific option--pubsub-topic. The--topicoption 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
- ci: enforce basic CPU instruction set to prevent CI issues (#1759) (35520bd0)
- test: wait more for gossip (#1753) (0fce3d83)
- rln-relay: keystore usage (#1750) (36266b43)
- ci: fix flaky test for dos topic (#1747) (46e231d0)
- rln-relay: trace log (#1743) (5eae60e8)
- ci: make experimental default to true in fleet deployment (#1742) (b148c305)
Changes
- rln: bump zerokit (#1787) (9c04b59b)
- ci: extend and rename nightly workflow to support RC builds (#1784) (96074071)
- rln-relay: pass in the path to the tree db (#1782) (dba84248)
- rln-relay: update tree_config (#1781) (ba8ec704)
- ci: properly set os and architecture for nightly and release (#1780) (44bcf0f2)
- ci: remove add-to-project workflow (#1778) (a9505892)
- ci: add experimental builds to nightly (#1761) (ffac7761)
- px: close px streams after resp is sent (#1746) (3c2d2891)
- docs: fix docs and mark some as deprecated (#1754) (b51fb616)
- makefile: unify where chronicles_log_level is set (#1748) (39902dc2)
- rln-relay: docs and config update for testnet 3 (#1738) (bb9d231b)
- rln-relay: update metrics dashboard (#1745) (0ced2195)
- rln-relay: updated metrics for testnet 3 (#1744) (62578746)
- networking: set and use target outbound connections + prune (#1739) (87f694a8)
- proper use of setupNat (#1740) (665484c1)
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
- ci: remove target flag from docker command (#1725) (d822cdc5)
- wakunode2 config. adding new 'topic' config parameter. (#1727) (2ec9809c)
- streams was used instead of connections (#1722) (b9e0763e)
- change filter request default behaviour to ping (#1721) (7c39be9a)
- rln-relay: handle invalid deletes (#1717) (81dffee8)
- fix filter v2 proto fields (#1716) (68a39c65)
- unstable peers in mesh (#1710) (703c3ab5)
- networkmonitor: break import dependency with wakunode2 app (043feacd)
- import nimchronos instead heartbeat (#1695) (7d12adf6)
- rest: change rest server result error type to string (d5ef9331)
- rln-relay: scope of getEvents (#1672) (b62193e5)
- logs: fix log reporting wrong ok connected peers (#1675) (1a885b96)
- move canBeConnected to PeerManager and check for potential overflow (#1670) (d5c2770c)
- wrap untracked protocol handler exceptions (9e1432c9)
- wakunode2: made setup nat return errors (1cfb251b)
- fixed multiple bare except warnings (caf78249)
- bump libp2p with traffic metrics fix (#1642) (0ef46673)
- rln-relay: buildscript bad cp (#1636) (bd9857c1)
- wakunode2: fix main warnings and drop swap support (f95147f5)
- rln-relay: on chain registration (#1627) (b1bafda2)
- connect instead of dialing relay peers (#1622) (85f33a8e)
- fix hash size greater than 32 (#1621) (c42ac16f)
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
--topicsconfig 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--topicis 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
metaattribute 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
multiaddrsfor 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
multiaddrsto 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-RELAYimplementation. - 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
EXPERIMENTALcompiler flag. - Simplified project Makefile.
- Split Dockerfile into production and experimental stages.
- Removed obsolete simulation libraries from build.
- Added support for an
- 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=falsenot 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_ssincorrectly 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
- Added instructions for running nwaku with docker compose.
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-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.
2022-10-06 v0.12.0
Release highlights:
- The performance and stability of the message
storehas 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
relaywith RLN.
The full list of changes is below.
Features
- Default support for Zerokit version of
17/WAKU-RLN-RELAYimplementation. - Added Filter REST API OpenAPI specification.
- Added POC implementation for 43/WAKU2-DEVICE-PAIRING.
- 14/WAKU2-MESSAGE can now be marked as
ephemeralto prevent them from being stored. - Support for 34/WAKU2-PEER-EXCHANGE.
Changes
17/WAKU-RLN-RELAYimplementation now handles on-chain transaction errors.17/WAKU-RLN-RELAYimplementation now validates the Merkle tree root against a window of acceptable roots.- Added metrics for
17/WAKU-RLN-RELAYimplementation. - 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
storeimplementation:- 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.
relayno 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-FILTERnot 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.
chat2application 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-pathconfiguration.
Docs
- Improved RLN testnet tutorial
- Added tutorial on running nwaku from a DigitalOcean droplet.
- Added guide on how to monitor nwaku using Prometheus and Grafana.
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-RELAYimplementation. - Integrated HTTP REST API for external access to some
wakunode2functionality:- Debug REST API exposes debug information about a
wakunode2. - Relay REST API allows basic pub/sub functionality according to
11/WAKU2-RELAY.
- Debug REST API exposes debug information about a
35/WAKU2-NOISEimplementation now adds padding to ChaChaPoly encryptions to increase security and reduce metadata leakage.
Changes
- Significantly improved the SQLite-only historical message
storequery performance. - Refactored several protocol implementations to improve maintainability and readability.
- Major code reorganization for the
13/WAKU2-STOREimplementation to improve maintainability. This will also make thestoreextensible to support multiple implementations. - Disabled compiler log colors when running in a CI environment.
- Refactored
35/WAKU2-NOISEimplementation into smaller submodules. 11/WAKU2-RELAYimplementation 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-NOISEhandshakes as key exchange protocols. - Support for TOML config files via
--config-file=<path/to/config.toml>. - Support for
--versioncommand. This prints the current tagged version (or compiled commit hash, if not on a version). - Support for running
storeprotocol from afilterclient, storing only the filtered messages. - Start of an HTTP REST API implementation.
- Support for a memory-efficient SQLite-only
storeconfiguration.
Changes
- Added index on
receiverTimestampin the SQLitestoreto 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-RELAYimplementation. - Nodes with
--keep-aliveenabled now sends more regular pings to keep connections more reliably alive. - Disabled
swapprotocol 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
storenow 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 (
NIMFLAGSinstead ofNIM_PARAMS). - Fixed issue where
--dns4-domain-namecaused an unhandled exception if no external port was available. - Avoids unnecessarily calling DB migration if a
--db-pathis 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
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-RELAYmesh 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
- Support for bootstrapping
33/WAKU-DISCV5via DNS discovery - Support for GossipSub Peer Exchange
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
maketarget and binary towakubridge - Increased
storelogging to assist with debugging - Increased
rln-relaylogging 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-chatapplication now sets the sender timestamp when creating messages - The type of the
prooffield of theWakuMessageis changed toRateLimitProof - 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
- Added RAM requirements to
wakunode2build instructions - Added tutorial on communicating with waku2 test fleets via the chat2
toy-chatapplication in spam-protected mode using17/WAKU-RLN-RELAY. - Added a section on bug reporting to
wakunode2README - Fixed broken links in the JSON-RPC API Tutorial
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-RELAYin the Waku v2toy-chatapplication - Beta support for ambient peer discovery using a version of Discovery v5
- A fix for the issue that caused a
storenode to run out of memory after serving a number of historical queries - Ability to configure a
dns4domain name for a node and resolve other dns-basedmultiaddrs
The full list of changes is below.
Features
17/WAKU-RLN-RELAYimplementation now supports spam-protection for a specific combination ofpubsubTopicandcontentTopic(available under therlncompiler flag).17/WAKU-RLN-RELAYintegrated into chat2toy-chat(available under therlncompiler flag)- Added support for resolving dns-based
multiaddrs - A Waku v2 node can now be configured with a domain name and
dns4multiaddr - 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
Timestamptype (currently an alias for int64). - All timestamps changed to nanosecond resolution.
timestampfield number in WakuMessage object changed from4to1013/WAKU2-STOREidentifier updated to/vac/waku/store/2.0.0-beta4toy-chatapplication 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
storememory usage issues when responding to history queries
Docs
- Documented use of domain certificates for secure websockets
- Documented how to configure a
dns4domain name for a node - Clarified use of DNS discovery and provided current URLs for discoverable fleet nodes
- Added tutorial on using
17/WAKU-RLN-RELAYwith the chat2toy-chatapplication - Added tutorial on how to configure and a use a
15/WAKU-BRIDGE
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
filternode. - Several fixes to improve
storeperformance 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
listenStris deprecated and replaced with a sequence oflistenAddressesto accommodate multiple transports - Removed cached
peerInfoon 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
resumenow takes the answers of all peers inpeerListinto consideration and consolidates them into one deduplicated list
Fixes
- Fixed database migration failure in the Docker image
- All
HistoryResponsemessages 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
HistoryResponsemessages at max size - Significantly improved
storenode query performance - Implemented a GossipSub
MessageIdProviderfor11/WAKU2-RELAYmessages instead of relying on the unstable default - Receiver timestamps for message indexing in the
storenow 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-wakustore 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
- Waku v2 node discovery via DNS following EIP-1459
- Waku v2 node discovery via Node Discovery v5
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-portCLI 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
- Added contributor guidelines on Waku v2 fleet monitoring and management
- Added basic tutorial on using Waku v2 DNS-based discovery
Fixes
- Bridge between
toy-chatand 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.5caused 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
resumeNim API now eliminates duplicates messages before storing them. - The
resumeNim API now fetches historical messages in page sequence. - Added support for stable version of
relayprotocol, with protocol ID/vac/waku/relay/2.0.0. - Added optional
timestamptoWakuRelayMessage. - Removed
PCREas a prerequisite for building Waku v1 and Waku v2. - Improved
swapmetrics.
General refactoring
- Refactored modules according to Nim best practices.
- Simplified the way protocols get notified of new messages.
- Refactored
wakunode2setup into 6 distinct phases with improved logging and error handling. - Moved
Whispertypes and protocol from thenim-ethmodule tonim-waku.
Docs
- Added database migration tutorial.
- Added tutorial to setup
websockify.
Schema
- Updated the
Messagetable of the persistent message store:- Added
senderTimestampcolumn. - Renamed the
timestampcolumn toreceiverTimestampand changes its type toREAL.
- Added
API
- Added optional
timestamptoWakuRelayMessageon JSON-RPC API.
Fixes
- Conversion between topics for the Waku v1 <-> v2 bridge now follows the RFC recommendation.
- Fixed field order of
HistoryResponseprotobuf message: the field numbers of theHistoryResponseare 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
- Initial
toy-chatimplementation
Changes
- The toy-chat application can now perform
lightpushand request content-filtered messages from remote peers. - The toy-chat application now uses default content topic
/toy-chat/2/huilong/proto - Improve
toy-chatbriding to matterbridge - Improve
swaplogging and enable soft mode by default - Content topics are no longer in a redundant nested structure
- Improve error handling
API
- JSON-RPC Store API: Added an optional time-based query to filter historical messages.
- Nim API: Added
resumemethod.
Fixes
- Connections between nodes no longer become unstable due to keep-alive errors if mesh grows large
- Re-enable
lightpushtests 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
- Start of
RLN relayimplementation - Start of
swapimplementation - Start of fault-tolerant
storeimplementation - Initial
bridgeimplementation between Waku v1 and v2 protocols - Initial
lightpushimplementation - A peer manager for
relay,filter,storeandswappeers - Persistent storage for peers: A node with this feature enabled will now attempt to reconnect to
relaypeers after a restart. It will respect the gossipsub PRUNE backoff period before attempting to do so. --persist-peersCLI option to persist peers in local storage--persist-messagesCLI option to store historical messages locally--keep-aliveCLI option to maintain a stable connection torelaypeers on idle topics- A CLI chat application (
chat2) over Waku v2 with bridging to matterbridge
Changes
- Enable
swapprotocol by default and improve logging
General refactoring
- Split out
waku_typestypes into the right place; createutilsfolder. - Change type of
contentTopicinContentFiltertostring. - Replace sequence of
contentTopicsinContentFilterwith a singlecontentTopic. - Add
timestampfield toWakuMessage. - Ensure CLI config parameters use a consistent naming scheme. Summary of changes here.
Docs
Several clarifications and additions aimed at contributors, including
- information on how to query Status test fleet for node addresses,
- how to view logs, and
- how to update submodules.
Schema
- Add
Messagetable to the persistent message store. This table replaces the oldmessagestable. It has two additional columns, namelypubsubTopic, andversion.
- Add
Peertable for persistent peer storage.
API
- JSON-RPC Admin API: Added a
postmethod to connect to peers on an ad-hoc basis. - Nim API: PubSub topic
subscribeandunsubscribeno longer returns a future (removedasyncdesignation). HistoryQuery: AddedpubsubTopicfield. Message history can now be filtered and queried based on thepubsubTopic.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
wakudefault. - Nodes can now mount protocols without supporting
relayas 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
publisha message onwakunode2nowawaitinstead ofdiscarddispatchedWakuRelayprocedures. StrictNoSignenabled.- Add JSON-RPC API for external access to
wakunode2functionality:- 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.
- Admin API retrieves information about peers registered on the
- Add tutorial on how to use JSON-RPC API.
- Refactor: Move
waku_filterprotocol 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
wakunodeandwakunode2that 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!