From ee8e50da3473b1b99ad27ab28a736490d4a74ce0 Mon Sep 17 00:00:00 2001 From: Fallengirl <155266340+Fallengirl@users.noreply.github.com> Date: Thu, 20 Nov 2025 14:16:03 +0100 Subject: [PATCH] fix: derive proof timestamps from block data --- packages/data/src/viem.ts | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/packages/data/src/viem.ts b/packages/data/src/viem.ts index 9f63f9876..c7c21c84b 100644 --- a/packages/data/src/viem.ts +++ b/packages/data/src/viem.ts @@ -369,15 +369,29 @@ export default class SemaphoreViem { fromBlock: BigInt(this._options.startBlock || 0) })) as ProofValidatedLog[] - return proofValidatedEvents.map((event) => ({ - message: event.args.message?.toString() || "", - merkleTreeRoot: event.args.merkleTreeRoot?.toString() || "", - merkleTreeDepth: event.args.merkleTreeDepth?.toString() || "", - scope: event.args.scope?.toString() || "", - nullifier: event.args.nullifier?.toString() || "", - points: [event.args.x?.toString() || "", event.args.y?.toString() || ""], - timestamp: event.blockNumber ? new Date(Number(event.blockNumber) * 1000).toISOString() : undefined - })) + return Promise.all( + proofValidatedEvents.map(async (event) => { + let timestamp: string | undefined + + if (event.blockNumber !== null && event.blockNumber !== undefined) { + const block = await this._client.getBlock({ blockNumber: event.blockNumber }) + + if (block?.timestamp !== undefined) { + timestamp = new Date(Number(block.timestamp) * 1000).toISOString() + } + } + + return { + message: event.args.message?.toString() || "", + merkleTreeRoot: event.args.merkleTreeRoot?.toString() || "", + merkleTreeDepth: event.args.merkleTreeDepth?.toString() || "", + scope: event.args.scope?.toString() || "", + nullifier: event.args.nullifier?.toString() || "", + points: [event.args.x?.toString() || "", event.args.y?.toString() || ""], + timestamp + } + }) + ) } /**