From 33299660d9cbe73d207ebd1a550c569945d2e444 Mon Sep 17 00:00:00 2001 From: darshankabariya Date: Tue, 8 Apr 2025 15:15:37 +0530 Subject: [PATCH] chore: trackMerkleRootchanges --- .../group_manager/on_chain/group_manager.nim | 52 +++++++++---------- waku/waku_rln_relay/rln_relay.nim | 2 + 2 files changed, 28 insertions(+), 26 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 8b1cb1165..c91bff0c9 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 @@ -188,39 +188,39 @@ proc updateRoots*(g: OnchainGroupManager): Future[bool] {.async.} = discard g.validRoots.popFirst() g.validRoots.addLast(merkleRoot) - debug "~~~~~~~~~~~~~ Detected new Merkle root ~~~~~~~~~~~~~~~~", + debug "------ Detected new Merkle root ------", root = merkleRoot.toHex, totalRoots = g.validRoots.len return true else: - debug "~~~~~~~~~~~~~ No new Merkle root ~~~~~~~~~~~~~~~~", + debug "------ No new Merkle root ------", root = merkleRoot.toHex, totalRoots = g.validRoots.len return false -# proc trackRootChanges*(g: OnchainGroupManager): Future[void] {.async.} = -# ## Continuously track changes to the Merkle root -# initializedGuard(g) -# -# let ethRpc = g.ethRpc.get() -# let wakuRlnContract = g.wakuRlnContract.get() -# -# # Set up the polling interval - more frequent to catch roots -# const rpcDelay = 5.seconds -# -# info "Starting to track Merkle root changes" -# -# while true: -# debug "starting to update roots" -# let rootUpdated = await g.updateRoots() -# -# if rootUpdated: -# let proofResult = await g.fetchMerkleProofElements() -# if proofResult.isErr(): -# error "Failed to fetch Merkle proof", error = proofResult.error -# g.merkleProofCache = proofResult.get() -# -# debug "sleeping for 5 seconds" -# await sleepAsync(rpcDelay) +proc trackRootChanges*(g: OnchainGroupManager): Future[void] {.async.} = + ## Continuously track changes to the Merkle root + initializedGuard(g) + + let ethRpc = g.ethRpc.get() + let wakuRlnContract = g.wakuRlnContract.get() + + # Set up the polling interval - more frequent to catch roots + const rpcDelay = 5.seconds + + info "Starting to track Merkle root changes" + + while true: + debug "starting to update roots" + let rootUpdated = await g.updateRoots() + + if rootUpdated: + let proofResult = await g.fetchMerkleProofElements() + if proofResult.isErr(): + error "Failed to fetch Merkle proof", error = proofResult.error + g.merkleProofCache = proofResult.get() + + debug "sleeping for 5 seconds" + await sleepAsync(rpcDelay) method atomicBatch*( g: OnchainGroupManager, diff --git a/waku/waku_rln_relay/rln_relay.nim b/waku/waku_rln_relay/rln_relay.nim index 7f2d891a4..8a864ce2e 100644 --- a/waku/waku_rln_relay/rln_relay.nim +++ b/waku/waku_rln_relay/rln_relay.nim @@ -468,6 +468,8 @@ proc mount( onFatalErrorAction: conf.onFatalErrorAction, ) + asyncSpawn trackRootChanges(OnchainGroupManager(groupManager)) + # Initialize the groupManager (await groupManager.init()).isOkOr: return err("could not initialize the group manager: " & $error)