@aztec/pxe 0.77.0-testnet-ignition.17 → 0.77.0-testnet-ignition.23
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/kernel_prover/kernel_prover.d.ts +1 -3
- package/dest/kernel_prover/kernel_prover.d.ts.map +1 -1
- package/dest/kernel_prover/kernel_prover.js +13 -17
- package/dest/pxe_service/pxe_service.d.ts.map +1 -1
- package/dest/pxe_service/pxe_service.js +5 -8
- package/package.json +15 -15
- package/src/kernel_prover/kernel_prover.ts +22 -28
- package/src/pxe_service/pxe_service.ts +2 -5
|
@@ -6,7 +6,6 @@ export type ProvingConfig = {
|
|
|
6
6
|
simulate: boolean;
|
|
7
7
|
skipFeeEnforcement: boolean;
|
|
8
8
|
profile: boolean;
|
|
9
|
-
dryRun: boolean;
|
|
10
9
|
};
|
|
11
10
|
/**
|
|
12
11
|
* The KernelProver class is responsible for generating kernel proofs.
|
|
@@ -29,11 +28,10 @@ export declare class KernelProver {
|
|
|
29
28
|
* @param txRequest - The authenticated transaction request object.
|
|
30
29
|
* @param executionResult - The execution result object containing nested executions and preimages.
|
|
31
30
|
* @param profile - Set true to profile the gate count for each circuit
|
|
32
|
-
* @param dryRun - Set true to skip the IVC proof generation (only simulation is run). Useful for profiling gate count without proof gen.
|
|
33
31
|
* @returns A Promise that resolves to a KernelProverOutput object containing proof, public inputs, and output notes.
|
|
34
32
|
* TODO(#7368) this should be refactored to not recreate the ACIR bytecode now that it operates on a program stack
|
|
35
33
|
*/
|
|
36
|
-
prove(txRequest: TxRequest, executionResult: PrivateExecutionResult, { simulate, skipFeeEnforcement, profile
|
|
34
|
+
prove(txRequest: TxRequest, executionResult: PrivateExecutionResult, { simulate, skipFeeEnforcement, profile }?: ProvingConfig): Promise<PrivateKernelSimulateOutput<PrivateKernelTailCircuitPublicInputs>>;
|
|
37
35
|
private createPrivateCallData;
|
|
38
36
|
private isPrivateOnly;
|
|
39
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kernel_prover.d.ts","sourceRoot":"","sources":["../../src/kernel_prover/kernel_prover.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAML,KAAK,2BAA2B,EAEhC,KAAK,oCAAoC,EAG1C,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAEL,KAAK,sBAAsB,EAC3B,SAAS,EAMV,MAAM,kBAAkB,CAAC;AAO1B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AA8ClE,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,OAAO,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"kernel_prover.d.ts","sourceRoot":"","sources":["../../src/kernel_prover/kernel_prover.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAML,KAAK,2BAA2B,EAEhC,KAAK,oCAAoC,EAG1C,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAEL,KAAK,sBAAsB,EAC3B,SAAS,EAMV,MAAM,kBAAkB,CAAC;AAO1B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AA8ClE,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF;;;;;GAKG;AACH,qBAAa,YAAY;IAIrB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,UAAU;IALpB,OAAO,CAAC,GAAG,CAAqC;gBAGtC,MAAM,EAAE,iBAAiB,EACzB,YAAY,EAAE,mBAAmB,EACjC,UAAU,UAAQ;IAG5B;;;;;;;;;;;OAWG;IACG,KAAK,CACT,SAAS,EAAE,SAAS,EACpB,eAAe,EAAE,sBAAsB,EACvC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,OAAO,EAAE,GAAE,aAI1C,GACA,OAAO,CAAC,2BAA2B,CAAC,oCAAoC,CAAC,CAAC;YAkN/D,qBAAqB;IAiDnC,OAAO,CAAC,aAAa;CAYtB"}
|
|
@@ -64,19 +64,15 @@ const NULL_PROVE_OUTPUT = {
|
|
|
64
64
|
* @param txRequest - The authenticated transaction request object.
|
|
65
65
|
* @param executionResult - The execution result object containing nested executions and preimages.
|
|
66
66
|
* @param profile - Set true to profile the gate count for each circuit
|
|
67
|
-
* @param dryRun - Set true to skip the IVC proof generation (only simulation is run). Useful for profiling gate count without proof gen.
|
|
68
67
|
* @returns A Promise that resolves to a KernelProverOutput object containing proof, public inputs, and output notes.
|
|
69
68
|
* TODO(#7368) this should be refactored to not recreate the ACIR bytecode now that it operates on a program stack
|
|
70
|
-
*/ async prove(txRequest, executionResult, { simulate, skipFeeEnforcement, profile
|
|
69
|
+
*/ async prove(txRequest, executionResult, { simulate, skipFeeEnforcement, profile } = {
|
|
71
70
|
simulate: false,
|
|
72
71
|
skipFeeEnforcement: false,
|
|
73
|
-
profile: false
|
|
74
|
-
dryRun: false
|
|
72
|
+
profile: false
|
|
75
73
|
}) {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
}
|
|
79
|
-
simulate = simulate || this.fakeProofs;
|
|
74
|
+
const skipProofGeneration = this.fakeProofs || simulate;
|
|
75
|
+
const generateWitnesses = !skipProofGeneration || profile;
|
|
80
76
|
const timer = new Timer();
|
|
81
77
|
const isPrivateOnlyTx = this.isPrivateOnly(executionResult);
|
|
82
78
|
const executionStack = [
|
|
@@ -91,7 +87,7 @@ const NULL_PROVE_OUTPUT = {
|
|
|
91
87
|
circuitName,
|
|
92
88
|
gateCount
|
|
93
89
|
});
|
|
94
|
-
this.log.
|
|
90
|
+
this.log.debug(`Gate count for ${circuitName} - ${gateCount}`);
|
|
95
91
|
};
|
|
96
92
|
const noteHashLeafIndexMap = collectNoteHashLeafIndexMap(executionResult);
|
|
97
93
|
const noteHashNullifierCounterMap = collectNoteHashNullifierCounterMap(executionResult);
|
|
@@ -106,7 +102,7 @@ const NULL_PROVE_OUTPUT = {
|
|
|
106
102
|
let resetBuilder = new PrivateKernelResetPrivateInputsBuilder(output, executionStack, noteHashNullifierCounterMap, validationRequestsSplitCounter);
|
|
107
103
|
while(resetBuilder.needsReset()){
|
|
108
104
|
const privateInputs = await resetBuilder.build(this.oracle, noteHashLeafIndexMap);
|
|
109
|
-
output =
|
|
105
|
+
output = generateWitnesses ? await this.proofCreator.generateResetOutput(privateInputs) : await this.proofCreator.simulateReset(privateInputs);
|
|
110
106
|
// TODO(#7368) consider refactoring this redundant bytecode pushing
|
|
111
107
|
acirs.push(output.bytecode);
|
|
112
108
|
witnessStack.push(output.outputWitness);
|
|
@@ -133,7 +129,7 @@ const NULL_PROVE_OUTPUT = {
|
|
|
133
129
|
const proofInput = new PrivateKernelInitCircuitPrivateInputs(txRequest, getVKTreeRoot(), protocolContractTreeRoot, privateCallData, isPrivateOnlyTx, executionResult.firstNullifier);
|
|
134
130
|
this.log.debug(`Calling private kernel init with isPrivateOnly ${isPrivateOnlyTx} and firstNullifierHint ${proofInput.firstNullifierHint}`);
|
|
135
131
|
pushTestData('private-kernel-inputs-init', proofInput);
|
|
136
|
-
output =
|
|
132
|
+
output = generateWitnesses ? await this.proofCreator.generateInitOutput(proofInput) : await this.proofCreator.simulateInit(proofInput);
|
|
137
133
|
acirs.push(output.bytecode);
|
|
138
134
|
witnessStack.push(output.outputWitness);
|
|
139
135
|
if (profile) {
|
|
@@ -144,7 +140,7 @@ const NULL_PROVE_OUTPUT = {
|
|
|
144
140
|
const previousKernelData = new PrivateKernelData(output.publicInputs, output.verificationKey, Number(previousVkMembershipWitness.leafIndex), assertLength(previousVkMembershipWitness.siblingPath, VK_TREE_HEIGHT));
|
|
145
141
|
const proofInput = new PrivateKernelInnerCircuitPrivateInputs(previousKernelData, privateCallData);
|
|
146
142
|
pushTestData('private-kernel-inputs-inner', proofInput);
|
|
147
|
-
output =
|
|
143
|
+
output = generateWitnesses ? await this.proofCreator.generateInnerOutput(proofInput) : await this.proofCreator.simulateInner(proofInput);
|
|
148
144
|
acirs.push(output.bytecode);
|
|
149
145
|
witnessStack.push(output.outputWitness);
|
|
150
146
|
if (profile) {
|
|
@@ -157,7 +153,7 @@ const NULL_PROVE_OUTPUT = {
|
|
|
157
153
|
let resetBuilder = new PrivateKernelResetPrivateInputsBuilder(output, [], noteHashNullifierCounterMap, validationRequestsSplitCounter);
|
|
158
154
|
while(resetBuilder.needsReset()){
|
|
159
155
|
const privateInputs = await resetBuilder.build(this.oracle, noteHashLeafIndexMap);
|
|
160
|
-
output =
|
|
156
|
+
output = generateWitnesses ? await this.proofCreator.generateResetOutput(privateInputs) : await this.proofCreator.simulateReset(privateInputs);
|
|
161
157
|
acirs.push(output.bytecode);
|
|
162
158
|
witnessStack.push(output.outputWitness);
|
|
163
159
|
if (profile) {
|
|
@@ -166,7 +162,7 @@ const NULL_PROVE_OUTPUT = {
|
|
|
166
162
|
resetBuilder = new PrivateKernelResetPrivateInputsBuilder(output, [], noteHashNullifierCounterMap, validationRequestsSplitCounter);
|
|
167
163
|
}
|
|
168
164
|
if (output.publicInputs.feePayer.isZero() && skipFeeEnforcement) {
|
|
169
|
-
if (!
|
|
165
|
+
if (!skipProofGeneration) {
|
|
170
166
|
throw new Error('Fee payment must be enforced when creating real proof.');
|
|
171
167
|
}
|
|
172
168
|
output.publicInputs.feePayer = new AztecAddress(Fr.MAX_FIELD_VALUE);
|
|
@@ -177,7 +173,7 @@ const NULL_PROVE_OUTPUT = {
|
|
|
177
173
|
this.log.debug(`Calling private kernel tail with hwm ${previousKernelData.publicInputs.minRevertibleSideEffectCounter}`);
|
|
178
174
|
const privateInputs = new PrivateKernelTailCircuitPrivateInputs(previousKernelData);
|
|
179
175
|
pushTestData('private-kernel-inputs-ordering', privateInputs);
|
|
180
|
-
const tailOutput =
|
|
176
|
+
const tailOutput = generateWitnesses ? await this.proofCreator.generateTailOutput(privateInputs) : await this.proofCreator.simulateTail(privateInputs);
|
|
181
177
|
if (tailOutput.publicInputs.forPublic) {
|
|
182
178
|
const privateLogs = privateInputs.previousKernel.publicInputs.end.privateLogs;
|
|
183
179
|
const nonRevertiblePrivateLogs = tailOutput.publicInputs.forPublic.nonRevertibleAccumulatedData.privateLogs;
|
|
@@ -192,11 +188,11 @@ const NULL_PROVE_OUTPUT = {
|
|
|
192
188
|
gateCounts
|
|
193
189
|
};
|
|
194
190
|
}
|
|
195
|
-
if (
|
|
191
|
+
if (generateWitnesses) {
|
|
196
192
|
this.log.info(`Private kernel witness generation took ${timer.ms()}ms`);
|
|
197
193
|
}
|
|
198
194
|
// TODO(#7368) how do we 'bincode' encode these inputs?
|
|
199
|
-
if (!
|
|
195
|
+
if (!skipProofGeneration) {
|
|
200
196
|
const ivcProof = await this.proofCreator.createClientIvcProof(acirs, witnessStack);
|
|
201
197
|
tailOutput.clientIvcProof = ivcProof;
|
|
202
198
|
} else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pxe_service.d.ts","sourceRoot":"","sources":["../../src/pxe_service/pxe_service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,EAAE,EAAE,KAAK,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAElE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAEL,KAAK,yBAAyB,EAE/B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAsB,KAAK,kBAAkB,EAAsB,MAAM,yBAAyB,CAAC;AAC1G,OAAO,EACL,KAAK,UAAU,EACf,KAAK,gBAAgB,EAOtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACnB,2BAA2B,EAC3B,QAAQ,EACR,cAAc,EACf,MAAM,wBAAwB,CAAC;AAIhC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,KAAK,EACV,SAAS,EACT,uBAAuB,EACvB,4BAA4B,EAC5B,qBAAqB,EACrB,GAAG,EACH,OAAO,EACP,mBAAmB,EACpB,MAAM,iCAAiC,CAAC;AAGzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,KAAK,WAAW,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EACL,sBAAsB,EAGtB,KAAK,EAAE,EACP,KAAK,QAAQ,EACb,KAAK,kBAAkB,EACvB,KAAK,MAAM,EACX,eAAe,EACf,KAAK,SAAS,EACd,kBAAkB,EACnB,MAAM,kBAAkB,CAAC;AAI1B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAG3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAOxD;;GAEG;AACH,qBAAa,UAAW,YAAW,GAAG;;IASlC,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,EAAE;IAEV,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,yBAAyB;IAdnC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,aAAa,CAAU;gBAGrB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,SAAS,EACf,EAAE,EAAE,WAAW,EACvB,SAAS,EAAE,WAAW,EACd,YAAY,EAAE,mBAAmB,EACjC,kBAAkB,EAAE,kBAAkB,EACtC,yBAAyB,EAAE,yBAAyB,EAC5D,MAAM,EAAE,gBAAgB,EACxB,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM;IAalC;;;;OAIG;IACU,IAAI;IAMjB,qBAAqB,CAAC,aAAa,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAI1D,mDAAmD;IAC5C,cAAc;IAId,cAAc,CAAC,OAAO,EAAE,WAAW;IAInC,cAAc,CAAC,WAAW,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC;IAI1D,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;IAInE,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC;IAItF,wBAAwB,CACnC,EAAE,EAAE,EAAE,EACN,eAAe,GAAE,OAAe,GAC/B,OAAO,CAAC;QACT,aAAa,EAAE,mBAAmB,GAAG,SAAS,CAAC;QAC/C,iCAAiC,EAAE,OAAO,CAAC;QAC3C,QAAQ,EAAE,gBAAgB,GAAG,SAAS,CAAC;KACxC,CAAC;IAUW,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC;QAC/D,gBAAgB,EAAE,2BAA2B,GAAG,SAAS,CAAC;QAC1D,qBAAqB,EAAE,OAAO,CAAC;QAC/B,0BAA0B,EAAE,OAAO,CAAC;KACrC,CAAC;IAQW,eAAe,CAAC,SAAS,EAAE,EAAE,EAAE,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAexF,cAAc,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAkBlE,UAAU,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAM/B,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAYlD,qBAAqB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAUnD,qBAAqB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAMhE,gBAAgB,CAAC,QAAQ,EAAE;QAAE,QAAQ,EAAE,2BAA2B,CAAC;QAAC,QAAQ,CAAC,EAAE,gBAAgB,CAAA;KAAE;IA2CjG,cAAc,CAAC,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkC9F,YAAY,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAIjC,kBAAkB,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE;IAOnD,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IA6BpD,0BAA0B,CACrC,eAAe,EAAE,YAAY,EAC7B,WAAW,EAAE,EAAE,EACf,MAAM,EAAE,EAAE,GACT,OAAO,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAC;IAI3D,0BAA0B,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,GAAG,OAAO,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;IAIpG,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAQ3D,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IAItC,OAAO,CAClB,SAAS,EAAE,kBAAkB,EAC7B,sBAAsB,EAAE,sBAAsB,GAC7C,OAAO,CAAC,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"pxe_service.d.ts","sourceRoot":"","sources":["../../src/pxe_service/pxe_service.ts"],"names":[],"mappings":"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"}
|
|
@@ -247,8 +247,7 @@ import { enrichPublicSimulationError, enrichSimulationError } from './error_enri
|
|
|
247
247
|
const { publicInputs, clientIvcProof } = await this.#prove(txRequest, this.proofCreator, privateExecutionResult, {
|
|
248
248
|
simulate: false,
|
|
249
249
|
skipFeeEnforcement: false,
|
|
250
|
-
profile: false
|
|
251
|
-
dryRun: false
|
|
250
|
+
profile: false
|
|
252
251
|
});
|
|
253
252
|
return new TxProvingResult(privateExecutionResult, publicInputs, clientIvcProof);
|
|
254
253
|
} catch (err) {
|
|
@@ -274,8 +273,7 @@ import { enrichPublicSimulationError, enrichSimulationError } from './error_enri
|
|
|
274
273
|
const { publicInputs, profileResult } = await this.#prove(txRequest, this.proofCreator, privateExecutionResult, {
|
|
275
274
|
simulate: !profile,
|
|
276
275
|
skipFeeEnforcement,
|
|
277
|
-
profile
|
|
278
|
-
dryRun: true
|
|
276
|
+
profile
|
|
279
277
|
});
|
|
280
278
|
const privateSimulationResult = new PrivateSimulationResult(privateExecutionResult, publicInputs);
|
|
281
279
|
const simulatedTx = privateSimulationResult.toSimulatedTx();
|
|
@@ -504,17 +502,16 @@ import { enrichPublicSimulationError, enrichSimulationError } from './error_enri
|
|
|
504
502
|
* @param proofCreator - The proof creator to use for proving the execution.
|
|
505
503
|
* @param privateExecutionResult - The result of the private execution
|
|
506
504
|
* @returns An object that contains the output of the kernel execution, including the ClientIvcProof if proving is enabled.
|
|
507
|
-
*/ async #prove(txExecutionRequest, proofCreator, privateExecutionResult, { simulate, skipFeeEnforcement, profile
|
|
505
|
+
*/ async #prove(txExecutionRequest, proofCreator, privateExecutionResult, { simulate, skipFeeEnforcement, profile }) {
|
|
508
506
|
// use the block the tx was simulated against
|
|
509
507
|
const block = privateExecutionResult.entrypoint.publicInputs.historicalHeader.globalVariables.blockNumber.toNumber();
|
|
510
508
|
const kernelOracle = new KernelOracle(this.contractDataOracle, this.keyStore, this.node, block);
|
|
511
509
|
const kernelProver = new KernelProver(kernelOracle, proofCreator, !this.proverEnabled);
|
|
512
|
-
this.log.debug(`Executing kernel prover (simulate: ${simulate}, profile: ${profile}
|
|
510
|
+
this.log.debug(`Executing kernel prover (simulate: ${simulate}, profile: ${profile})...`);
|
|
513
511
|
return await kernelProver.prove(txExecutionRequest.toTxRequest(), privateExecutionResult, {
|
|
514
512
|
simulate,
|
|
515
513
|
skipFeeEnforcement,
|
|
516
|
-
profile
|
|
517
|
-
dryRun
|
|
514
|
+
profile
|
|
518
515
|
});
|
|
519
516
|
}
|
|
520
517
|
async #isContractClassPubliclyRegistered(id) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/pxe",
|
|
3
|
-
"version": "0.77.0-testnet-ignition.
|
|
3
|
+
"version": "0.77.0-testnet-ignition.23",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -66,18 +66,18 @@
|
|
|
66
66
|
]
|
|
67
67
|
},
|
|
68
68
|
"dependencies": {
|
|
69
|
-
"@aztec/bb-prover": "0.77.0-testnet-ignition.
|
|
70
|
-
"@aztec/bb.js": "0.77.0-testnet-ignition.
|
|
71
|
-
"@aztec/builder": "0.77.0-testnet-ignition.
|
|
72
|
-
"@aztec/constants": "0.77.0-testnet-ignition.
|
|
73
|
-
"@aztec/ethereum": "0.77.0-testnet-ignition.
|
|
74
|
-
"@aztec/foundation": "0.77.0-testnet-ignition.
|
|
75
|
-
"@aztec/key-store": "0.77.0-testnet-ignition.
|
|
76
|
-
"@aztec/kv-store": "0.77.0-testnet-ignition.
|
|
77
|
-
"@aztec/noir-protocol-circuits-types": "0.77.0-testnet-ignition.
|
|
78
|
-
"@aztec/protocol-contracts": "0.77.0-testnet-ignition.
|
|
79
|
-
"@aztec/simulator": "0.77.0-testnet-ignition.
|
|
80
|
-
"@aztec/stdlib": "0.77.0-testnet-ignition.
|
|
69
|
+
"@aztec/bb-prover": "0.77.0-testnet-ignition.23",
|
|
70
|
+
"@aztec/bb.js": "0.77.0-testnet-ignition.23",
|
|
71
|
+
"@aztec/builder": "0.77.0-testnet-ignition.23",
|
|
72
|
+
"@aztec/constants": "0.77.0-testnet-ignition.23",
|
|
73
|
+
"@aztec/ethereum": "0.77.0-testnet-ignition.23",
|
|
74
|
+
"@aztec/foundation": "0.77.0-testnet-ignition.23",
|
|
75
|
+
"@aztec/key-store": "0.77.0-testnet-ignition.23",
|
|
76
|
+
"@aztec/kv-store": "0.77.0-testnet-ignition.23",
|
|
77
|
+
"@aztec/noir-protocol-circuits-types": "0.77.0-testnet-ignition.23",
|
|
78
|
+
"@aztec/protocol-contracts": "0.77.0-testnet-ignition.23",
|
|
79
|
+
"@aztec/simulator": "0.77.0-testnet-ignition.23",
|
|
80
|
+
"@aztec/stdlib": "0.77.0-testnet-ignition.23",
|
|
81
81
|
"@msgpack/msgpack": "^3.0.0-beta2",
|
|
82
82
|
"koa": "^2.14.2",
|
|
83
83
|
"koa-router": "^12.0.0",
|
|
@@ -85,10 +85,10 @@
|
|
|
85
85
|
"sha3": "^2.1.4",
|
|
86
86
|
"tslib": "^2.4.0",
|
|
87
87
|
"viem": "2.22.8",
|
|
88
|
-
"@aztec/noir-types": "0.77.0-testnet-ignition.
|
|
88
|
+
"@aztec/noir-types": "0.77.0-testnet-ignition.23"
|
|
89
89
|
},
|
|
90
90
|
"devDependencies": {
|
|
91
|
-
"@aztec/noir-contracts.js": "
|
|
91
|
+
"@aztec/noir-contracts.js": "0.77.0-testnet-ignition.23",
|
|
92
92
|
"@jest/globals": "^29.5.0",
|
|
93
93
|
"@types/jest": "^29.5.0",
|
|
94
94
|
"@types/lodash.omit": "^4.5.7",
|
|
@@ -91,7 +91,6 @@ export type ProvingConfig = {
|
|
|
91
91
|
simulate: boolean;
|
|
92
92
|
skipFeeEnforcement: boolean;
|
|
93
93
|
profile: boolean;
|
|
94
|
-
dryRun: boolean;
|
|
95
94
|
};
|
|
96
95
|
|
|
97
96
|
/**
|
|
@@ -118,25 +117,20 @@ export class KernelProver {
|
|
|
118
117
|
* @param txRequest - The authenticated transaction request object.
|
|
119
118
|
* @param executionResult - The execution result object containing nested executions and preimages.
|
|
120
119
|
* @param profile - Set true to profile the gate count for each circuit
|
|
121
|
-
* @param dryRun - Set true to skip the IVC proof generation (only simulation is run). Useful for profiling gate count without proof gen.
|
|
122
120
|
* @returns A Promise that resolves to a KernelProverOutput object containing proof, public inputs, and output notes.
|
|
123
121
|
* TODO(#7368) this should be refactored to not recreate the ACIR bytecode now that it operates on a program stack
|
|
124
122
|
*/
|
|
125
123
|
async prove(
|
|
126
124
|
txRequest: TxRequest,
|
|
127
125
|
executionResult: PrivateExecutionResult,
|
|
128
|
-
{ simulate, skipFeeEnforcement, profile
|
|
126
|
+
{ simulate, skipFeeEnforcement, profile }: ProvingConfig = {
|
|
129
127
|
simulate: false,
|
|
130
128
|
skipFeeEnforcement: false,
|
|
131
129
|
profile: false,
|
|
132
|
-
dryRun: false,
|
|
133
130
|
},
|
|
134
131
|
): Promise<PrivateKernelSimulateOutput<PrivateKernelTailCircuitPublicInputs>> {
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
simulate = simulate || this.fakeProofs;
|
|
132
|
+
const skipProofGeneration = this.fakeProofs || simulate;
|
|
133
|
+
const generateWitnesses = !skipProofGeneration || profile;
|
|
140
134
|
|
|
141
135
|
const timer = new Timer();
|
|
142
136
|
|
|
@@ -152,7 +146,7 @@ export class KernelProver {
|
|
|
152
146
|
const gateCount = (await this.proofCreator.computeGateCountForCircuit(bytecode, circuitName)) as number;
|
|
153
147
|
gateCounts.push({ circuitName, gateCount });
|
|
154
148
|
|
|
155
|
-
this.log.
|
|
149
|
+
this.log.debug(`Gate count for ${circuitName} - ${gateCount}`);
|
|
156
150
|
};
|
|
157
151
|
|
|
158
152
|
const noteHashLeafIndexMap = collectNoteHashLeafIndexMap(executionResult);
|
|
@@ -175,9 +169,9 @@ export class KernelProver {
|
|
|
175
169
|
);
|
|
176
170
|
while (resetBuilder.needsReset()) {
|
|
177
171
|
const privateInputs = await resetBuilder.build(this.oracle, noteHashLeafIndexMap);
|
|
178
|
-
output =
|
|
179
|
-
? await this.proofCreator.
|
|
180
|
-
: await this.proofCreator.
|
|
172
|
+
output = generateWitnesses
|
|
173
|
+
? await this.proofCreator.generateResetOutput(privateInputs)
|
|
174
|
+
: await this.proofCreator.simulateReset(privateInputs);
|
|
181
175
|
// TODO(#7368) consider refactoring this redundant bytecode pushing
|
|
182
176
|
acirs.push(output.bytecode);
|
|
183
177
|
witnessStack.push(output.outputWitness);
|
|
@@ -228,9 +222,9 @@ export class KernelProver {
|
|
|
228
222
|
|
|
229
223
|
pushTestData('private-kernel-inputs-init', proofInput);
|
|
230
224
|
|
|
231
|
-
output =
|
|
232
|
-
? await this.proofCreator.
|
|
233
|
-
: await this.proofCreator.
|
|
225
|
+
output = generateWitnesses
|
|
226
|
+
? await this.proofCreator.generateInitOutput(proofInput)
|
|
227
|
+
: await this.proofCreator.simulateInit(proofInput);
|
|
234
228
|
|
|
235
229
|
acirs.push(output.bytecode);
|
|
236
230
|
witnessStack.push(output.outputWitness);
|
|
@@ -249,9 +243,9 @@ export class KernelProver {
|
|
|
249
243
|
|
|
250
244
|
pushTestData('private-kernel-inputs-inner', proofInput);
|
|
251
245
|
|
|
252
|
-
output =
|
|
253
|
-
? await this.proofCreator.
|
|
254
|
-
: await this.proofCreator.
|
|
246
|
+
output = generateWitnesses
|
|
247
|
+
? await this.proofCreator.generateInnerOutput(proofInput)
|
|
248
|
+
: await this.proofCreator.simulateInner(proofInput);
|
|
255
249
|
|
|
256
250
|
acirs.push(output.bytecode);
|
|
257
251
|
witnessStack.push(output.outputWitness);
|
|
@@ -271,9 +265,9 @@ export class KernelProver {
|
|
|
271
265
|
);
|
|
272
266
|
while (resetBuilder.needsReset()) {
|
|
273
267
|
const privateInputs = await resetBuilder.build(this.oracle, noteHashLeafIndexMap);
|
|
274
|
-
output =
|
|
275
|
-
? await this.proofCreator.
|
|
276
|
-
: await this.proofCreator.
|
|
268
|
+
output = generateWitnesses
|
|
269
|
+
? await this.proofCreator.generateResetOutput(privateInputs)
|
|
270
|
+
: await this.proofCreator.simulateReset(privateInputs);
|
|
277
271
|
|
|
278
272
|
acirs.push(output.bytecode);
|
|
279
273
|
witnessStack.push(output.outputWitness);
|
|
@@ -290,7 +284,7 @@ export class KernelProver {
|
|
|
290
284
|
}
|
|
291
285
|
|
|
292
286
|
if (output.publicInputs.feePayer.isZero() && skipFeeEnforcement) {
|
|
293
|
-
if (!
|
|
287
|
+
if (!skipProofGeneration) {
|
|
294
288
|
throw new Error('Fee payment must be enforced when creating real proof.');
|
|
295
289
|
}
|
|
296
290
|
output.publicInputs.feePayer = new AztecAddress(Fr.MAX_FIELD_VALUE);
|
|
@@ -312,9 +306,9 @@ export class KernelProver {
|
|
|
312
306
|
|
|
313
307
|
pushTestData('private-kernel-inputs-ordering', privateInputs);
|
|
314
308
|
|
|
315
|
-
const tailOutput =
|
|
316
|
-
? await this.proofCreator.
|
|
317
|
-
: await this.proofCreator.
|
|
309
|
+
const tailOutput = generateWitnesses
|
|
310
|
+
? await this.proofCreator.generateTailOutput(privateInputs)
|
|
311
|
+
: await this.proofCreator.simulateTail(privateInputs);
|
|
318
312
|
if (tailOutput.publicInputs.forPublic) {
|
|
319
313
|
const privateLogs = privateInputs.previousKernel.publicInputs.end.privateLogs;
|
|
320
314
|
const nonRevertiblePrivateLogs = tailOutput.publicInputs.forPublic.nonRevertibleAccumulatedData.privateLogs;
|
|
@@ -329,12 +323,12 @@ export class KernelProver {
|
|
|
329
323
|
tailOutput.profileResult = { gateCounts };
|
|
330
324
|
}
|
|
331
325
|
|
|
332
|
-
if (
|
|
326
|
+
if (generateWitnesses) {
|
|
333
327
|
this.log.info(`Private kernel witness generation took ${timer.ms()}ms`);
|
|
334
328
|
}
|
|
335
329
|
|
|
336
330
|
// TODO(#7368) how do we 'bincode' encode these inputs?
|
|
337
|
-
if (!
|
|
331
|
+
if (!skipProofGeneration) {
|
|
338
332
|
const ivcProof = await this.proofCreator.createClientIvcProof(acirs, witnessStack);
|
|
339
333
|
tailOutput.clientIvcProof = ivcProof;
|
|
340
334
|
} else {
|
|
@@ -390,7 +390,6 @@ export class PXEService implements PXE {
|
|
|
390
390
|
simulate: false,
|
|
391
391
|
skipFeeEnforcement: false,
|
|
392
392
|
profile: false,
|
|
393
|
-
dryRun: false,
|
|
394
393
|
});
|
|
395
394
|
return new TxProvingResult(privateExecutionResult, publicInputs, clientIvcProof!);
|
|
396
395
|
} catch (err: any) {
|
|
@@ -430,7 +429,6 @@ export class PXEService implements PXE {
|
|
|
430
429
|
simulate: !profile,
|
|
431
430
|
skipFeeEnforcement,
|
|
432
431
|
profile,
|
|
433
|
-
dryRun: true,
|
|
434
432
|
});
|
|
435
433
|
|
|
436
434
|
const privateSimulationResult = new PrivateSimulationResult(privateExecutionResult, publicInputs);
|
|
@@ -727,19 +725,18 @@ export class PXEService implements PXE {
|
|
|
727
725
|
txExecutionRequest: TxExecutionRequest,
|
|
728
726
|
proofCreator: PrivateKernelProver,
|
|
729
727
|
privateExecutionResult: PrivateExecutionResult,
|
|
730
|
-
{ simulate, skipFeeEnforcement, profile
|
|
728
|
+
{ simulate, skipFeeEnforcement, profile }: ProvingConfig,
|
|
731
729
|
): Promise<PrivateKernelSimulateOutput<PrivateKernelTailCircuitPublicInputs>> {
|
|
732
730
|
// use the block the tx was simulated against
|
|
733
731
|
const block =
|
|
734
732
|
privateExecutionResult.entrypoint.publicInputs.historicalHeader.globalVariables.blockNumber.toNumber();
|
|
735
733
|
const kernelOracle = new KernelOracle(this.contractDataOracle, this.keyStore, this.node, block);
|
|
736
734
|
const kernelProver = new KernelProver(kernelOracle, proofCreator, !this.proverEnabled);
|
|
737
|
-
this.log.debug(`Executing kernel prover (simulate: ${simulate}, profile: ${profile}
|
|
735
|
+
this.log.debug(`Executing kernel prover (simulate: ${simulate}, profile: ${profile})...`);
|
|
738
736
|
return await kernelProver.prove(txExecutionRequest.toTxRequest(), privateExecutionResult, {
|
|
739
737
|
simulate,
|
|
740
738
|
skipFeeEnforcement,
|
|
741
739
|
profile,
|
|
742
|
-
dryRun,
|
|
743
740
|
});
|
|
744
741
|
}
|
|
745
742
|
|