Skip to content

Commit d75f0ff

Browse files
committed
chore: add a debugging script to rerun failed proofs
1 parent 5b58db8 commit d75f0ff

File tree

4 files changed

+105
-61
lines changed

4 files changed

+105
-61
lines changed

yarn-project/prover-client/package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,7 @@
2727
"clean": "rm -rf ./dest .tsbuildinfo",
2828
"bb": "node --no-warnings ./dest/bb/index.js",
2929
"test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --testTimeout=3500000 --forceExit",
30-
"test:debug": "LOG_LEVEL=debug NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --testTimeout=1500000 --forceExit --testNamePattern prover/bb_prover/parity",
31-
"get-proof-inputs": "node --no-warnings ./dest/bin/get-proof-inputs.js"
30+
"test:debug": "LOG_LEVEL=debug NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --testTimeout=1500000 --forceExit --testNamePattern prover/bb_prover/parity"
3231
},
3332
"jest": {
3433
"moduleNameMapper": {

yarn-project/prover-client/src/bin/get-proof-inputs.ts

Lines changed: 0 additions & 59 deletions
This file was deleted.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
export * from './proof_store.js';
22
export * from './inline_proof_store.js';
33
export * from './factory.js';
4+
export * from './gcs_proof_store.js';
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
#!/usr/bin/env node
2+
/**
3+
* This script takes a failed proof from the FailedProofStore and re-executes it locally
4+
*/
5+
import { BBNativeRollupProver } from '@aztec/bb-prover';
6+
import { createLogger } from '@aztec/foundation/log';
7+
import { GoogleCloudStorageProofStore } from '@aztec/prover-client/broker';
8+
import { ProvingRequestType } from '@aztec/stdlib/proofs';
9+
10+
import { mkdtemp } from 'node:fs/promises';
11+
import { join } from 'node:path';
12+
13+
const logger = createLogger('script:rerun_proof');
14+
const urlStr = process.argv[2];
15+
if (!urlStr) {
16+
logger.error('First argument must be the path to the public inputs in the remote bucket');
17+
process.exit(1);
18+
}
19+
20+
const url = new URL(urlStr);
21+
22+
if (url.protocol !== 'gs:') {
23+
logger.error('Path must be valid remote GCS path starting with gs://');
24+
process.exit(1);
25+
}
26+
27+
const store = new GoogleCloudStorageProofStore(url.hostname, '');
28+
logger.info(`Downloading remote public inputs: ${url.href}`);
29+
const { inputs, type } = await store.getProofInput(url);
30+
logger.info(`Got inputs for a job of type ${ProvingRequestType[type]}`);
31+
32+
const tmp = await mkdtemp('rerun_proof-');
33+
logger.info(`Using tmp folder: ${tmp}`);
34+
35+
const prover = await BBNativeRollupProver.new({
36+
bbBinaryPath: process.env.BB_BINARY_PATH ?? join(import.meta.pathname, '../../barretenberg/cpp/build/bin/bb'),
37+
bbWorkingDirectory: join(tmp, 'bb'),
38+
acvmBinaryPath:
39+
process.env.ACVM_BINARY_PATH ?? join(import.meta.pathname, '../../noir/noir-repo/target/release/acvm'),
40+
acvmWorkingDirectory: join(tmp, 'acvm'),
41+
bbSkipCleanup: true,
42+
});
43+
44+
logger.info(`Running proof type: ${ProvingRequestType[type]}`);
45+
46+
let res;
47+
switch (type) {
48+
case ProvingRequestType.PUBLIC_VM:
49+
res = await prover.getAvmProof(inputs);
50+
break;
51+
52+
case ProvingRequestType.PRIVATE_BASE_ROLLUP:
53+
res = await prover.getPrivateBaseRollupProof(inputs);
54+
break;
55+
56+
case ProvingRequestType.PUBLIC_BASE_ROLLUP:
57+
res = await prover.getPublicBaseRollupProof(inputs);
58+
break;
59+
60+
case ProvingRequestType.MERGE_ROLLUP:
61+
res = await prover.getMergeRollupProof(inputs);
62+
break;
63+
64+
case ProvingRequestType.EMPTY_BLOCK_ROOT_ROLLUP:
65+
res = await prover.getEmptyBlockRootRollupProof(inputs);
66+
break;
67+
68+
case ProvingRequestType.PADDING_BLOCK_ROOT_ROLLUP:
69+
res = await prover.getPaddingBlockRootRollupProof(inputs);
70+
break;
71+
72+
case ProvingRequestType.BLOCK_ROOT_ROLLUP:
73+
res = await prover.getBlockRootRollupProof(inputs);
74+
break;
75+
76+
case ProvingRequestType.SINGLE_TX_BLOCK_ROOT_ROLLUP:
77+
res = await prover.getSingleTxBlockRootRollupProof(inputs);
78+
break;
79+
80+
case ProvingRequestType.BLOCK_MERGE_ROLLUP:
81+
res = await prover.getBlockMergeRollupProof(inputs);
82+
break;
83+
84+
case ProvingRequestType.ROOT_ROLLUP:
85+
res = await prover.getRootRollupProof(inputs);
86+
break;
87+
88+
case ProvingRequestType.BASE_PARITY:
89+
res = await prover.getBaseParityProof(inputs);
90+
break;
91+
92+
case ProvingRequestType.ROOT_PARITY:
93+
res = await prover.getRootParityProof(inputs);
94+
break;
95+
96+
case ProvingRequestType.TUBE_PROOF:
97+
res = await prover.getTubeProof(inputs);
98+
break;
99+
100+
default:
101+
logger.error(`Invalid proof request type: ${type}`);
102+
process.exit(1);
103+
}

0 commit comments

Comments
 (0)