Skip to content

Commit 43ef1ee

Browse files
committed
Merge branch 'master' into fix/gasprice-variable-type
2 parents 993d534 + c0a7deb commit 43ef1ee

File tree

128 files changed

+977
-491
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

128 files changed

+977
-491
lines changed

CHANGELOG.md

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,62 @@
1+
## v0.37.0 (2025-10-01)
2+
3+
### Notes
4+
5+
- Deprecated parameters:
6+
- `tree_path` and `rlnDB` (RLN-related storage paths)
7+
- `--dns-discovery` (fully removed, including dns-discovery-name-server)
8+
- `keepAlive` (deprecated, config updated accordingly)
9+
- Legacy `store` protocol is no longer supported by default.
10+
- Improved sharding configuration: now explicit and shard-specific metrics added.
11+
- Mix nodes are limited to IPv4 addresses only.
12+
- [lightpush legacy](https://github.com/vacp2p/rfc-index/blob/main/waku/standards/core/19/lightpush.md) is being deprecated. Use [lightpush v3](https://github.com/waku-org/specs/blob/master/standards/core/lightpush.md) instead.
13+
14+
### Features
15+
16+
- Waku API: create node via API ([#3580](https://github.com/waku-org/nwaku/pull/3580)) ([bc8acf76](https://github.com/waku-org/nwaku/commit/bc8acf76))
17+
- Waku Sync: full topic support ([#3275](https://github.com/waku-org/nwaku/pull/3275)) ([9327da5a](https://github.com/waku-org/nwaku/commit/9327da5a))
18+
- Mix PoC implementation ([#3284](https://github.com/waku-org/nwaku/pull/3284)) ([eb7a3d13](https://github.com/waku-org/nwaku/commit/eb7a3d13))
19+
- Rendezvous: add request interval option ([#3569](https://github.com/waku-org/nwaku/pull/3569)) ([cc7a6406](https://github.com/waku-org/nwaku/commit/cc7a6406))
20+
- Shard-specific metrics tracking ([#3520](https://github.com/waku-org/nwaku/pull/3520)) ([c3da29fd](https://github.com/waku-org/nwaku/commit/c3da29fd))
21+
- Libwaku: build Windows DLL for Status-go ([#3460](https://github.com/waku-org/nwaku/pull/3460)) ([5c38a53f](https://github.com/waku-org/nwaku/commit/5c38a53f))
22+
- RLN: add Stateless RLN support ([#3621](https://github.com/waku-org/nwaku/pull/3621))
23+
- LOG: Reduce log level of messages from debug to info for better visibility ([#3622](https://github.com/waku-org/nwaku/pull/3622))
24+
25+
### Bug Fixes
26+
27+
- Prevent invalid pubsub topic subscription via Relay REST API ([#3559](https://github.com/waku-org/nwaku/pull/3559)) ([a36601ab](https://github.com/waku-org/nwaku/commit/a36601ab))
28+
- Fixed node crash when RLN is unregistered ([#3573](https://github.com/waku-org/nwaku/pull/3573)) ([3d0c6279](https://github.com/waku-org/nwaku/commit/3d0c6279))
29+
- REST: fixed sync protocol issues ([#3503](https://github.com/waku-org/nwaku/pull/3503)) ([393e3cce](https://github.com/waku-org/nwaku/commit/393e3cce))
30+
- Regex pattern fix for `username:password@` in URLs ([#3517](https://github.com/waku-org/nwaku/pull/3517)) ([89a3f735](https://github.com/waku-org/nwaku/commit/89a3f735))
31+
- Sharding: applied modulus fix ([#3530](https://github.com/waku-org/nwaku/pull/3530)) ([f68d7999](https://github.com/waku-org/nwaku/commit/f68d7999))
32+
- Metrics: switched to counter instead of gauge ([#3355](https://github.com/waku-org/nwaku/pull/3355)) ([a27eec90](https://github.com/waku-org/nwaku/commit/a27eec90))
33+
- Fixed lightpush metrics and diagnostics ([#3486](https://github.com/waku-org/nwaku/pull/3486)) ([0ed3fc80](https://github.com/waku-org/nwaku/commit/0ed3fc80))
34+
- Misc sync, dashboard, and CI fixes ([#3434](https://github.com/waku-org/nwaku/pull/3434), [#3508](https://github.com/waku-org/nwaku/pull/3508), [#3464](https://github.com/waku-org/nwaku/pull/3464))
35+
- Raise log level of numerous operational messages from debug to info for better visibility ([#3622](https://github.com/waku-org/nwaku/pull/3622))
36+
37+
### Changes
38+
39+
- Enable peer-exchange by default ([#3557](https://github.com/waku-org/nwaku/pull/3557)) ([7df526f8](https://github.com/waku-org/nwaku/commit/7df526f8))
40+
- Refactor peer-exchange client and service implementations ([#3523](https://github.com/waku-org/nwaku/pull/3523)) ([4379f9ec](https://github.com/waku-org/nwaku/commit/4379f9ec))
41+
- Updated rendezvous to use callback-based shard/capability updates ([#3558](https://github.com/waku-org/nwaku/pull/3558)) ([028bf297](https://github.com/waku-org/nwaku/commit/028bf297))
42+
- Config updates and explicit sharding setup ([#3468](https://github.com/waku-org/nwaku/pull/3468)) ([994d485b](https://github.com/waku-org/nwaku/commit/994d485b))
43+
- Bumped libp2p to v1.13.0 ([#3574](https://github.com/waku-org/nwaku/pull/3574)) ([b1616e55](https://github.com/waku-org/nwaku/commit/b1616e55))
44+
- Removed legacy dependencies (e.g., libpcre in Docker builds) ([#3552](https://github.com/waku-org/nwaku/pull/3552)) ([4db4f830](https://github.com/waku-org/nwaku/commit/4db4f830))
45+
- Benchmarks for RLN proof generation & verification ([#3567](https://github.com/waku-org/nwaku/pull/3567)) ([794c3a85](https://github.com/waku-org/nwaku/commit/794c3a85))
46+
- Various CI/CD & infra updates ([#3515](https://github.com/waku-org/nwaku/pull/3515), [#3505](https://github.com/waku-org/nwaku/pull/3505))
47+
48+
### This release supports the following [libp2p protocols](https://docs.libp2p.io/concepts/protocols/):
49+
50+
| Protocol | Spec status | Protocol id |
51+
| ---: | :---: | :--- |
52+
| [`11/WAKU2-RELAY`](https://github.com/vacp2p/rfc-index/blob/main/waku/standards/core/11/relay.md) | `stable` | `/vac/waku/relay/2.0.0` |
53+
| [`12/WAKU2-FILTER`](https://github.com/vacp2p/rfc-index/blob/main/waku/standards/core/12/filter.md) | `draft` | `/vac/waku/filter/2.0.0-beta1` <br />`/vac/waku/filter-subscribe/2.0.0-beta1` <br />`/vac/waku/filter-push/2.0.0-beta1` |
54+
| [`13/WAKU2-STORE`](https://github.com/vacp2p/rfc-index/blob/main/waku/standards/core/13/store.md) | `draft` | `/vac/waku/store/2.0.0-beta4` |
55+
| [`19/WAKU2-LIGHTPUSH`](https://github.com/vacp2p/rfc-index/blob/main/waku/standards/core/19/lightpush.md) | `draft` | `/vac/waku/lightpush/2.0.0-beta1` |
56+
| [`WAKU2-LIGHTPUSH v3`](https://github.com/waku-org/specs/blob/master/standards/core/lightpush.md) | `draft` | `/vac/waku/lightpush/3.0.0` |
57+
| [`66/WAKU2-METADATA`](https://github.com/waku-org/specs/blob/master/standards/core/metadata.md) | `raw` | `/vac/waku/metadata/1.0.0` |
58+
| [`WAKU-SYNC`](https://github.com/waku-org/specs/blob/master/standards/core/sync.md) | `draft` | `/vac/waku/sync/1.0.0` |
59+
160
## v0.36.0 (2025-06-20)
261
### Notes
362

Dockerfile.lightpushWithMix.compile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# BUILD NIM APP ----------------------------------------------------------------
2-
FROM rust:1.81.0-alpine3.19 AS nim-build
2+
FROM rustlang/rust:nightly-alpine3.19 AS nim-build
33

44
ARG NIMFLAGS
55
ARG MAKE_TARGET=lightpushwithmix

Makefile

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ ifeq ($(detected_OS),Windows)
4343

4444
LIBS = -lws2_32 -lbcrypt -liphlpapi -luserenv -lntdll -lminiupnpc -lnatpmp -lpq
4545
NIM_PARAMS += $(foreach lib,$(LIBS),--passL:"$(lib)")
46+
47+
export PATH := /c/msys64/usr/bin:/c/msys64/mingw64/bin:/c/msys64/usr/lib:/c/msys64/mingw64/lib:$(PATH)
48+
4649
endif
4750

4851
##########
@@ -143,6 +146,9 @@ ifeq ($(USE_LIBBACKTRACE), 0)
143146
NIM_PARAMS := $(NIM_PARAMS) -d:disable_libbacktrace
144147
endif
145148

149+
# enable experimental exit is dest feature in libp2p mix
150+
NIM_PARAMS := $(NIM_PARAMS) -d:libp2p_mix_experimental_exit_is_dest
151+
146152
libbacktrace:
147153
+ $(MAKE) -C vendor/nim-libbacktrace --no-print-directory BUILD_CXX_LIB=0
148154

@@ -421,13 +427,13 @@ docker-liteprotocoltester-push:
421427

422428
STATIC ?= 0
423429

424-
425430
libwaku: | build deps librln
426431
rm -f build/libwaku*
427432

428433
ifeq ($(STATIC), 1)
429434
echo -e $(BUILD_MSG) "build/[email protected]" && $(ENV_SCRIPT) nim libwakuStatic $(NIM_PARAMS) waku.nims
430435
else ifeq ($(detected_OS),Windows)
436+
make -f scripts/libwaku_windows_setup.mk windows-setup
431437
echo -e $(BUILD_MSG) "build/[email protected]" && $(ENV_SCRIPT) nim libwakuDynamic $(NIM_PARAMS) waku.nims
432438
else
433439
echo -e $(BUILD_MSG) "build/[email protected]" && $(ENV_SCRIPT) nim libwakuDynamic $(NIM_PARAMS) waku.nims

apps/chat2bridge/chat2bridge.nim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ proc stop*(cmb: Chat2MatterBridge) {.async: (raises: [Exception]).} =
240240
{.pop.}
241241
# @TODO confutils.nim(775, 17) Error: can raise an unlisted exception: ref IOError
242242
when isMainModule:
243-
import waku/common/utils/nat, waku/waku_api/message_cache
243+
import waku/common/utils/nat, waku/rest_api/message_cache
244244

245245
let
246246
rng = newRng()

apps/chat2mix/chat2mix.nim

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,8 @@ type
8282
PrivateKey* = crypto.PrivateKey
8383
Topic* = waku_core.PubsubTopic
8484

85+
const MinMixNodePoolSize = 4
86+
8587
#####################
8688
## chat2 protobufs ##
8789
#####################
@@ -124,7 +126,7 @@ proc encode*(message: Chat2Message): ProtoBuffer =
124126

125127
return serialised
126128

127-
proc toString*(message: Chat2Message): string =
129+
proc `$`*(message: Chat2Message): string =
128130
# Get message date and timestamp in local time
129131
let time = message.timestamp.fromUnix().local().format("'<'MMM' 'dd,' 'HH:mm'>'")
130132

@@ -331,13 +333,14 @@ proc maintainSubscription(
331333
const maxFailedServiceNodeSwitches = 10
332334
var noFailedSubscribes = 0
333335
var noFailedServiceNodeSwitches = 0
334-
const RetryWaitMs = 2.seconds # Quick retry interval
335-
const SubscriptionMaintenanceMs = 30.seconds # Subscription maintenance interval
336+
# Use chronos.Duration explicitly to avoid mismatch with std/times.Duration
337+
let RetryWait = chronos.seconds(2) # Quick retry interval
338+
let SubscriptionMaintenance = chronos.seconds(30) # Subscription maintenance interval
336339
while true:
337340
info "maintaining subscription at", peer = constructMultiaddrStr(actualFilterPeer)
338341
# First use filter-ping to check if we have an active subscription
339342
let pingErr = (await wakuNode.wakuFilterClient.ping(actualFilterPeer)).errorOr:
340-
await sleepAsync(SubscriptionMaintenanceMs)
343+
await sleepAsync(SubscriptionMaintenance)
341344
info "subscription is live."
342345
continue
343346

@@ -350,7 +353,7 @@ proc maintainSubscription(
350353
some(filterPubsubTopic), filterContentTopic, actualFilterPeer
351354
)
352355
).errorOr:
353-
await sleepAsync(SubscriptionMaintenanceMs)
356+
await sleepAsync(SubscriptionMaintenance)
354357
if noFailedSubscribes > 0:
355358
noFailedSubscribes -= 1
356359
notice "subscribe request successful."
@@ -365,7 +368,7 @@ proc maintainSubscription(
365368
# wakunode.peerManager.peerStore.delete(actualFilterPeer)
366369

367370
if noFailedSubscribes < maxFailedSubscribes:
368-
await sleepAsync(RetryWaitMs) # Wait a bit before retrying
371+
await sleepAsync(RetryWait) # Wait a bit before retrying
369372
elif not preventPeerSwitch:
370373
# try again with new peer without delay
371374
let actualFilterPeer = selectRandomServicePeer(
@@ -380,7 +383,7 @@ proc maintainSubscription(
380383

381384
noFailedSubscribes = 0
382385
else:
383-
await sleepAsync(SubscriptionMaintenanceMs)
386+
await sleepAsync(SubscriptionMaintenance)
384387

385388
{.pop.}
386389
# @TODO confutils.nim(775, 17) Error: can raise an unlisted exception: ref IOError
@@ -450,6 +453,8 @@ proc processInput(rfd: AsyncFD, rng: ref HmacDrbgContext) {.async.} =
450453
(await node.mountMix(conf.clusterId, mixPrivKey, conf.mixnodes)).isOkOr:
451454
error "failed to mount waku mix protocol: ", error = $error
452455
quit(QuitFailure)
456+
await node.mountRendezvousClient(conf.clusterId)
457+
453458
await node.start()
454459

455460
node.peerManager.start()
@@ -587,22 +592,22 @@ proc processInput(rfd: AsyncFD, rng: ref HmacDrbgContext) {.async.} =
587592
error "Couldn't find any service peer"
588593
quit(QuitFailure)
589594

590-
#await mountLegacyLightPush(node)
591595
node.peerManager.addServicePeer(servicePeerInfo, WakuLightpushCodec)
592596
node.peerManager.addServicePeer(servicePeerInfo, WakuPeerExchangeCodec)
597+
#node.peerManager.addServicePeer(servicePeerInfo, WakuRendezVousCodec)
593598

594599
# Start maintaining subscription
595600
asyncSpawn maintainSubscription(
596601
node, pubsubTopic, conf.contentTopic, servicePeerInfo, false
597602
)
598603
echo "waiting for mix nodes to be discovered..."
599604
while true:
600-
if node.getMixNodePoolSize() >= 3:
605+
if node.getMixNodePoolSize() >= MinMixNodePoolSize:
601606
break
602607
discard await node.fetchPeerExchangePeers()
603608
await sleepAsync(1000)
604609

605-
while node.getMixNodePoolSize() < 3:
610+
while node.getMixNodePoolSize() < MinMixNodePoolSize:
606611
info "waiting for mix nodes to be discovered",
607612
currentpoolSize = node.getMixNodePoolSize()
608613
await sleepAsync(1000)

apps/liteprotocoltester/diagnose_connections.nim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import
1414
libp2p/wire
1515

1616
import
17-
../../tools/confutils/cli_args,
17+
tools/confutils/cli_args,
1818
waku/[
1919
node/peer_manager,
2020
waku_lightpush/common,

apps/liteprotocoltester/liteprotocoltester.nim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import
1111
confutils
1212

1313
import
14-
../../tools/confutils/cli_args,
14+
tools/confutils/cli_args,
1515
waku/[
1616
common/enr,
1717
common/logging,

apps/liteprotocoltester/receiver.nim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ proc maintainSubscription(
7777
some(filterPubsubTopic), filterContentTopic, actualFilterPeer
7878
)
7979
).errorOr:
80-
await sleepAsync(subscriptionMaintenanceMs)
80+
await sleepAsync(SubscriptionMaintenanceMs)
8181
if noFailedSubscribes > 0:
8282
noFailedSubscribes -= 1
8383
notice "subscribe request successful."

apps/liteprotocoltester/service_peer_management.nim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import
1111
libp2p/wire
1212

1313
import
14-
../wakunode2/cli_args,
14+
tools/confutils/cli_args,
1515
waku/[
1616
common/enr,
1717
waku_node,

apps/liteprotocoltester/statistics.nim

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ import
88
results,
99
libp2p/peerid
1010

11+
from std/sugar import `=>`
12+
1113
import ./tester_message, ./lpt_metrics
1214

1315
type

0 commit comments

Comments
 (0)