UNPKG

lambdaworks-groth16-ts

Version:

TypeScript bindings for LambdaWorks Groth16 SNARK prover

47 lines 1.62 kB
import { FieldOperations } from "./field"; import { CircuitProcessor } from "./circuit"; export class Groth16Prover { constructor(wasmInstance) { this.wasmInstance = wasmInstance; this.fieldOps = new FieldOperations(wasmInstance); } /** * Generate a Groth16 proof */ async prove(circuit, provingKey, witness) { // Validate witness first if (!this.wasmInstance.validate_witness(circuit, witness)) { throw new Error('Invalid witness for circuit'); } // Generate proof const proof = this.wasmInstance.groth16_prove(circuit, provingKey, witness); if (!proof) { throw new Error('Failed to generate proof'); } return proof; } /** * Generate proof with automatic witness computation */ async proveWithInputs(circuit, provingKey, inputs) { const circuitProcessor = new CircuitProcessor(this.wasmInstance); const witness = circuitProcessor.computeWitness(circuit, inputs); return this.prove(circuit, provingKey, witness); } /** * Export proof in different formats */ exportProof(proof, format) { switch (format) { case 'json': return this.wasmInstance.proof_to_json(proof); case 'solidity': return this.wasmInstance.proof_to_solidity(proof); case 'bytes': return this.wasmInstance.proof_to_bytes(proof); default: throw new Error(`Unsupported format: ${format}`); } } } //# sourceMappingURL=prover.js.map