From 3d0c6279e365525bf6a80a317b5cf0451783d9a3 Mon Sep 17 00:00:00 2001 From: Darshan K <35736874+darshankabariya@users.noreply.github.com> Date: Sat, 20 Sep 2025 03:09:38 +0530 Subject: [PATCH] chore: fix node break issue when RLN is unregistered (#3573) --- .../group_manager/on_chain/group_manager.nim | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/waku/waku_rln_relay/group_manager/on_chain/group_manager.nim b/waku/waku_rln_relay/group_manager/on_chain/group_manager.nim index 6b840323e..d1a7a1310 100644 --- a/waku/waku_rln_relay/group_manager/on_chain/group_manager.nim +++ b/waku/waku_rln_relay/group_manager/on_chain/group_manager.nim @@ -202,11 +202,15 @@ proc trackRootChanges*(g: OnchainGroupManager) {.async: (raises: [CatchableError let rootUpdated = await g.updateRoots() if rootUpdated: - let proofResult = await g.fetchMerkleProofElements() - if proofResult.isErr(): - error "Failed to fetch Merkle proof", error = proofResult.error - else: - g.merkleProofCache = proofResult.get() + ## The membership set on-chain has changed (some new members have joined or some members have left) + if g.membershipIndex.isSome(): + ## A membership index exists only if the node has registered with RLN. + ## Non-registered nodes cannot have Merkle proof elements. + let proofResult = await g.fetchMerkleProofElements() + if proofResult.isErr(): + error "Failed to fetch Merkle proof", error = proofResult.error + else: + g.merkleProofCache = proofResult.get() let nextFreeIndex = await g.fetchNextFreeIndex() if nextFreeIndex.isErr():