106 KiB
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
--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
- 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
--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
- 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
--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
- 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
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
- 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
--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
- 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
--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.
- 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=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
- 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-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 withganache
for 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
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
- Default support for Zerokit version of
17/WAKU-RLN-RELAY
implementation. - Added Filter REST API OpenAPI specification.
- Added POC implementation for 43/WAKU2-DEVICE-PAIRING.
- 14/WAKU2-MESSAGE can now be marked as
ephemeral
to prevent them from being stored. - Support for 34/WAKU2-PEER-EXCHANGE.
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
- 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-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
.
- Debug REST API exposes debug information about a
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 thestore
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 afilter
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 SQLitestore
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 ofNIM_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
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
- Support for bootstrapping
33/WAKU-DISCV5
via 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
make
target and binary towakubridge
- 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 theWakuMessage
is 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
wakunode2
build instructions - Added tutorial on communicating with waku2 test fleets via the chat2
toy-chat
application in spam-protected mode using17/WAKU-RLN-RELAY
. - Added a section on bug reporting to
wakunode2
README - 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-RELAY
in the Waku v2toy-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-basedmultiaddrs
The full list of changes is below.
Features
17/WAKU-RLN-RELAY
implementation now supports spam-protection for a specific combination ofpubsubTopic
andcontentTopic
(available under therln
compiler flag).17/WAKU-RLN-RELAY
integrated into chat2toy-chat
(available under therln
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 from4
to10
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
- Documented use of domain certificates for secure websockets
- Documented how to configure a
dns4
domain name for a node - Clarified use of DNS discovery and provided current URLs for discoverable fleet nodes
- Added tutorial on using
17/WAKU-RLN-RELAY
with the chat2toy-chat
application - 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
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 oflistenAddresses
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 inpeerList
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
for11/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
- 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-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
- Added contributor guidelines on Waku v2 fleet monitoring and management
- Added basic tutorial on using Waku v2 DNS-based discovery
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
toWakuRelayMessage
. - 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 thenim-eth
module tonim-waku
.
Docs
- Added database migration tutorial.
- Added tutorial to setup
websockify
.
Schema
- Updated the
Message
table of the persistent message store:- Added
senderTimestamp
column. - Renamed the
timestamp
column toreceiverTimestamp
and changes its type toREAL
.
- Added
API
- Added optional
timestamp
toWakuRelayMessage
on JSON-RPC 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 theHistoryResponse
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
- Initial
toy-chat
implementation
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
- JSON-RPC Store API: Added an optional time-based query to filter historical messages.
- Nim API: Added
resume
method.
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
- Start of
RLN relay
implementation - Start of
swap
implementation - Start of fault-tolerant
store
implementation - Initial
bridge
implementation between Waku v1 and v2 protocols - Initial
lightpush
implementation - A peer manager for
relay
,filter
,store
andswap
peers - Persistent storage for peers: A node with this feature enabled will now attempt to reconnect to
relay
peers after a restart. It will respect the gossipsub PRUNE backoff period before attempting to do so. --persist-peers
CLI option to persist peers in local storage--persist-messages
CLI option to store historical messages locally--keep-alive
CLI option to maintain a stable connection torelay
peers on idle topics- A CLI chat application (
chat2
) over Waku v2 with bridging to matterbridge
Changes
- Enable
swap
protocol by default and improve logging
General refactoring
- Split out
waku_types
types into the right place; createutils
folder. - Change type of
contentTopic
inContentFilter
tostring
. - Replace sequence of
contentTopics
inContentFilter
with a singlecontentTopic
. - Add
timestamp
field 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
Message
table to the persistent message store. This table replaces the oldmessages
table. It has two additional columns, namelypubsubTopic
, andversion
.
- 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
andunsubscribe
no longer returns a future (removedasync
designation). HistoryQuery
: AddedpubsubTopic
field. 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
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 onwakunode2
nowawait
instead ofdiscard
dispatchedWakuRelay
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.
- Admin API retrieves information about peers registered on the
- 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
andwakunode2
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!