feat: wrapper function to generate external nullifier

This commit is contained in:
Arseniy Klempner 2025-12-17 18:03:30 -08:00
parent 5b54b70683
commit 04ab68fc69
No known key found for this signature in database
GPG Key ID: 51653F18863BD24B
2 changed files with 12 additions and 9 deletions

View File

@ -379,9 +379,7 @@ method generateProof*(
let x = keccak.keccak256.digest(data)
let epochHash = keccak.keccak256.digest(@(epoch))
let rlnIdentifierHash = keccak.keccak256.digest(@(rlnIdentifier))
let extNullifier = poseidon(@[@(epochHash), @(rlnIdentifierHash)]).valueOr:
let extNullifier = generateExternalNullifier(epoch, rlnIdentifier).valueOr:
return err("Failed to compute external nullifier: " & error)
let witness = RLNWitnessInput(
@ -459,9 +457,7 @@ method verifyProof*(
var normalizedProof = proof
let epochHash = keccak.keccak256.digest(@(proof.epoch))
let rlnIdentifierHash = keccak.keccak256.digest(@(proof.rlnIdentifier))
let externalNullifier = poseidon(@[@(epochHash), @(rlnIdentifierHash)]).valueOr:
let externalNullifier = generateExternalNullifier(proof.epoch, proof.rlnIdentifier).valueOr:
return err("Failed to compute external nullifier: " & error)
normalizedProof.externalNullifier = externalNullifier

View File

@ -163,11 +163,18 @@ proc toLeaves*(rateCommitments: seq[RateCommitment]): RlnRelayResult[seq[seq[byt
leaves.add(leaf)
return ok(leaves)
proc extractMetadata*(proof: RateLimitProof): RlnRelayResult[ProofMetadata] =
let epochHash = keccak.keccak256.digest(@(proof.epoch))
let rlnIdentifierHash = keccak.keccak256.digest(@(proof.rlnIdentifier))
proc generateExternalNullifier*(
epoch: Epoch, rlnIdentifier: RlnIdentifier
): RlnRelayResult[ExternalNullifier] =
let epochHash = keccak.keccak256.digest(@(epoch))
let rlnIdentifierHash = keccak.keccak256.digest(@(rlnIdentifier))
let externalNullifier = poseidon(@[@(epochHash), @(rlnIdentifierHash)]).valueOr:
return err("Failed to compute external nullifier: " & error)
return ok(externalNullifier)
proc extractMetadata*(proof: RateLimitProof): RlnRelayResult[ProofMetadata] =
let externalNullifier = generateExternalNullifier(proof.epoch, proof.rlnIdentifier).valueOr:
return err("Failed to compute external nullifier: " & error)
return ok(
ProofMetadata(
nullifier: proof.nullifier,