forked from tornado-packages/tornado-core
Conditionally generate groth16
This commit is contained in:
parent
8cc20ded52
commit
e7412f3d98
13
dist/index.js
vendored
13
dist/index.js
vendored
@ -7848,14 +7848,18 @@ var __async = (__this, __arguments, generator) => {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
let groth16;
|
let groth16;
|
||||||
const groth16Promise = (() => __async(void 0, null, function* () {
|
function initGroth16() {
|
||||||
|
return __async(this, null, function* () {
|
||||||
if (!groth16) {
|
if (!groth16) {
|
||||||
groth16 = yield websnarkGroth({ wasmInitialMemory: 2e3 });
|
groth16 = yield websnarkGroth({ wasmInitialMemory: 2e3 });
|
||||||
}
|
}
|
||||||
}))();
|
});
|
||||||
|
}
|
||||||
function calculateSnarkProof(input, circuit, provingKey) {
|
function calculateSnarkProof(input, circuit, provingKey) {
|
||||||
return __async(this, null, function* () {
|
return __async(this, null, function* () {
|
||||||
yield groth16Promise;
|
if (!groth16) {
|
||||||
|
yield initGroth16();
|
||||||
|
}
|
||||||
const snarkInput = {
|
const snarkInput = {
|
||||||
root: input.root,
|
root: input.root,
|
||||||
nullifierHash: BigInt(input.nullifierHex).toString(),
|
nullifierHash: BigInt(input.nullifierHex).toString(),
|
||||||
@ -7870,7 +7874,7 @@ function calculateSnarkProof(input, circuit, provingKey) {
|
|||||||
};
|
};
|
||||||
console.log("Start generating SNARK proof", snarkInput);
|
console.log("Start generating SNARK proof", snarkInput);
|
||||||
console.time("SNARK proof time");
|
console.time("SNARK proof time");
|
||||||
const proofData = yield websnarkUtils__namespace.genWitnessAndProve(groth16, snarkInput, circuit, provingKey);
|
const proofData = yield websnarkUtils__namespace.genWitnessAndProve(yield groth16, snarkInput, circuit, provingKey);
|
||||||
const proof = websnarkUtils__namespace.toSolidityInput(proofData).proof;
|
const proof = websnarkUtils__namespace.toSolidityInput(proofData).proof;
|
||||||
console.timeEnd("SNARK proof time");
|
console.timeEnd("SNARK proof time");
|
||||||
const args = [
|
const args = [
|
||||||
@ -7988,6 +7992,7 @@ exports.getTokenBalances = getTokenBalances;
|
|||||||
exports.getWeightRandom = getWeightRandom;
|
exports.getWeightRandom = getWeightRandom;
|
||||||
exports.getWithdrawals = getWithdrawals;
|
exports.getWithdrawals = getWithdrawals;
|
||||||
exports.hexToBytes = hexToBytes;
|
exports.hexToBytes = hexToBytes;
|
||||||
|
exports.initGroth16 = initGroth16;
|
||||||
exports.isNode = isNode;
|
exports.isNode = isNode;
|
||||||
exports.isRelayerUpdated = isRelayerUpdated;
|
exports.isRelayerUpdated = isRelayerUpdated;
|
||||||
exports.jobsSchema = jobsSchema;
|
exports.jobsSchema = jobsSchema;
|
||||||
|
14
dist/index.mjs
vendored
14
dist/index.mjs
vendored
@ -7827,14 +7827,18 @@ var __async = (__this, __arguments, generator) => {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
let groth16;
|
let groth16;
|
||||||
const groth16Promise = (() => __async(void 0, null, function* () {
|
function initGroth16() {
|
||||||
|
return __async(this, null, function* () {
|
||||||
if (!groth16) {
|
if (!groth16) {
|
||||||
groth16 = yield websnarkGroth({ wasmInitialMemory: 2e3 });
|
groth16 = yield websnarkGroth({ wasmInitialMemory: 2e3 });
|
||||||
}
|
}
|
||||||
}))();
|
});
|
||||||
|
}
|
||||||
function calculateSnarkProof(input, circuit, provingKey) {
|
function calculateSnarkProof(input, circuit, provingKey) {
|
||||||
return __async(this, null, function* () {
|
return __async(this, null, function* () {
|
||||||
yield groth16Promise;
|
if (!groth16) {
|
||||||
|
yield initGroth16();
|
||||||
|
}
|
||||||
const snarkInput = {
|
const snarkInput = {
|
||||||
root: input.root,
|
root: input.root,
|
||||||
nullifierHash: BigInt(input.nullifierHex).toString(),
|
nullifierHash: BigInt(input.nullifierHex).toString(),
|
||||||
@ -7849,7 +7853,7 @@ function calculateSnarkProof(input, circuit, provingKey) {
|
|||||||
};
|
};
|
||||||
console.log("Start generating SNARK proof", snarkInput);
|
console.log("Start generating SNARK proof", snarkInput);
|
||||||
console.time("SNARK proof time");
|
console.time("SNARK proof time");
|
||||||
const proofData = yield websnarkUtils.genWitnessAndProve(groth16, snarkInput, circuit, provingKey);
|
const proofData = yield websnarkUtils.genWitnessAndProve(yield groth16, snarkInput, circuit, provingKey);
|
||||||
const proof = websnarkUtils.toSolidityInput(proofData).proof;
|
const proof = websnarkUtils.toSolidityInput(proofData).proof;
|
||||||
console.timeEnd("SNARK proof time");
|
console.timeEnd("SNARK proof time");
|
||||||
const args = [
|
const args = [
|
||||||
@ -7864,4 +7868,4 @@ function calculateSnarkProof(input, circuit, provingKey) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export { BaseDepositsService, BaseEchoService, BaseEncryptedNotesService, BaseEventsService, BaseGovernanceService, BaseRegistryService, BatchBlockService, BatchEventsService, BatchTransactionService, DEPOSIT, Deposit, ENS__factory, ERC20__factory, GET_DEPOSITS, GET_ECHO_EVENTS, GET_ENCRYPTED_NOTES, GET_GOVERNANCE_APY, GET_GOVERNANCE_EVENTS, GET_NOTE_ACCOUNTS, GET_REGISTERED, GET_STATISTIC, GET_WITHDRAWALS, GasPriceOracle__factory, Invoice, MIN_STAKE_BALANCE, MerkleTreeService, Mimc, Multicall__factory, NetId, NodeDepositsService, NodeEchoService, NodeEncryptedNotesService, NodeGovernanceService, NodeRegistryService, NoteAccount, OffchainOracle__factory, OvmGasPriceOracle__factory, Pedersen, RelayerClient, ReverseRecords__factory, TokenPriceOracle, TornadoBrowserProvider, TornadoFeeOracle, TornadoRpcSigner, TornadoVoidSigner, TornadoWallet, TreeCache, WITHDRAWAL, _META, addNetwork, ajv, base64ToBytes, bigIntReplacer, bnToBytes, buffPedersenHash, bufferToBytes, bytesToBN, bytesToBase64, bytesToHex, calculateScore, calculateSnarkProof, chunk, concatBytes, convertETHToTokenAmount, createDeposit, crypto, customConfig, defaultConfig, defaultUserAgent, download, enabledChains, existsAsync, index as factories, fetch, fetchData, fetchGetUrlFunc, getAllDeposits, getAllEncryptedNotes, getAllGovernanceEvents, getAllGraphEchoEvents, getAllRegisters, getAllWithdrawals, getConfig, getDeposits, getEncryptedNotes, getGasOraclePlugin, getGovernanceEvents, getGraphEchoEvents, getHttpAgent, getInstanceByAddress, getMeta, getNetworkConfig, getNoteAccounts, getProvider, getProviderWithNetId, getRegisters, getStatistic, getStatusSchema, getSubdomains, getSupportedInstances, getTokenBalances, getWeightRandom, getWithdrawals, hexToBytes, isNode, isRelayerUpdated, jobsSchema, leBuff2Int, leInt2Buff, loadCachedEvents, loadSavedEvents, mimc, multicall, packEncryptedMessage, parseAddress, parseKey, parseMnemonic, parseNumber, parseRecoveryKey, parseRelayer, parseSemanticVersion, parseUrl, pedersen, pickWeightedRandomRelayer, populateTransaction, queryGraph, rBigInt, saveUserFile, sleep, substring, toFixedHex, toFixedLength, unpackEncryptedMessage, unzipAsync, validateUrl, zipAsync };
|
export { BaseDepositsService, BaseEchoService, BaseEncryptedNotesService, BaseEventsService, BaseGovernanceService, BaseRegistryService, BatchBlockService, BatchEventsService, BatchTransactionService, DEPOSIT, Deposit, ENS__factory, ERC20__factory, GET_DEPOSITS, GET_ECHO_EVENTS, GET_ENCRYPTED_NOTES, GET_GOVERNANCE_APY, GET_GOVERNANCE_EVENTS, GET_NOTE_ACCOUNTS, GET_REGISTERED, GET_STATISTIC, GET_WITHDRAWALS, GasPriceOracle__factory, Invoice, MIN_STAKE_BALANCE, MerkleTreeService, Mimc, Multicall__factory, NetId, NodeDepositsService, NodeEchoService, NodeEncryptedNotesService, NodeGovernanceService, NodeRegistryService, NoteAccount, OffchainOracle__factory, OvmGasPriceOracle__factory, Pedersen, RelayerClient, ReverseRecords__factory, TokenPriceOracle, TornadoBrowserProvider, TornadoFeeOracle, TornadoRpcSigner, TornadoVoidSigner, TornadoWallet, TreeCache, WITHDRAWAL, _META, addNetwork, ajv, base64ToBytes, bigIntReplacer, bnToBytes, buffPedersenHash, bufferToBytes, bytesToBN, bytesToBase64, bytesToHex, calculateScore, calculateSnarkProof, chunk, concatBytes, convertETHToTokenAmount, createDeposit, crypto, customConfig, defaultConfig, defaultUserAgent, download, enabledChains, existsAsync, index as factories, fetch, fetchData, fetchGetUrlFunc, getAllDeposits, getAllEncryptedNotes, getAllGovernanceEvents, getAllGraphEchoEvents, getAllRegisters, getAllWithdrawals, getConfig, getDeposits, getEncryptedNotes, getGasOraclePlugin, getGovernanceEvents, getGraphEchoEvents, getHttpAgent, getInstanceByAddress, getMeta, getNetworkConfig, getNoteAccounts, getProvider, getProviderWithNetId, getRegisters, getStatistic, getStatusSchema, getSubdomains, getSupportedInstances, getTokenBalances, getWeightRandom, getWithdrawals, hexToBytes, initGroth16, isNode, isRelayerUpdated, jobsSchema, leBuff2Int, leInt2Buff, loadCachedEvents, loadSavedEvents, mimc, multicall, packEncryptedMessage, parseAddress, parseKey, parseMnemonic, parseNumber, parseRecoveryKey, parseRelayer, parseSemanticVersion, parseUrl, pedersen, pickWeightedRandomRelayer, populateTransaction, queryGraph, rBigInt, saveUserFile, sleep, substring, toFixedHex, toFixedLength, unpackEncryptedMessage, unzipAsync, validateUrl, zipAsync };
|
||||||
|
14
dist/index.umd.js
vendored
14
dist/index.umd.js
vendored
@ -80085,6 +80085,7 @@ function substring(str, length = 10) {
|
|||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
||||||
|
/* harmony export */ O: () => (/* binding */ initGroth16),
|
||||||
/* harmony export */ i: () => (/* binding */ calculateSnarkProof)
|
/* harmony export */ i: () => (/* binding */ calculateSnarkProof)
|
||||||
/* harmony export */ });
|
/* harmony export */ });
|
||||||
/* harmony import */ var _tornado_websnark_src_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(84276);
|
/* harmony import */ var _tornado_websnark_src_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(84276);
|
||||||
@ -80118,14 +80119,18 @@ var __async = (__this, __arguments, generator) => {
|
|||||||
|
|
||||||
|
|
||||||
let groth16;
|
let groth16;
|
||||||
const groth16Promise = (() => __async(void 0, null, function* () {
|
function initGroth16() {
|
||||||
|
return __async(this, null, function* () {
|
||||||
if (!groth16) {
|
if (!groth16) {
|
||||||
groth16 = yield _tornado_websnark_src_groth16__WEBPACK_IMPORTED_MODULE_1___default()({ wasmInitialMemory: 2e3 });
|
groth16 = yield _tornado_websnark_src_groth16__WEBPACK_IMPORTED_MODULE_1___default()({ wasmInitialMemory: 2e3 });
|
||||||
}
|
}
|
||||||
}))();
|
});
|
||||||
|
}
|
||||||
function calculateSnarkProof(input, circuit, provingKey) {
|
function calculateSnarkProof(input, circuit, provingKey) {
|
||||||
return __async(this, null, function* () {
|
return __async(this, null, function* () {
|
||||||
yield groth16Promise;
|
if (!groth16) {
|
||||||
|
yield initGroth16();
|
||||||
|
}
|
||||||
const snarkInput = {
|
const snarkInput = {
|
||||||
root: input.root,
|
root: input.root,
|
||||||
nullifierHash: BigInt(input.nullifierHex).toString(),
|
nullifierHash: BigInt(input.nullifierHex).toString(),
|
||||||
@ -80140,7 +80145,7 @@ function calculateSnarkProof(input, circuit, provingKey) {
|
|||||||
};
|
};
|
||||||
console.log("Start generating SNARK proof", snarkInput);
|
console.log("Start generating SNARK proof", snarkInput);
|
||||||
console.time("SNARK proof time");
|
console.time("SNARK proof time");
|
||||||
const proofData = yield _tornado_websnark_src_utils__WEBPACK_IMPORTED_MODULE_0__.genWitnessAndProve(groth16, snarkInput, circuit, provingKey);
|
const proofData = yield _tornado_websnark_src_utils__WEBPACK_IMPORTED_MODULE_0__.genWitnessAndProve(yield groth16, snarkInput, circuit, provingKey);
|
||||||
const proof = _tornado_websnark_src_utils__WEBPACK_IMPORTED_MODULE_0__.toSolidityInput(proofData).proof;
|
const proof = _tornado_websnark_src_utils__WEBPACK_IMPORTED_MODULE_0__.toSolidityInput(proofData).proof;
|
||||||
console.timeEnd("SNARK proof time");
|
console.timeEnd("SNARK proof time");
|
||||||
const args = [
|
const args = [
|
||||||
@ -201414,6 +201419,7 @@ __webpack_require__.r(__webpack_exports__);
|
|||||||
/* harmony export */ getWeightRandom: () => (/* reexport safe */ _relayerClient__WEBPACK_IMPORTED_MODULE_17__.c$),
|
/* harmony export */ getWeightRandom: () => (/* reexport safe */ _relayerClient__WEBPACK_IMPORTED_MODULE_17__.c$),
|
||||||
/* harmony export */ getWithdrawals: () => (/* reexport safe */ _graphql__WEBPACK_IMPORTED_MODULE_1__.getWithdrawals),
|
/* harmony export */ getWithdrawals: () => (/* reexport safe */ _graphql__WEBPACK_IMPORTED_MODULE_1__.getWithdrawals),
|
||||||
/* harmony export */ hexToBytes: () => (/* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_20__.aT),
|
/* harmony export */ hexToBytes: () => (/* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_20__.aT),
|
||||||
|
/* harmony export */ initGroth16: () => (/* reexport safe */ _websnark__WEBPACK_IMPORTED_MODULE_21__.O),
|
||||||
/* harmony export */ isNode: () => (/* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_20__.Ll),
|
/* harmony export */ isNode: () => (/* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_20__.Ll),
|
||||||
/* harmony export */ isRelayerUpdated: () => (/* reexport safe */ _relayerClient__WEBPACK_IMPORTED_MODULE_17__.mU),
|
/* harmony export */ isRelayerUpdated: () => (/* reexport safe */ _relayerClient__WEBPACK_IMPORTED_MODULE_17__.mU),
|
||||||
/* harmony export */ jobsSchema: () => (/* reexport safe */ _schemas__WEBPACK_IMPORTED_MODULE_2__.Us),
|
/* harmony export */ jobsSchema: () => (/* reexport safe */ _schemas__WEBPACK_IMPORTED_MODULE_2__.Us),
|
||||||
|
1
dist/websnark.d.ts
vendored
1
dist/websnark.d.ts
vendored
@ -24,4 +24,5 @@ export type snarkProofs = {
|
|||||||
proof: BytesLike;
|
proof: BytesLike;
|
||||||
args: snarkArgs;
|
args: snarkArgs;
|
||||||
};
|
};
|
||||||
|
export declare function initGroth16(): Promise<void>;
|
||||||
export declare function calculateSnarkProof(input: snarkInputs, circuit: object, provingKey: ArrayBuffer): Promise<snarkProofs>;
|
export declare function calculateSnarkProof(input: snarkInputs, circuit: object, provingKey: ArrayBuffer): Promise<snarkProofs>;
|
||||||
|
@ -39,18 +39,20 @@ export type snarkProofs = {
|
|||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
let groth16: any;
|
let groth16: any;
|
||||||
|
|
||||||
const groth16Promise = (async () => {
|
export async function initGroth16() {
|
||||||
if (!groth16) {
|
if (!groth16) {
|
||||||
groth16 = await websnarkGroth({ wasmInitialMemory: 2000 });
|
groth16 = await websnarkGroth({ wasmInitialMemory: 2000 });
|
||||||
}
|
}
|
||||||
})();
|
}
|
||||||
|
|
||||||
export async function calculateSnarkProof(
|
export async function calculateSnarkProof(
|
||||||
input: snarkInputs,
|
input: snarkInputs,
|
||||||
circuit: object,
|
circuit: object,
|
||||||
provingKey: ArrayBuffer,
|
provingKey: ArrayBuffer,
|
||||||
): Promise<snarkProofs> {
|
): Promise<snarkProofs> {
|
||||||
await groth16Promise;
|
if (!groth16) {
|
||||||
|
await initGroth16();
|
||||||
|
}
|
||||||
|
|
||||||
const snarkInput = {
|
const snarkInput = {
|
||||||
root: input.root,
|
root: input.root,
|
||||||
@ -68,7 +70,7 @@ export async function calculateSnarkProof(
|
|||||||
|
|
||||||
console.log('Start generating SNARK proof', snarkInput);
|
console.log('Start generating SNARK proof', snarkInput);
|
||||||
console.time('SNARK proof time');
|
console.time('SNARK proof time');
|
||||||
const proofData = await websnarkUtils.genWitnessAndProve(groth16, snarkInput, circuit, provingKey);
|
const proofData = await websnarkUtils.genWitnessAndProve(await groth16, snarkInput, circuit, provingKey);
|
||||||
const proof = websnarkUtils.toSolidityInput(proofData).proof as BytesLike;
|
const proof = websnarkUtils.toSolidityInput(proofData).proof as BytesLike;
|
||||||
console.timeEnd('SNARK proof time');
|
console.timeEnd('SNARK proof time');
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user