zkverifyjs
Version:
Submit proofs to zkVerify and query proof state with ease using our npm package.
40 lines • 2.12 kB
JavaScript
import { EventEmitter } from 'events';
import { handleTransaction } from '../../utils/transactions/index.js';
import { extractErrorMessage, getProofPallet, getProofProcessor, getSelectedAccount, } from '../../utils/helpers/index.js';
import { TransactionType, ZkVerifyEvents } from '../../enums.js';
export async function registerVk(connection, options, verificationKey) {
const { api } = connection;
const emitter = new EventEmitter();
const transactionResult = new Promise((resolve, reject) => {
(async () => {
try {
const processor = await 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 = getProofPallet(options.proofOptions.proofType);
if (!pallet) {
throw new Error(`Unsupported proof type: ${options.proofOptions.proofType}`);
}
const selectedAccount = getSelectedAccount(connection, options.accountAddress);
const extrinsic = api.tx[pallet].registerVk(formattedVk);
emitter.once(ZkVerifyEvents.ErrorEvent, (err) => {
reject(new Error(extractErrorMessage(err)));
});
const result = await handleTransaction(api, extrinsic, selectedAccount, undefined, emitter, options, TransactionType.VKRegistration);
emitter.removeAllListeners();
resolve(result);
}
catch (err) {
emitter.removeAllListeners();
reject(new Error(extractErrorMessage(err)));
}
})();
});
return { events: emitter, transactionResult };
}
//# sourceMappingURL=index.js.map