@aztec/prover-client 0.0.0-test.0 → 0.0.1-fake-c83136db25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/block-factory/index.d.ts +2 -0
- package/dest/block-factory/index.d.ts.map +1 -0
- package/dest/block-factory/light.d.ts +38 -0
- package/dest/block-factory/light.d.ts.map +1 -0
- package/dest/block-factory/light.js +94 -0
- package/dest/config.d.ts +6 -6
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +11 -1
- package/dest/mocks/fixtures.d.ts +7 -4
- package/dest/mocks/fixtures.d.ts.map +1 -1
- package/dest/mocks/fixtures.js +32 -4
- package/dest/mocks/test_context.d.ts +43 -15
- package/dest/mocks/test_context.d.ts.map +1 -1
- package/dest/mocks/test_context.js +110 -48
- package/dest/orchestrator/block-building-helpers.d.ts +37 -28
- package/dest/orchestrator/block-building-helpers.d.ts.map +1 -1
- package/dest/orchestrator/block-building-helpers.js +156 -150
- package/dest/orchestrator/block-proving-state.d.ts +62 -46
- package/dest/orchestrator/block-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/block-proving-state.js +223 -179
- package/dest/orchestrator/checkpoint-proving-state.d.ts +63 -0
- package/dest/orchestrator/checkpoint-proving-state.d.ts.map +1 -0
- package/dest/orchestrator/checkpoint-proving-state.js +211 -0
- package/dest/orchestrator/epoch-proving-state.d.ts +37 -24
- package/dest/orchestrator/epoch-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/epoch-proving-state.js +143 -73
- package/dest/orchestrator/orchestrator.d.ts +34 -31
- package/dest/orchestrator/orchestrator.d.ts.map +1 -1
- package/dest/orchestrator/orchestrator.js +392 -234
- package/dest/orchestrator/orchestrator_metrics.d.ts +2 -0
- package/dest/orchestrator/orchestrator_metrics.d.ts.map +1 -1
- package/dest/orchestrator/orchestrator_metrics.js +9 -0
- package/dest/orchestrator/tx-proving-state.d.ts +12 -10
- package/dest/orchestrator/tx-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/tx-proving-state.js +30 -38
- package/dest/prover-client/prover-client.d.ts +3 -3
- package/dest/prover-client/prover-client.d.ts.map +1 -1
- package/dest/prover-client/prover-client.js +5 -4
- package/dest/prover-client/server-epoch-prover.d.ts +13 -10
- package/dest/prover-client/server-epoch-prover.d.ts.map +1 -1
- package/dest/prover-client/server-epoch-prover.js +11 -11
- package/dest/proving_broker/broker_prover_facade.d.ts +22 -15
- package/dest/proving_broker/broker_prover_facade.d.ts.map +1 -1
- package/dest/proving_broker/broker_prover_facade.js +64 -39
- package/dest/proving_broker/config.d.ts +9 -4
- package/dest/proving_broker/config.d.ts.map +1 -1
- package/dest/proving_broker/config.js +15 -4
- package/dest/proving_broker/factory.d.ts +1 -1
- package/dest/proving_broker/factory.d.ts.map +1 -1
- package/dest/proving_broker/factory.js +5 -1
- package/dest/proving_broker/fixtures.js +1 -1
- package/dest/proving_broker/proof_store/factory.js +1 -1
- package/dest/proving_broker/proof_store/gcs_proof_store.d.ts.map +1 -1
- package/dest/proving_broker/proof_store/gcs_proof_store.js +1 -0
- package/dest/proving_broker/proof_store/index.d.ts +1 -0
- package/dest/proving_broker/proof_store/index.d.ts.map +1 -1
- package/dest/proving_broker/proof_store/index.js +1 -0
- package/dest/proving_broker/proving_agent.d.ts +3 -3
- package/dest/proving_broker/proving_agent.d.ts.map +1 -1
- package/dest/proving_broker/proving_agent.js +83 -47
- package/dest/proving_broker/proving_broker.d.ts +11 -2
- package/dest/proving_broker/proving_broker.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker.js +34 -22
- package/dest/proving_broker/proving_broker_database/memory.js +1 -1
- package/dest/proving_broker/proving_broker_database/persisted.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker_database/persisted.js +9 -8
- package/dest/proving_broker/proving_job_controller.d.ts +7 -8
- package/dest/proving_broker/proving_job_controller.d.ts.map +1 -1
- package/dest/proving_broker/proving_job_controller.js +89 -61
- package/dest/proving_broker/rpc.d.ts +3 -5
- package/dest/proving_broker/rpc.d.ts.map +1 -1
- package/dest/proving_broker/rpc.js +1 -4
- package/dest/test/mock_proof_store.d.ts +9 -0
- package/dest/test/mock_proof_store.d.ts.map +1 -0
- package/dest/test/mock_proof_store.js +10 -0
- package/dest/test/mock_prover.d.ts +23 -16
- package/dest/test/mock_prover.d.ts.map +1 -1
- package/dest/test/mock_prover.js +38 -20
- package/package.json +29 -29
- package/src/block-factory/index.ts +1 -0
- package/src/block-factory/light.ts +140 -0
- package/src/config.ts +24 -8
- package/src/mocks/fixtures.ts +43 -15
- package/src/mocks/test_context.ts +201 -75
- package/src/orchestrator/block-building-helpers.ts +247 -243
- package/src/orchestrator/block-proving-state.ts +247 -231
- package/src/orchestrator/checkpoint-proving-state.ts +299 -0
- package/src/orchestrator/epoch-proving-state.ts +187 -111
- package/src/orchestrator/orchestrator.ts +590 -289
- package/src/orchestrator/orchestrator_metrics.ts +20 -1
- package/src/orchestrator/tx-proving-state.ts +60 -61
- package/src/prover-client/prover-client.ts +16 -14
- package/src/prover-client/server-epoch-prover.ts +40 -21
- package/src/proving_broker/broker_prover_facade.ts +200 -113
- package/src/proving_broker/config.ts +17 -6
- package/src/proving_broker/factory.ts +2 -1
- package/src/proving_broker/fixtures.ts +1 -1
- package/src/proving_broker/proof_store/factory.ts +1 -1
- package/src/proving_broker/proof_store/gcs_proof_store.ts +5 -1
- package/src/proving_broker/proof_store/index.ts +1 -0
- package/src/proving_broker/proof_store/inline_proof_store.ts +1 -1
- package/src/proving_broker/proving_agent.ts +89 -47
- package/src/proving_broker/proving_broker.ts +51 -32
- package/src/proving_broker/proving_broker_database/memory.ts +1 -1
- package/src/proving_broker/proving_broker_database/persisted.ts +9 -8
- package/src/proving_broker/proving_job_controller.ts +92 -81
- package/src/proving_broker/rpc.ts +1 -6
- package/src/test/mock_proof_store.ts +14 -0
- package/src/test/mock_prover.ts +164 -60
- package/dest/bin/get-proof-inputs.d.ts +0 -2
- package/dest/bin/get-proof-inputs.d.ts.map +0 -1
- package/dest/bin/get-proof-inputs.js +0 -51
- package/dest/block_builder/index.d.ts +0 -6
- package/dest/block_builder/index.d.ts.map +0 -1
- package/dest/block_builder/light.d.ts +0 -33
- package/dest/block_builder/light.d.ts.map +0 -1
- package/dest/block_builder/light.js +0 -82
- package/src/bin/get-proof-inputs.ts +0 -59
- package/src/block_builder/index.ts +0 -6
- package/src/block_builder/light.ts +0 -101
- /package/dest/{block_builder → block-factory}/index.js +0 -0
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { randomBytes } from '@aztec/foundation/crypto';
|
|
2
|
+
import { AbortError } from '@aztec/foundation/error';
|
|
1
3
|
import { createLogger } from '@aztec/foundation/log';
|
|
2
4
|
import type {
|
|
3
5
|
ProvingJobId,
|
|
@@ -9,24 +11,15 @@ import { ProvingRequestType } from '@aztec/stdlib/proofs';
|
|
|
9
11
|
|
|
10
12
|
export enum ProvingJobControllerStatus {
|
|
11
13
|
IDLE = 'idle',
|
|
12
|
-
|
|
14
|
+
RUNNING = 'running',
|
|
13
15
|
DONE = 'done',
|
|
14
|
-
ABORTED = 'aborted',
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
interface ProvingJobCompletionCallback<T extends ProvingRequestType = ProvingRequestType> {
|
|
18
|
-
(
|
|
19
|
-
jobId: ProvingJobId,
|
|
20
|
-
type: T,
|
|
21
|
-
error: Error | undefined,
|
|
22
|
-
result: ProvingJobResultsMap[T] | undefined,
|
|
23
|
-
): void | Promise<void>;
|
|
24
16
|
}
|
|
25
17
|
|
|
26
18
|
export class ProvingJobController {
|
|
27
19
|
private status: ProvingJobControllerStatus = ProvingJobControllerStatus.IDLE;
|
|
28
20
|
private promise?: Promise<void>;
|
|
29
21
|
private abortController = new AbortController();
|
|
22
|
+
private result?: ProvingJobResultsMap[ProvingRequestType] | Error;
|
|
30
23
|
|
|
31
24
|
constructor(
|
|
32
25
|
private jobId: ProvingJobId,
|
|
@@ -34,13 +27,13 @@ export class ProvingJobController {
|
|
|
34
27
|
private epochNumber: number,
|
|
35
28
|
private startedAt: number,
|
|
36
29
|
private circuitProver: ServerCircuitProver,
|
|
37
|
-
private onComplete:
|
|
38
|
-
private log = createLogger('prover-client:proving-agent:job-controller'),
|
|
30
|
+
private onComplete: () => void,
|
|
31
|
+
private log = createLogger('prover-client:proving-agent:job-controller-' + randomBytes(4).toString('hex')),
|
|
39
32
|
) {}
|
|
40
33
|
|
|
41
34
|
public start(): void {
|
|
42
35
|
if (this.status !== ProvingJobControllerStatus.IDLE) {
|
|
43
|
-
this.log.
|
|
36
|
+
this.log.warn(
|
|
44
37
|
`Job controller for jobId=${this.jobId} not starting because it is not idle currentStatus=${this.status}`,
|
|
45
38
|
{
|
|
46
39
|
currentStatus: this.status,
|
|
@@ -50,63 +43,23 @@ export class ProvingJobController {
|
|
|
50
43
|
return;
|
|
51
44
|
}
|
|
52
45
|
|
|
53
|
-
this.
|
|
54
|
-
|
|
46
|
+
this.promise = this.run();
|
|
47
|
+
|
|
48
|
+
this.log.info(`Job controller started jobId=${this.jobId}`, {
|
|
55
49
|
jobId: this.jobId,
|
|
56
50
|
});
|
|
57
|
-
|
|
58
|
-
this.promise = this.generateProof()
|
|
59
|
-
.then(
|
|
60
|
-
result => {
|
|
61
|
-
if (this.status === ProvingJobControllerStatus.ABORTED) {
|
|
62
|
-
this.log.warn(`Job controller for jobId=${this.jobId} completed successfully but job was aborted`, {
|
|
63
|
-
currentStatus: this.status,
|
|
64
|
-
jobId: this.jobId,
|
|
65
|
-
});
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
this.status = ProvingJobControllerStatus.DONE;
|
|
69
|
-
this.log.verbose(`Job controller for jobId=${this.jobId} completed successfully`, {
|
|
70
|
-
jobId: this.jobId,
|
|
71
|
-
});
|
|
72
|
-
return this.onComplete(this.jobId, this.inputs.type, undefined, result);
|
|
73
|
-
},
|
|
74
|
-
error => {
|
|
75
|
-
if (this.status === ProvingJobControllerStatus.ABORTED) {
|
|
76
|
-
this.log.warn(`Job controller for jobId=${this.jobId} finished with an error but job was aborted`, {
|
|
77
|
-
currentStatus: this.status,
|
|
78
|
-
jobId: this.jobId,
|
|
79
|
-
});
|
|
80
|
-
return;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
if (error.name === 'AbortError') {
|
|
84
|
-
// Ignore abort errors
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
this.log.verbose(`Job controller for jobId=${this.jobId} finished with an error`, {
|
|
89
|
-
jobId: this.jobId,
|
|
90
|
-
err: error,
|
|
91
|
-
});
|
|
92
|
-
|
|
93
|
-
this.status = ProvingJobControllerStatus.DONE;
|
|
94
|
-
return this.onComplete(this.jobId, this.inputs.type, error, undefined);
|
|
95
|
-
},
|
|
96
|
-
)
|
|
97
|
-
.catch(err => {
|
|
98
|
-
this.log.error(`Job constroller failed to send result for jobId=${this.jobId}: ${err}`, err, {
|
|
99
|
-
jobId: this.jobId,
|
|
100
|
-
});
|
|
101
|
-
});
|
|
102
51
|
}
|
|
103
52
|
|
|
104
53
|
public getStatus(): ProvingJobControllerStatus {
|
|
105
54
|
return this.status;
|
|
106
55
|
}
|
|
107
56
|
|
|
57
|
+
public getResult(): ProvingJobResultsMap[ProvingRequestType] | Error | undefined {
|
|
58
|
+
return this.result;
|
|
59
|
+
}
|
|
60
|
+
|
|
108
61
|
public abort(): void {
|
|
109
|
-
if (this.status !== ProvingJobControllerStatus.
|
|
62
|
+
if (this.status !== ProvingJobControllerStatus.RUNNING) {
|
|
110
63
|
this.log.warn(`Tried to abort job controller for jobId=${this.jobId} but it is not running`, {
|
|
111
64
|
currentStatus: this.status,
|
|
112
65
|
jobId: this.jobId,
|
|
@@ -114,9 +67,8 @@ export class ProvingJobController {
|
|
|
114
67
|
return;
|
|
115
68
|
}
|
|
116
69
|
|
|
117
|
-
this.status = ProvingJobControllerStatus.ABORTED;
|
|
118
70
|
this.abortController.abort();
|
|
119
|
-
this.log.
|
|
71
|
+
this.log.warn(`Aborted job controller for jobId=${this.jobId}`, {
|
|
120
72
|
jobId: this.jobId,
|
|
121
73
|
});
|
|
122
74
|
}
|
|
@@ -125,6 +77,10 @@ export class ProvingJobController {
|
|
|
125
77
|
return this.jobId;
|
|
126
78
|
}
|
|
127
79
|
|
|
80
|
+
public getProofType(): ProvingRequestType {
|
|
81
|
+
return this.inputs.type;
|
|
82
|
+
}
|
|
83
|
+
|
|
128
84
|
public getStartedAt(): number {
|
|
129
85
|
return this.startedAt;
|
|
130
86
|
}
|
|
@@ -133,58 +89,113 @@ export class ProvingJobController {
|
|
|
133
89
|
return ProvingRequestType[this.inputs.type];
|
|
134
90
|
}
|
|
135
91
|
|
|
92
|
+
private run = async () => {
|
|
93
|
+
this.status = ProvingJobControllerStatus.RUNNING;
|
|
94
|
+
let result: ProvingJobResultsMap[ProvingRequestType] | Error;
|
|
95
|
+
try {
|
|
96
|
+
result = await this.generateProof();
|
|
97
|
+
} catch (err) {
|
|
98
|
+
if (err && err instanceof Error) {
|
|
99
|
+
result = err;
|
|
100
|
+
} else {
|
|
101
|
+
result = new Error('Unknown proving error: ' + String(err), { cause: err });
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
if (this.abortController.signal.aborted) {
|
|
106
|
+
this.log.warn(`Job controller for jobId=${this.jobId} completed but job was aborted`, {
|
|
107
|
+
currentStatus: this.status,
|
|
108
|
+
jobId: this.jobId,
|
|
109
|
+
});
|
|
110
|
+
result = new AbortError('Proof was aborted');
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
this.result = result;
|
|
114
|
+
this.status = ProvingJobControllerStatus.DONE;
|
|
115
|
+
try {
|
|
116
|
+
this.onComplete();
|
|
117
|
+
} catch (err) {
|
|
118
|
+
this.log.warn(`On complete handler error: ${err}`, { jobId: this.jobId });
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
|
|
136
122
|
private async generateProof(): Promise<ProvingJobResultsMap[ProvingRequestType]> {
|
|
137
123
|
const { type, inputs } = this.inputs;
|
|
138
124
|
const signal = this.abortController.signal;
|
|
139
125
|
switch (type) {
|
|
140
126
|
case ProvingRequestType.PUBLIC_VM: {
|
|
141
|
-
|
|
127
|
+
// TODO(#14234)[Unconditional PIs validation]: Remove argument "undefined".
|
|
128
|
+
return await this.circuitProver.getAvmProof(inputs, undefined, signal, this.epochNumber);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
case ProvingRequestType.PUBLIC_CHONK_VERIFIER: {
|
|
132
|
+
return await this.circuitProver.getPublicChonkVerifierProof(inputs, signal, this.epochNumber);
|
|
142
133
|
}
|
|
143
134
|
|
|
144
|
-
case ProvingRequestType.
|
|
145
|
-
return await this.circuitProver.
|
|
135
|
+
case ProvingRequestType.PRIVATE_TX_BASE_ROLLUP: {
|
|
136
|
+
return await this.circuitProver.getPrivateTxBaseRollupProof(inputs, signal, this.epochNumber);
|
|
146
137
|
}
|
|
147
138
|
|
|
148
|
-
case ProvingRequestType.
|
|
149
|
-
return await this.circuitProver.
|
|
139
|
+
case ProvingRequestType.PUBLIC_TX_BASE_ROLLUP: {
|
|
140
|
+
return await this.circuitProver.getPublicTxBaseRollupProof(inputs, signal, this.epochNumber);
|
|
150
141
|
}
|
|
151
142
|
|
|
152
|
-
case ProvingRequestType.
|
|
153
|
-
return await this.circuitProver.
|
|
143
|
+
case ProvingRequestType.TX_MERGE_ROLLUP: {
|
|
144
|
+
return await this.circuitProver.getTxMergeRollupProof(inputs, signal, this.epochNumber);
|
|
154
145
|
}
|
|
155
146
|
|
|
156
|
-
case ProvingRequestType.
|
|
157
|
-
return await this.circuitProver.
|
|
147
|
+
case ProvingRequestType.BLOCK_ROOT_FIRST_ROLLUP: {
|
|
148
|
+
return await this.circuitProver.getBlockRootFirstRollupProof(inputs, signal, this.epochNumber);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
case ProvingRequestType.BLOCK_ROOT_SINGLE_TX_FIRST_ROLLUP: {
|
|
152
|
+
return await this.circuitProver.getBlockRootSingleTxFirstRollupProof(inputs, signal, this.epochNumber);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
case ProvingRequestType.BLOCK_ROOT_EMPTY_TX_FIRST_ROLLUP: {
|
|
156
|
+
return await this.circuitProver.getBlockRootEmptyTxFirstRollupProof(inputs, signal, this.epochNumber);
|
|
158
157
|
}
|
|
159
158
|
|
|
160
159
|
case ProvingRequestType.BLOCK_ROOT_ROLLUP: {
|
|
161
160
|
return await this.circuitProver.getBlockRootRollupProof(inputs, signal, this.epochNumber);
|
|
162
161
|
}
|
|
163
162
|
|
|
164
|
-
case ProvingRequestType.
|
|
165
|
-
return await this.circuitProver.
|
|
163
|
+
case ProvingRequestType.BLOCK_ROOT_SINGLE_TX_ROLLUP: {
|
|
164
|
+
return await this.circuitProver.getBlockRootSingleTxRollupProof(inputs, signal, this.epochNumber);
|
|
166
165
|
}
|
|
167
166
|
|
|
168
167
|
case ProvingRequestType.BLOCK_MERGE_ROLLUP: {
|
|
169
168
|
return await this.circuitProver.getBlockMergeRollupProof(inputs, signal, this.epochNumber);
|
|
170
169
|
}
|
|
171
170
|
|
|
171
|
+
case ProvingRequestType.CHECKPOINT_ROOT_ROLLUP: {
|
|
172
|
+
return await this.circuitProver.getCheckpointRootRollupProof(inputs, signal, this.epochNumber);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
case ProvingRequestType.CHECKPOINT_ROOT_SINGLE_BLOCK_ROLLUP: {
|
|
176
|
+
return await this.circuitProver.getCheckpointRootSingleBlockRollupProof(inputs, signal, this.epochNumber);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
case ProvingRequestType.CHECKPOINT_PADDING_ROLLUP: {
|
|
180
|
+
return await this.circuitProver.getCheckpointPaddingRollupProof(inputs, signal, this.epochNumber);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
case ProvingRequestType.CHECKPOINT_MERGE_ROLLUP: {
|
|
184
|
+
return await this.circuitProver.getCheckpointMergeRollupProof(inputs, signal, this.epochNumber);
|
|
185
|
+
}
|
|
186
|
+
|
|
172
187
|
case ProvingRequestType.ROOT_ROLLUP: {
|
|
173
188
|
return await this.circuitProver.getRootRollupProof(inputs, signal, this.epochNumber);
|
|
174
189
|
}
|
|
175
190
|
|
|
176
|
-
case ProvingRequestType.
|
|
191
|
+
case ProvingRequestType.PARITY_BASE: {
|
|
177
192
|
return await this.circuitProver.getBaseParityProof(inputs, signal, this.epochNumber);
|
|
178
193
|
}
|
|
179
194
|
|
|
180
|
-
case ProvingRequestType.
|
|
195
|
+
case ProvingRequestType.PARITY_ROOT: {
|
|
181
196
|
return await this.circuitProver.getRootParityProof(inputs, signal, this.epochNumber);
|
|
182
197
|
}
|
|
183
198
|
|
|
184
|
-
case ProvingRequestType.TUBE_PROOF: {
|
|
185
|
-
return await this.circuitProver.getTubeProof(inputs, signal, this.epochNumber);
|
|
186
|
-
}
|
|
187
|
-
|
|
188
199
|
default: {
|
|
189
200
|
const _exhaustive: never = type;
|
|
190
201
|
return Promise.reject(new Error(`Invalid proof request type: ${type}`));
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { createSafeJsonRpcClient } from '@aztec/foundation/json-rpc/client';
|
|
2
|
-
import type { SafeJsonRpcServer } from '@aztec/foundation/json-rpc/server';
|
|
3
2
|
import {
|
|
4
3
|
type GetProvingJobResponse,
|
|
5
4
|
ProofUri,
|
|
@@ -13,7 +12,7 @@ import {
|
|
|
13
12
|
import { ProvingRequestType } from '@aztec/stdlib/proofs';
|
|
14
13
|
import { type ApiSchemaFor, optional } from '@aztec/stdlib/schemas';
|
|
15
14
|
import { type ComponentsVersions, getVersioningResponseHandler } from '@aztec/stdlib/versioning';
|
|
16
|
-
import {
|
|
15
|
+
import { makeTracedFetch } from '@aztec/telemetry-client';
|
|
17
16
|
|
|
18
17
|
import { z } from 'zod';
|
|
19
18
|
|
|
@@ -54,10 +53,6 @@ export const ProvingJobBrokerSchema: ApiSchemaFor<ProvingJobBroker> = {
|
|
|
54
53
|
...ProvingJobProducerSchema,
|
|
55
54
|
};
|
|
56
55
|
|
|
57
|
-
export function createProvingBrokerServer(broker: ProvingJobBroker): SafeJsonRpcServer {
|
|
58
|
-
return createTracedJsonRpcServer(broker, ProvingJobBrokerSchema);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
56
|
export function createProvingJobBrokerClient(
|
|
62
57
|
url: string,
|
|
63
58
|
versions: Partial<ComponentsVersions>,
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ProvingJobId } from '@aztec/stdlib/interfaces/server';
|
|
2
|
+
import { ProvingRequestType } from '@aztec/stdlib/proofs';
|
|
3
|
+
|
|
4
|
+
// Mock ProofStore for faster benchmarks with realistic Cloud Storage URIs
|
|
5
|
+
export class MockProofStore {
|
|
6
|
+
private mockCounter = 0;
|
|
7
|
+
private readonly bucketName = 'aztec-proving-benchmarks';
|
|
8
|
+
private readonly basePath = 'proving-jobs';
|
|
9
|
+
|
|
10
|
+
saveProofInput(jobId: ProvingJobId, type: ProvingRequestType): Promise<string> {
|
|
11
|
+
const uri = `gs://${this.bucketName}/${this.basePath}/inputs/${type}/${jobId}`;
|
|
12
|
+
return Promise.resolve(uri as any);
|
|
13
|
+
}
|
|
14
|
+
}
|
package/src/test/mock_prover.ts
CHANGED
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED,
|
|
3
|
+
AVM_V2_VERIFICATION_KEY_LENGTH_IN_FIELDS_PADDED,
|
|
4
4
|
NESTED_RECURSIVE_PROOF_LENGTH,
|
|
5
5
|
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
6
6
|
RECURSIVE_PROOF_LENGTH,
|
|
7
|
-
TUBE_PROOF_LENGTH,
|
|
8
7
|
} from '@aztec/constants';
|
|
9
8
|
import { times } from '@aztec/foundation/collection';
|
|
10
9
|
import type { AvmCircuitInputs } from '@aztec/stdlib/avm';
|
|
11
10
|
import {
|
|
12
|
-
type ProofAndVerificationKey,
|
|
13
11
|
type ProvingJob,
|
|
14
12
|
type ProvingJobId,
|
|
15
13
|
type ProvingJobProducer,
|
|
@@ -19,26 +17,37 @@ import {
|
|
|
19
17
|
makeProofAndVerificationKey,
|
|
20
18
|
makePublicInputsAndRecursiveProof,
|
|
21
19
|
} from '@aztec/stdlib/interfaces/server';
|
|
22
|
-
import type {
|
|
20
|
+
import type { ParityBasePrivateInputs, ParityRootPrivateInputs } from '@aztec/stdlib/parity';
|
|
23
21
|
import { makeEmptyRecursiveProof, makeRecursiveProof } from '@aztec/stdlib/proofs';
|
|
24
22
|
import type {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
23
|
+
BlockMergeRollupPrivateInputs,
|
|
24
|
+
BlockRollupPublicInputs,
|
|
25
|
+
BlockRootEmptyTxFirstRollupPrivateInputs,
|
|
26
|
+
BlockRootFirstRollupPrivateInputs,
|
|
27
|
+
BlockRootRollupPrivateInputs,
|
|
28
|
+
BlockRootSingleTxFirstRollupPrivateInputs,
|
|
29
|
+
BlockRootSingleTxRollupPrivateInputs,
|
|
30
|
+
CheckpointMergeRollupPrivateInputs,
|
|
31
|
+
CheckpointPaddingRollupPrivateInputs,
|
|
32
|
+
CheckpointRollupPublicInputs,
|
|
33
|
+
CheckpointRootRollupPrivateInputs,
|
|
34
|
+
CheckpointRootSingleBlockRollupPrivateInputs,
|
|
35
|
+
PrivateTxBaseRollupPrivateInputs,
|
|
36
|
+
PublicChonkVerifierPrivateInputs,
|
|
37
|
+
PublicChonkVerifierPublicInputs,
|
|
38
|
+
PublicTxBaseRollupPrivateInputs,
|
|
39
|
+
RootRollupPrivateInputs,
|
|
34
40
|
RootRollupPublicInputs,
|
|
35
|
-
|
|
41
|
+
TxMergeRollupPrivateInputs,
|
|
42
|
+
TxRollupPublicInputs,
|
|
36
43
|
} from '@aztec/stdlib/rollup';
|
|
37
44
|
import {
|
|
38
|
-
|
|
39
|
-
|
|
45
|
+
makeBlockRollupPublicInputs,
|
|
46
|
+
makeCheckpointRollupPublicInputs,
|
|
40
47
|
makeParityPublicInputs,
|
|
48
|
+
makePublicChonkVerifierPublicInputs,
|
|
41
49
|
makeRootRollupPublicInputs,
|
|
50
|
+
makeTxRollupPublicInputs,
|
|
42
51
|
} from '@aztec/stdlib/testing';
|
|
43
52
|
import { VerificationKeyData } from '@aztec/stdlib/vks';
|
|
44
53
|
|
|
@@ -96,16 +105,21 @@ export class TestBroker implements ProvingJobProducer {
|
|
|
96
105
|
export class MockProver implements ServerCircuitProver {
|
|
97
106
|
constructor() {}
|
|
98
107
|
|
|
99
|
-
getAvmProof(
|
|
108
|
+
getAvmProof(
|
|
109
|
+
_inputs: AvmCircuitInputs,
|
|
110
|
+
_skipPublicInputsValidation?: boolean, // TODO(#14234)[Unconditional PIs validation]: Remove.
|
|
111
|
+
_signal?: AbortSignal,
|
|
112
|
+
_epochNumber?: number,
|
|
113
|
+
) {
|
|
100
114
|
return Promise.resolve(
|
|
101
115
|
makeProofAndVerificationKey(
|
|
102
|
-
makeEmptyRecursiveProof(
|
|
103
|
-
VerificationKeyData.makeFake(
|
|
116
|
+
makeEmptyRecursiveProof(AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED),
|
|
117
|
+
VerificationKeyData.makeFake(AVM_V2_VERIFICATION_KEY_LENGTH_IN_FIELDS_PADDED),
|
|
104
118
|
),
|
|
105
119
|
);
|
|
106
120
|
}
|
|
107
121
|
|
|
108
|
-
getBaseParityProof(_inputs:
|
|
122
|
+
getBaseParityProof(_inputs: ParityBasePrivateInputs, _signal?: AbortSignal, _epochNumber?: number) {
|
|
109
123
|
return Promise.resolve(
|
|
110
124
|
makePublicInputsAndRecursiveProof(
|
|
111
125
|
makeParityPublicInputs(),
|
|
@@ -115,7 +129,7 @@ export class MockProver implements ServerCircuitProver {
|
|
|
115
129
|
);
|
|
116
130
|
}
|
|
117
131
|
|
|
118
|
-
getRootParityProof(_inputs:
|
|
132
|
+
getRootParityProof(_inputs: ParityRootPrivateInputs, _signal?: AbortSignal, _epochNumber?: number) {
|
|
119
133
|
return Promise.resolve(
|
|
120
134
|
makePublicInputsAndRecursiveProof(
|
|
121
135
|
makeParityPublicInputs(),
|
|
@@ -125,114 +139,210 @@ export class MockProver implements ServerCircuitProver {
|
|
|
125
139
|
);
|
|
126
140
|
}
|
|
127
141
|
|
|
128
|
-
|
|
129
|
-
|
|
142
|
+
getPublicChonkVerifierProof(
|
|
143
|
+
_inputs: PublicChonkVerifierPrivateInputs,
|
|
130
144
|
_signal?: AbortSignal,
|
|
131
145
|
_epochNumber?: number,
|
|
132
146
|
): Promise<
|
|
133
|
-
PublicInputsAndRecursiveProof<
|
|
147
|
+
PublicInputsAndRecursiveProof<PublicChonkVerifierPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
134
148
|
> {
|
|
135
149
|
return Promise.resolve(
|
|
136
150
|
makePublicInputsAndRecursiveProof(
|
|
137
|
-
|
|
151
|
+
makePublicChonkVerifierPublicInputs(),
|
|
138
152
|
makeRecursiveProof(NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH),
|
|
139
153
|
VerificationKeyData.makeFakeRollupHonk(),
|
|
140
154
|
),
|
|
141
155
|
);
|
|
142
156
|
}
|
|
143
157
|
|
|
144
|
-
|
|
145
|
-
|
|
158
|
+
getPrivateTxBaseRollupProof(
|
|
159
|
+
_baseRollupInput: PrivateTxBaseRollupPrivateInputs,
|
|
146
160
|
_signal?: AbortSignal,
|
|
147
161
|
_epochNumber?: number,
|
|
148
|
-
): Promise<
|
|
149
|
-
PublicInputsAndRecursiveProof<BaseOrMergeRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
150
|
-
> {
|
|
162
|
+
): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
151
163
|
return Promise.resolve(
|
|
152
164
|
makePublicInputsAndRecursiveProof(
|
|
153
|
-
|
|
165
|
+
makeTxRollupPublicInputs(),
|
|
154
166
|
makeRecursiveProof(NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH),
|
|
155
167
|
VerificationKeyData.makeFakeRollupHonk(),
|
|
156
168
|
),
|
|
157
169
|
);
|
|
158
170
|
}
|
|
159
171
|
|
|
160
|
-
|
|
161
|
-
|
|
172
|
+
getPublicTxBaseRollupProof(
|
|
173
|
+
_inputs: PublicTxBaseRollupPrivateInputs,
|
|
162
174
|
_signal?: AbortSignal,
|
|
163
175
|
_epochNumber?: number,
|
|
164
|
-
): Promise<
|
|
165
|
-
|
|
166
|
-
|
|
176
|
+
): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
177
|
+
return Promise.resolve(
|
|
178
|
+
makePublicInputsAndRecursiveProof(
|
|
179
|
+
makeTxRollupPublicInputs(),
|
|
180
|
+
makeRecursiveProof(NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH),
|
|
181
|
+
VerificationKeyData.makeFakeRollupHonk(),
|
|
182
|
+
),
|
|
183
|
+
);
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
getTxMergeRollupProof(
|
|
187
|
+
_input: TxMergeRollupPrivateInputs,
|
|
188
|
+
_signal?: AbortSignal,
|
|
189
|
+
_epochNumber?: number,
|
|
190
|
+
): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
191
|
+
return Promise.resolve(
|
|
192
|
+
makePublicInputsAndRecursiveProof(
|
|
193
|
+
makeTxRollupPublicInputs(),
|
|
194
|
+
makeRecursiveProof(NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH),
|
|
195
|
+
VerificationKeyData.makeFakeRollupHonk(),
|
|
196
|
+
),
|
|
197
|
+
);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
getBlockRootFirstRollupProof(
|
|
201
|
+
_input: BlockRootFirstRollupPrivateInputs,
|
|
202
|
+
_signal?: AbortSignal,
|
|
203
|
+
_epochNumber?: number,
|
|
204
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
167
205
|
return Promise.resolve(
|
|
168
206
|
makePublicInputsAndRecursiveProof(
|
|
169
|
-
|
|
207
|
+
makeBlockRollupPublicInputs(),
|
|
170
208
|
makeRecursiveProof(NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH),
|
|
171
209
|
VerificationKeyData.makeFakeRollupHonk(),
|
|
172
210
|
),
|
|
173
211
|
);
|
|
174
212
|
}
|
|
175
213
|
|
|
176
|
-
|
|
214
|
+
getBlockRootSingleTxFirstRollupProof(
|
|
215
|
+
_input: BlockRootSingleTxFirstRollupPrivateInputs,
|
|
216
|
+
_signal?: AbortSignal,
|
|
217
|
+
_epochNumber?: number,
|
|
218
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
219
|
+
return Promise.resolve(
|
|
220
|
+
makePublicInputsAndRecursiveProof(
|
|
221
|
+
makeBlockRollupPublicInputs(),
|
|
222
|
+
makeRecursiveProof(NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH),
|
|
223
|
+
VerificationKeyData.makeFakeHonk(),
|
|
224
|
+
),
|
|
225
|
+
);
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
getBlockRootEmptyTxFirstRollupProof(
|
|
229
|
+
_input: BlockRootEmptyTxFirstRollupPrivateInputs,
|
|
230
|
+
_signal?: AbortSignal,
|
|
231
|
+
_epochNumber?: number,
|
|
232
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
177
233
|
return Promise.resolve(
|
|
178
234
|
makePublicInputsAndRecursiveProof(
|
|
179
|
-
|
|
235
|
+
makeBlockRollupPublicInputs(),
|
|
180
236
|
makeRecursiveProof(NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH),
|
|
181
237
|
VerificationKeyData.makeFakeRollupHonk(),
|
|
182
238
|
),
|
|
183
239
|
);
|
|
184
240
|
}
|
|
185
241
|
|
|
186
|
-
|
|
187
|
-
_input:
|
|
242
|
+
getBlockRootRollupProof(
|
|
243
|
+
_input: BlockRootRollupPrivateInputs,
|
|
244
|
+
_signal?: AbortSignal,
|
|
245
|
+
_epochNumber?: number,
|
|
246
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
247
|
+
return Promise.resolve(
|
|
248
|
+
makePublicInputsAndRecursiveProof(
|
|
249
|
+
makeBlockRollupPublicInputs(),
|
|
250
|
+
makeRecursiveProof(NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH),
|
|
251
|
+
VerificationKeyData.makeFakeRollupHonk(),
|
|
252
|
+
),
|
|
253
|
+
);
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
getBlockRootSingleTxRollupProof(
|
|
257
|
+
_input: BlockRootSingleTxRollupPrivateInputs,
|
|
258
|
+
_signal?: AbortSignal,
|
|
259
|
+
_epochNumber?: number,
|
|
260
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
261
|
+
return Promise.resolve(
|
|
262
|
+
makePublicInputsAndRecursiveProof(
|
|
263
|
+
makeBlockRollupPublicInputs(),
|
|
264
|
+
makeRecursiveProof(NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH),
|
|
265
|
+
VerificationKeyData.makeFakeHonk(),
|
|
266
|
+
),
|
|
267
|
+
);
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
getBlockMergeRollupProof(_input: BlockMergeRollupPrivateInputs, _signal?: AbortSignal, _epochNumber?: number) {
|
|
271
|
+
return Promise.resolve(
|
|
272
|
+
makePublicInputsAndRecursiveProof(
|
|
273
|
+
makeBlockRollupPublicInputs(),
|
|
274
|
+
makeRecursiveProof(NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH),
|
|
275
|
+
VerificationKeyData.makeFakeRollupHonk(),
|
|
276
|
+
),
|
|
277
|
+
);
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
getCheckpointRootRollupProof(
|
|
281
|
+
_input: CheckpointRootRollupPrivateInputs,
|
|
188
282
|
_signal?: AbortSignal,
|
|
189
283
|
_epochNumber?: number,
|
|
190
284
|
): Promise<
|
|
191
|
-
PublicInputsAndRecursiveProof<
|
|
285
|
+
PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
192
286
|
> {
|
|
193
287
|
return Promise.resolve(
|
|
194
288
|
makePublicInputsAndRecursiveProof(
|
|
195
|
-
|
|
289
|
+
makeCheckpointRollupPublicInputs(),
|
|
196
290
|
makeRecursiveProof(NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH),
|
|
197
291
|
VerificationKeyData.makeFakeRollupHonk(),
|
|
198
292
|
),
|
|
199
293
|
);
|
|
200
294
|
}
|
|
201
295
|
|
|
202
|
-
|
|
203
|
-
_input:
|
|
296
|
+
getCheckpointRootSingleBlockRollupProof(
|
|
297
|
+
_input: CheckpointRootSingleBlockRollupPrivateInputs,
|
|
204
298
|
_signal?: AbortSignal,
|
|
205
299
|
_epochNumber?: number,
|
|
206
300
|
): Promise<
|
|
207
|
-
PublicInputsAndRecursiveProof<
|
|
301
|
+
PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
208
302
|
> {
|
|
209
303
|
return Promise.resolve(
|
|
210
304
|
makePublicInputsAndRecursiveProof(
|
|
211
|
-
|
|
305
|
+
makeCheckpointRollupPublicInputs(),
|
|
212
306
|
makeRecursiveProof(NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH),
|
|
213
307
|
VerificationKeyData.makeFakeRollupHonk(),
|
|
214
308
|
),
|
|
215
309
|
);
|
|
216
310
|
}
|
|
217
311
|
|
|
218
|
-
|
|
219
|
-
_input:
|
|
312
|
+
getCheckpointMergeRollupProof(
|
|
313
|
+
_input: CheckpointMergeRollupPrivateInputs,
|
|
220
314
|
_signal?: AbortSignal,
|
|
221
315
|
_epochNumber?: number,
|
|
222
316
|
): Promise<
|
|
223
|
-
PublicInputsAndRecursiveProof<
|
|
317
|
+
PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
224
318
|
> {
|
|
225
319
|
return Promise.resolve(
|
|
226
320
|
makePublicInputsAndRecursiveProof(
|
|
227
|
-
|
|
321
|
+
makeCheckpointRollupPublicInputs(),
|
|
228
322
|
makeRecursiveProof(NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH),
|
|
229
|
-
VerificationKeyData.
|
|
323
|
+
VerificationKeyData.makeFakeRollupHonk(),
|
|
324
|
+
),
|
|
325
|
+
);
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
getCheckpointPaddingRollupProof(
|
|
329
|
+
_input: CheckpointPaddingRollupPrivateInputs,
|
|
330
|
+
_signal?: AbortSignal,
|
|
331
|
+
_epochNumber?: number,
|
|
332
|
+
): Promise<
|
|
333
|
+
PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
334
|
+
> {
|
|
335
|
+
return Promise.resolve(
|
|
336
|
+
makePublicInputsAndRecursiveProof(
|
|
337
|
+
makeCheckpointRollupPublicInputs(),
|
|
338
|
+
makeRecursiveProof(NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH),
|
|
339
|
+
VerificationKeyData.makeFakeRollupHonk(),
|
|
230
340
|
),
|
|
231
341
|
);
|
|
232
342
|
}
|
|
233
343
|
|
|
234
344
|
getRootRollupProof(
|
|
235
|
-
_input:
|
|
345
|
+
_input: RootRollupPrivateInputs,
|
|
236
346
|
_signal?: AbortSignal,
|
|
237
347
|
_epochNumber?: number,
|
|
238
348
|
): Promise<PublicInputsAndRecursiveProof<RootRollupPublicInputs>> {
|
|
@@ -244,10 +354,4 @@ export class MockProver implements ServerCircuitProver {
|
|
|
244
354
|
),
|
|
245
355
|
);
|
|
246
356
|
}
|
|
247
|
-
|
|
248
|
-
getTubeProof(): Promise<ProofAndVerificationKey<typeof TUBE_PROOF_LENGTH>> {
|
|
249
|
-
return Promise.resolve(
|
|
250
|
-
makeProofAndVerificationKey(makeRecursiveProof(TUBE_PROOF_LENGTH), VerificationKeyData.makeFakeRollupHonk()),
|
|
251
|
-
);
|
|
252
|
-
}
|
|
253
357
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-proof-inputs.d.ts","sourceRoot":"","sources":["../../src/bin/get-proof-inputs.ts"],"names":[],"mappings":""}
|