From 0d95bb99c9d43fbd1a3dd66580cac33bb48ab31c Mon Sep 17 00:00:00 2001 From: darshankabariya Date: Wed, 9 Apr 2025 04:36:35 +0530 Subject: [PATCH] chore: update bug updateRoots function --- .../group_manager/on_chain/group_manager.nim | 27 +++++++++---------- waku/waku_rln_relay/rln_relay.nim | 2 +- 2 files changed, 14 insertions(+), 15 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 c1b4caf27..f6ab98bf1 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 @@ -181,24 +181,21 @@ proc updateRoots*(g: OnchainGroupManager): Future[bool] {.async.} = return false let merkleRoot = toMerkleNode(rootRes.get()) - if g.validRoots.len > 0 and g.validRoots[g.validRoots.len - 1] != merkleRoot: - let overflowCount = g.validRoots.len - AcceptableRootWindowSize + 1 - if overflowCount > 0: - for i in 0 ..< overflowCount: - discard g.validRoots.popFirst() - + if g.validRoots.len == 0: + g.validRoots.addLast(merkleRoot) + return true + + if g.validRoots[g.validRoots.len - 1] != merkleRoot: + var overflow = g.validRoots.len - AcceptableRootWindowSize + 1 + while overflow > 0: + discard g.validRoots.popFirst() + overflow = overflow - 1 g.validRoots.addLast(merkleRoot) - debug "------ Detected new Merkle root -------", - root = merkleRoot.toHex, totalRoots = g.validRoots.len return true - else: - debug "------ No new Merkle root ------", - root = merkleRoot.toHex, totalRoots = g.validRoots.len return false proc trackRootChanges*(g: OnchainGroupManager) {.async.} = - let ethRpc = g.ethRpc.get() let wakuRlnContract = g.wakuRlnContract.get() @@ -208,7 +205,7 @@ proc trackRootChanges*(g: OnchainGroupManager) {.async.} = info "------ Starting to track Merkle root changes ------" while true: - debug "------ starting to update roots ------" + debug "------ updating roots ------" let rootUpdated = await g.updateRoots() if rootUpdated: @@ -217,7 +214,9 @@ proc trackRootChanges*(g: OnchainGroupManager) {.async.} = error "Failed to fetch Merkle proof", error = proofResult.error g.merkleProofCache = proofResult.get() - debug "sleeping for 5 seconds" + debug "------ current roots ------", + roots = g.validRoots.mapIt(it.toHex).join(", "), totalRoots = g.validRoots.len + await sleepAsync(rpcDelay) method atomicBatch*( diff --git a/waku/waku_rln_relay/rln_relay.nim b/waku/waku_rln_relay/rln_relay.nim index 166bf190b..87cd9a997 100644 --- a/waku/waku_rln_relay/rln_relay.nim +++ b/waku/waku_rln_relay/rln_relay.nim @@ -193,7 +193,7 @@ proc validateMessage*( ## `timeOption` indicates Unix epoch time (fractional part holds sub-seconds) ## if `timeOption` is supplied, then the current epoch is calculated based on that - debug "calling validateMessage from rln_relay", msg = msg + debug "calling validateMessage from rln_relay", msg_len = msg.payload.len let decodeRes = RateLimitProof.init(msg.proof) if decodeRes.isErr():