@aztec/pxe 0.36.0 → 0.38.0
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/config/index.d.ts +17 -2
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +1 -1
- package/dest/index.d.ts +1 -0
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +3 -1
- package/dest/kernel_oracle/index.d.ts +1 -1
- package/dest/kernel_oracle/index.d.ts.map +1 -1
- package/dest/kernel_oracle/index.js +2 -2
- package/dest/kernel_prover/bb_prover/bb_native_proof_creator.d.ts +95 -0
- package/dest/kernel_prover/bb_prover/bb_native_proof_creator.d.ts.map +1 -0
- package/dest/kernel_prover/bb_prover/bb_native_proof_creator.js +437 -0
- package/dest/kernel_prover/{proof_creator.d.ts → interface/proof_creator.d.ts} +16 -35
- package/dest/kernel_prover/interface/proof_creator.d.ts.map +1 -0
- package/dest/kernel_prover/interface/proof_creator.js +2 -0
- package/dest/kernel_prover/kernel_prover.d.ts +4 -4
- package/dest/kernel_prover/kernel_prover.d.ts.map +1 -1
- package/dest/kernel_prover/kernel_prover.js +10 -37
- package/dest/kernel_prover/private_inputs_builders/build_private_kernel_tail_hints.d.ts +1 -1
- package/dest/kernel_prover/private_inputs_builders/build_private_kernel_tail_hints.d.ts.map +1 -1
- package/dest/kernel_prover/private_inputs_builders/build_private_kernel_tail_hints.js +4 -33
- package/dest/kernel_prover/proving_data_oracle.d.ts +1 -1
- package/dest/kernel_prover/proving_data_oracle.d.ts.map +1 -1
- package/dest/kernel_prover/test/test_circuit_prover.d.ts +16 -0
- package/dest/kernel_prover/test/test_circuit_prover.d.ts.map +1 -0
- package/dest/kernel_prover/test/test_circuit_prover.js +67 -0
- package/dest/pxe_service/create_pxe_service.d.ts +3 -1
- package/dest/pxe_service/create_pxe_service.d.ts.map +1 -1
- package/dest/pxe_service/create_pxe_service.js +16 -3
- package/dest/pxe_service/pxe_service.d.ts +5 -4
- package/dest/pxe_service/pxe_service.d.ts.map +1 -1
- package/dest/pxe_service/pxe_service.js +16 -57
- package/dest/simulator_oracle/index.d.ts +5 -4
- package/dest/simulator_oracle/index.d.ts.map +1 -1
- package/dest/simulator_oracle/index.js +12 -3
- package/package.json +14 -12
- package/src/config/index.ts +19 -2
- package/src/index.ts +3 -0
- package/src/kernel_oracle/index.ts +1 -1
- package/src/kernel_prover/bb_prover/bb_native_proof_creator.ts +713 -0
- package/src/kernel_prover/interface/proof_creator.ts +79 -0
- package/src/kernel_prover/kernel_prover.ts +19 -48
- package/src/kernel_prover/private_inputs_builders/build_private_kernel_tail_hints.ts +5 -40
- package/src/kernel_prover/proving_data_oracle.ts +1 -1
- package/src/kernel_prover/test/test_circuit_prover.ts +96 -0
- package/src/pxe_service/create_pxe_service.ts +17 -1
- package/src/pxe_service/pxe_service.ts +31 -68
- package/src/simulator_oracle/index.ts +16 -7
- package/dest/kernel_prover/proof_creator.d.ts.map +0 -1
- package/dest/kernel_prover/proof_creator.js +0 -68
- package/src/kernel_prover/proof_creator.ts +0 -157
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
import { CallRequest, Fr,
|
|
2
|
-
import { makeTuple } from '@aztec/foundation/array';
|
|
1
|
+
import { CallRequest, Fr, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, PrivateCallData, PrivateKernelCircuitPublicInputs, PrivateKernelData, PrivateKernelInitCircuitPrivateInputs, PrivateKernelInnerCircuitPrivateInputs, PrivateKernelTailCircuitPrivateInputs, VK_TREE_HEIGHT, VerificationKey, makeEmptyProof, } from '@aztec/circuits.js';
|
|
3
2
|
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
4
3
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
5
4
|
import { assertLength } from '@aztec/foundation/serialize';
|
|
6
5
|
import { pushTestData } from '@aztec/foundation/testing';
|
|
7
|
-
import { collectNullifiedNoteHashCounters } from '@aztec/simulator';
|
|
6
|
+
import { collectNoteHashLeafIndexMap, collectNullifiedNoteHashCounters } from '@aztec/simulator';
|
|
8
7
|
import { buildPrivateKernelInnerHints, buildPrivateKernelTailHints, buildPrivateKernelTailOutputs, } from './private_inputs_builders/index.js';
|
|
9
|
-
import { KernelProofCreator } from './proof_creator.js';
|
|
10
8
|
/**
|
|
11
9
|
* The KernelProver class is responsible for generating kernel proofs.
|
|
12
10
|
* It takes a transaction request, its signature, and the simulation result as inputs, and outputs a proof
|
|
@@ -14,7 +12,7 @@ import { KernelProofCreator } from './proof_creator.js';
|
|
|
14
12
|
* constructs private call data based on the execution results.
|
|
15
13
|
*/
|
|
16
14
|
export class KernelProver {
|
|
17
|
-
constructor(oracle, proofCreator
|
|
15
|
+
constructor(oracle, proofCreator) {
|
|
18
16
|
this.oracle = oracle;
|
|
19
17
|
this.proofCreator = proofCreator;
|
|
20
18
|
this.log = createDebugLogger('aztec:kernel-prover');
|
|
@@ -37,37 +35,15 @@ export class KernelProver {
|
|
|
37
35
|
publicInputs: PrivateKernelCircuitPublicInputs.empty(),
|
|
38
36
|
proof: makeEmptyProof(),
|
|
39
37
|
};
|
|
40
|
-
const
|
|
41
|
-
|
|
38
|
+
const noteHashLeafIndexMap = collectNoteHashLeafIndexMap(executionResult);
|
|
39
|
+
const noteHashNullifierCounterMap = collectNullifiedNoteHashCounters(executionResult);
|
|
42
40
|
while (executionStack.length) {
|
|
43
41
|
const currentExecution = executionStack.pop();
|
|
44
42
|
executionStack.push(...currentExecution.nestedExecutions);
|
|
45
43
|
const privateCallRequests = currentExecution.nestedExecutions.map(result => result.callStackItem.toCallRequest(currentExecution.callStackItem.publicInputs.callContext));
|
|
46
44
|
const publicCallRequests = currentExecution.enqueuedPublicFunctionCalls.map(result => result.toCallRequest());
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
const noteHashReadRequestMembershipWitnesses = currentExecution.noteHashReadRequestPartialWitnesses;
|
|
50
|
-
for (let rr = 0; rr < noteHashReadRequestMembershipWitnesses.length; rr++) {
|
|
51
|
-
// Pretty sure this check was forever broken. I made some changes to Fr and this started triggering.
|
|
52
|
-
// The conditional makes no sense to me anyway.
|
|
53
|
-
// if (currentExecution.callStackItem.publicInputs.readRequests[rr] == Fr.ZERO) {
|
|
54
|
-
// throw new Error(
|
|
55
|
-
// 'Number of read requests output from Noir circuit does not match number of read request commitment indices output from simulator.',
|
|
56
|
-
// );
|
|
57
|
-
// }
|
|
58
|
-
const rrWitness = noteHashReadRequestMembershipWitnesses[rr];
|
|
59
|
-
if (!rrWitness.isTransient) {
|
|
60
|
-
// Non-transient reads must contain full membership witness with sibling path from commitment to root.
|
|
61
|
-
// Get regular membership witness to fill in sibling path in the read request witness.
|
|
62
|
-
const membershipWitness = await this.oracle.getNoteMembershipWitness(rrWitness.leafIndex.toBigInt());
|
|
63
|
-
rrWitness.siblingPath = membershipWitness.siblingPath;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
// fill in witnesses for remaining/empty read requests
|
|
67
|
-
noteHashReadRequestMembershipWitnesses.push(...Array(MAX_NOTE_HASH_READ_REQUESTS_PER_CALL - noteHashReadRequestMembershipWitnesses.length)
|
|
68
|
-
.fill(0)
|
|
69
|
-
.map(() => NoteHashReadRequestMembershipWitness.empty(BigInt(0))));
|
|
70
|
-
const privateCallData = await this.createPrivateCallData(currentExecution, privateCallRequests, publicCallRequests, noteHashReadRequestMembershipWitnesses);
|
|
45
|
+
const proof = await this.proofCreator.createAppCircuitProof(currentExecution.partialWitness, currentExecution.acir);
|
|
46
|
+
const privateCallData = await this.createPrivateCallData(currentExecution, privateCallRequests, publicCallRequests, proof);
|
|
71
47
|
const hints = buildPrivateKernelInnerHints(currentExecution.callStackItem.publicInputs, noteHashNullifierCounterMap);
|
|
72
48
|
if (firstIteration) {
|
|
73
49
|
const proofInput = new PrivateKernelInitCircuitPrivateInputs(txRequest, privateCallData, hints);
|
|
@@ -87,13 +63,13 @@ export class KernelProver {
|
|
|
87
63
|
const previousVkMembershipWitness = await this.oracle.getVkMembershipWitness(previousVerificationKey);
|
|
88
64
|
const previousKernelData = new PrivateKernelData(output.publicInputs, output.proof, previousVerificationKey, Number(previousVkMembershipWitness.leafIndex), assertLength(previousVkMembershipWitness.siblingPath, VK_TREE_HEIGHT));
|
|
89
65
|
this.log.debug(`Calling private kernel tail with hwm ${previousKernelData.publicInputs.minRevertibleSideEffectCounter}`);
|
|
90
|
-
const hints = await buildPrivateKernelTailHints(output.publicInputs, this.oracle);
|
|
66
|
+
const hints = await buildPrivateKernelTailHints(output.publicInputs, noteHashLeafIndexMap, this.oracle);
|
|
91
67
|
const expectedOutputs = buildPrivateKernelTailOutputs(hints.sortedNewNoteHashes, hints.sortedNewNullifiers);
|
|
92
68
|
const privateInputs = new PrivateKernelTailCircuitPrivateInputs(previousKernelData, expectedOutputs, hints);
|
|
93
69
|
pushTestData('private-kernel-inputs-ordering', privateInputs);
|
|
94
70
|
return await this.proofCreator.createProofTail(privateInputs);
|
|
95
71
|
}
|
|
96
|
-
async createPrivateCallData({ callStackItem, vk }, privateCallRequests, publicCallRequests,
|
|
72
|
+
async createPrivateCallData({ callStackItem, vk }, privateCallRequests, publicCallRequests, proof) {
|
|
97
73
|
const { contractAddress, functionData } = callStackItem;
|
|
98
74
|
// Pad with empty items to reach max/const length expected by circuit.
|
|
99
75
|
const privateCallStack = padArrayEnd(privateCallRequests, CallRequest.empty(), MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL);
|
|
@@ -104,8 +80,6 @@ export class KernelProver {
|
|
|
104
80
|
// TODO(#262): Use real acir hash
|
|
105
81
|
// const acirHash = keccak256(Buffer.from(bytecode, 'hex'));
|
|
106
82
|
const acirHash = Fr.fromBuffer(Buffer.alloc(32, 0));
|
|
107
|
-
// TODO
|
|
108
|
-
const proof = makeEmptyProof();
|
|
109
83
|
return PrivateCallData.from({
|
|
110
84
|
callStackItem,
|
|
111
85
|
privateCallStack,
|
|
@@ -117,9 +91,8 @@ export class KernelProver {
|
|
|
117
91
|
contractClassPublicBytecodeCommitment,
|
|
118
92
|
saltedInitializationHash,
|
|
119
93
|
functionLeafMembershipWitness,
|
|
120
|
-
noteHashReadRequestMembershipWitnesses: makeTuple(MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, i => noteHashReadRequestMembershipWitnesses[i], 0),
|
|
121
94
|
acirHash,
|
|
122
95
|
});
|
|
123
96
|
}
|
|
124
97
|
}
|
|
125
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2VybmVsX3Byb3Zlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9rZXJuZWxfcHJvdmVyL2tlcm5lbF9wcm92ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFdBQVcsRUFDWCxFQUFFLEVBQ0Ysc0NBQXNDLEVBQ3RDLHFDQUFxQyxFQUNyQyxlQUFlLEVBQ2YsZ0NBQWdDLEVBQ2hDLGlCQUFpQixFQUNqQixxQ0FBcUMsRUFDckMsc0NBQXNDLEVBQ3RDLHFDQUFxQyxFQUlyQyxjQUFjLEVBQ2QsZUFBZSxFQUNmLGNBQWMsR0FDZixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBd0IsMkJBQTJCLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUd2SCxPQUFPLEVBQ0wsNEJBQTRCLEVBQzVCLDJCQUEyQixFQUMzQiw2QkFBNkIsR0FDOUIsTUFBTSxvQ0FBb0MsQ0FBQztBQUc1Qzs7Ozs7R0FLRztBQUNILE1BQU0sT0FBTyxZQUFZO0lBR3ZCLFlBQW9CLE1BQXlCLEVBQVUsWUFBMEI7UUFBN0QsV0FBTSxHQUFOLE1BQU0sQ0FBbUI7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUZ6RSxRQUFHLEdBQUcsaUJBQWlCLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUU2QixDQUFDO0lBRXJGOzs7Ozs7Ozs7T0FTRztJQUNILEtBQUssQ0FBQyxLQUFLLENBQ1QsU0FBb0IsRUFDcEIsZUFBZ0M7UUFFaEMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN6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
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { type PrivateKernelCircuitPublicInputs, PrivateKernelTailHints } from '@aztec/circuits.js';
|
|
2
2
|
import { type ProvingDataOracle } from '../proving_data_oracle.js';
|
|
3
|
-
export declare function buildPrivateKernelTailHints(publicInputs: PrivateKernelCircuitPublicInputs, oracle: ProvingDataOracle): Promise<PrivateKernelTailHints>;
|
|
3
|
+
export declare function buildPrivateKernelTailHints(publicInputs: PrivateKernelCircuitPublicInputs, noteHashLeafIndexMap: Map<bigint, bigint>, oracle: ProvingDataOracle): Promise<PrivateKernelTailHints>;
|
|
4
4
|
//# sourceMappingURL=build_private_kernel_tail_hints.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build_private_kernel_tail_hints.d.ts","sourceRoot":"","sources":["../../../src/kernel_prover/private_inputs_builders/build_private_kernel_tail_hints.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"build_private_kernel_tail_hints.d.ts","sourceRoot":"","sources":["../../../src/kernel_prover/private_inputs_builders/build_private_kernel_tail_hints.ts"],"names":[],"mappings":"AAAA,OAAO,EAaL,KAAK,gCAAgC,EACrC,sBAAsB,EAQvB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAmEnE,wBAAsB,2BAA2B,CAC/C,YAAY,EAAE,gCAAgC,EAC9C,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EACzC,MAAM,EAAE,iBAAiB,mCA8D1B"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { GrumpkinScalar, MAX_NEW_NOTE_HASHES_PER_TX, MAX_NEW_NULLIFIERS_PER_TX,
|
|
1
|
+
import { GrumpkinScalar, MAX_NEW_NOTE_HASHES_PER_TX, MAX_NEW_NULLIFIERS_PER_TX, MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_TX, MembershipWitness, NULLIFIER_TREE_HEIGHT, PrivateKernelTailHints, buildNoteHashReadRequestHints, buildNullifierReadRequestHints, buildTransientDataHints, sortByCounterGetSortedHints, } from '@aztec/circuits.js';
|
|
2
2
|
import { makeTuple } from '@aztec/foundation/array';
|
|
3
3
|
/** @deprecated Use sortByCounterGetSortedHints instead */
|
|
4
4
|
function sortSideEffects(sideEffects) {
|
|
@@ -17,35 +17,6 @@ function sortSideEffects(sideEffects) {
|
|
|
17
17
|
});
|
|
18
18
|
return [sorted.map(({ sideEffect }) => sideEffect), originalToSorted];
|
|
19
19
|
}
|
|
20
|
-
function isValidNoteHashReadRequest(readRequest, noteHash) {
|
|
21
|
-
return (noteHash.value.equals(readRequest.value) &&
|
|
22
|
-
noteHash.counter < readRequest.counter.toNumber() &&
|
|
23
|
-
(noteHash.nullifierCounter === 0 || noteHash.nullifierCounter > readRequest.counter.toNumber()));
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Performs the matching between an array of read request and an array of note hashes. This produces
|
|
27
|
-
* hints for the private kernel tail circuit to efficiently match a read request with the corresponding
|
|
28
|
-
* note hash. Several read requests might be pointing to the same note hash. It is therefore valid
|
|
29
|
-
* to return more than one hint with the same index.
|
|
30
|
-
*
|
|
31
|
-
* @param noteHashReadRequests - The array of read requests.
|
|
32
|
-
* @param noteHashes - The array of note hashes.
|
|
33
|
-
* @returns An array of hints where each element is the index of the note hash in note hashes array
|
|
34
|
-
* corresponding to the read request. In other words we have readRequests[i] == noteHashes[hints[i]].
|
|
35
|
-
*/
|
|
36
|
-
function getNoteHashReadRequestHints(noteHashReadRequests, noteHashes) {
|
|
37
|
-
const hints = makeTuple(MAX_NOTE_HASH_READ_REQUESTS_PER_TX, () => 0);
|
|
38
|
-
const numReadRequests = countAccumulatedItems(noteHashReadRequests);
|
|
39
|
-
for (let i = 0; i < numReadRequests; i++) {
|
|
40
|
-
const readRequest = noteHashReadRequests[i];
|
|
41
|
-
const noteHashIndex = noteHashes.findIndex((n) => isValidNoteHashReadRequest(readRequest, n));
|
|
42
|
-
if (noteHashIndex === -1) {
|
|
43
|
-
throw new Error(`The read request at index ${i} ${readRequest} does not match to any note hash.`);
|
|
44
|
-
}
|
|
45
|
-
hints[i] = noteHashIndex;
|
|
46
|
-
}
|
|
47
|
-
return hints;
|
|
48
|
-
}
|
|
49
20
|
function getNullifierReadRequestHints(nullifierReadRequests, nullifiers, oracle) {
|
|
50
21
|
const getNullifierMembershipWitness = async (nullifier) => {
|
|
51
22
|
const res = await oracle.getNullifierMembershipWitness(nullifier);
|
|
@@ -71,8 +42,8 @@ async function getMasterNullifierSecretKeys(nullifierKeyValidationRequests, orac
|
|
|
71
42
|
}
|
|
72
43
|
return keys;
|
|
73
44
|
}
|
|
74
|
-
export async function buildPrivateKernelTailHints(publicInputs, oracle) {
|
|
75
|
-
const noteHashReadRequestHints =
|
|
45
|
+
export async function buildPrivateKernelTailHints(publicInputs, noteHashLeafIndexMap, oracle) {
|
|
46
|
+
const noteHashReadRequestHints = await buildNoteHashReadRequestHints(oracle, publicInputs.validationRequests.noteHashReadRequests, publicInputs.end.newNoteHashes, noteHashLeafIndexMap);
|
|
76
47
|
const nullifierReadRequestHints = await getNullifierReadRequestHints(publicInputs.validationRequests.nullifierReadRequests, publicInputs.end.newNullifiers, oracle);
|
|
77
48
|
const masterNullifierSecretKeys = await getMasterNullifierSecretKeys(publicInputs.validationRequests.nullifierKeyValidationRequests, oracle);
|
|
78
49
|
const [sortedNoteHashes, sortedNoteHashesIndexes] = sortByCounterGetSortedHints(publicInputs.end.newNoteHashes, MAX_NEW_NOTE_HASHES_PER_TX);
|
|
@@ -82,4 +53,4 @@ export async function buildPrivateKernelTailHints(publicInputs, oracle) {
|
|
|
82
53
|
const [transientNullifierIndexesForNoteHashes, transientNoteHashIndexesForNullifiers] = buildTransientDataHints(sortedNoteHashes, sortedNullifiers, MAX_NEW_NOTE_HASHES_PER_TX, MAX_NEW_NULLIFIERS_PER_TX);
|
|
83
54
|
return new PrivateKernelTailHints(transientNullifierIndexesForNoteHashes, transientNoteHashIndexesForNullifiers, noteHashReadRequestHints, nullifierReadRequestHints, masterNullifierSecretKeys, sortedNoteHashes, sortedNoteHashesIndexes, sortedNullifiers, sortedNullifiersIndexes, sortedEncryptedLogHashes, sortedEncryptedLogHashesIndexes, sortedUnencryptedLogHashes, sortedUnencryptedLogHashesIndexes);
|
|
84
55
|
}
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRfcHJpdmF0ZV9rZXJuZWxfdGFpbF9oaW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9rZXJuZWxfcHJvdmVyL3ByaXZhdGVfaW5wdXRzX2J1aWxkZXJzL2J1aWxkX3ByaXZhdGVfa2VybmVsX3RhaWxfaGludHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLGNBQWMsRUFFZCwwQkFBMEIsRUFDMUIseUJBQXlCLEVBQ3pCLDRDQUE0QyxFQUc1QyxpQkFBaUIsRUFDakIscUJBQXFCLEVBSXJCLHNCQUFzQixFQUl0Qiw2QkFBNkIsRUFDN0IsOEJBQThCLEVBQzlCLHVCQUF1QixFQUN2QiwyQkFBMkIsR0FDNUIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFLcEQsMERBQTBEO0FBQzFELFNBQVMsZUFBZSxDQUN0QixXQUF3QjtJQUV4QixNQUFNLE1BQU0sR0FBRyxXQUFXO1NBQ3ZCLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUNuRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDYiw2QkFBNkI7UUFDN0IsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDM0IsT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNuRixDQUFDLENBQUMsQ0FBQztJQUVMLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FB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
|
|
@@ -44,7 +44,7 @@ export interface ProvingDataOracle {
|
|
|
44
44
|
* @param leafIndex - The leaf index of the note in the note hash tree.
|
|
45
45
|
* @returns the MembershipWitness for the note.
|
|
46
46
|
*/
|
|
47
|
-
|
|
47
|
+
getNoteHashMembershipWitness(leafIndex: bigint): Promise<MembershipWitness<typeof NOTE_HASH_TREE_HEIGHT>>;
|
|
48
48
|
getNullifierMembershipWitness(nullifier: Fr): Promise<NullifierMembershipWitness | undefined>;
|
|
49
49
|
/**
|
|
50
50
|
* Get the root of the note hash tree.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proving_data_oracle.d.ts","sourceRoot":"","sources":["../../src/kernel_prover/proving_data_oracle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,EAAE,EACP,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,KAAK,EACV,KAAK,cAAc,EACnB,KAAK,eAAe,EACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAEpE;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,8FAA8F;IAC9F,0BAA0B,CACxB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC;QAAE,wBAAwB,EAAE,EAAE,CAAC;QAAC,cAAc,EAAE,EAAE,CAAC;QAAC,eAAe,EAAE,EAAE,CAAA;KAAE,CAAC,CAAC;IAEtF,kFAAkF;IAClF,0BAA0B,CACxB,eAAe,EAAE,EAAE,GAClB,OAAO,CAAC;QAAE,YAAY,EAAE,EAAE,CAAC;QAAC,wBAAwB,EAAE,EAAE,CAAC;QAAC,oBAAoB,EAAE,EAAE,CAAA;KAAE,CAAC,CAAC;IAEzF;;;;;;;;OAQG;IACH,4BAA4B,CAC1B,eAAe,EAAE,YAAY,EAC7B,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,iBAAiB,CAAC,OAAO,oBAAoB,CAAC,CAAC,CAAC;IAE3D;;;;;;;;OAQG;IACH,sBAAsB,CAAC,EAAE,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC;IAE/F;;;;;OAKG;IACH,
|
|
1
|
+
{"version":3,"file":"proving_data_oracle.d.ts","sourceRoot":"","sources":["../../src/kernel_prover/proving_data_oracle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,EAAE,EACP,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,KAAK,EACV,KAAK,cAAc,EACnB,KAAK,eAAe,EACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAEpE;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,8FAA8F;IAC9F,0BAA0B,CACxB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC;QAAE,wBAAwB,EAAE,EAAE,CAAC;QAAC,cAAc,EAAE,EAAE,CAAC;QAAC,eAAe,EAAE,EAAE,CAAA;KAAE,CAAC,CAAC;IAEtF,kFAAkF;IAClF,0BAA0B,CACxB,eAAe,EAAE,EAAE,GAClB,OAAO,CAAC;QAAE,YAAY,EAAE,EAAE,CAAC;QAAC,wBAAwB,EAAE,EAAE,CAAC;QAAC,oBAAoB,EAAE,EAAE,CAAA;KAAE,CAAC,CAAC;IAEzF;;;;;;;;OAQG;IACH,4BAA4B,CAC1B,eAAe,EAAE,YAAY,EAC7B,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,iBAAiB,CAAC,OAAO,oBAAoB,CAAC,CAAC,CAAC;IAE3D;;;;;;;;OAQG;IACH,sBAAsB,CAAC,EAAE,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC;IAE/F;;;;;OAKG;IACH,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,OAAO,qBAAqB,CAAC,CAAC,CAAC;IAE1G,6BAA6B,CAAC,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,0BAA0B,GAAG,SAAS,CAAC,CAAC;IAE9F;;;;OAIG;IACH,mBAAmB,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC;IAEnC;;;;;OAKG;IACH,2BAA2B,CAAC,kBAAkB,EAAE,KAAK,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACrF"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
import { type PrivateCircuitPublicInputs, type PrivateKernelCircuitPublicInputs, type PrivateKernelInitCircuitPrivateInputs, type PrivateKernelInnerCircuitPrivateInputs, type PrivateKernelTailCircuitPrivateInputs, type PrivateKernelTailCircuitPublicInputs, Proof } from '@aztec/circuits.js';
|
|
3
|
+
import { type ProofCreator, type ProofOutput } from '../interface/proof_creator.js';
|
|
4
|
+
/**
|
|
5
|
+
* Test Proof Creator executes circuit simulations and provides fake proofs.
|
|
6
|
+
*/
|
|
7
|
+
export declare class TestProofCreator implements ProofCreator {
|
|
8
|
+
private log;
|
|
9
|
+
constructor(log?: import("@aztec/foundation/log").Logger);
|
|
10
|
+
getSiloedCommitments(publicInputs: PrivateCircuitPublicInputs): Promise<import("@aztec/circuits.js").Fr[]>;
|
|
11
|
+
createProofInit(privateInputs: PrivateKernelInitCircuitPrivateInputs): Promise<ProofOutput<PrivateKernelCircuitPublicInputs>>;
|
|
12
|
+
createProofInner(privateInputs: PrivateKernelInnerCircuitPrivateInputs): Promise<ProofOutput<PrivateKernelCircuitPublicInputs>>;
|
|
13
|
+
createProofTail(privateInputs: PrivateKernelTailCircuitPrivateInputs): Promise<ProofOutput<PrivateKernelTailCircuitPublicInputs>>;
|
|
14
|
+
createAppCircuitProof(_1: Map<number, string>, _2: Buffer): Promise<Proof>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=test_circuit_prover.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test_circuit_prover.d.ts","sourceRoot":"","sources":["../../../src/kernel_prover/test/test_circuit_prover.ts"],"names":[],"mappings":";AACA,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,gCAAgC,EACrC,KAAK,qCAAqC,EAC1C,KAAK,sCAAsC,EAC3C,KAAK,qCAAqC,EAC1C,KAAK,oCAAoC,EACzC,KAAK,EAEN,MAAM,oBAAoB,CAAC;AAM5B,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAEpF;;GAEG;AACH,qBAAa,gBAAiB,YAAW,YAAY;IACvC,OAAO,CAAC,GAAG;gBAAH,GAAG,yCAAgD;IAEhE,oBAAoB,CAAC,YAAY,EAAE,0BAA0B;IAQvD,eAAe,CAC1B,aAAa,EAAE,qCAAqC,GACnD,OAAO,CAAC,WAAW,CAAC,gCAAgC,CAAC,CAAC;IAiB5C,gBAAgB,CAC3B,aAAa,EAAE,sCAAsC,GACpD,OAAO,CAAC,WAAW,CAAC,gCAAgC,CAAC,CAAC;IAiB5C,eAAe,CAC1B,aAAa,EAAE,qCAAqC,GACnD,OAAO,CAAC,WAAW,CAAC,oCAAoC,CAAC,CAAC;IAoB7D,qBAAqB,CAAC,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;CAG3E"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { Proof, makeEmptyProof, } from '@aztec/circuits.js';
|
|
2
|
+
import { siloNoteHash } from '@aztec/circuits.js/hash';
|
|
3
|
+
import { createDebugLogger } from '@aztec/foundation/log';
|
|
4
|
+
import { elapsed } from '@aztec/foundation/timer';
|
|
5
|
+
import { executeInit, executeInner, executeTail, executeTailForPublic } from '@aztec/noir-protocol-circuits-types';
|
|
6
|
+
/**
|
|
7
|
+
* Test Proof Creator executes circuit simulations and provides fake proofs.
|
|
8
|
+
*/
|
|
9
|
+
export class TestProofCreator {
|
|
10
|
+
constructor(log = createDebugLogger('aztec:test_proof_creator')) {
|
|
11
|
+
this.log = log;
|
|
12
|
+
}
|
|
13
|
+
getSiloedCommitments(publicInputs) {
|
|
14
|
+
const contractAddress = publicInputs.callContext.storageContractAddress;
|
|
15
|
+
return Promise.resolve(publicInputs.newNoteHashes.map(commitment => siloNoteHash(contractAddress, commitment.value)));
|
|
16
|
+
}
|
|
17
|
+
async createProofInit(privateInputs) {
|
|
18
|
+
const [duration, result] = await elapsed(() => executeInit(privateInputs));
|
|
19
|
+
this.log.debug(`Simulated private kernel init`, {
|
|
20
|
+
eventName: 'circuit-simulation',
|
|
21
|
+
circuitName: 'private-kernel-init',
|
|
22
|
+
duration,
|
|
23
|
+
inputSize: privateInputs.toBuffer().length,
|
|
24
|
+
outputSize: result.toBuffer().length,
|
|
25
|
+
});
|
|
26
|
+
const proof = makeEmptyProof();
|
|
27
|
+
return {
|
|
28
|
+
publicInputs: result,
|
|
29
|
+
proof: proof,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
async createProofInner(privateInputs) {
|
|
33
|
+
const [duration, result] = await elapsed(() => executeInner(privateInputs));
|
|
34
|
+
this.log.debug(`Simulated private kernel inner`, {
|
|
35
|
+
eventName: 'circuit-simulation',
|
|
36
|
+
circuitName: 'private-kernel-inner',
|
|
37
|
+
duration,
|
|
38
|
+
inputSize: privateInputs.toBuffer().length,
|
|
39
|
+
outputSize: result.toBuffer().length,
|
|
40
|
+
});
|
|
41
|
+
const proof = makeEmptyProof();
|
|
42
|
+
return {
|
|
43
|
+
publicInputs: result,
|
|
44
|
+
proof: proof,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
async createProofTail(privateInputs) {
|
|
48
|
+
const isForPublic = privateInputs.isForPublic();
|
|
49
|
+
const [duration, result] = await elapsed(() => isForPublic ? executeTailForPublic(privateInputs) : executeTail(privateInputs));
|
|
50
|
+
this.log.debug(`Simulated private kernel ordering`, {
|
|
51
|
+
eventName: 'circuit-simulation',
|
|
52
|
+
circuitName: 'private-kernel-ordering',
|
|
53
|
+
duration,
|
|
54
|
+
inputSize: privateInputs.toBuffer().length,
|
|
55
|
+
outputSize: result.toBuffer().length,
|
|
56
|
+
});
|
|
57
|
+
const proof = makeEmptyProof();
|
|
58
|
+
return {
|
|
59
|
+
publicInputs: result,
|
|
60
|
+
proof: proof,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
createAppCircuitProof(_1, _2) {
|
|
64
|
+
return Promise.resolve(new Proof(Buffer.alloc(0)));
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF9jaXJjdWl0X3Byb3Zlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9rZXJuZWxfcHJvdmVyL3Rlc3QvdGVzdF9jaXJjdWl0X3Byb3Zlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBT0wsS0FBSyxFQUNMLGNBQWMsR0FDZixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFJbkg7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZ0JBQWdCO0lBQzNCLFlBQW9CLE1BQU0saUJBQWlCLENBQUMsMEJBQTBCLENBQUM7UUFBbkQsUUFBRyxHQUFILEdBQUcsQ0FBZ0Q7SUFBRyxDQUFDO0lBRXBFLG9CQUFvQixDQUFDLFlBQXdDO1FBQ2xFLE1BQU0sZUFBZSxHQUFHLFlBQVksQ0FBQyxXQUFXLENBQUMsc0JBQXNCLENBQUM7UUFFeEUsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUNwQixZQUFZLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxlQUFlLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQzlGLENBQUM7SUFDSixDQUFDO0lBRU0sS0FBSyxDQUFDLGVBQWUsQ0FDMUIsYUFBb0Q7UUFFcEQsTUFBTSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztRQUMzRSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQywrQkFBK0IsRUFBRTtZQUM5QyxTQUFTLEVBQUUsb0JBQW9CO1lBQy9CLFdBQVcsRUFBRSxxQkFBcUI7WUFDbEMsUUFBUTtZQUNSLFNBQVMsRUFBRSxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTTtZQUMxQyxVQUFVLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU07U0FDSixDQUFDLENBQUM7UUFDcEMsTUFBTSxLQUFLLEdBQUcsY0FBYyxFQUFFLENBQUM7UUFFL0IsT0FBTztZQUNMLFlBQVksRUFBRSxNQUFNO1lBQ3BCLEtBQUssRUFBRSxLQUFLO1NBQ2IsQ0FBQztJQUNKLENBQUM7SUFFTSxLQUFLLENBQUMsZ0JBQWdCLENBQzNCLGFBQXFEO1FBRXJELE1BQU0sQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7UUFDNUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsZ0NBQWdDLEVBQUU7WUFDL0MsU0FBUyxFQUFFLG9CQUFvQjtZQUMvQixXQUFXLEVBQUUsc0JBQXNCO1lBQ25DLFFBQVE7WUFDUixTQUFTLEVBQUUsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU07WUFDMUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNO1NBQ0osQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sS0FBSyxHQUFHLGNBQWMsRUFBRSxDQUFDO1FBRS9CLE9BQU87WUFDTCxZQUFZLEVBQUUsTUFBTTtZQUNwQixLQUFLLEVBQUUsS0FBSztTQUNiLENBQUM7SUFDSixDQUFDO0lBRU0sS0FBSyxDQUFDLGVBQWUsQ0FDMUIsYUFBb0Q7UUFFcEQsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2hELE1BQU0sQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQzVDLFdBQVcsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FDL0UsQ0FBQztRQUNGLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLG1DQUFtQyxFQUFFO1lBQ2xELFNBQVMsRUFBRSxvQkFBb0I7WUFDL0IsV0FBVyxFQUFFLHlCQUF5QjtZQUN0QyxRQUFRO1lBQ1IsU0FBUyxFQUFFLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNO1lBQzFDLFVBQVUsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTTtTQUNKLENBQUMsQ0FBQztRQUNwQyxNQUFNLEtBQUssR0FBRyxjQUFjLEVBQUUsQ0FBQztRQUUvQixPQUFPO1lBQ0wsWUFBWSxFQUFFLE1BQU07WUFDcEIsS0FBSyxFQUFFLEtBQUs7U0FDYixDQUFDO0lBQ0osQ0FBQztJQUVELHFCQUFxQixDQUFDLEVBQXVCLEVBQUUsRUFBVTtRQUN2RCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckQsQ0FBQztDQUNGIn0=
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type AztecNode } from '@aztec/circuit-types';
|
|
2
2
|
import { type PXEServiceConfig } from '../config/index.js';
|
|
3
|
+
import { type ProofCreator } from '../kernel_prover/interface/proof_creator.js';
|
|
3
4
|
import { PXEService } from './pxe_service.js';
|
|
4
5
|
/**
|
|
5
6
|
* Create and start an PXEService instance with the given AztecNode.
|
|
@@ -9,7 +10,8 @@ import { PXEService } from './pxe_service.js';
|
|
|
9
10
|
* @param aztecNode - The AztecNode instance to be used by the server.
|
|
10
11
|
* @param config - The PXE Service Config to use
|
|
11
12
|
* @param options - (Optional) Optional information for creating an PXEService.
|
|
13
|
+
* @param proofCreator - An optional proof creator to use in place of any other configuration
|
|
12
14
|
* @returns A Promise that resolves to the started PXEService instance.
|
|
13
15
|
*/
|
|
14
|
-
export declare function createPXEService(aztecNode: AztecNode, config: PXEServiceConfig, useLogSuffix?: string | boolean | undefined): Promise<PXEService>;
|
|
16
|
+
export declare function createPXEService(aztecNode: AztecNode, config: PXEServiceConfig, useLogSuffix?: string | boolean | undefined, proofCreator?: ProofCreator): Promise<PXEService>;
|
|
15
17
|
//# sourceMappingURL=create_pxe_service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create_pxe_service.d.ts","sourceRoot":"","sources":["../../src/pxe_service/create_pxe_service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAatD,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"create_pxe_service.d.ts","sourceRoot":"","sources":["../../src/pxe_service/create_pxe_service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAatD,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAG3D,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,6CAA6C,CAAC;AAEhF,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;;;;;;;;;GAUG;AACH,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,gBAAgB,EACxB,YAAY,GAAE,MAAM,GAAG,OAAO,GAAG,SAAqB,EACtD,YAAY,CAAC,EAAE,YAAY,uBAsC5B"}
|
|
@@ -9,6 +9,8 @@ import { getCanonicalKeyRegistry } from '@aztec/protocol-contracts/key-registry'
|
|
|
9
9
|
import { getCanonicalMultiCallEntrypointContract } from '@aztec/protocol-contracts/multi-call-entrypoint';
|
|
10
10
|
import { join } from 'path';
|
|
11
11
|
import { KVPxeDatabase } from '../database/kv_pxe_database.js';
|
|
12
|
+
import { BBNativeProofCreator } from '../kernel_prover/bb_prover/bb_native_proof_creator.js';
|
|
13
|
+
import { TestProofCreator } from '../kernel_prover/test/test_circuit_prover.js';
|
|
12
14
|
import { PXEService } from './pxe_service.js';
|
|
13
15
|
/**
|
|
14
16
|
* Create and start an PXEService instance with the given AztecNode.
|
|
@@ -18,16 +20,27 @@ import { PXEService } from './pxe_service.js';
|
|
|
18
20
|
* @param aztecNode - The AztecNode instance to be used by the server.
|
|
19
21
|
* @param config - The PXE Service Config to use
|
|
20
22
|
* @param options - (Optional) Optional information for creating an PXEService.
|
|
23
|
+
* @param proofCreator - An optional proof creator to use in place of any other configuration
|
|
21
24
|
* @returns A Promise that resolves to the started PXEService instance.
|
|
22
25
|
*/
|
|
23
|
-
export async function createPXEService(aztecNode, config, useLogSuffix = undefined) {
|
|
26
|
+
export async function createPXEService(aztecNode, config, useLogSuffix = undefined, proofCreator) {
|
|
24
27
|
const logSuffix = typeof useLogSuffix === 'boolean' ? (useLogSuffix ? randomBytes(3).toString('hex') : undefined) : useLogSuffix;
|
|
25
28
|
const pxeDbPath = config.dataDirectory ? join(config.dataDirectory, 'pxe_data') : undefined;
|
|
26
29
|
const keyStorePath = config.dataDirectory ? join(config.dataDirectory, 'pxe_key_store') : undefined;
|
|
27
30
|
const l1Contracts = await aztecNode.getL1ContractAddresses();
|
|
28
31
|
const keyStore = new TestKeyStore(await initStoreForRollup(AztecLmdbStore.open(keyStorePath), l1Contracts.rollupAddress));
|
|
29
32
|
const db = new KVPxeDatabase(await initStoreForRollup(AztecLmdbStore.open(pxeDbPath), l1Contracts.rollupAddress));
|
|
30
|
-
|
|
33
|
+
// (@PhilWindle) Temporary validation until WASM is implemented
|
|
34
|
+
let prover = proofCreator;
|
|
35
|
+
if (!prover) {
|
|
36
|
+
if (config.proverEnabled && (!config.bbBinaryPath || !config.bbWorkingDirectory)) {
|
|
37
|
+
throw new Error(`Prover must be configured with binary path and working directory`);
|
|
38
|
+
}
|
|
39
|
+
prover = !config.proverEnabled
|
|
40
|
+
? new TestProofCreator()
|
|
41
|
+
: new BBNativeProofCreator(config.bbBinaryPath, config.bbWorkingDirectory);
|
|
42
|
+
}
|
|
43
|
+
const server = new PXEService(keyStore, aztecNode, db, prover, config, logSuffix);
|
|
31
44
|
for (const contract of [
|
|
32
45
|
getCanonicalClassRegisterer(),
|
|
33
46
|
getCanonicalInstanceDeployer(),
|
|
@@ -40,4 +53,4 @@ export async function createPXEService(aztecNode, config, useLogSuffix = undefin
|
|
|
40
53
|
await server.start();
|
|
41
54
|
return server;
|
|
42
55
|
}
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlX3B4ZV9zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B4ZV9zZXJ2aWNlL2NyZWF0ZV9weGVfc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUN6RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUMzRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNqRixPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUUxRyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRzVCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMvRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUU3RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNoRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFOUM7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsZ0JBQWdCLENBQ3BDLFNBQW9CLEVBQ3BCLE1BQXdCLEVBQ3hCLGVBQTZDLFNBQVMsRUFDdEQsWUFBMkI7SUFFM0IsTUFBTSxTQUFTLEdBQ2IsT0FBTyxZQUFZLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztJQUVqSCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQzVGLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDcEcsTUFBTSxXQUFXLEdBQUcsTUFBTSxTQUFTLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUU3RCxNQUFNLFFBQVEsR0FBRyxJQUFJLFlBQVksQ0FDL0IsTUFBTSxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FDdkYsQ0FBQztJQUNGLE1BQU0sRUFBRSxHQUFHLElBQUksYUFBYSxDQUFDLE1BQU0sa0JBQWtCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUVsSCwrREFBK0Q7SUFDL0QsSUFBSSxNQUFNLEdBQTZCLFlBQVksQ0FBQztJQUNwRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDWixJQUFJLE1BQU0sQ0FBQyxhQUFhLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDO1lBQ2pGLE1BQU0sSUFBSSxLQUFLLENBQUMsa0VBQWtFLENBQUMsQ0FBQztRQUN0RixDQUFDO1FBQ0QsTUFBTSxHQUFHLENBQUMsTUFBTSxDQUFDLGFBQWE7WUFDNUIsQ0FBQyxDQUFDLElBQUksZ0JBQWdCLEVBQUU7WUFDeEIsQ0FBQyxDQUFDLElBQUksb0JBQW9CLENBQUMsTUFBTSxDQUFDLFlBQWEsRUFBRSxNQUFNLENBQUMsa0JBQW1CLENBQUMsQ0FBQztJQUNqRixDQUFDO0lBRUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNsRixLQUFLLE1BQU0sUUFBUSxJQUFJO1FBQ3JCLDJCQUEyQixFQUFFO1FBQzdCLDRCQUE0QixFQUFFO1FBQzlCLHVDQUF1QyxFQUFFO1FBQ3pDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQztRQUNsRCx1QkFBdUIsRUFBRTtLQUMxQixFQUFFLENBQUM7UUFDRixNQUFNLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsTUFBTSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDckIsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyJ9
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { type AuthWitness, type AztecNode, ExtendedNote, type GetUnencryptedLogsResponse, type KeyStore, type L2Block, type LogFilter, type NoteFilter, type PXE, SimulatedTx, Tx, type TxEffect, type TxExecutionRequest, type TxHash, type TxReceipt } from '@aztec/circuit-types';
|
|
2
2
|
import { AztecAddress, CompleteAddress, type PartialAddress } from '@aztec/circuits.js';
|
|
3
3
|
import { type ContractArtifact, type DecodedReturn } from '@aztec/foundation/abi';
|
|
4
|
-
import { Fr } from '@aztec/foundation/fields';
|
|
4
|
+
import { Fr, type Point } from '@aztec/foundation/fields';
|
|
5
5
|
import { type ContractClassWithId, type ContractInstanceWithAddress } from '@aztec/types/contracts';
|
|
6
6
|
import { type NodeInfo } from '@aztec/types/interfaces';
|
|
7
7
|
import { type PXEServiceConfig } from '../config/index.js';
|
|
8
8
|
import { type PxeDatabase } from '../database/index.js';
|
|
9
|
+
import { type ProofCreator } from '../kernel_prover/interface/proof_creator.js';
|
|
9
10
|
/**
|
|
10
11
|
* A Private eXecution Environment (PXE) implementation.
|
|
11
12
|
*/
|
|
@@ -14,6 +15,7 @@ export declare class PXEService implements PXE {
|
|
|
14
15
|
private keyStore;
|
|
15
16
|
private node;
|
|
16
17
|
private db;
|
|
18
|
+
private proofCreator;
|
|
17
19
|
private config;
|
|
18
20
|
private synchronizer;
|
|
19
21
|
private contractDataOracle;
|
|
@@ -21,7 +23,7 @@ export declare class PXEService implements PXE {
|
|
|
21
23
|
private log;
|
|
22
24
|
private nodeVersion;
|
|
23
25
|
private jobQueue;
|
|
24
|
-
constructor(keyStore: KeyStore, node: AztecNode, db: PxeDatabase, config: PXEServiceConfig, logSuffix?: string);
|
|
26
|
+
constructor(keyStore: KeyStore, node: AztecNode, db: PxeDatabase, proofCreator: ProofCreator, config: PXEServiceConfig, logSuffix?: string);
|
|
25
27
|
/**
|
|
26
28
|
* Starts the PXE Service by beginning the synchronization process between the Aztec node and the database.
|
|
27
29
|
*
|
|
@@ -48,7 +50,7 @@ export declare class PXEService implements PXE {
|
|
|
48
50
|
getRegisteredAccounts(): Promise<CompleteAddress[]>;
|
|
49
51
|
getRegisteredAccount(address: AztecAddress): Promise<CompleteAddress | undefined>;
|
|
50
52
|
getRegisteredAccountPublicKeysHash(address: AztecAddress): Promise<Fr | undefined>;
|
|
51
|
-
registerRecipient(recipient: CompleteAddress): Promise<void>;
|
|
53
|
+
registerRecipient(recipient: CompleteAddress, publicKeys?: Point[]): Promise<void>;
|
|
52
54
|
getRecipients(): Promise<CompleteAddress[]>;
|
|
53
55
|
getRecipient(address: AztecAddress): Promise<CompleteAddress | undefined>;
|
|
54
56
|
registerContractClass(artifact: ContractArtifact): Promise<void>;
|
|
@@ -84,7 +86,6 @@ export declare class PXEService implements PXE {
|
|
|
84
86
|
getUnencryptedLogs(filter: LogFilter): Promise<GetUnencryptedLogsResponse>;
|
|
85
87
|
getNodeInfo(): Promise<NodeInfo>;
|
|
86
88
|
private patchPublicCallStackOrdering;
|
|
87
|
-
private patchLogsOrdering;
|
|
88
89
|
isGlobalStateSynchronized(): Promise<boolean>;
|
|
89
90
|
isAccountStateSynchronized(account: AztecAddress): Promise<boolean>;
|
|
90
91
|
getSyncStatus(): Promise<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pxe_service.d.ts","sourceRoot":"","sources":["../../src/pxe_service/pxe_service.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,SAAS,
|
|
1
|
+
{"version":3,"file":"pxe_service.d.ts","sourceRoot":"","sources":["../../src/pxe_service/pxe_service.ts"],"names":[],"mappings":"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"}
|