From 80c2fe7b7a1dad26a5cd965b45c33a95fcd4aa25 Mon Sep 17 00:00:00 2001 From: darshankabariya Date: Wed, 2 Apr 2025 13:55:49 +0530 Subject: [PATCH 1/3] chore: trying to invoke onchain gropu manager instead of base --- waku/waku_rln_relay/group_manager/on_chain/group_manager.nim | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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 71d67c02a..270fa62a4 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 @@ -298,7 +298,7 @@ method generateProof*( epoch: Epoch, messageId: MessageId, rlnIdentifier = DefaultRlnIdentifier, -): Future[GroupManagerResult[RateLimitProof]] {.async.} = +): GroupManagerResult[RateLimitProof] {.gcsafe, raises: [].} = ## Generates an RLN proof using the cached Merkle proof and custom witness # Ensure identity credentials and membership index are set if g.idCredentials.isNone(): @@ -308,6 +308,9 @@ method generateProof*( if g.userMessageLimit.isNone(): return err("user message limit is not set") + debug "calling generateProof from generateProof from group_manager onchain", + data = data + let externalNullifierRes = poseidon(@[@(epoch), @(rlnIdentifier)]) let witness = Witness( From d03df2fe670f36c9a6b68c97d404c7eb33efa0e6 Mon Sep 17 00:00:00 2001 From: darshankabariya Date: Wed, 2 Apr 2025 15:02:34 +0530 Subject: [PATCH 2/3] chore: add merkleProof inside generateProof --- .../group_manager/on_chain/group_manager.nim | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 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 270fa62a4..9f7709d90 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 @@ -97,8 +97,8 @@ proc fetchMerkleProofElements*( let merkleProofInvocation = g.wakuRlnContract.get().merkleProofElements(index) let merkleProof = await merkleProofInvocation.call() return ok(merkleProof) - except CatchableError as e: - error "Failed to fetch merkle proof", errMsg = e.msg + except CatchableError: + error "Failed to fetch merkle proof", errMsg = getCurrentExceptionMsg() proc fetchMerkleRoot*( g: OnchainGroupManager @@ -107,8 +107,8 @@ proc fetchMerkleRoot*( let merkleRootInvocation = g.wakuRlnContract.get().root() let merkleRoot = await merkleRootInvocation.call() return ok(merkleRoot) - except CatchableError as e: - error "Failed to fetch Merkle root", errMsg = e.msg + except CatchableError: + error "Failed to fetch Merkle root", errMsg = getCurrentExceptionMsg() template initializedGuard(g: OnchainGroupManager): untyped = if not g.initialized: @@ -313,6 +313,16 @@ method generateProof*( let externalNullifierRes = poseidon(@[@(epoch), @(rlnIdentifier)]) + try: + let proofResult = waitFor g.fetchMerkleProofElements() + if proofResult.isErr(): + return err("Failed to fetch Merkle proof: " & $proofResult.error) + g.merkleProofCache = proofResult.get() + debug "Merkle proof fetched", + membershipIndex = g.membershipIndex.get(), elementCount = g.merkleProofCache.len + except CatchableError: + error "Failed to fetch merkle proof", error = getCurrentExceptionMsg() + let witness = Witness( identity_secret: g.idCredentials.get().idSecretHash.toArray32(), user_message_limit: serialize(g.userMessageLimit.get()), From 1271a03b8d505840551c1753f4cbc1206b571618 Mon Sep 17 00:00:00 2001 From: darshankabariya Date: Wed, 2 Apr 2025 17:38:50 +0530 Subject: [PATCH 3/3] chore: add merkleroot macro for testing purpose inside generateProof --- .../group_manager/on_chain/group_manager.nim | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 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 9f7709d90..99526716d 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 @@ -98,7 +98,7 @@ proc fetchMerkleProofElements*( let merkleProof = await merkleProofInvocation.call() return ok(merkleProof) except CatchableError: - error "Failed to fetch merkle proof", errMsg = getCurrentExceptionMsg() + error "Failed to fetch merkle proof - 1", errMsg = getCurrentExceptionMsg() proc fetchMerkleRoot*( g: OnchainGroupManager @@ -313,15 +313,23 @@ method generateProof*( let externalNullifierRes = poseidon(@[@(epoch), @(rlnIdentifier)]) + try: + let rootRes = waitFor g.fetchMerkleRoot() + if rootRes.isErr(): + return err("Failed to fetch Merkle root") + debug "Merkle root fetched", root = rootRes.get().toHex + except CatchableError: + error "Failed to fetch Merkle root", error = getCurrentExceptionMsg() + try: let proofResult = waitFor g.fetchMerkleProofElements() if proofResult.isErr(): - return err("Failed to fetch Merkle proof: " & $proofResult.error) + return err("Failed to fetch Merkle proof - 2: " & $proofResult.error) g.merkleProofCache = proofResult.get() debug "Merkle proof fetched", membershipIndex = g.membershipIndex.get(), elementCount = g.merkleProofCache.len except CatchableError: - error "Failed to fetch merkle proof", error = getCurrentExceptionMsg() + error "Failed to fetch merkle proof - 3", error = getCurrentExceptionMsg() let witness = Witness( identity_secret: g.idCredentials.get().idSecretHash.toArray32(),