* adds ProofMetadata * adds EPOCH_INTERVAL * adds messageLog field * adds updateLog, toEpoch, fromEpoch, getEpoch, compareTo * adds unit test for toEpoch and fromEpoch * adds unit test for Epoch comparison * adds result codes for updateLog * adds unit test for update log * renames epoch related consts * modifies updateLog with new return type and new logic of spam detection * adds unit text for the modified updateLog * changes max epoch gap type size * splits updateLog into two procs isSpam and updateLog * updates unittests * fixes a bug, returns false when the message is not spam * renames messageLog to nullifierLog * renames isSpam to hasDuplicate * updates the rln validator, adds comments * adds appendRLNProof proc plus some code beatification * unit test for validate message * adds unhappy test to validateMessage unit test * renames EPOCH_UNIT_SECONDS * renames MAX_CLOCK_GAP_SECONDS * WIP: integration test * fixes compile errors * sets a real epoch value * updates on old unittests * adds comments to the rln relay tests * adds more comments * makes rln import conditional * adds todos * adds more todos * adds rln-relay mount process into chat2 * further todos * logs contentTopic * introduces rln relay configs * changes default pubsub topic * adds contentTopic config * imports rln relay dependencies * consolidates imports * removes module identifier from ContentTopic * adds contentTopic field * adds contentTopic argument to mountRlnRelay calls * appends rln proof to chat2 messages * changes the default chat2 contentTopic * adds missing content topic fields * fixes a bug * adds a new logic about empty content topics * appends proof only when rln flag is active * removes unnecessary todos * fixes an indentation issue * adds log messages * verifies the proof against the concatenation of msg payload and content topic * a bug fix * removes duplicate epoch time calculation * updates log level to trace * updates default rln-relay content topic * adds support for empty content topics * updates changelog * changelog updates * removes a commented code block * updates addRLNRelayValidator string doc
18 KiB
Next Release
Release highlights:
The full list of changes is below.
Features
- The
waku-rln-relaynow supports spam-protection for a specific combination ofpubsubTopicandcontentTopic(available under therlncompiler flag). - The
waku-rln-relayprotocol in integrated intochat2(available under therlncompiler flag)
Changes
- ...
Fixes
- ...
2021-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!