From 324d69c928f0fb5a92a267f02a15c8c037e73e3e Mon Sep 17 00:00:00 2001 From: stubbsta Date: Thu, 4 Jun 2026 09:22:16 +0200 Subject: [PATCH] add contract root cache size as constant and function use fix --- waku/waku_rln_relay/constants.nim | 3 +++ .../waku_rln_relay/group_manager/on_chain/group_manager.nim | 6 ++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/waku/waku_rln_relay/constants.nim b/waku/waku_rln_relay/constants.nim index 8532abaaa..757de398f 100644 --- a/waku/waku_rln_relay/constants.nim +++ b/waku/waku_rln_relay/constants.nim @@ -7,6 +7,9 @@ import ../waku_keystore # Acceptable roots for merkle root validation of incoming messages const AcceptableRootWindowSize* = 50 +#Size if RLN contract root cache +const RlnContractRootCacheSize* = 5 + # RLN membership key and index files path const RlnCredentialsFilename* = "rlnCredentials.txt" 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 9799710ec..88d635208 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 @@ -167,7 +167,9 @@ proc updateRoots*(g: OnchainGroupManager): Future[bool] {.async.} = return false proc updateRecentRoots*(g: OnchainGroupManager): Future[bool] {.async.} = - let bytes = (await g.fetchMerkleRoot()).valueOr: + ## Fetch recent roots from the contract roots cache and update the validRoots deque, ensuring we maintain a window of acceptable roots. + ## Contract returns array if uint256 roots, newest first, zero-padded to the cache size (e.g. 5). + let bytes = (await g.fetchMerkleRootsCache()).valueOr: error "Failed to fetch current Merkle root", error = error return false @@ -176,7 +178,7 @@ proc updateRecentRoots*(g: OnchainGroupManager): Future[bool] {.async.} = return false let chunkCount = bytes.len div 32 - if chunkCount != 5: + if chunkCount != RlnContractRootCacheSize: warn "Unexpected number of recent roots returned; proceeding anyway", count = chunkCount