From a1c8f6e907163d8195dda24bb2a49ac9c376430d Mon Sep 17 00:00:00 2001 From: Arseniy Klempner Date: Mon, 27 Oct 2025 13:45:59 -0700 Subject: [PATCH] fix: convert bigint to string when serializing membership --- packages/rln/src/keystore/keystore.ts | 47 +++++++++++++++++++-------- 1 file changed, 33 insertions(+), 14 deletions(-) diff --git a/packages/rln/src/keystore/keystore.ts b/packages/rln/src/keystore/keystore.ts index f001f2938d..c2623b2fa0 100644 --- a/packages/rln/src/keystore/keystore.ts +++ b/packages/rln/src/keystore/keystore.ts @@ -160,7 +160,15 @@ export class Keystore { } public toString(): string { - return JSON.stringify(this.data); + // Custom replacer function to handle BigInt serialization + const bigIntReplacer = (_key: string, value: unknown): unknown => { + if (typeof value === "bigint") { + return value.toString(); + } + return value; + }; + + return JSON.stringify(this.data, bigIntReplacer); } public toObject(): NwakuKeystore { @@ -327,21 +335,32 @@ export class Keystore { const { IDCommitment, IDNullifier, IDSecretHash, IDTrapdoor } = options.identity; + // Custom replacer function to handle BigInt serialization + const bigIntReplacer = (_key: string, value: unknown): unknown => { + if (typeof value === "bigint") { + return value.toString(); + } + return value; + }; + return utf8ToBytes( - JSON.stringify({ - treeIndex: options.membership.treeIndex, - identityCredential: { - idCommitment: Array.from(IDCommitment), - idNullifier: Array.from(IDNullifier), - idSecretHash: Array.from(IDSecretHash), - idTrapdoor: Array.from(IDTrapdoor) + JSON.stringify( + { + treeIndex: options.membership.treeIndex, + identityCredential: { + idCommitment: Array.from(IDCommitment), + idNullifier: Array.from(IDNullifier), + idSecretHash: Array.from(IDSecretHash), + idTrapdoor: Array.from(IDTrapdoor) + }, + membershipContract: { + chainId: options.membership.chainId, + address: options.membership.address + }, + userMessageLimit: options.membership.rateLimit }, - membershipContract: { - chainId: options.membership.chainId, - address: options.membership.address - }, - userMessageLimit: options.membership.rateLimit - }) + bigIntReplacer + ) ); } }