Skip to content

v0.8.0

Compare
Choose a tag to compare
@richard-ramos richard-ramos released this 18 Sep 00:30
· 319 commits to master since this release

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