Fabiana Cecin 41b5c4906f
feat: Improve config (v2) (#3925)
* rename NetworkConf -> NetworkPresetConf and related procs/vars
* Rewrite applyNetworkPresetConf to apply user-set fields over preset fields
* New dedicated parser for configJson
* Fix tests to use actual extract JSON nodeconf parser
* Change all confbuilder defaults from literal values to DefaultXXX consts
* Change int/bool WakuNodeConf fields to Option to get user intent w/o sentinels
* Make Option CLI default-value help mention defaults now owned by confbuilder
* Document CLI defaults that differ from confbuilder defaults
* Fix agent-string builder default deviating from CLI default
* Add WakuConfBuilder.enforceSecurityConstraints()
* Fail on RLN user preset overrides instead of drop-and-continue
* Add regression tests for initial set of conf constraints
* fix kademliaDiscoveryConfBuilder.build() enable/disable kad logic
* Misc refactors, fixes
* Add tests

Co-authored-by: Ivan FB <128452529+Ivansete-status@users.noreply.github.com>
2026-06-10 09:09:22 -03:00
..
2025-12-22 15:40:09 +02:00
2024-12-02 10:56:12 -04:00
2025-10-01 16:31:34 +10:00

Examples

Compile

Make all examples.

make example2

Waku API

Uses the simplified Waku API to create and start a node, you need an RPC endpoint for Linea Sepolia for RLN:

./build/waku_api --ethRpcEndpoint=https://linea-sepolia.infura.io/v3/<your key>

If you can't be bothered but still want to see some action, just run the binary and it will use a non-RLN network:

./build/waku_api

## publisher/subscriber

Within examples/ you can find a publisher and a subscriber. The first one publishes messages to the default pubsub topic on a given content topic, and the second one runs forever listening to that pubsub topic and printing the content it receives.

Some notes:

  • These examples are meant to work even if you are behind a firewall and you can't be discovered by discv5.
  • You only need to provide a reachable bootstrap peer (see our fleets)
  • The examples are meant to work out of the box.
  • Note that both services wait for some time until a given minimum amount of connections are reached. This is to ensure messages are gossiped.

Run:

Wait until the subscriber is ready.

./build/subscriber

And run a publisher

./build/publisher

See how the subscriber received the messages published by the publisher. Feel free to experiment from different machines in different locations.

resource-restricted publisher/subscriber (lightpush/filter)

To illustrate publishing and receiving messages on a resource-restricted client, examples/v2 also provides a lightpush_publisher and a filter_subscriber. The lightpush_publisher continually publishes messages via a lightpush service node to the default pubsub topic on a given content topic. The filter_subscriber subscribes via a filter service node to the same pubsub and content topic. It runs forever, maintaining this subscription and printing the content it receives.

Run Start the filter subscriber.

./build/filter_subscriber

And run a lightpush publisher

./build/lightpush_publisher

See how the filter subscriber receives messages published by the lightpush publisher. Neither the publisher nor the subscriber participates in relay, but instead make use of service nodes to save resources. Feel free to experiment from different machines in different locations.