From cad22fbfc8093efa627fd2b681af035231c79388 Mon Sep 17 00:00:00 2001 From: stubbsta Date: Wed, 24 Jun 2026 11:03:41 +0200 Subject: [PATCH 1/6] Add rln validator to mountRlnRelay --- logos_delivery/waku/node/waku_node/relay.nim | 59 ++++++++++++++- logos_delivery/waku/rln/adapters/relay.nim | 78 -------------------- 2 files changed, 57 insertions(+), 80 deletions(-) delete mode 100644 logos_delivery/waku/rln/adapters/relay.nim diff --git a/logos_delivery/waku/node/waku_node/relay.nim b/logos_delivery/waku/node/waku_node/relay.nim index b1a2f9287..0e5ef9a04 100644 --- a/logos_delivery/waku/node/waku_node/relay.nim +++ b/logos_delivery/waku/node/waku_node/relay.nim @@ -13,6 +13,7 @@ import libp2p/crypto/crypto, libp2p/protocols/ping, libp2p/protocols/pubsub/gossipsub, + libp2p/protocols/pubsub/pubsub, libp2p/protocols/pubsub/rpc/messages, libp2p/builders, libp2p/transports/tcptransport, @@ -29,7 +30,6 @@ import waku_archive, waku_store_sync, rln, - rln/adapters/relay as waku_rln_adapter, node/waku_node, node/subscription_manager, node/peer_manager, @@ -202,7 +202,62 @@ proc mountRlnRelay*( raise newException(CatchableError, "failed to mount Rln: " & error) if (rlnConf.userMessageLimit > rln.groupManager.rlnRelayMaxMessageLimit): error "rln-relay-user-message-limit can't exceed the MAX_MESSAGE_LIMIT in the rln contract" - let validator = generateRlnValidator(rln, spamHandler) + + ## Bridges RLN's protocol-agnostic message validation into a relay + ## (gossipsub) validator. The core decision is made by + ## `validateMessageAndUpdateLog`; this maps the result to + ## `pubsub.ValidationResult` so the validator can be installed on + ## WakuRelay's validator chain. + proc validator( + topic: string, message: WakuMessage + ): Future[pubsub.ValidationResult] {.async.} = + trace "rln-relay topic validator is called" + rln.clearNullifierLog() + + let msgProof = RateLimitProof.init(message.proof).valueOr: + trace "rln validator reject", error = error + return pubsub.ValidationResult.Reject + + # validate the message and update log + let validationRes = await rln.validateMessageAndUpdateLog(message) + + let + proof = byteutils.toHex(msgProof.proof) + epoch = fromEpoch(msgProof.epoch) + root = inHex(msgProof.merkleRoot) + shareX = inHex(msgProof.shareX) + shareY = inHex(msgProof.shareY) + nullifier = inHex(msgProof.nullifier) + payload = string.fromBytes(message.payload) + case validationRes + of Valid: + trace "message validity is verified, relaying", + proof = proof, + root = root, + shareX = shareX, + shareY = shareY, + nullifier = nullifier + waku_rln_valid_messages_total.inc(labelValues = [topic]) + return pubsub.ValidationResult.Accept + of Invalid: + trace "message validity could not be verified, discarding", + proof = proof, + root = root, + shareX = shareX, + shareY = shareY, + nullifier = nullifier + return pubsub.ValidationResult.Reject + of Spam: + trace "A spam message is found! yay! discarding:", + proof = proof, + root = root, + shareX = shareX, + shareY = shareY, + nullifier = nullifier + if spamHandler.isSome(): + let handler = spamHandler.get() + handler(message) + return pubsub.ValidationResult.Reject # register rln validator as default validator info "Registering RLN validator" diff --git a/logos_delivery/waku/rln/adapters/relay.nim b/logos_delivery/waku/rln/adapters/relay.nim deleted file mode 100644 index cce1d6bbc..000000000 --- a/logos_delivery/waku/rln/adapters/relay.nim +++ /dev/null @@ -1,78 +0,0 @@ -{.push raises: [].} - -import - std/options, - chronicles, - chronos, - results, - stew/byteutils, - libp2p/protocols/pubsub/pubsub - -import ../rln, ../protocol_types, ../protocol_metrics, ../conversion_utils - -import logos_delivery/waku/[waku_relay, waku_core] - -logScope: - topics = "waku rln adapter" - -proc generateRlnValidator*( - rln: Rln, spamHandler = none(SpamHandler) -): WakuValidatorHandler = - ## Bridges RLN's protocol-agnostic message validation into a relay - ## (gossipsub) validator. The core decision is made by - ## `validateMessageAndUpdateLog`; this adapter maps the result to - ## `pubsub.ValidationResult` so the validator can be installed on - ## WakuRelay's validator chain. - ## Validation logic follows https://rfc.vac.dev/spec/17/ - proc validator( - topic: string, message: WakuMessage - ): Future[pubsub.ValidationResult] {.async.} = - trace "rln-relay topic validator is called" - rln.clearNullifierLog() - - let msgProof = RateLimitProof.init(message.proof).valueOr: - trace "generateRlnValidator reject", error = error - return pubsub.ValidationResult.Reject - - # validate the message and update log - let validationRes = await rln.validateMessageAndUpdateLog(message) - - let - proof = byteutils.toHex(msgProof.proof) - epoch = fromEpoch(msgProof.epoch) - root = inHex(msgProof.merkleRoot) - shareX = inHex(msgProof.shareX) - shareY = inHex(msgProof.shareY) - nullifier = inHex(msgProof.nullifier) - payload = string.fromBytes(message.payload) - case validationRes - of Valid: - trace "message validity is verified, relaying", - proof = proof, - root = root, - shareX = shareX, - shareY = shareY, - nullifier = nullifier - waku_rln_valid_messages_total.inc(labelValues = [topic]) - return pubsub.ValidationResult.Accept - of Invalid: - trace "message validity could not be verified, discarding", - proof = proof, - root = root, - shareX = shareX, - shareY = shareY, - nullifier = nullifier - return pubsub.ValidationResult.Reject - of Spam: - trace "A spam message is found! yay! discarding:", - proof = proof, - root = root, - shareX = shareX, - shareY = shareY, - nullifier = nullifier - if spamHandler.isSome(): - let handler = spamHandler.get() - handler(message) - return pubsub.ValidationResult.Reject - - return validator From f460815ee42cbd9298c4cdef26fbfb3268b024f7 Mon Sep 17 00:00:00 2001 From: stubbsta Date: Wed, 24 Jun 2026 16:40:18 +0200 Subject: [PATCH 2/6] remove requirement for relay when mounting RLN --- logos_delivery/waku/node/waku_node/relay.nim | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/logos_delivery/waku/node/waku_node/relay.nim b/logos_delivery/waku/node/waku_node/relay.nim index 0e5ef9a04..91744a3e6 100644 --- a/logos_delivery/waku/node/waku_node/relay.nim +++ b/logos_delivery/waku/node/waku_node/relay.nim @@ -193,16 +193,17 @@ proc mountRlnRelay*( ) {.async.} = info "mounting rln relay" - if node.wakuRelay.isNil(): - raise newException( - CatchableError, "WakuRelay protocol is not mounted, cannot mount Rln" - ) - let rln = (await Rln.new(rlnConf, registrationHandler)).valueOr: raise newException(CatchableError, "failed to mount Rln: " & error) if (rlnConf.userMessageLimit > rln.groupManager.rlnRelayMaxMessageLimit): error "rln-relay-user-message-limit can't exceed the MAX_MESSAGE_LIMIT in the rln contract" + node.rln = rln + + if node.wakuRelay.isNil(): + info "WakuRelay not mounted; RLN mounted without relay validator" + return + ## Bridges RLN's protocol-agnostic message validation into a relay ## (gossipsub) validator. The core decision is made by ## `validateMessageAndUpdateLog`; this maps the result to @@ -262,5 +263,3 @@ proc mountRlnRelay*( # register rln validator as default validator info "Registering RLN validator" node.wakuRelay.addValidator(validator, "RLN validation failed") - - node.rln = rln From 67003b55ed561e0b798f1eb5f7f5da1619f78b62 Mon Sep 17 00:00:00 2001 From: stubbsta Date: Sat, 27 Jun 2026 12:46:20 +0200 Subject: [PATCH 3/6] Rename mountRlnRelay to setRlnValidator --- apps/chat2/chat2.nim | 2 +- apps/networkmonitor/networkmonitor.nim | 2 +- logos_delivery/waku/factory/node_factory.nim | 2 +- logos_delivery/waku/node/waku_node/relay.nim | 3 +- tests/node/test_wakunode_legacy_lightpush.nim | 2 +- tests/node/test_wakunode_lightpush.nim | 2 +- tests/node/test_wakunode_relay_rln.nim | 4 +-- tests/waku_relay/utils.nim | 2 +- .../test_wakunode_rln_relay.nim | 28 +++++++++---------- tests/waku_rln_relay/utils_offchain.nim | 2 +- tests/wakunode_rest/test_rest_health.nim | 2 +- tests/wakunode_rest/test_rest_relay.nim | 12 ++++---- 12 files changed, 32 insertions(+), 31 deletions(-) diff --git a/apps/chat2/chat2.nim b/apps/chat2/chat2.nim index aa36300fc..647667b0c 100644 --- a/apps/chat2/chat2.nim +++ b/apps/chat2/chat2.nim @@ -544,7 +544,7 @@ proc processInput(rfd: AsyncFD, rng: crypto.Rng) {.async.} = epochSizeSec: conf.rlnEpochSizeSec, ) - waitFor node.mountRlnRelay(rlnConf, spamHandler = some(spamHandler)) + waitFor node.setRlnValidator(rlnConf, spamHandler = some(spamHandler)) let membershipIndex = node.rln.groupManager.membershipIndex.get() let identityCredential = node.rln.groupManager.idCredentials.get() diff --git a/apps/networkmonitor/networkmonitor.nim b/apps/networkmonitor/networkmonitor.nim index 2c0a5ca89..a23c778ef 100644 --- a/apps/networkmonitor/networkmonitor.nim +++ b/apps/networkmonitor/networkmonitor.nim @@ -619,7 +619,7 @@ when isMainModule: ) try: - waitFor node.mountRlnRelay(rlnConf) + waitFor node.setRlnValidator(rlnConf) except CatchableError: error "failed to setup RLN", error = getCurrentExceptionMsg() quit(QuitFailure) diff --git a/logos_delivery/waku/factory/node_factory.nim b/logos_delivery/waku/factory/node_factory.nim index 48a21aeb0..658a49e38 100644 --- a/logos_delivery/waku/factory/node_factory.nim +++ b/logos_delivery/waku/factory/node_factory.nim @@ -337,7 +337,7 @@ proc setupProtocols( ) try: - await node.mountRlnRelay(rlnConf) + await node.setRlnValidator(rlnConf) except CatchableError: return err("failed to mount waku RLN relay protocol: " & getCurrentExceptionMsg()) diff --git a/logos_delivery/waku/node/waku_node/relay.nim b/logos_delivery/waku/node/waku_node/relay.nim index 91744a3e6..c9947b237 100644 --- a/logos_delivery/waku/node/waku_node/relay.nim +++ b/logos_delivery/waku/node/waku_node/relay.nim @@ -185,7 +185,7 @@ proc mountRelay*( ## Waku RLN Relay -proc mountRlnRelay*( +proc setRlnValidator*( node: WakuNode, rlnConf: WakuRlnConfig, spamHandler = none(SpamHandler), @@ -230,6 +230,7 @@ proc mountRlnRelay*( shareY = inHex(msgProof.shareY) nullifier = inHex(msgProof.nullifier) payload = string.fromBytes(message.payload) + case validationRes of Valid: trace "message validity is verified, relaying", diff --git a/tests/node/test_wakunode_legacy_lightpush.nim b/tests/node/test_wakunode_legacy_lightpush.nim index 91be200f8..54cc0b6f6 100644 --- a/tests/node/test_wakunode_legacy_lightpush.nim +++ b/tests/node/test_wakunode_legacy_lightpush.nim @@ -128,7 +128,7 @@ suite "RLN Proofs as a Lightpush Service": (await server.mountRelay()).isOkOr: assert false, "Failed to mount relay" - await server.mountRlnRelay(wakuRlnConfig) + await server.setRlnValidator(wakuRlnConfig) check (await server.mountLegacyLightPush()).isOk() client.mountLegacyLightPushClient() diff --git a/tests/node/test_wakunode_lightpush.nim b/tests/node/test_wakunode_lightpush.nim index f5f8bdf45..6c28f5083 100644 --- a/tests/node/test_wakunode_lightpush.nim +++ b/tests/node/test_wakunode_lightpush.nim @@ -125,7 +125,7 @@ suite "RLN Proofs as a Lightpush Service": (await server.mountRelay()).isOkOr: assert false, "Failed to mount relay" - await server.mountRlnRelay(wakuRlnConfig) + await server.setRlnValidator(wakuRlnConfig) check (await server.mountLightPush()).isOk() client.mountLightPushClient() diff --git a/tests/node/test_wakunode_relay_rln.nim b/tests/node/test_wakunode_relay_rln.nim index c8aba49ee..34e09fe8e 100644 --- a/tests/node/test_wakunode_relay_rln.nim +++ b/tests/node/test_wakunode_relay_rln.nim @@ -93,7 +93,7 @@ proc setupRelayWithOnChainRln*( node: WakuNode, shards: seq[RelayShard], wakuRlnConfig: WakuRlnConfig ) {.async.} = await node.mountRelay(shards) - await node.mountRlnRelay(wakuRlnConfig) + await node.(wakuRlnConfig) suite "Waku RlnRelay - End to End - Static": var @@ -232,7 +232,7 @@ suite "Waku RlnRelay - End to End - Static": ) try: - await node.mountRlnRelay(wakuRlnConfig) + await node.setRlnValidator(wakuRlnConfig) except CatchableError as e: check e.msg == "failed to mount Rln: rln-relay-user-message-limit can't exceed the MAX_MESSAGE_LIMIT in the rln contract" diff --git a/tests/waku_relay/utils.nim b/tests/waku_relay/utils.nim index 8c5a6a184..eea37903d 100644 --- a/tests/waku_relay/utils.nim +++ b/tests/waku_relay/utils.nim @@ -36,7 +36,7 @@ proc newTestWakuRelay*(switch = newTestSwitch()): Future[WakuRelay] {.async.} = return proto proc setupRln*(node: WakuNode, identifier: uint) {.async.} = - await node.mountRlnRelay( + await node.setRlnValidator( WakuRlnConfig(dynamic: false, credIndex: some(identifier), epochSizeSec: 1) ) diff --git a/tests/waku_rln_relay/test_wakunode_rln_relay.nim b/tests/waku_rln_relay/test_wakunode_rln_relay.nim index 487d4a674..a92f5d3f8 100644 --- a/tests/waku_rln_relay/test_wakunode_rln_relay.nim +++ b/tests/waku_rln_relay/test_wakunode_rln_relay.nim @@ -52,7 +52,7 @@ procSuite "WakuNode - RLN relay": let wakuRlnConfig1 = getWakuRlnConfig(manager = manager, index = MembershipIndex(1)) - await node1.mountRlnRelay(wakuRlnConfig1) + await node1.(wakuRlnConfig1) await node1.start() # Registration is mandatory before sending messages with rln-relay @@ -76,7 +76,7 @@ procSuite "WakuNode - RLN relay": let wakuRlnConfig2 = getWakuRlnConfig(manager = manager, index = MembershipIndex(2)) - await node2.mountRlnRelay(wakuRlnConfig2) + await node2.setRlnValidator(wakuRlnConfig2) await node2.start() let manager2 = cast[OnchainGroupManager](node2.rln.groupManager) @@ -94,7 +94,7 @@ procSuite "WakuNode - RLN relay": let wakuRlnConfig3 = getWakuRlnConfig(manager = manager, index = MembershipIndex(3)) - await node3.mountRlnRelay(wakuRlnConfig3) + await node3.setRlnValidator(wakuRlnConfig3) await node3.start() let manager3 = cast[OnchainGroupManager](node3.rln.groupManager) @@ -165,7 +165,7 @@ procSuite "WakuNode - RLN relay": assert false, "Failed to mount relay" let wakuRlnConfig1 = getWakuRlnConfig(manager = manager, index = MembershipIndex(1)) - await node1.mountRlnRelay(wakuRlnConfig1) + await node1.setRlnValidator(wakuRlnConfig1) await node1.start() let manager1 = cast[OnchainGroupManager](node1.rln.groupManager) let idCredentials1 = generateCredentials() @@ -182,7 +182,7 @@ procSuite "WakuNode - RLN relay": assert false, "Failed to mount relay" let wakuRlnConfig2 = getWakuRlnConfig(manager = manager, index = MembershipIndex(2)) - await node2.mountRlnRelay(wakuRlnConfig2) + await node2.setRlnValidator(wakuRlnConfig2) await node2.start() let manager2 = cast[OnchainGroupManager](node2.rln.groupManager) let idCredentials2 = generateCredentials() @@ -199,7 +199,7 @@ procSuite "WakuNode - RLN relay": assert false, "Failed to mount relay" let wakuRlnConfig3 = getWakuRlnConfig(manager = manager, index = MembershipIndex(3)) - await node3.mountRlnRelay(wakuRlnConfig3) + await node3.setRlnValidator(wakuRlnConfig3) await node3.start() let manager3 = cast[OnchainGroupManager](node3.rln.groupManager) let idCredentials3 = generateCredentials() @@ -315,7 +315,7 @@ procSuite "WakuNode - RLN relay": let wakuRlnConfig1 = getWakuRlnConfig(manager = manager, index = MembershipIndex(1)) - await node1.mountRlnRelay(wakuRlnConfig1) + await node1.setRlnValidator(wakuRlnConfig1) await node1.start() let manager1 = cast[OnchainGroupManager](node1.rln.groupManager) @@ -336,7 +336,7 @@ procSuite "WakuNode - RLN relay": let wakuRlnConfig2 = getWakuRlnConfig(manager = manager, index = MembershipIndex(2)) - await node2.mountRlnRelay(wakuRlnConfig2) + await node2.setRlnValidator(wakuRlnConfig2) await node2.start() let manager2 = cast[OnchainGroupManager](node2.rln.groupManager) @@ -352,7 +352,7 @@ procSuite "WakuNode - RLN relay": let wakuRlnConfig3 = getWakuRlnConfig(manager = manager, index = MembershipIndex(3)) - await node3.mountRlnRelay(wakuRlnConfig3) + await node3.setRlnValidator(wakuRlnConfig3) await node3.start() let manager3 = cast[OnchainGroupManager](node3.rln.groupManager) @@ -426,7 +426,7 @@ procSuite "WakuNode - RLN relay": let wakuRlnConfig1 = getWakuRlnConfig(manager = manager, index = MembershipIndex(1)) - await node1.mountRlnRelay(wakuRlnConfig1) + await node1.setRlnValidator(wakuRlnConfig1) await node1.start() # Registration is mandatory before sending messages with rln-relay @@ -449,7 +449,7 @@ procSuite "WakuNode - RLN relay": let wakuRlnConfig2 = getWakuRlnConfig(manager = manager, index = MembershipIndex(2)) - await node2.mountRlnRelay(wakuRlnConfig2) + await node2.setRlnValidator(wakuRlnConfig2) await node2.start() # Registration is mandatory before sending messages with rln-relay @@ -467,7 +467,7 @@ procSuite "WakuNode - RLN relay": let wakuRlnConfig3 = getWakuRlnConfig(manager = manager, index = MembershipIndex(3)) - await node3.mountRlnRelay(wakuRlnConfig3) + await node3.setRlnValidator(wakuRlnConfig3) await node3.start() # Registration is mandatory before sending messages with rln-relay @@ -595,7 +595,7 @@ procSuite "WakuNode - RLN relay": assert false, "Failed to mount relay" let wakuRlnConfig1 = getWakuRlnConfig(manager = manager, index = MembershipIndex(1)) - await node1.mountRlnRelay(wakuRlnConfig1) + await node1.setRlnValidator(wakuRlnConfig1) await node1.start() # Registration is mandatory before sending messages with rln-relay @@ -614,7 +614,7 @@ procSuite "WakuNode - RLN relay": assert false, "Failed to mount relay" let wakuRlnConfig2 = getWakuRlnConfig(manager = manager, index = MembershipIndex(2)) - await node2.mountRlnRelay(wakuRlnConfig2) + await node2.setRlnValidator(wakuRlnConfig2) await node2.start() # Registration is mandatory before sending messages with rln-relay diff --git a/tests/waku_rln_relay/utils_offchain.nim b/tests/waku_rln_relay/utils_offchain.nim index 625b4ea2a..9976ec783 100644 --- a/tests/waku_rln_relay/utils_offchain.nim +++ b/tests/waku_rln_relay/utils_offchain.nim @@ -22,7 +22,7 @@ proc setupStaticRln*( identifier: uint, rlnRelayEthContractAddress: Option[string] = none(string), ) {.async.} = - await node.mountRlnRelay( + await node.setRlnValidator( WakuRlnConfig(dynamic: false, credIndex: some(identifier), epochSizeSec: 1) ) diff --git a/tests/wakunode_rest/test_rest_health.nim b/tests/wakunode_rest/test_rest_health.nim index 18a5abc4c..4a2fa0250 100644 --- a/tests/wakunode_rest/test_rest_health.nim +++ b/tests/wakunode_rest/test_rest_health.nim @@ -67,7 +67,7 @@ suite "Waku v2 REST API - health": let client = newRestHttpClient(initTAddress(restAddress, restPort)) # kick in rln (currently the only check for health) - await node.mountRlnRelay( + await node.setRlnValidator( getWakuRlnConfig(manager = manager, index = MembershipIndex(1)) ) diff --git a/tests/wakunode_rest/test_rest_relay.nim b/tests/wakunode_rest/test_rest_relay.nim index d32ba3373..ccf59b4fd 100644 --- a/tests/wakunode_rest/test_rest_relay.nim +++ b/tests/wakunode_rest/test_rest_relay.nim @@ -261,7 +261,7 @@ suite "Waku v2 Rest API - Relay": assert false, "Failed to mount relay" let wakuRlnConfig = getWakuRlnConfig(manager = manager, index = MembershipIndex(1)) - await node.mountRlnRelay(wakuRlnConfig) + await node.setRlnValidator(wakuRlnConfig) await node.start() # Registration is mandatory before sending messages with rln-relay let manager = cast[OnchainGroupManager](node.rln.groupManager) @@ -509,7 +509,7 @@ suite "Waku v2 Rest API - Relay": let wakuRlnConfig = getWakuRlnConfig(manager = manager, index = MembershipIndex(1)) - await meshNode.mountRlnRelay(wakuRlnConfig) + await meshNode.setRlnValidator(wakuRlnConfig) await meshNode.start() const testPubsubTopic = PubsubTopic("/waku/2/rs/1/0") proc dummyHandler( @@ -530,7 +530,7 @@ suite "Waku v2 Rest API - Relay": let wakuRlnConfig = getWakuRlnConfig(manager = manager, index = MembershipIndex(1)) - await node.mountRlnRelay(wakuRlnConfig) + await node.setRlnValidator(wakuRlnConfig) await node.start() await node.connectToNodes(@[meshNode.peerInfo.toRemotePeerInfo()]) @@ -600,7 +600,7 @@ suite "Waku v2 Rest API - Relay": require node.mountAutoSharding(1, 8).isOk let wakuRlnConfig = getWakuRlnConfig(manager = manager, index = MembershipIndex(1)) - await node.mountRlnRelay(wakuRlnConfig) + await node.setRlnValidator(wakuRlnConfig) await node.start() # Registration is mandatory before sending messages with rln-relay @@ -659,7 +659,7 @@ suite "Waku v2 Rest API - Relay": (await node.mountRelay()).isOkOr: assert false, "Failed to mount relay" let wakuRlnConfig = getWakuRlnConfig(manager = manager, index = MembershipIndex(1)) - await node.mountRlnRelay(wakuRlnConfig) + await node.setRlnValidator(wakuRlnConfig) await node.start() # Registration is mandatory before sending messages with rln-relay @@ -731,7 +731,7 @@ suite "Waku v2 Rest API - Relay": require node.mountAutoSharding(1, 8).isOk let wakuRlnConfig = getWakuRlnConfig(manager = manager, index = MembershipIndex(1)) - await node.mountRlnRelay(wakuRlnConfig) + await node.setRlnValidator(wakuRlnConfig) await node.start() # Registration is mandatory before sending messages with rln-relay From 23a0a6d0bc2a93c39d2be023b29366b0e41d9343 Mon Sep 17 00:00:00 2001 From: stubbsta Date: Sat, 27 Jun 2026 13:15:13 +0200 Subject: [PATCH 4/6] Clean up setRlnValidator: update log wording, drop unused let bindings --- logos_delivery/waku/node/waku_node/relay.nim | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/logos_delivery/waku/node/waku_node/relay.nim b/logos_delivery/waku/node/waku_node/relay.nim index c9947b237..3446b4b73 100644 --- a/logos_delivery/waku/node/waku_node/relay.nim +++ b/logos_delivery/waku/node/waku_node/relay.nim @@ -191,17 +191,17 @@ proc setRlnValidator*( spamHandler = none(SpamHandler), registrationHandler = none(RegistrationHandler), ) {.async.} = - info "mounting rln relay" + info "setting rln validator" let rln = (await Rln.new(rlnConf, registrationHandler)).valueOr: - raise newException(CatchableError, "failed to mount Rln: " & error) + raise newException(CatchableError, "failed to set rln validator: " & error) if (rlnConf.userMessageLimit > rln.groupManager.rlnRelayMaxMessageLimit): - error "rln-relay-user-message-limit can't exceed the MAX_MESSAGE_LIMIT in the rln contract" + error "rln-user-message-limit can't exceed the MAX_MESSAGE_LIMIT in the rln contract" node.rln = rln if node.wakuRelay.isNil(): - info "WakuRelay not mounted; RLN mounted without relay validator" + info "WakuRelay not mounted; RLN validator not set" return ## Bridges RLN's protocol-agnostic message validation into a relay @@ -224,12 +224,10 @@ proc setRlnValidator*( let proof = byteutils.toHex(msgProof.proof) - epoch = fromEpoch(msgProof.epoch) root = inHex(msgProof.merkleRoot) shareX = inHex(msgProof.shareX) shareY = inHex(msgProof.shareY) nullifier = inHex(msgProof.nullifier) - payload = string.fromBytes(message.payload) case validationRes of Valid: From db1a185c01946b87e1b276840251531dbb082a87 Mon Sep 17 00:00:00 2001 From: stubbsta Date: Sat, 27 Jun 2026 13:21:09 +0200 Subject: [PATCH 5/6] Fix botched setRlnValidator callsites from rename --- tests/node/test_wakunode_relay_rln.nim | 2 +- tests/waku_rln_relay/test_wakunode_rln_relay.nim | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/node/test_wakunode_relay_rln.nim b/tests/node/test_wakunode_relay_rln.nim index 34e09fe8e..9b4515005 100644 --- a/tests/node/test_wakunode_relay_rln.nim +++ b/tests/node/test_wakunode_relay_rln.nim @@ -93,7 +93,7 @@ proc setupRelayWithOnChainRln*( node: WakuNode, shards: seq[RelayShard], wakuRlnConfig: WakuRlnConfig ) {.async.} = await node.mountRelay(shards) - await node.(wakuRlnConfig) + await node.setRlnValidator(wakuRlnConfig) suite "Waku RlnRelay - End to End - Static": var diff --git a/tests/waku_rln_relay/test_wakunode_rln_relay.nim b/tests/waku_rln_relay/test_wakunode_rln_relay.nim index a92f5d3f8..9da693119 100644 --- a/tests/waku_rln_relay/test_wakunode_rln_relay.nim +++ b/tests/waku_rln_relay/test_wakunode_rln_relay.nim @@ -52,7 +52,7 @@ procSuite "WakuNode - RLN relay": let wakuRlnConfig1 = getWakuRlnConfig(manager = manager, index = MembershipIndex(1)) - await node1.(wakuRlnConfig1) + await node1.setRlnValidator(wakuRlnConfig1) await node1.start() # Registration is mandatory before sending messages with rln-relay From f02e8bc6685310ac7577f61b0d7e084298191596 Mon Sep 17 00:00:00 2001 From: stubbsta Date: Sat, 27 Jun 2026 13:27:52 +0200 Subject: [PATCH 6/6] Drop obsolete test: setRlnValidator no longer requires relay --- tests/node/test_wakunode_relay_rln.nim | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/tests/node/test_wakunode_relay_rln.nim b/tests/node/test_wakunode_relay_rln.nim index 9b4515005..823fde4b5 100644 --- a/tests/node/test_wakunode_relay_rln.nim +++ b/tests/node/test_wakunode_relay_rln.nim @@ -128,22 +128,6 @@ suite "Waku RlnRelay - End to End - Static": await allFutures(client.stop(), server.stop()) suite "Mount": - asyncTest "Can't mount if relay is not mounted": - # Given Relay and RLN are not mounted - check: - server.wakuRelay == nil - server.rln == nil - - # When RlnRelay is mounted - let catchRes = catch: - await server.setupStaticRln(1) - - # Then Relay and RLN are not mounted,and the process fails - check: - server.wakuRelay == nil - server.rln == nil - catchRes.error()[].msg == "WakuRelay protocol is not mounted, cannot mount Rln" - asyncTest "Pubsub topics subscribed before mounting RlnRelay are added to it": # Given the node enables Relay and Rln while subscribing to a pubsub topic await server.setupRelayWithStaticRln(1.uint, @[pubsubTopic])