zkverifyjs
Version:
Submit proofs to zkVerify and query proof state with ease using our npm package.
43 lines (42 loc) • 2.19 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.registerVk = registerVk;
const events_1 = require("events");
const transactions_1 = require("../../utils/transactions");
const helpers_1 = require("../../utils/helpers");
const enums_1 = require("../../enums");
async function registerVk(connection, options, verificationKey) {
const { api } = connection;
const emitter = new events_1.EventEmitter();
const transactionResult = new Promise((resolve, reject) => {
(async () => {
try {
const processor = await (0, helpers_1.getProofProcessor)(options.proofOptions.proofType);
if (!processor) {
throw new Error(`Unsupported proof type: ${options.proofOptions.proofType}`);
}
if (!verificationKey || verificationKey === '') {
throw new Error('verificationKey cannot be null, undefined, or an empty string');
}
const formattedVk = processor.formatVk(verificationKey, options.proofOptions);
const pallet = (0, helpers_1.getProofPallet)(options.proofOptions.proofType);
if (!pallet) {
throw new Error(`Unsupported proof type: ${options.proofOptions.proofType}`);
}
const selectedAccount = (0, helpers_1.getSelectedAccount)(connection, options.accountAddress);
const extrinsic = api.tx[pallet].registerVk(formattedVk);
emitter.once(enums_1.ZkVerifyEvents.ErrorEvent, (err) => {
reject(new Error((0, helpers_1.extractErrorMessage)(err)));
});
const result = await (0, transactions_1.handleTransaction)(api, extrinsic, selectedAccount, undefined, emitter, options, enums_1.TransactionType.VKRegistration);
emitter.removeAllListeners();
resolve(result);
}
catch (err) {
emitter.removeAllListeners();
reject(new Error((0, helpers_1.extractErrorMessage)(err)));
}
})();
});
return { events: emitter, transactionResult };
}