zkverifyjs
Version:
Submit proofs to zkVerify and query proof state with ease using our npm package.
60 lines (59 loc) • 2.54 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.format = format;
const helpers_1 = require("../../utils/helpers");
function format(options, proof, publicSignals, vk, version, registeredVk) {
const processor = (0, helpers_1.getProofProcessor)(options.proofType);
if (!processor) {
throw new Error(`Unsupported proof type: ${options.proofType}`);
}
if (proof === null || proof === undefined || proof === '') {
throw new Error(`${options.proofType}: Proof is required and cannot be null, undefined, or an empty string.`);
}
if (publicSignals === null ||
publicSignals === undefined ||
publicSignals === '') {
throw new Error(`${options.proofType}: Public signals are required and cannot be null, undefined, or an empty string.`);
}
if (vk === null || vk === undefined || vk === '') {
throw new Error(`${options.proofType}: Verification Key must be provided.`);
}
let formattedProof, formattedPubs, formattedVk;
try {
formattedProof = processor.formatProof(proof, options, version);
}
catch (error) {
const proofSnippet = typeof proof === 'string'
? proof.slice(0, 50)
: JSON.stringify(proof).slice(0, 50);
throw new Error(`Failed to format ${options.proofType} proof: ${error instanceof Error ? error.message : 'Unknown error'}. Proof snippet: "${proofSnippet}..."`);
}
try {
formattedPubs = processor.formatPubs(publicSignals, options);
}
catch (error) {
const pubsSnippet = Array.isArray(publicSignals)
? JSON.stringify(publicSignals).slice(0, 50)
: publicSignals?.toString().slice(0, 50);
throw new Error(`Failed to format ${options.proofType} public signals: ${error instanceof Error ? error.message : 'Unknown error'}. Public signals snippet: "${pubsSnippet}..."`);
}
try {
if (registeredVk) {
formattedVk = { Hash: vk };
}
else {
formattedVk = { Vk: processor.formatVk(vk, options) };
}
}
catch (error) {
const vkSnippet = typeof vk === 'string'
? vk.slice(0, 50)
: JSON.stringify(vk).slice(0, 50);
throw new Error(`Failed to format ${options.proofType} verification key: ${error instanceof Error ? error.message : 'Unknown error'}. Verification key snippet: "${vkSnippet}..."`);
}
return {
formattedProof,
formattedPubs,
formattedVk,
};
}