Skip to content

Releases: waku-org/go-waku

v0.9.0

14 Nov 22:08
fcbe369
Compare
Choose a tag to compare

What's New?

  • Autosharding support has been added to Filter and Store protocols
  • Improved peer management, taking into account sharding, and adding on demand discovery
  • New Lightpush protocol REST API
  • New Admin REST API
  • New REST API for sharding for Relay protocol
  • Exit code 166 is returned for non-recoverable errors
  • Lower gossipsub dhigh to limit amplification factor

Breaking Changes:

  • c-bindings receive an userdata parameter which is used to assign the result of the function execution
  • --store-message-db-vacuum flag was removed. VACUUM should be executed manually as it is no longer part of the code of go-waku

List of changes

Read more

v0.8.0

18 Sep 00:30
Compare
Choose a tag to compare

New features

  • RLN is available in service nodes and libraries by default
  • Improved peer management and connection prunning with relay
  • Added flag --max-connections to limit maximum number of peers allowed
  • --pubsub-topic will automatically subscribe the node to a shard
  • Added filter functions for DiscoveryV5
  • Core autosharding logic
  • Added /health endpoint to REST server
  • Upgraded to zerokit 0.3.4
  • Updated docs and docker image
  • Added websockets support to C-Bindings
  • Added prometheus metrics to RLN-Relay
  • Updated go-libp2p to v0.28.1 and other dependencies
  • Common protocol design
  • Log node reachability changes
  • Use pgx instead of lib/pq as the latter is deprecated
  • Added an example on the usage of RLN
  • Added new flags --store-message-db-vacuum and --store-message-db-migrate to execute VACUUM in the database, and disable database migrations
  • If only one key is available in the keystore, it will be loaded automatically
  • RLN Relay does not require credentials for relaying messages
  • Use waku's RLN Registry contract for membership verification
  • Persist RLN membership and valid merkle roots into a DB
  • Added --pubsub-topic and --content-topic flags for autosharding
  • Add tls/ws to list of multiaddresses when using secure websockets
  • Append RLN proofs when posting messages in REST/RPC
  • Added utils to have a backoff strategy for connecting to rendezvous points
  • Exposed go-libp2p metrics
  • New subcommand to generate RLN credentials: waku generate-rln-credentials
  • Store pubsubTopics supported by a peer into the peer store
  • Peer connector will keep slots to allow connections to service nodes

Fixes

  • Possible data races in the code
  • Optimized the fetching of membership events from the RLN smart contract
  • RLN Validators are executed sequentially
  • Compilation issues in examples
  • Invalid protocol list order in gossipsub
  • Peerstore DNS4 addresses are added back to the peerstore after being removed from go-libp2p identify
  • Peer connector will concurrently dial up to 5 nodes at a time
  • Increased CodeClimate maintainability score to A
  • Allow using both static and named shards at the same time
  • KeepAlive will not disconnect all peers but only if there's a failure when pinging them
  • Log output and encoding flags are no longer ignored
  • Obtain circuit relay multiaddresses from ENR
  • Duplication of messages within same epoch was incorrect
  • requestID not being populated when unsubscribing from filter
  • Thread safe peer channel in DiscoveryV5
  • Nil err while removing a filter subscription
  • Make FilterV2 safe for usage in goroutines
  • Sync RLN membership events from block on which the contract was deployed
  • Confirm RLN credential is valid via onchain query
  • Loop counter used to write multiaddresses into node's ENR
  • Clean up RLN nullifier table periodically
  • Log ENR only after it has been setup
  • Invalid protobuffer definition being used in FilterV2
  • RLN database will verify the chainID and contract address
  • FilterV2 will unsubscribe from all peers unless an specific peer is set

