From bc0633edd5252e4ac7a87a4cc1381daffdc858bb Mon Sep 17 00:00:00 2001 From: Batudo <82539708+batudo@users.noreply.github.com> Date: Thu, 24 Jul 2025 11:47:04 -0300 Subject: [PATCH] Zero pad siblings in proof (#77) --- packages/sdk/src/crypto.ts | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/packages/sdk/src/crypto.ts b/packages/sdk/src/crypto.ts index c9d6423..3dd0cb3 100644 --- a/packages/sdk/src/crypto.ts +++ b/packages/sdk/src/crypto.ts @@ -158,7 +158,7 @@ export function generateMerkleProof( leaves: bigint[], leaf: bigint, ): LeanIMTMerkleProof { - const tree = new LeanIMT((a, b) => poseidon([a, b])); + const tree = new LeanIMT((a: bigint, b: bigint) => poseidon([a, b])); tree.insertMany(leaves); @@ -172,7 +172,16 @@ export function generateMerkleProof( ); } - return tree.generateProof(leafIndex); + const proof = tree.generateProof(leafIndex); + + if (proof.siblings.length < 32) { + proof.siblings = [ + ...proof.siblings, + ...Array(32 - proof.siblings.length).fill(BigInt(0)), + ]; + } + + return proof; } export function bigintToHash(value: bigint): Hash {