@aztec/pxe 0.76.4-devnet-test-rc3 → 0.77.0-testnet-ignition.17
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/bin/index.js +4 -6
- package/dest/config/index.d.ts +2 -2
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +20 -23
- package/dest/config/package_info.js +4 -2
- package/dest/contract_data_oracle/index.d.ts +10 -10
- package/dest/contract_data_oracle/index.d.ts.map +1 -1
- package/dest/contract_data_oracle/index.js +74 -89
- package/dest/contract_data_oracle/private_functions_tree.d.ts +5 -4
- package/dest/contract_data_oracle/private_functions_tree.d.ts.map +1 -1
- package/dest/contract_data_oracle/private_functions_tree.js +47 -51
- package/dest/database/contracts/contract_artifact_db.d.ts +2 -2
- package/dest/database/contracts/contract_artifact_db.d.ts.map +1 -1
- package/dest/database/contracts/contract_artifact_db.js +3 -2
- package/dest/database/contracts/contract_instance_db.d.ts +2 -1
- package/dest/database/contracts/contract_instance_db.d.ts.map +1 -1
- package/dest/database/contracts/contract_instance_db.js +3 -2
- package/dest/database/index.js +0 -1
- package/dest/database/kv_pxe_database.d.ts +9 -5
- package/dest/database/kv_pxe_database.d.ts.map +1 -1
- package/dest/database/kv_pxe_database.js +244 -257
- package/dest/database/note_dao.d.ts +13 -10
- package/dest/database/note_dao.d.ts.map +1 -1
- package/dest/database/note_dao.js +35 -48
- package/dest/database/outgoing_note_dao.d.ts +6 -3
- package/dest/database/outgoing_note_dao.d.ts.map +1 -1
- package/dest/database/outgoing_note_dao.js +25 -37
- package/dest/database/pxe_database.d.ts +12 -8
- package/dest/database/pxe_database.d.ts.map +1 -1
- package/dest/database/pxe_database.js +4 -2
- package/dest/database/pxe_database_test_suite.d.ts +1 -1
- package/dest/database/pxe_database_test_suite.d.ts.map +1 -1
- package/dest/database/pxe_database_test_suite.js +286 -147
- package/dest/index.d.ts +1 -6
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +1 -7
- package/dest/kernel_oracle/index.d.ts +20 -10
- package/dest/kernel_oracle/index.d.ts.map +1 -1
- package/dest/kernel_oracle/index.js +32 -9
- package/dest/kernel_prover/hints/build_private_kernel_reset_private_inputs.d.ts +3 -3
- package/dest/kernel_prover/hints/build_private_kernel_reset_private_inputs.d.ts.map +1 -1
- package/dest/kernel_prover/hints/build_private_kernel_reset_private_inputs.js +71 -67
- package/dest/kernel_prover/hints/index.js +0 -1
- package/dest/kernel_prover/index.js +0 -1
- package/dest/kernel_prover/kernel_prover.d.ts +6 -4
- package/dest/kernel_prover/kernel_prover.d.ts.map +1 -1
- package/dest/kernel_prover/kernel_prover.js +95 -74
- package/dest/kernel_prover/proving_data_oracle.d.ts +15 -7
- package/dest/kernel_prover/proving_data_oracle.d.ts.map +1 -1
- package/dest/kernel_prover/proving_data_oracle.js +4 -2
- package/dest/note_decryption_utils/add_public_values_to_payload.d.ts +3 -2
- package/dest/note_decryption_utils/add_public_values_to_payload.d.ts.map +1 -1
- package/dest/note_decryption_utils/add_public_values_to_payload.js +11 -12
- package/dest/pxe_http/index.js +0 -1
- package/dest/pxe_http/pxe_http_server.d.ts +1 -1
- package/dest/pxe_http/pxe_http_server.d.ts.map +1 -1
- package/dest/pxe_http/pxe_http_server.js +9 -7
- package/dest/pxe_service/error_enriching.d.ts +3 -3
- package/dest/pxe_service/error_enriching.d.ts.map +1 -1
- package/dest/pxe_service/error_enriching.js +14 -17
- package/dest/pxe_service/index.d.ts +0 -1
- package/dest/pxe_service/index.d.ts.map +1 -1
- package/dest/pxe_service/index.js +0 -2
- package/dest/pxe_service/pxe_service.d.ts +21 -12
- package/dest/pxe_service/pxe_service.d.ts.map +1 -1
- package/dest/pxe_service/pxe_service.js +280 -331
- package/dest/pxe_service/test/pxe_test_suite.d.ts +1 -1
- package/dest/pxe_service/test/pxe_test_suite.d.ts.map +1 -1
- package/dest/pxe_service/test/pxe_test_suite.js +44 -28
- package/dest/simulator/index.d.ts +3 -3
- package/dest/simulator/index.d.ts.map +1 -1
- package/dest/simulator/index.js +1 -3
- package/dest/simulator_oracle/index.d.ts +18 -6
- package/dest/simulator_oracle/index.d.ts.map +1 -1
- package/dest/simulator_oracle/index.js +307 -235
- package/dest/simulator_oracle/tagging_utils.d.ts +2 -1
- package/dest/simulator_oracle/tagging_utils.d.ts.map +1 -1
- package/dest/simulator_oracle/tagging_utils.js +5 -7
- package/dest/synchronizer/index.js +0 -1
- package/dest/synchronizer/synchronizer.d.ts +7 -4
- package/dest/synchronizer/synchronizer.d.ts.map +1 -1
- package/dest/synchronizer/synchronizer.js +64 -43
- package/dest/utils/create_pxe_service.d.ts +2 -2
- package/dest/utils/create_pxe_service.d.ts.map +1 -1
- package/dest/utils/create_pxe_service.js +13 -11
- package/package.json +17 -18
- package/src/bin/index.ts +1 -1
- package/src/config/index.ts +3 -3
- package/src/contract_data_oracle/index.ts +20 -20
- package/src/contract_data_oracle/private_functions_tree.ts +6 -7
- package/src/database/contracts/contract_artifact_db.ts +2 -2
- package/src/database/contracts/contract_instance_db.ts +2 -1
- package/src/database/kv_pxe_database.ts +33 -32
- package/src/database/note_dao.ts +11 -8
- package/src/database/outgoing_note_dao.ts +7 -4
- package/src/database/pxe_database.ts +13 -15
- package/src/database/pxe_database_test_suite.ts +8 -11
- package/src/index.ts +1 -7
- package/src/kernel_oracle/index.ts +55 -22
- package/src/kernel_prover/hints/build_private_kernel_reset_private_inputs.ts +14 -11
- package/src/kernel_prover/kernel_prover.ts +70 -44
- package/src/kernel_prover/proving_data_oracle.ts +20 -20
- package/src/note_decryption_utils/add_public_values_to_payload.ts +5 -4
- package/src/pxe_http/pxe_http_server.ts +1 -1
- package/src/pxe_service/error_enriching.ts +6 -6
- package/src/pxe_service/index.ts +0 -1
- package/src/pxe_service/pxe_service.ts +120 -220
- package/src/pxe_service/test/pxe_test_suite.ts +6 -3
- package/src/simulator/index.ts +3 -3
- package/src/simulator_oracle/index.ts +77 -47
- package/src/simulator_oracle/tagging_utils.ts +2 -1
- package/src/synchronizer/synchronizer.ts +31 -12
- package/src/utils/create_pxe_service.ts +16 -4
|
@@ -1,13 +1,19 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { CLIENT_IVC_VERIFICATION_KEY_LENGTH_IN_FIELDS, ClientIvcProof, Fr, PrivateCallData, PrivateKernelCircuitPublicInputs, PrivateKernelData, PrivateKernelInitCircuitPrivateInputs, PrivateKernelInnerCircuitPrivateInputs, PrivateKernelTailCircuitPrivateInputs, VK_TREE_HEIGHT, VerificationKeyAsFields, } from '@aztec/circuits.js';
|
|
3
|
-
import { hashVK } from '@aztec/circuits.js/hash';
|
|
1
|
+
import { CLIENT_IVC_VERIFICATION_KEY_LENGTH_IN_FIELDS, VK_TREE_HEIGHT } from '@aztec/constants';
|
|
4
2
|
import { vkAsFieldsMegaHonk } from '@aztec/foundation/crypto';
|
|
3
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
5
4
|
import { createLogger } from '@aztec/foundation/log';
|
|
6
5
|
import { assertLength } from '@aztec/foundation/serialize';
|
|
7
6
|
import { pushTestData } from '@aztec/foundation/testing';
|
|
8
7
|
import { Timer } from '@aztec/foundation/timer';
|
|
9
|
-
import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/
|
|
8
|
+
import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
10
9
|
import { getProtocolContractLeafAndMembershipWitness, protocolContractTreeRoot } from '@aztec/protocol-contracts';
|
|
10
|
+
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
11
|
+
import { computeContractAddressFromInstance } from '@aztec/stdlib/contract';
|
|
12
|
+
import { hashVK } from '@aztec/stdlib/hash';
|
|
13
|
+
import { PrivateCallData, PrivateKernelCircuitPublicInputs, PrivateKernelData, PrivateKernelInitCircuitPrivateInputs, PrivateKernelInnerCircuitPrivateInputs, PrivateKernelTailCircuitPrivateInputs, PrivateVerificationKeyHints } from '@aztec/stdlib/kernel';
|
|
14
|
+
import { ClientIvcProof } from '@aztec/stdlib/proofs';
|
|
15
|
+
import { collectEnqueuedPublicFunctionCalls, collectNoteHashLeafIndexMap, collectNoteHashNullifierCounterMap, collectPublicTeardownFunctionCall, getFinalMinRevertibleSideEffectCounter } from '@aztec/stdlib/tx';
|
|
16
|
+
import { VerificationKeyAsFields } from '@aztec/stdlib/vks';
|
|
11
17
|
import { strict as assert } from 'assert';
|
|
12
18
|
import { PrivateKernelResetPrivateInputsBuilder } from './hints/build_private_kernel_reset_private_inputs.js';
|
|
13
19
|
// TODO(#10592): Temporary workaround to check that the private logs are correctly split into non-revertible set and revertible set.
|
|
@@ -15,67 +21,76 @@ import { PrivateKernelResetPrivateInputsBuilder } from './hints/build_private_ke
|
|
|
15
21
|
function checkPrivateLogs(privateLogs, nonRevertiblePrivateLogs, revertiblePrivateLogs, splitCounter) {
|
|
16
22
|
let numNonRevertible = 0;
|
|
17
23
|
let numRevertible = 0;
|
|
18
|
-
privateLogs
|
|
19
|
-
.filter(privateLog => privateLog.inner.counter !== 0)
|
|
20
|
-
.forEach(privateLog => {
|
|
24
|
+
privateLogs.filter((privateLog)=>privateLog.inner.counter !== 0).forEach((privateLog)=>{
|
|
21
25
|
if (privateLog.inner.counter < splitCounter) {
|
|
22
26
|
assert(privateLog.inner.log.toBuffer().equals(nonRevertiblePrivateLogs[numNonRevertible].toBuffer()), `mismatch non-revertible private logs at index ${numNonRevertible}`);
|
|
23
27
|
numNonRevertible++;
|
|
24
|
-
}
|
|
25
|
-
else {
|
|
28
|
+
} else {
|
|
26
29
|
assert(privateLog.inner.log.toBuffer().equals(revertiblePrivateLogs[numRevertible].toBuffer()), `mismatch revertible private logs at index ${numRevertible}`);
|
|
27
30
|
numRevertible++;
|
|
28
31
|
}
|
|
29
32
|
});
|
|
30
|
-
assert(nonRevertiblePrivateLogs.slice(numNonRevertible).every(l
|
|
31
|
-
assert(revertiblePrivateLogs.slice(numRevertible).every(l
|
|
33
|
+
assert(nonRevertiblePrivateLogs.slice(numNonRevertible).every((l)=>l.isEmpty()), 'Unexpected non-empty private log in non-revertible set.');
|
|
34
|
+
assert(revertiblePrivateLogs.slice(numRevertible).every((l)=>l.isEmpty()), 'Unexpected non-empty private log in revertible set.');
|
|
32
35
|
}
|
|
33
36
|
const NULL_PROVE_OUTPUT = {
|
|
34
37
|
publicInputs: PrivateKernelCircuitPublicInputs.empty(),
|
|
35
38
|
verificationKey: VerificationKeyAsFields.makeEmpty(CLIENT_IVC_VERIFICATION_KEY_LENGTH_IN_FIELDS),
|
|
36
39
|
outputWitness: new Map(),
|
|
37
|
-
bytecode: Buffer.from([])
|
|
40
|
+
bytecode: Buffer.from([])
|
|
38
41
|
};
|
|
39
42
|
/**
|
|
40
43
|
* The KernelProver class is responsible for generating kernel proofs.
|
|
41
44
|
* It takes a transaction request, its signature, and the simulation result as inputs, and outputs a proof
|
|
42
45
|
* along with output notes. The class interacts with a ProvingDataOracle to fetch membership witnesses and
|
|
43
46
|
* constructs private call data based on the execution results.
|
|
44
|
-
*/
|
|
45
|
-
|
|
46
|
-
|
|
47
|
+
*/ export class KernelProver {
|
|
48
|
+
oracle;
|
|
49
|
+
proofCreator;
|
|
50
|
+
fakeProofs;
|
|
51
|
+
log;
|
|
52
|
+
constructor(oracle, proofCreator, fakeProofs = false){
|
|
47
53
|
this.oracle = oracle;
|
|
48
54
|
this.proofCreator = proofCreator;
|
|
49
55
|
this.fakeProofs = fakeProofs;
|
|
50
56
|
this.log = createLogger('pxe:kernel-prover');
|
|
51
57
|
}
|
|
52
58
|
/**
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
59
|
+
* Generate a proof for a given transaction request and execution result.
|
|
60
|
+
* The function iterates through the nested executions in the execution result, creates private call data,
|
|
61
|
+
* and generates a proof using the provided ProofCreator instance. It also maintains an index of new notes
|
|
62
|
+
* created during the execution and returns them as a part of the KernelProverOutput.
|
|
63
|
+
*
|
|
64
|
+
* @param txRequest - The authenticated transaction request object.
|
|
65
|
+
* @param executionResult - The execution result object containing nested executions and preimages.
|
|
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
|
+
* @returns A Promise that resolves to a KernelProverOutput object containing proof, public inputs, and output notes.
|
|
69
|
+
* 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, dryRun } = {
|
|
71
|
+
simulate: false,
|
|
72
|
+
skipFeeEnforcement: false,
|
|
73
|
+
profile: false,
|
|
74
|
+
dryRun: false
|
|
75
|
+
}) {
|
|
66
76
|
if (simulate && profile) {
|
|
67
77
|
throw new Error('Cannot simulate and profile at the same time');
|
|
68
78
|
}
|
|
69
79
|
simulate = simulate || this.fakeProofs;
|
|
70
80
|
const timer = new Timer();
|
|
71
81
|
const isPrivateOnlyTx = this.isPrivateOnly(executionResult);
|
|
72
|
-
const executionStack = [
|
|
82
|
+
const executionStack = [
|
|
83
|
+
executionResult.entrypoint
|
|
84
|
+
];
|
|
73
85
|
let firstIteration = true;
|
|
74
86
|
let output = NULL_PROVE_OUTPUT;
|
|
75
87
|
const gateCounts = [];
|
|
76
|
-
const addGateCount = async (circuitName, bytecode)
|
|
77
|
-
const gateCount =
|
|
78
|
-
gateCounts.push({
|
|
88
|
+
const addGateCount = async (circuitName, bytecode)=>{
|
|
89
|
+
const gateCount = await this.proofCreator.computeGateCountForCircuit(bytecode, circuitName);
|
|
90
|
+
gateCounts.push({
|
|
91
|
+
circuitName,
|
|
92
|
+
gateCount
|
|
93
|
+
});
|
|
79
94
|
this.log.info(`Tx ${txRequest.hash()}: bb gates for ${circuitName} - ${gateCount}`);
|
|
80
95
|
};
|
|
81
96
|
const noteHashLeafIndexMap = collectNoteHashLeafIndexMap(executionResult);
|
|
@@ -86,14 +101,12 @@ export class KernelProver {
|
|
|
86
101
|
// vector of gzipped bincode acirs
|
|
87
102
|
const acirs = [];
|
|
88
103
|
const witnessStack = [];
|
|
89
|
-
while
|
|
104
|
+
while(executionStack.length){
|
|
90
105
|
if (!firstIteration) {
|
|
91
106
|
let resetBuilder = new PrivateKernelResetPrivateInputsBuilder(output, executionStack, noteHashNullifierCounterMap, validationRequestsSplitCounter);
|
|
92
|
-
while
|
|
107
|
+
while(resetBuilder.needsReset()){
|
|
93
108
|
const privateInputs = await resetBuilder.build(this.oracle, noteHashLeafIndexMap);
|
|
94
|
-
output = simulate
|
|
95
|
-
? await this.proofCreator.simulateReset(privateInputs)
|
|
96
|
-
: await this.proofCreator.generateResetOutput(privateInputs);
|
|
109
|
+
output = simulate ? await this.proofCreator.simulateReset(privateInputs) : await this.proofCreator.generateResetOutput(privateInputs);
|
|
97
110
|
// TODO(#7368) consider refactoring this redundant bytecode pushing
|
|
98
111
|
acirs.push(output.bytecode);
|
|
99
112
|
witnessStack.push(output.outputWitness);
|
|
@@ -104,7 +117,9 @@ export class KernelProver {
|
|
|
104
117
|
}
|
|
105
118
|
}
|
|
106
119
|
const currentExecution = executionStack.pop();
|
|
107
|
-
executionStack.push(...[
|
|
120
|
+
executionStack.push(...[
|
|
121
|
+
...currentExecution.nestedExecutions
|
|
122
|
+
].reverse());
|
|
108
123
|
const functionName = await this.oracle.getDebugFunctionName(currentExecution.publicInputs.callContext.contractAddress, currentExecution.publicInputs.callContext.functionSelector);
|
|
109
124
|
// TODO(#7368): This used to be associated with getDebugFunctionName
|
|
110
125
|
// TODO(#7368): Is there any way to use this with client IVC proving?
|
|
@@ -118,23 +133,18 @@ export class KernelProver {
|
|
|
118
133
|
const proofInput = new PrivateKernelInitCircuitPrivateInputs(txRequest, getVKTreeRoot(), protocolContractTreeRoot, privateCallData, isPrivateOnlyTx, executionResult.firstNullifier);
|
|
119
134
|
this.log.debug(`Calling private kernel init with isPrivateOnly ${isPrivateOnlyTx} and firstNullifierHint ${proofInput.firstNullifierHint}`);
|
|
120
135
|
pushTestData('private-kernel-inputs-init', proofInput);
|
|
121
|
-
output = simulate
|
|
122
|
-
? await this.proofCreator.simulateInit(proofInput)
|
|
123
|
-
: await this.proofCreator.generateInitOutput(proofInput);
|
|
136
|
+
output = simulate ? await this.proofCreator.simulateInit(proofInput) : await this.proofCreator.generateInitOutput(proofInput);
|
|
124
137
|
acirs.push(output.bytecode);
|
|
125
138
|
witnessStack.push(output.outputWitness);
|
|
126
139
|
if (profile) {
|
|
127
140
|
await addGateCount('private_kernel_init', output.bytecode);
|
|
128
141
|
}
|
|
129
|
-
}
|
|
130
|
-
else {
|
|
142
|
+
} else {
|
|
131
143
|
const previousVkMembershipWitness = await this.oracle.getVkMembershipWitness(output.verificationKey);
|
|
132
144
|
const previousKernelData = new PrivateKernelData(output.publicInputs, output.verificationKey, Number(previousVkMembershipWitness.leafIndex), assertLength(previousVkMembershipWitness.siblingPath, VK_TREE_HEIGHT));
|
|
133
145
|
const proofInput = new PrivateKernelInnerCircuitPrivateInputs(previousKernelData, privateCallData);
|
|
134
146
|
pushTestData('private-kernel-inputs-inner', proofInput);
|
|
135
|
-
output = simulate
|
|
136
|
-
? await this.proofCreator.simulateInner(proofInput)
|
|
137
|
-
: await this.proofCreator.generateInnerOutput(proofInput);
|
|
147
|
+
output = simulate ? await this.proofCreator.simulateInner(proofInput) : await this.proofCreator.generateInnerOutput(proofInput);
|
|
138
148
|
acirs.push(output.bytecode);
|
|
139
149
|
witnessStack.push(output.outputWitness);
|
|
140
150
|
if (profile) {
|
|
@@ -145,11 +155,9 @@ export class KernelProver {
|
|
|
145
155
|
}
|
|
146
156
|
// Reset.
|
|
147
157
|
let resetBuilder = new PrivateKernelResetPrivateInputsBuilder(output, [], noteHashNullifierCounterMap, validationRequestsSplitCounter);
|
|
148
|
-
while
|
|
158
|
+
while(resetBuilder.needsReset()){
|
|
149
159
|
const privateInputs = await resetBuilder.build(this.oracle, noteHashLeafIndexMap);
|
|
150
|
-
output = simulate
|
|
151
|
-
? await this.proofCreator.simulateReset(privateInputs)
|
|
152
|
-
: await this.proofCreator.generateResetOutput(privateInputs);
|
|
160
|
+
output = simulate ? await this.proofCreator.simulateReset(privateInputs) : await this.proofCreator.generateResetOutput(privateInputs);
|
|
153
161
|
acirs.push(output.bytecode);
|
|
154
162
|
witnessStack.push(output.outputWitness);
|
|
155
163
|
if (profile) {
|
|
@@ -157,15 +165,19 @@ export class KernelProver {
|
|
|
157
165
|
}
|
|
158
166
|
resetBuilder = new PrivateKernelResetPrivateInputsBuilder(output, [], noteHashNullifierCounterMap, validationRequestsSplitCounter);
|
|
159
167
|
}
|
|
168
|
+
if (output.publicInputs.feePayer.isZero() && skipFeeEnforcement) {
|
|
169
|
+
if (!dryRun && !simulate) {
|
|
170
|
+
throw new Error('Fee payment must be enforced when creating real proof.');
|
|
171
|
+
}
|
|
172
|
+
output.publicInputs.feePayer = new AztecAddress(Fr.MAX_FIELD_VALUE);
|
|
173
|
+
}
|
|
160
174
|
// Private tail.
|
|
161
175
|
const previousVkMembershipWitness = await this.oracle.getVkMembershipWitness(output.verificationKey);
|
|
162
176
|
const previousKernelData = new PrivateKernelData(output.publicInputs, output.verificationKey, Number(previousVkMembershipWitness.leafIndex), assertLength(previousVkMembershipWitness.siblingPath, VK_TREE_HEIGHT));
|
|
163
177
|
this.log.debug(`Calling private kernel tail with hwm ${previousKernelData.publicInputs.minRevertibleSideEffectCounter}`);
|
|
164
178
|
const privateInputs = new PrivateKernelTailCircuitPrivateInputs(previousKernelData);
|
|
165
179
|
pushTestData('private-kernel-inputs-ordering', privateInputs);
|
|
166
|
-
const tailOutput = simulate
|
|
167
|
-
? await this.proofCreator.simulateTail(privateInputs)
|
|
168
|
-
: await this.proofCreator.generateTailOutput(privateInputs);
|
|
180
|
+
const tailOutput = simulate ? await this.proofCreator.simulateTail(privateInputs) : await this.proofCreator.generateTailOutput(privateInputs);
|
|
169
181
|
if (tailOutput.publicInputs.forPublic) {
|
|
170
182
|
const privateLogs = privateInputs.previousKernel.publicInputs.end.privateLogs;
|
|
171
183
|
const nonRevertiblePrivateLogs = tailOutput.publicInputs.forPublic.nonRevertibleAccumulatedData.privateLogs;
|
|
@@ -176,7 +188,9 @@ export class KernelProver {
|
|
|
176
188
|
witnessStack.push(tailOutput.outputWitness);
|
|
177
189
|
if (profile) {
|
|
178
190
|
await addGateCount('private_kernel_tail', tailOutput.bytecode);
|
|
179
|
-
tailOutput.profileResult = {
|
|
191
|
+
tailOutput.profileResult = {
|
|
192
|
+
gateCounts
|
|
193
|
+
};
|
|
180
194
|
}
|
|
181
195
|
if (!simulate) {
|
|
182
196
|
this.log.info(`Private kernel witness generation took ${timer.ms()}ms`);
|
|
@@ -185,8 +199,7 @@ export class KernelProver {
|
|
|
185
199
|
if (!dryRun && !simulate) {
|
|
186
200
|
const ivcProof = await this.proofCreator.createClientIvcProof(acirs, witnessStack);
|
|
187
201
|
tailOutput.clientIvcProof = ivcProof;
|
|
188
|
-
}
|
|
189
|
-
else {
|
|
202
|
+
} else {
|
|
190
203
|
tailOutput.clientIvcProof = ClientIvcProof.random();
|
|
191
204
|
}
|
|
192
205
|
return tailOutput;
|
|
@@ -195,34 +208,42 @@ export class KernelProver {
|
|
|
195
208
|
const { contractAddress, functionSelector } = publicInputs.callContext;
|
|
196
209
|
const vkAsFields = await vkAsFieldsMegaHonk(vkAsBuffer);
|
|
197
210
|
const vk = new VerificationKeyAsFields(vkAsFields, await hashVK(vkAsFields));
|
|
198
|
-
const
|
|
199
|
-
const
|
|
200
|
-
const { artifactHash: contractClassArtifactHash, publicBytecodeCommitment: contractClassPublicBytecodeCommitment } = await this.oracle.getContractClassIdPreimage(
|
|
211
|
+
const { currentContractClassId, publicKeys, saltedInitializationHash } = await this.oracle.getContractAddressPreimage(contractAddress);
|
|
212
|
+
const functionLeafMembershipWitness = await this.oracle.getFunctionMembershipWitness(currentContractClassId, functionSelector);
|
|
213
|
+
const { artifactHash: contractClassArtifactHash, publicBytecodeCommitment: contractClassPublicBytecodeCommitment } = await this.oracle.getContractClassIdPreimage(currentContractClassId);
|
|
201
214
|
// TODO(#262): Use real acir hash
|
|
202
215
|
// const acirHash = keccak256(Buffer.from(bytecode, 'hex'));
|
|
203
216
|
const acirHash = Fr.fromBuffer(Buffer.alloc(32, 0));
|
|
204
|
-
|
|
217
|
+
// This will be the address computed in the kernel by the executed class. We need to provide non membership of it in the protocol contract tree.
|
|
218
|
+
// This would only be equal to contractAddress if the currentClassId is equal to the original class id (no update happened).
|
|
219
|
+
const computedAddress = await computeContractAddressFromInstance({
|
|
220
|
+
originalContractClassId: currentContractClassId,
|
|
221
|
+
saltedInitializationHash,
|
|
222
|
+
publicKeys
|
|
223
|
+
});
|
|
224
|
+
const { lowLeaf: protocolContractLeaf, witness: protocolContractMembershipWitness } = await getProtocolContractLeafAndMembershipWitness(contractAddress, computedAddress);
|
|
225
|
+
const updatedClassIdHints = await this.oracle.getUpdatedClassIdHints(contractAddress);
|
|
205
226
|
return PrivateCallData.from({
|
|
206
227
|
publicInputs,
|
|
207
228
|
vk,
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
229
|
+
verificationKeyHints: PrivateVerificationKeyHints.from({
|
|
230
|
+
publicKeys,
|
|
231
|
+
contractClassArtifactHash,
|
|
232
|
+
contractClassPublicBytecodeCommitment,
|
|
233
|
+
saltedInitializationHash,
|
|
234
|
+
functionLeafMembershipWitness,
|
|
235
|
+
protocolContractMembershipWitness,
|
|
236
|
+
protocolContractLeaf,
|
|
237
|
+
acirHash,
|
|
238
|
+
updatedClassIdHints
|
|
239
|
+
})
|
|
216
240
|
});
|
|
217
241
|
}
|
|
218
242
|
isPrivateOnly(executionResult) {
|
|
219
|
-
const isPrivateOnlyRecursive = (callResult)
|
|
220
|
-
const makesPublicCalls = callResult.enqueuedPublicFunctionCalls.some(enqueuedCall
|
|
221
|
-
|
|
222
|
-
return (!makesPublicCalls &&
|
|
223
|
-
callResult.nestedExecutions.every(nestedExecution => isPrivateOnlyRecursive(nestedExecution)));
|
|
243
|
+
const isPrivateOnlyRecursive = (callResult)=>{
|
|
244
|
+
const makesPublicCalls = callResult.enqueuedPublicFunctionCalls.some((enqueuedCall)=>!enqueuedCall.isEmpty()) || !callResult.publicTeardownFunctionCall.isEmpty();
|
|
245
|
+
return !makesPublicCalls && callResult.nestedExecutions.every((nestedExecution)=>isPrivateOnlyRecursive(nestedExecution));
|
|
224
246
|
};
|
|
225
247
|
return isPrivateOnlyRecursive(executionResult.entrypoint);
|
|
226
248
|
}
|
|
227
249
|
}
|
|
228
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2VybmVsX3Byb3Zlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9rZXJuZWxfcHJvdmVyL2tlcm5lbF9wcm92ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUtMLGtDQUFrQyxFQUNsQywyQkFBMkIsRUFDM0Isa0NBQWtDLEVBQ2xDLGlDQUFpQyxFQUNqQyxzQ0FBc0MsR0FDdkMsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQ0wsNENBQTRDLEVBQzVDLGNBQWMsRUFDZCxFQUFFLEVBQ0YsZUFBZSxFQUNmLGdDQUFnQyxFQUNoQyxpQkFBaUIsRUFDakIscUNBQXFDLEVBQ3JDLHNDQUFzQyxFQUN0QyxxQ0FBcUMsRUFLckMsY0FBYyxFQUNkLHVCQUF1QixHQUN4QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSwyQ0FBMkMsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBR2xILE9BQU8sRUFBRSxNQUFNLElBQUksTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxzQ0FBc0MsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBRzlHLG9JQUFvSTtBQUNwSSw2RUFBNkU7QUFDN0UsU0FBUyxnQkFBZ0IsQ0FDdkIs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
|
|
@@ -1,6 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
1
|
+
import type { FUNCTION_TREE_HEIGHT, NOTE_HASH_TREE_HEIGHT, VK_TREE_HEIGHT } from '@aztec/constants';
|
|
2
|
+
import type { Fr, GrumpkinScalar, Point } from '@aztec/foundation/fields';
|
|
3
|
+
import type { MembershipWitness } from '@aztec/foundation/trees';
|
|
4
|
+
import type { FunctionSelector } from '@aztec/stdlib/abi';
|
|
5
|
+
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
6
|
+
import { UpdatedClassIdHints } from '@aztec/stdlib/kernel';
|
|
7
|
+
import type { PublicKeys } from '@aztec/stdlib/keys';
|
|
8
|
+
import type { NullifierMembershipWitness } from '@aztec/stdlib/trees';
|
|
9
|
+
import type { VerificationKeyAsFields } from '@aztec/stdlib/vks';
|
|
4
10
|
/**
|
|
5
11
|
* Provides functionality to fetch membership witnesses for verification keys,
|
|
6
12
|
* contract addresses, and function selectors in their respective merkle trees.
|
|
@@ -10,7 +16,8 @@ export interface ProvingDataOracle {
|
|
|
10
16
|
getContractAddressPreimage(address: AztecAddress): Promise<{
|
|
11
17
|
saltedInitializationHash: Fr;
|
|
12
18
|
publicKeys: PublicKeys;
|
|
13
|
-
|
|
19
|
+
currentContractClassId: Fr;
|
|
20
|
+
originalContractClassId: Fr;
|
|
14
21
|
}>;
|
|
15
22
|
/** Retrieves the preimage of a contract class id from the contract classes db. */
|
|
16
23
|
getContractClassIdPreimage(contractClassId: Fr): Promise<{
|
|
@@ -19,15 +26,15 @@ export interface ProvingDataOracle {
|
|
|
19
26
|
privateFunctionsRoot: Fr;
|
|
20
27
|
}>;
|
|
21
28
|
/**
|
|
22
|
-
* Retrieve the function membership witness for the given contract
|
|
29
|
+
* Retrieve the function membership witness for the given contract class and function selector.
|
|
23
30
|
* The function membership witness represents a proof that the function belongs to the specified contract.
|
|
24
31
|
* Throws an error if the contract address or function selector is unknown.
|
|
25
32
|
*
|
|
26
|
-
* @param
|
|
33
|
+
* @param contractClassId - The id of the class.
|
|
27
34
|
* @param selector - The function selector.
|
|
28
35
|
* @returns A promise that resolves with the MembershipWitness instance for the specified contract's function.
|
|
29
36
|
*/
|
|
30
|
-
getFunctionMembershipWitness(
|
|
37
|
+
getFunctionMembershipWitness(contractClassId: Fr, selector: FunctionSelector): Promise<MembershipWitness<typeof FUNCTION_TREE_HEIGHT>>;
|
|
31
38
|
/**
|
|
32
39
|
* Retrieve the membership witness corresponding to a verification key.
|
|
33
40
|
* This function currently returns a random membership witness of the specified height,
|
|
@@ -61,5 +68,6 @@ export interface ProvingDataOracle {
|
|
|
61
68
|
*/
|
|
62
69
|
getMasterSecretKey(masterPublicKey: Point): Promise<GrumpkinScalar>;
|
|
63
70
|
getDebugFunctionName(contractAddress: AztecAddress, selector: FunctionSelector): Promise<string | undefined>;
|
|
71
|
+
getUpdatedClassIdHints(contractAddress: AztecAddress): Promise<UpdatedClassIdHints>;
|
|
64
72
|
}
|
|
65
73
|
//# sourceMappingURL=proving_data_oracle.d.ts.map
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"proving_data_oracle.d.ts","sourceRoot":"","sources":["../../src/kernel_prover/proving_data_oracle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACpG,OAAO,KAAK,EAAE,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAEjE;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,8FAA8F;IAC9F,0BAA0B,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC;QACzD,wBAAwB,EAAE,EAAE,CAAC;QAC7B,UAAU,EAAE,UAAU,CAAC;QACvB,sBAAsB,EAAE,EAAE,CAAC;QAC3B,uBAAuB,EAAE,EAAE,CAAC;KAC7B,CAAC,CAAC;IAEH,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,EAAE,EACnB,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,iBAAiB,CAAC,OAAO,oBAAoB,CAAC,CAAC,CAAC;IAE3D;;;;;;;;OAQG;IACH,sBAAsB,CAAC,EAAE,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC;IAEvG;;;;;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;;;;;;OAMG;IACH,kBAAkB,CAAC,eAAe,EAAE,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAEpE,oBAAoB,CAAC,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAE7G,sBAAsB,CAAC,eAAe,EAAE,YAAY,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;CACrF"}
|
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Provides functionality to fetch membership witnesses for verification keys,
|
|
3
|
+
* contract addresses, and function selectors in their respective merkle trees.
|
|
4
|
+
*/ export { };
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import type { L1NotePayload } from '@aztec/stdlib/logs';
|
|
2
|
+
import { Note } from '@aztec/stdlib/note';
|
|
3
|
+
import type { PxeDatabase } from '../database/pxe_database.js';
|
|
3
4
|
/**
|
|
4
5
|
* Merges privately and publicly delivered note values.
|
|
5
6
|
* @param db - PXE database used to fetch contract instance and artifact.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add_public_values_to_payload.d.ts","sourceRoot":"","sources":["../../src/note_decryption_utils/add_public_values_to_payload.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"add_public_values_to_payload.d.ts","sourceRoot":"","sources":["../../src/note_decryption_utils/add_public_values_to_payload.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE/D;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,WAAW,EACf,EAAE,eAAe,EAAE,UAAU,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,EAAE,aAAa,GAClF,OAAO,CAAC,IAAI,CAAC,CAgDf"}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
import { Note } from '@aztec/circuit-types';
|
|
2
1
|
import { ContractNotFoundError } from '@aztec/simulator/client';
|
|
2
|
+
import { Note } from '@aztec/stdlib/note';
|
|
3
3
|
/**
|
|
4
4
|
* Merges privately and publicly delivered note values.
|
|
5
5
|
* @param db - PXE database used to fetch contract instance and artifact.
|
|
6
6
|
* @param payload - Payload corresponding to the note.
|
|
7
7
|
* @returns Note payload with public fields added.
|
|
8
|
-
*/
|
|
9
|
-
export async function getOrderedNoteItems(db, { contractAddress, noteTypeId, privateNoteValues, publicNoteValues }) {
|
|
8
|
+
*/ export async function getOrderedNoteItems(db, { contractAddress, noteTypeId, privateNoteValues, publicNoteValues }) {
|
|
10
9
|
if (publicNoteValues.length === 0) {
|
|
11
10
|
return new Note(privateNoteValues);
|
|
12
11
|
}
|
|
@@ -14,27 +13,28 @@ export async function getOrderedNoteItems(db, { contractAddress, noteTypeId, pri
|
|
|
14
13
|
if (!instance) {
|
|
15
14
|
throw new ContractNotFoundError(`Could not find instance for ${contractAddress.toString()}. This should never happen here as the partial notes flow should be triggered only for non-deferred notes.`);
|
|
16
15
|
}
|
|
17
|
-
const artifact = await db.getContractArtifact(instance.
|
|
16
|
+
const artifact = await db.getContractArtifact(instance.currentContractClassId);
|
|
18
17
|
if (!artifact) {
|
|
19
|
-
throw new Error(`Could not find artifact for contract class ${instance.
|
|
18
|
+
throw new Error(`Could not find artifact for contract class ${instance.currentContractClassId.toString()}. This should never happen here as the partial notes flow should be triggered only for non-deferred notes.`);
|
|
20
19
|
}
|
|
21
|
-
const noteFields = Object.values(artifact.notes).find(note
|
|
20
|
+
const noteFields = Object.values(artifact.notes).find((note)=>note.id.equals(noteTypeId))?.fields;
|
|
22
21
|
if (!noteFields) {
|
|
23
22
|
throw new Error(`Could not find note fields for note type ${noteTypeId.toString()}.`);
|
|
24
23
|
}
|
|
25
24
|
// We sort note fields by index so that we can iterate over them in order.
|
|
26
|
-
noteFields.sort((a, b)
|
|
25
|
+
noteFields.sort((a, b)=>a.index - b.index);
|
|
27
26
|
// Now we insert the public fields into the note based on its indices defined in the ABI.
|
|
28
|
-
const modifiedNoteItems = [
|
|
27
|
+
const modifiedNoteItems = [
|
|
28
|
+
...privateNoteValues
|
|
29
|
+
];
|
|
29
30
|
let indexInPublicValues = 0;
|
|
30
|
-
for
|
|
31
|
+
for(let i = 0; i < noteFields.length; i++){
|
|
31
32
|
const noteField = noteFields[i];
|
|
32
33
|
if (noteField.nullable) {
|
|
33
34
|
if (i == noteFields.length - 1) {
|
|
34
35
|
// We are processing the last field so we simply insert the rest of the public fields at the end
|
|
35
36
|
modifiedNoteItems.push(...publicNoteValues.slice(indexInPublicValues));
|
|
36
|
-
}
|
|
37
|
-
else {
|
|
37
|
+
} else {
|
|
38
38
|
const noteFieldLength = noteFields[i + 1].index - noteField.index;
|
|
39
39
|
const publicValuesToInsert = publicNoteValues.slice(indexInPublicValues, indexInPublicValues + noteFieldLength);
|
|
40
40
|
indexInPublicValues += noteFieldLength;
|
|
@@ -45,4 +45,3 @@ export async function getOrderedNoteItems(db, { contractAddress, noteTypeId, pri
|
|
|
45
45
|
}
|
|
46
46
|
return new Note(modifiedNoteItems);
|
|
47
47
|
}
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkX3B1YmxpY192YWx1ZXNfdG9fcGF5bG9hZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub3RlX2RlY3J5cHRpb25fdXRpbHMvYWRkX3B1YmxpY192YWx1ZXNfdG9fcGF5bG9hZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXNCLElBQUksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBSWhFOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxtQkFBbUIsQ0FDdkMsRUFBZSxFQUNmLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBaUI7SUFFbkYsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDbEMsT0FBTyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxNQUFNLFFBQVEsR0FBRyxNQUFNLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUMvRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDZCxNQUFNLElBQUkscUJBQXFCLENBQzdCLCtCQUErQixlQUFlLENBQUMsUUFBUSxFQUFFLDRHQUE0RyxDQUN0SyxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sUUFBUSxHQUFHLE1BQU0sRUFBRSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUN4RSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDZCxNQUFNLElBQUksS0FBSyxDQUNiLDhDQUE4QyxRQUFRLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSw0R0FBNEcsQ0FDOUwsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUVsRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyw0Q0FBNEMsVUFBVSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBRUQsMEVBQTBFO0lBQzFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUU3Qyx5RkFBeUY7SUFDekYsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEdBQUcsaUJBQWlCLENBQUMsQ0FBQztJQUNqRCxJQUFJLG1CQUFtQixHQUFHLENBQUMsQ0FBQztJQUM1QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQzNDLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoQyxJQUFJLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUMvQixnR0FBZ0c7Z0JBQ2hHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7WUFDekUsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sZUFBZSxHQUFHLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUM7Z0JBQ2xFLE1BQU0sb0JBQW9CLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLG1CQUFtQixFQUFFLG1CQUFtQixHQUFHLGVBQWUsQ0FBQyxDQUFDO2dCQUNoSCxtQkFBbUIsSUFBSSxlQUFlLENBQUM7Z0JBQ3ZDLDBEQUEwRDtnQkFDMUQsaUJBQWlCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEdBQUcsb0JBQW9CLENBQUMsQ0FBQztZQUN4RSxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDckMsQ0FBQyJ9
|
package/dest/pxe_http/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
-
import { type PXE } from '@aztec/
|
|
2
|
+
import { type PXE } from '@aztec/stdlib/interfaces/client';
|
|
3
3
|
import http from 'http';
|
|
4
4
|
/**
|
|
5
5
|
* Wraps an instance of Private eXecution Environment (PXE) implementation to a JSON RPC HTTP interface.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pxe_http_server.d.ts","sourceRoot":"","sources":["../../src/pxe_http/pxe_http_server.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"pxe_http_server.d.ts","sourceRoot":"","sources":["../../src/pxe_http/pxe_http_server.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,KAAK,GAAG,EAAa,MAAM,iCAAiC,CAAC;AAEtE,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,GAAG,iEAEjD;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,MAAM,CAStF"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import { PXESchema } from '@aztec/circuit-types';
|
|
2
1
|
import { createNamespacedSafeJsonRpcServer, createSafeJsonRpcServer } from '@aztec/foundation/json-rpc/server';
|
|
2
|
+
import { PXESchema } from '@aztec/stdlib/interfaces/client';
|
|
3
3
|
import http from 'http';
|
|
4
4
|
/**
|
|
5
5
|
* Wraps an instance of Private eXecution Environment (PXE) implementation to a JSON RPC HTTP interface.
|
|
6
6
|
* @returns A new instance of the HTTP server.
|
|
7
|
-
*/
|
|
8
|
-
export function createPXERpcServer(pxeService) {
|
|
7
|
+
*/ export function createPXERpcServer(pxeService) {
|
|
9
8
|
return createSafeJsonRpcServer(pxeService, PXESchema);
|
|
10
9
|
}
|
|
11
10
|
/**
|
|
@@ -13,13 +12,16 @@ export function createPXERpcServer(pxeService) {
|
|
|
13
12
|
* @param pxeService - PXE that answers queries to the created HTTP server.
|
|
14
13
|
* @param port - Port to listen in.
|
|
15
14
|
* @returns A running http server.
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
*/ export function startPXEHttpServer(pxeService, port) {
|
|
16
|
+
const rpcServer = createNamespacedSafeJsonRpcServer({
|
|
17
|
+
pxe: [
|
|
18
|
+
pxeService,
|
|
19
|
+
PXESchema
|
|
20
|
+
]
|
|
21
|
+
});
|
|
19
22
|
const app = rpcServer.getApp();
|
|
20
23
|
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
|
21
24
|
const httpServer = http.createServer(app.callback());
|
|
22
25
|
httpServer.listen(port);
|
|
23
26
|
return httpServer;
|
|
24
27
|
}
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHhlX2h0dHBfc2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B4ZV9odHRwL3B4ZV9odHRwX3NlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVksU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFL0csT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBRXhCOzs7R0FHRztBQUNILE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxVQUFlO0lBQ2hELE9BQU8sdUJBQXVCLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ3hELENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxVQUFlLEVBQUUsSUFBcUI7SUFDdkUsTUFBTSxTQUFTLEdBQUcsaUNBQWlDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRXRGLE1BQU0sR0FBRyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUMvQixrRUFBa0U7SUFDbEUsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNyRCxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXhCLE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUMifQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { type
|
|
3
|
-
import {
|
|
1
|
+
import type { Logger } from '@aztec/foundation/log';
|
|
2
|
+
import { type SimulationError } from '@aztec/stdlib/errors';
|
|
3
|
+
import type { ContractDataOracle, PxeDatabase } from '../index.js';
|
|
4
4
|
/**
|
|
5
5
|
* Adds contract and function names to a simulation error, if they
|
|
6
6
|
* can be found in the PXE database
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error_enriching.d.ts","sourceRoot":"","sources":["../../src/pxe_service/error_enriching.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"error_enriching.d.ts","sourceRoot":"","sources":["../../src/pxe_service/error_enriching.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAIpD,OAAO,EAAE,KAAK,eAAe,EAA6B,MAAM,sBAAsB,CAAC;AAEvF,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEnE;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,eAAe,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,iBAwChG;AAED,wBAAsB,2BAA2B,CAC/C,GAAG,EAAE,eAAe,EACpB,kBAAkB,EAAE,kBAAkB,EACtC,EAAE,EAAE,WAAW,EACf,MAAM,EAAE,MAAM,iBAyCf"}
|