Breaking changes

  • C-Bindings use callbacks to handle both success and error responses
  • Rendezvous operations are now initiated by the application layer and not by go-waku itself
  • Updated --topics flag to --pubsub-topic`
  • RLN is applied to all pubsub topics and content topics
  • Upgrade RLN Keystore data format
  • Moved --generate-key to a generate-key subcommand
  • Removed waku_relay_publish_enc_asymmetric, waku_relay_publish_enc_symmetric, waku_lightpush_publish_enc_asymmetric and waku_lightpush_publish_enc_symmetric from C-Bindings and replaced these by waku_encode_symmetric and waku_encode_asymmetric
  • Renamed nwaku-rln-relay to waku-rln-relay in RLN keystore

v0.7.0

26 Jun 18:48
Compare
Choose a tag to compare

Full Changelog: v0.6.0...v0.7.0

New features

  • New flags --resource-scaling-memory-percentage and --resource-scaling-file-descriptors-percentage available to setup the percentage of total accessible memory and total file descriptors for go-waku
  • --ext-ip and --dns4-domain-name flags can be used at the same time to define additional multiaddresses
  • Support for GossipSub scoring parameters added to WakuRelay
  • Limit inbound connections to 10 connections per IP
  • Store peer's ENR and origin (DiscV5, DNSDiscovery, PeerExchange, Rendezvous) into peer store
  • Added FilterV2 functions to c-bindings
  • waku_discv5_update_bootnodes is available in the c-bindings to update the DiscoveryV5 bootnodes
  • Added functions to find peers in a shard, and peers using a predicate in DiscoveryV5
  • New utils functions to setup the relay shard fields in a node's ENR

Fixes:

  • Dead loop after calling WakuNode.Stop()
  • Updated rendezvous to latest spec to achieve interop with nwaku
  • Handle IPv6 addresses correctly
  • IsOnline will take into account when the node only is running light protocols
  • Use nanoseconds instead of seconds in c-bindings example

Code changes

  • Update protobuf and libp2p dependencies
  • Remove unneeded Connect as dns4 addresses are being resolved automatically by libp2p

Breaking changes:

  • FilterV1 functions in c-bindings were renamed from waku_filter_ to waku_legacy_filter_

v0.6.0

15 May 15:52
30b9fac
Compare
Choose a tag to compare

New features

  • DoS protected topics are available by using relay.AddSignedTopicValidator and relay.SignMessage functions
  • Added webtransport to the list of available transports
  • Update go-libp2p and go-libp2p-pubsub to fix memory leak
  • Added seenMessagesTTLSeconds to gossipsub parameters in c-bindings
  • Added waku_relay_topics to c-bindings to get the list of subscribed pubsub topics
  • Go-waku can now act as a libp2p rendezvous client
  • Circuit relay and hole punching is available in service node
  • Nix can be used to build go-waku
  • Added store protocol to REST server
  • --ext-ip can be used to setup a custom IP address
  • Added the WithConnectionNotification option to register a channel in which peer connections / disconnections are pushed
  • New utils for handling shards and building ENRs
  • Added new metrics to protocols
  • Update RLN logic to match nwaku

Fixes:

  • Node private key can be set via GOWAKU_NODEKEY environment variable
  • The number of content topics in filter protocol was limited to 10, and a timeout was added to message push
  • Filter protocol will ignore messages received if they were sent by a node we are not subscribed to
  • Handle chain forks in RLN
  • Handle max number of smart contract logs exceeded when retrieving the full membership history from the RLN contract
  • Fixed an issue that occurred when shutting down the node while attempting to connect to a discovered peer
  • In c-bindings, removing a duplicated filter will not crash
  • Only the last discovered nodes was being set while using DNS discovery.

Code changes

  • Broadcaster was completely revamped and it is now initialized when the node is started
  • Host is injected in the Waku Node when it is started (previously it was done as soon as a node was created)
  • Peer Exchange's peer cache uses an LRU for storing peers
  • Discv5 is now lock free

Breaking changes:

  • Swap protocol was removed
  • Renamed Filter protocol to LegacyFilter, and FilterV2 to Filter

v0.5.2

14 Mar 01:51
71d4ea3
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.5.1...v0.5.2

v0.5.1

20 Feb 21:59
f4e6441
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.5.0...v0.5.1

v0.5.0

17 Feb 15:45
Compare
Choose a tag to compare

What's Changed

  • Circuit relay information is added to the node's ENR so nodes behind a router with no NAT can still be discovered by hole punching
  • More than one custom multiaddress can be advertised with the flag --ext-multiaddr
  • Experimental implementation of the improved filter protocol specifications is available with --use-filterv2 flag and also through node.WithWakuFilterV2FullNode() and node.WithWakuFilterV2LightNode() options when instantiating waku
  • C-Bindings:
    • Nodes can act now as storenodes by specifying this in the node configuration
    • Breaking Change: DNSDiscovery will now return the ENR and PeerID along with the Multiaddresses obtained from an enr tree URL. This ENR can be used to obtain the ENRs necessary to setup the bootnodes for DiscV5
    • Breaking Change: The node will not automatically subscribe to the default waku topic
  • Breaking change: The JSON RPC API now expects byte arrays to be encoded as base64url strings instead of hexadecimal strings or int arrays
  • All dependencies were upgraded

Full Changelog: v0.4.0...v0.5.0

v0.4.0

23 Jan 21:57
b8ac7f4
Compare
Choose a tag to compare

What's Changed

  • PostgreSQL support
  • Added support to load configuration from toml files or environment variables
  • Improved result iterator for simpler retrieval of messages from storenodes
  • Refactor: peer discovery management and discv5
  • Empty responses from a storenode will not generate an error
  • Updating the localnode ENR when the node multiaddresses change no longer requires restarting discv5

Full Changelog: v0.3.1...v0.4.0

v0.3.1

03 Jan 15:51
Compare
Choose a tag to compare

What's Changed

  • fix: start rpc/rest with no relay
  • fix: enable store only when WithWakuStore is used

Full Changelog: v0.3.0...v0.3.1

v0.3.0

21 Dec 20:08
Compare
Choose a tag to compare

What's Changed

New features

  • Implementation of the following Waku v2 protocols
  • Created indexes to message table to speedup queries
  • zerokit is used for RLN
  • Allow multiple acceptable merkletree roots to validate RLN proofs
  • Credentials management for wakunode and chat2 example
  • Lightpush can be used as a client (no need for the Wakunode to mount the Lightpush protocol)
  • Allow setting log level and format via flags
  • Added DNS Discovery and DiscoveryV5 to C API
  • Allow setting the user agent of the WakuNode with --agent-string flag
  • Added Find function to retrieve a message from a storenode that matches a criteria
  • A list of peerID to chose can be specified when doing storenode/filter/lightpush/peerexchange requests
  • Added NTP Timesource to obtain the current timestamp
  • The --store-message-db-url flag can be used to specify a database and configuration parameters
  • Using the --pprof flag adds a /debug/pprof endpoint to the RPC/REST server to obtain profiling data

Fixes

  • Update WakuNode ENR if there's an update in the node's listening addresses
  • C API can now be compiled in macos M1 architecture
  • Setting correct message version while using RPC methods
  • Separate error and success responses as per the specification
  • Use mobile.connectPeerID in connect_peerid in c-bindings
  • Fix symmetric encoding, signatures and pubkeys in c-bindings
  • Upgrade dependencies to more recent versions
  • Reduce memory usage of RPC server
  • Resubscribe to Ethereum websocket connection on disconnects
  • Set the TLS minimum version to 1.2 when using secure websockets
  • Handle missing PagingInfo in a storenode response
  • Force disconnect if keepAlive loop hasnt been executed recently
  • Allow inserting messages into the DB if the sender timestamp is 0

General

  • Use of context.Context instead of quit channels
  • Execute DiscoveryV5 loop as a separate goroutine

Breaking changes

  • Updated store and RLN flags to match nwaku
  • Removed --persist-messages. If --store is used, tmessages will be persisted
  • Removed go-waku-rendezvous
  • Limited the number of ContentTopics per storenode request to 10
  • Refactor of store protocol logic
  • Moved noise to protocol package
  • Moved payload encoding/decoding functions to payload package
  • Extracted noise logic to [go-noise](https://github.com/waku-org/go-noise

Full Changelog: v0.2.2...v0.3.0