zkverifyjs
Version:
Submit proofs to zkVerify and query proof state with ease using our npm package.
44 lines (43 loc) • 1.98 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.optimisticVerify = void 0;
const extrinsic_1 = require("../extrinsic");
const format_1 = require("../format");
const helpers_1 = require("../../utils/helpers");
const optimisticVerify = async (connection, proofOptions, input) => {
const { api } = connection;
try {
const transaction = buildTransaction(api, proofOptions, input);
const submittableExtrinsicHex = transaction.toHex();
const dryRunResult = await api.rpc.system.dryRun(submittableExtrinsicHex);
const { success, message } = await (0, helpers_1.interpretDryRunResponse)(api, dryRunResult.toHex());
return { success, message };
}
catch (error) {
const errorMessage = error instanceof Error ? error.message : String(error);
return {
success: false,
message: `Optimistic verification failed: ${errorMessage}`,
};
}
};
exports.optimisticVerify = optimisticVerify;
/**
* Builds a transaction from the provided input.
* @param api - The Polkadot.js API instance.
* @param proofOptions - Options for the proof.
* @param input - Input for the verification (proofData or extrinsic).
* @returns A SubmittableExtrinsic ready for dryRun.
* @throws If input is invalid or cannot be formatted.
*/
const buildTransaction = (api, proofOptions, input) => {
if ('proofData' in input && input.proofData) {
const { proof, publicSignals, vk, version } = input.proofData;
const formattedProofData = (0, format_1.format)(proofOptions, proof, publicSignals, vk, version);
return (0, extrinsic_1.createSubmitProofExtrinsic)(api, proofOptions.proofType, formattedProofData, input.domainId);
}
if ('extrinsic' in input && input.extrinsic) {
return input.extrinsic;
}
throw new Error(`Invalid input provided. Expected either 'proofData' or 'extrinsic'. Received: ${JSON.stringify(input)}`);
};