@aztec/pxe 0.74.0 → 0.75.0-commit.c03ba01a2a4122e43e90d5133ba017e54b90e9d2
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 +3 -5
- package/dest/config/index.js +18 -21
- package/dest/config/package_info.js +4 -2
- package/dest/contract_data_oracle/index.js +69 -79
- package/dest/contract_data_oracle/private_functions_tree.js +44 -50
- package/dest/database/contracts/contract_artifact_db.js +3 -2
- package/dest/database/contracts/contract_instance_db.js +3 -2
- package/dest/database/index.js +0 -1
- package/dest/database/kv_pxe_database.js +243 -259
- package/dest/database/note_dao.js +28 -43
- package/dest/database/outgoing_note_dao.js +20 -34
- package/dest/database/pxe_database.js +4 -2
- package/dest/database/pxe_database_test_suite.js +296 -151
- package/dest/index.js +0 -1
- package/dest/kernel_oracle/index.js +9 -6
- package/dest/kernel_prover/hints/build_private_kernel_reset_private_inputs.js +68 -66
- package/dest/kernel_prover/hints/index.js +0 -1
- package/dest/kernel_prover/index.js +0 -1
- package/dest/kernel_prover/kernel_prover.js +60 -65
- package/dest/kernel_prover/proving_data_oracle.js +4 -2
- package/dest/note_decryption_utils/add_public_values_to_payload.js +8 -9
- package/dest/pxe_http/index.js +0 -1
- package/dest/pxe_http/pxe_http_server.js +8 -6
- package/dest/pxe_service/error_enriching.js +10 -13
- package/dest/pxe_service/index.js +0 -1
- package/dest/pxe_service/pxe_service.js +282 -290
- package/dest/pxe_service/test/pxe_test_suite.js +40 -27
- package/dest/simulator/index.js +1 -3
- package/dest/simulator_oracle/index.js +266 -231
- package/dest/simulator_oracle/tagging_utils.js +4 -6
- package/dest/synchronizer/index.js +0 -1
- package/dest/synchronizer/synchronizer.js +42 -42
- package/dest/utils/create_pxe_service.js +9 -9
- package/package.json +15 -15
- package/src/pxe_service/pxe_service.ts +6 -11
- package/dest/bin/index.d.ts +0 -3
- package/dest/bin/index.d.ts.map +0 -1
- package/dest/config/index.d.ts +0 -46
- package/dest/config/index.d.ts.map +0 -1
- package/dest/config/package_info.d.ts +0 -5
- package/dest/config/package_info.d.ts.map +0 -1
- package/dest/contract_data_oracle/index.d.ts +0 -104
- package/dest/contract_data_oracle/index.d.ts.map +0 -1
- package/dest/contract_data_oracle/private_functions_tree.d.ts +0 -65
- package/dest/contract_data_oracle/private_functions_tree.d.ts.map +0 -1
- package/dest/database/contracts/contract_artifact_db.d.ts +0 -20
- package/dest/database/contracts/contract_artifact_db.d.ts.map +0 -1
- package/dest/database/contracts/contract_instance_db.d.ts +0 -19
- package/dest/database/contracts/contract_instance_db.d.ts.map +0 -1
- package/dest/database/index.d.ts +0 -3
- package/dest/database/index.d.ts.map +0 -1
- package/dest/database/kv_pxe_database.d.ts +0 -55
- package/dest/database/kv_pxe_database.d.ts.map +0 -1
- package/dest/database/note_dao.d.ts +0 -103
- package/dest/database/note_dao.d.ts.map +0 -1
- package/dest/database/outgoing_note_dao.d.ts +0 -73
- package/dest/database/outgoing_note_dao.d.ts.map +0 -1
- package/dest/database/pxe_database.d.ts +0 -216
- package/dest/database/pxe_database.d.ts.map +0 -1
- package/dest/database/pxe_database_test_suite.d.ts +0 -7
- package/dest/database/pxe_database_test_suite.d.ts.map +0 -1
- package/dest/index.d.ts +0 -15
- package/dest/index.d.ts.map +0 -1
- package/dest/kernel_oracle/index.d.ts +0 -34
- package/dest/kernel_oracle/index.d.ts.map +0 -1
- package/dest/kernel_prover/hints/build_private_kernel_reset_private_inputs.d.ts +0 -28
- package/dest/kernel_prover/hints/build_private_kernel_reset_private_inputs.d.ts.map +0 -1
- package/dest/kernel_prover/hints/index.d.ts +0 -2
- package/dest/kernel_prover/hints/index.d.ts.map +0 -1
- package/dest/kernel_prover/index.d.ts +0 -3
- package/dest/kernel_prover/index.d.ts.map +0 -1
- package/dest/kernel_prover/kernel_prover.d.ts +0 -38
- package/dest/kernel_prover/kernel_prover.d.ts.map +0 -1
- package/dest/kernel_prover/proving_data_oracle.d.ts +0 -65
- package/dest/kernel_prover/proving_data_oracle.d.ts.map +0 -1
- package/dest/note_decryption_utils/add_public_values_to_payload.d.ts +0 -10
- package/dest/note_decryption_utils/add_public_values_to_payload.d.ts.map +0 -1
- package/dest/pxe_http/index.d.ts +0 -2
- package/dest/pxe_http/index.d.ts.map +0 -1
- package/dest/pxe_http/pxe_http_server.d.ts +0 -16
- package/dest/pxe_http/pxe_http_server.d.ts.map +0 -1
- package/dest/pxe_service/error_enriching.d.ts +0 -11
- package/dest/pxe_service/error_enriching.d.ts.map +0 -1
- package/dest/pxe_service/index.d.ts +0 -4
- package/dest/pxe_service/index.d.ts.map +0 -1
- package/dest/pxe_service/pxe_service.d.ts +0 -98
- package/dest/pxe_service/pxe_service.d.ts.map +0 -1
- package/dest/pxe_service/test/pxe_test_suite.d.ts +0 -3
- package/dest/pxe_service/test/pxe_test_suite.d.ts.map +0 -1
- package/dest/simulator/index.d.ts +0 -10
- package/dest/simulator/index.d.ts.map +0 -1
- package/dest/simulator_oracle/index.d.ts +0 -129
- package/dest/simulator_oracle/index.d.ts.map +0 -1
- package/dest/simulator_oracle/tagging_utils.d.ts +0 -16
- package/dest/simulator_oracle/tagging_utils.d.ts.map +0 -1
- package/dest/synchronizer/index.d.ts +0 -2
- package/dest/synchronizer/index.d.ts.map +0 -1
- package/dest/synchronizer/synchronizer.d.ts +0 -30
- package/dest/synchronizer/synchronizer.d.ts.map +0 -1
- package/dest/utils/create_pxe_service.d.ts +0 -16
- package/dest/utils/create_pxe_service.d.ts.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { collectEnqueuedPublicFunctionCalls, collectNoteHashLeafIndexMap, collectNoteHashNullifierCounterMap, collectPublicTeardownFunctionCall, getFinalMinRevertibleSideEffectCounter
|
|
2
|
-
import { CLIENT_IVC_VERIFICATION_KEY_LENGTH_IN_FIELDS, ClientIvcProof, Fr, PROTOCOL_CONTRACT_TREE_HEIGHT, PrivateCallData, PrivateKernelCircuitPublicInputs, PrivateKernelData, PrivateKernelInitCircuitPrivateInputs, PrivateKernelInnerCircuitPrivateInputs, PrivateKernelTailCircuitPrivateInputs, VK_TREE_HEIGHT, VerificationKeyAsFields
|
|
1
|
+
import { collectEnqueuedPublicFunctionCalls, collectNoteHashLeafIndexMap, collectNoteHashNullifierCounterMap, collectPublicTeardownFunctionCall, getFinalMinRevertibleSideEffectCounter } from '@aztec/circuit-types';
|
|
2
|
+
import { CLIENT_IVC_VERIFICATION_KEY_LENGTH_IN_FIELDS, ClientIvcProof, Fr, PROTOCOL_CONTRACT_TREE_HEIGHT, PrivateCallData, PrivateKernelCircuitPublicInputs, PrivateKernelData, PrivateKernelInitCircuitPrivateInputs, PrivateKernelInnerCircuitPrivateInputs, PrivateKernelTailCircuitPrivateInputs, VK_TREE_HEIGHT, VerificationKeyAsFields } from '@aztec/circuits.js';
|
|
3
3
|
import { hashVK } from '@aztec/circuits.js/hash';
|
|
4
4
|
import { makeTuple } from '@aztec/foundation/array';
|
|
5
5
|
import { vkAsFieldsMegaHonk } from '@aztec/foundation/crypto';
|
|
@@ -8,7 +8,7 @@ import { assertLength } from '@aztec/foundation/serialize';
|
|
|
8
8
|
import { pushTestData } from '@aztec/foundation/testing';
|
|
9
9
|
import { Timer } from '@aztec/foundation/timer';
|
|
10
10
|
import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vks';
|
|
11
|
-
import { getProtocolContractSiblingPath, isProtocolContract, protocolContractTreeRoot
|
|
11
|
+
import { getProtocolContractSiblingPath, isProtocolContract, protocolContractTreeRoot } from '@aztec/protocol-contracts';
|
|
12
12
|
import { strict as assert } from 'assert';
|
|
13
13
|
import { PrivateKernelResetPrivateInputsBuilder } from './hints/build_private_kernel_reset_private_inputs.js';
|
|
14
14
|
// TODO(#10592): Temporary workaround to check that the private logs are correctly split into non-revertible set and revertible set.
|
|
@@ -16,67 +16,75 @@ import { PrivateKernelResetPrivateInputsBuilder } from './hints/build_private_ke
|
|
|
16
16
|
function checkPrivateLogs(privateLogs, nonRevertiblePrivateLogs, revertiblePrivateLogs, splitCounter) {
|
|
17
17
|
let numNonRevertible = 0;
|
|
18
18
|
let numRevertible = 0;
|
|
19
|
-
privateLogs
|
|
20
|
-
.filter(privateLog => privateLog.inner.counter !== 0)
|
|
21
|
-
.forEach(privateLog => {
|
|
19
|
+
privateLogs.filter((privateLog)=>privateLog.inner.counter !== 0).forEach((privateLog)=>{
|
|
22
20
|
if (privateLog.inner.counter < splitCounter) {
|
|
23
21
|
assert(privateLog.inner.log.toBuffer().equals(nonRevertiblePrivateLogs[numNonRevertible].toBuffer()), `mismatch non-revertible private logs at index ${numNonRevertible}`);
|
|
24
22
|
numNonRevertible++;
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
23
|
+
} else {
|
|
27
24
|
assert(privateLog.inner.log.toBuffer().equals(revertiblePrivateLogs[numRevertible].toBuffer()), `mismatch revertible private logs at index ${numRevertible}`);
|
|
28
25
|
numRevertible++;
|
|
29
26
|
}
|
|
30
27
|
});
|
|
31
|
-
assert(nonRevertiblePrivateLogs.slice(numNonRevertible).every(l
|
|
32
|
-
assert(revertiblePrivateLogs.slice(numRevertible).every(l
|
|
28
|
+
assert(nonRevertiblePrivateLogs.slice(numNonRevertible).every((l)=>l.isEmpty()), 'Unexpected non-empty private log in non-revertible set.');
|
|
29
|
+
assert(revertiblePrivateLogs.slice(numRevertible).every((l)=>l.isEmpty()), 'Unexpected non-empty private log in revertible set.');
|
|
33
30
|
}
|
|
34
31
|
const NULL_PROVE_OUTPUT = {
|
|
35
32
|
publicInputs: PrivateKernelCircuitPublicInputs.empty(),
|
|
36
33
|
verificationKey: VerificationKeyAsFields.makeEmpty(CLIENT_IVC_VERIFICATION_KEY_LENGTH_IN_FIELDS),
|
|
37
34
|
outputWitness: new Map(),
|
|
38
|
-
bytecode: Buffer.from([])
|
|
35
|
+
bytecode: Buffer.from([])
|
|
39
36
|
};
|
|
40
37
|
/**
|
|
41
38
|
* The KernelProver class is responsible for generating kernel proofs.
|
|
42
39
|
* It takes a transaction request, its signature, and the simulation result as inputs, and outputs a proof
|
|
43
40
|
* along with output notes. The class interacts with a ProvingDataOracle to fetch membership witnesses and
|
|
44
41
|
* constructs private call data based on the execution results.
|
|
45
|
-
*/
|
|
46
|
-
|
|
47
|
-
|
|
42
|
+
*/ export class KernelProver {
|
|
43
|
+
oracle;
|
|
44
|
+
proofCreator;
|
|
45
|
+
fakeProofs;
|
|
46
|
+
log;
|
|
47
|
+
constructor(oracle, proofCreator, fakeProofs = false){
|
|
48
48
|
this.oracle = oracle;
|
|
49
49
|
this.proofCreator = proofCreator;
|
|
50
50
|
this.fakeProofs = fakeProofs;
|
|
51
51
|
this.log = createLogger('pxe:kernel-prover');
|
|
52
52
|
}
|
|
53
53
|
/**
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
54
|
+
* Generate a proof for a given transaction request and execution result.
|
|
55
|
+
* The function iterates through the nested executions in the execution result, creates private call data,
|
|
56
|
+
* and generates a proof using the provided ProofCreator instance. It also maintains an index of new notes
|
|
57
|
+
* created during the execution and returns them as a part of the KernelProverOutput.
|
|
58
|
+
*
|
|
59
|
+
* @param txRequest - The authenticated transaction request object.
|
|
60
|
+
* @param executionResult - The execution result object containing nested executions and preimages.
|
|
61
|
+
* @param profile - Set true to profile the gate count for each circuit
|
|
62
|
+
* @param dryRun - Set true to skip the IVC proof generation (only simulation is run). Useful for profiling gate count without proof gen.
|
|
63
|
+
* @returns A Promise that resolves to a KernelProverOutput object containing proof, public inputs, and output notes.
|
|
64
|
+
* TODO(#7368) this should be refactored to not recreate the ACIR bytecode now that it operates on a program stack
|
|
65
|
+
*/ async prove(txRequest, executionResult, { simulate, profile, dryRun } = {
|
|
66
|
+
simulate: false,
|
|
67
|
+
profile: false,
|
|
68
|
+
dryRun: false
|
|
69
|
+
}) {
|
|
67
70
|
if (simulate && profile) {
|
|
68
71
|
throw new Error('Cannot simulate and profile at the same time');
|
|
69
72
|
}
|
|
70
73
|
simulate = simulate || this.fakeProofs;
|
|
71
74
|
const timer = new Timer();
|
|
72
75
|
const isPrivateOnlyTx = this.isPrivateOnly(executionResult);
|
|
73
|
-
const executionStack = [
|
|
76
|
+
const executionStack = [
|
|
77
|
+
executionResult.entrypoint
|
|
78
|
+
];
|
|
74
79
|
let firstIteration = true;
|
|
75
80
|
let output = NULL_PROVE_OUTPUT;
|
|
76
81
|
const gateCounts = [];
|
|
77
|
-
const addGateCount = async (circuitName, bytecode)
|
|
78
|
-
const gateCount =
|
|
79
|
-
gateCounts.push({
|
|
82
|
+
const addGateCount = async (circuitName, bytecode)=>{
|
|
83
|
+
const gateCount = await this.proofCreator.computeGateCountForCircuit(bytecode, circuitName);
|
|
84
|
+
gateCounts.push({
|
|
85
|
+
circuitName,
|
|
86
|
+
gateCount
|
|
87
|
+
});
|
|
80
88
|
this.log.info(`Tx ${txRequest.hash()}: bb gates for ${circuitName} - ${gateCount}`);
|
|
81
89
|
};
|
|
82
90
|
const noteHashLeafIndexMap = collectNoteHashLeafIndexMap(executionResult);
|
|
@@ -87,14 +95,12 @@ export class KernelProver {
|
|
|
87
95
|
// vector of gzipped bincode acirs
|
|
88
96
|
const acirs = [];
|
|
89
97
|
const witnessStack = [];
|
|
90
|
-
while
|
|
98
|
+
while(executionStack.length){
|
|
91
99
|
if (!firstIteration) {
|
|
92
100
|
let resetBuilder = new PrivateKernelResetPrivateInputsBuilder(output, executionStack, noteHashNullifierCounterMap, validationRequestsSplitCounter);
|
|
93
|
-
while
|
|
101
|
+
while(resetBuilder.needsReset()){
|
|
94
102
|
const privateInputs = await resetBuilder.build(this.oracle, noteHashLeafIndexMap);
|
|
95
|
-
output = simulate
|
|
96
|
-
? await this.proofCreator.simulateReset(privateInputs)
|
|
97
|
-
: await this.proofCreator.generateResetOutput(privateInputs);
|
|
103
|
+
output = simulate ? await this.proofCreator.simulateReset(privateInputs) : await this.proofCreator.generateResetOutput(privateInputs);
|
|
98
104
|
// TODO(#7368) consider refactoring this redundant bytecode pushing
|
|
99
105
|
acirs.push(output.bytecode);
|
|
100
106
|
witnessStack.push(output.outputWitness);
|
|
@@ -105,7 +111,9 @@ export class KernelProver {
|
|
|
105
111
|
}
|
|
106
112
|
}
|
|
107
113
|
const currentExecution = executionStack.pop();
|
|
108
|
-
executionStack.push(...[
|
|
114
|
+
executionStack.push(...[
|
|
115
|
+
...currentExecution.nestedExecutions
|
|
116
|
+
].reverse());
|
|
109
117
|
const functionName = await this.oracle.getDebugFunctionName(currentExecution.publicInputs.callContext.contractAddress, currentExecution.publicInputs.callContext.functionSelector);
|
|
110
118
|
// TODO(#7368): This used to be associated with getDebugFunctionName
|
|
111
119
|
// TODO(#7368): Is there any way to use this with client IVC proving?
|
|
@@ -119,23 +127,18 @@ export class KernelProver {
|
|
|
119
127
|
const proofInput = new PrivateKernelInitCircuitPrivateInputs(txRequest, await getVKTreeRoot(), protocolContractTreeRoot, privateCallData, isPrivateOnlyTx, executionResult.firstNullifier);
|
|
120
128
|
this.log.debug(`Calling private kernel init with isPrivateOnly ${isPrivateOnlyTx} and firstNullifierHint ${proofInput.firstNullifierHint}`);
|
|
121
129
|
pushTestData('private-kernel-inputs-init', proofInput);
|
|
122
|
-
output = simulate
|
|
123
|
-
? await this.proofCreator.simulateInit(proofInput)
|
|
124
|
-
: await this.proofCreator.generateInitOutput(proofInput);
|
|
130
|
+
output = simulate ? await this.proofCreator.simulateInit(proofInput) : await this.proofCreator.generateInitOutput(proofInput);
|
|
125
131
|
acirs.push(output.bytecode);
|
|
126
132
|
witnessStack.push(output.outputWitness);
|
|
127
133
|
if (profile) {
|
|
128
134
|
await addGateCount('private_kernel_init', output.bytecode);
|
|
129
135
|
}
|
|
130
|
-
}
|
|
131
|
-
else {
|
|
136
|
+
} else {
|
|
132
137
|
const previousVkMembershipWitness = await this.oracle.getVkMembershipWitness(output.verificationKey);
|
|
133
138
|
const previousKernelData = new PrivateKernelData(output.publicInputs, output.verificationKey, Number(previousVkMembershipWitness.leafIndex), assertLength(previousVkMembershipWitness.siblingPath, VK_TREE_HEIGHT));
|
|
134
139
|
const proofInput = new PrivateKernelInnerCircuitPrivateInputs(previousKernelData, privateCallData);
|
|
135
140
|
pushTestData('private-kernel-inputs-inner', proofInput);
|
|
136
|
-
output = simulate
|
|
137
|
-
? await this.proofCreator.simulateInner(proofInput)
|
|
138
|
-
: await this.proofCreator.generateInnerOutput(proofInput);
|
|
141
|
+
output = simulate ? await this.proofCreator.simulateInner(proofInput) : await this.proofCreator.generateInnerOutput(proofInput);
|
|
139
142
|
acirs.push(output.bytecode);
|
|
140
143
|
witnessStack.push(output.outputWitness);
|
|
141
144
|
if (profile) {
|
|
@@ -146,11 +149,9 @@ export class KernelProver {
|
|
|
146
149
|
}
|
|
147
150
|
// Reset.
|
|
148
151
|
let resetBuilder = new PrivateKernelResetPrivateInputsBuilder(output, [], noteHashNullifierCounterMap, validationRequestsSplitCounter);
|
|
149
|
-
while
|
|
152
|
+
while(resetBuilder.needsReset()){
|
|
150
153
|
const privateInputs = await resetBuilder.build(this.oracle, noteHashLeafIndexMap);
|
|
151
|
-
output = simulate
|
|
152
|
-
? await this.proofCreator.simulateReset(privateInputs)
|
|
153
|
-
: await this.proofCreator.generateResetOutput(privateInputs);
|
|
154
|
+
output = simulate ? await this.proofCreator.simulateReset(privateInputs) : await this.proofCreator.generateResetOutput(privateInputs);
|
|
154
155
|
acirs.push(output.bytecode);
|
|
155
156
|
witnessStack.push(output.outputWitness);
|
|
156
157
|
if (profile) {
|
|
@@ -164,9 +165,7 @@ export class KernelProver {
|
|
|
164
165
|
this.log.debug(`Calling private kernel tail with hwm ${previousKernelData.publicInputs.minRevertibleSideEffectCounter}`);
|
|
165
166
|
const privateInputs = new PrivateKernelTailCircuitPrivateInputs(previousKernelData);
|
|
166
167
|
pushTestData('private-kernel-inputs-ordering', privateInputs);
|
|
167
|
-
const tailOutput = simulate
|
|
168
|
-
? await this.proofCreator.simulateTail(privateInputs)
|
|
169
|
-
: await this.proofCreator.generateTailOutput(privateInputs);
|
|
168
|
+
const tailOutput = simulate ? await this.proofCreator.simulateTail(privateInputs) : await this.proofCreator.generateTailOutput(privateInputs);
|
|
170
169
|
if (tailOutput.publicInputs.forPublic) {
|
|
171
170
|
const privateLogs = privateInputs.previousKernel.publicInputs.end.privateLogs;
|
|
172
171
|
const nonRevertiblePrivateLogs = tailOutput.publicInputs.forPublic.nonRevertibleAccumulatedData.privateLogs;
|
|
@@ -177,7 +176,9 @@ export class KernelProver {
|
|
|
177
176
|
witnessStack.push(tailOutput.outputWitness);
|
|
178
177
|
if (profile) {
|
|
179
178
|
await addGateCount('private_kernel_tail', tailOutput.bytecode);
|
|
180
|
-
tailOutput.profileResult = {
|
|
179
|
+
tailOutput.profileResult = {
|
|
180
|
+
gateCounts
|
|
181
|
+
};
|
|
181
182
|
}
|
|
182
183
|
if (!simulate) {
|
|
183
184
|
this.log.info(`Private kernel witness generation took ${timer.ms()}ms`);
|
|
@@ -186,8 +187,7 @@ export class KernelProver {
|
|
|
186
187
|
if (!dryRun && !simulate) {
|
|
187
188
|
const ivcProof = await this.proofCreator.createClientIvcProof(acirs, witnessStack);
|
|
188
189
|
tailOutput.clientIvcProof = ivcProof;
|
|
189
|
-
}
|
|
190
|
-
else {
|
|
190
|
+
} else {
|
|
191
191
|
tailOutput.clientIvcProof = ClientIvcProof.empty();
|
|
192
192
|
}
|
|
193
193
|
return tailOutput;
|
|
@@ -202,9 +202,7 @@ export class KernelProver {
|
|
|
202
202
|
// TODO(#262): Use real acir hash
|
|
203
203
|
// const acirHash = keccak256(Buffer.from(bytecode, 'hex'));
|
|
204
204
|
const acirHash = Fr.fromBuffer(Buffer.alloc(32, 0));
|
|
205
|
-
const protocolContractSiblingPath = isProtocolContract(contractAddress)
|
|
206
|
-
? await getProtocolContractSiblingPath(contractAddress)
|
|
207
|
-
: makeTuple(PROTOCOL_CONTRACT_TREE_HEIGHT, Fr.zero);
|
|
205
|
+
const protocolContractSiblingPath = isProtocolContract(contractAddress) ? await getProtocolContractSiblingPath(contractAddress) : makeTuple(PROTOCOL_CONTRACT_TREE_HEIGHT, Fr.zero);
|
|
208
206
|
return PrivateCallData.from({
|
|
209
207
|
publicInputs,
|
|
210
208
|
vk,
|
|
@@ -214,17 +212,14 @@ export class KernelProver {
|
|
|
214
212
|
saltedInitializationHash,
|
|
215
213
|
functionLeafMembershipWitness,
|
|
216
214
|
protocolContractSiblingPath,
|
|
217
|
-
acirHash
|
|
215
|
+
acirHash
|
|
218
216
|
});
|
|
219
217
|
}
|
|
220
218
|
isPrivateOnly(executionResult) {
|
|
221
|
-
const isPrivateOnlyRecursive = (callResult)
|
|
222
|
-
const makesPublicCalls = callResult.enqueuedPublicFunctionCalls.some(enqueuedCall
|
|
223
|
-
|
|
224
|
-
return (!makesPublicCalls &&
|
|
225
|
-
callResult.nestedExecutions.every(nestedExecution => isPrivateOnlyRecursive(nestedExecution)));
|
|
219
|
+
const isPrivateOnlyRecursive = (callResult)=>{
|
|
220
|
+
const makesPublicCalls = callResult.enqueuedPublicFunctionCalls.some((enqueuedCall)=>!enqueuedCall.isEmpty()) || !callResult.publicTeardownFunctionCall.isEmpty();
|
|
221
|
+
return !makesPublicCalls && callResult.nestedExecutions.every((nestedExecution)=>isPrivateOnlyRecursive(nestedExecution));
|
|
226
222
|
};
|
|
227
223
|
return isPrivateOnlyRecursive(executionResult.entrypoint);
|
|
228
224
|
}
|
|
229
225
|
}
|
|
230
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2VybmVsX3Byb3Zlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9rZXJuZWxfcHJvdmVyL2tlcm5lbF9wcm92ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUtMLGtDQUFrQyxFQUNsQywyQkFBMkIsRUFDM0Isa0NBQWtDLEVBQ2xDLGlDQUFpQyxFQUNqQyxzQ0FBc0MsR0FDdkMsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQ0wsNENBQTRDLEVBQzVDLGNBQWMsRUFDZCxFQUFFLEVBQ0YsNkJBQTZCLEVBQzdCLGVBQWUsRUFDZixnQ0FBZ0MsRUFDaEMsaUJBQWlCLEVBQ2pCLHFDQUFxQyxFQUNyQyxzQ0FBc0MsRUFDdEMscUNBQXFDLEVBS3JDLGNBQWMsRUFDZCx1QkFBdUIsR0FDeEIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDeEUsT0FBTyxFQUNMLDhCQUE4QixFQUM5QixrQkFBa0IsRUFDbEIsd0JBQXdCLEdBQ3pCLE1BQU0sMkJBQTJCLENBQUM7QUFHbkMsT0FBTyxFQUFFLE1BQU0sSUFBSSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFMUMsT0FBTyxFQUFFLHNDQUFzQyxF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
|
|
@@ -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 { };
|
|
@@ -5,8 +5,7 @@ import { ContractNotFoundError } from '@aztec/simulator/client';
|
|
|
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
|
}
|
|
@@ -18,23 +17,24 @@ export async function getOrderedNoteItems(db, { contractAddress, noteTypeId, pri
|
|
|
18
17
|
if (!artifact) {
|
|
19
18
|
throw new Error(`Could not find artifact for contract class ${instance.contractClassId.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
|
@@ -4,8 +4,7 @@ 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==
|
|
@@ -8,34 +8,33 @@ import { resolveAssertionMessageFromRevertData, resolveOpcodeLocations } from '@
|
|
|
8
8
|
* Adds contract and function names to a simulation error, if they
|
|
9
9
|
* can be found in the PXE database
|
|
10
10
|
* @param err - The error to enrich.
|
|
11
|
-
*/
|
|
12
|
-
export async function enrichSimulationError(err, db, logger) {
|
|
11
|
+
*/ export async function enrichSimulationError(err, db, logger) {
|
|
13
12
|
// Maps contract addresses to the set of function names that were in error.
|
|
14
13
|
// Map and Set do reference equality for their keys instead of value equality, so we store the string
|
|
15
14
|
// representation to get e.g. different contract address objects with the same address value to match.
|
|
16
15
|
const mentionedFunctions = new Map();
|
|
17
|
-
err.getCallStack().forEach(({ contractAddress, functionName })
|
|
16
|
+
err.getCallStack().forEach(({ contractAddress, functionName })=>{
|
|
18
17
|
if (!mentionedFunctions.has(contractAddress.toString())) {
|
|
19
18
|
mentionedFunctions.set(contractAddress.toString(), new Set());
|
|
20
19
|
}
|
|
21
20
|
mentionedFunctions.get(contractAddress.toString()).add(functionName?.toString() ?? '');
|
|
22
21
|
});
|
|
23
|
-
await Promise.all([
|
|
22
|
+
await Promise.all([
|
|
23
|
+
...mentionedFunctions.entries()
|
|
24
|
+
].map(async ([contractAddress, fnNames])=>{
|
|
24
25
|
const parsedContractAddress = AztecAddress.fromString(contractAddress);
|
|
25
26
|
const contract = await db.getContract(parsedContractAddress);
|
|
26
27
|
if (contract) {
|
|
27
28
|
err.enrichWithContractName(parsedContractAddress, contract.name);
|
|
28
|
-
for (const fnName of fnNames)
|
|
29
|
-
const functionArtifact = contract.functions.find(f
|
|
29
|
+
for (const fnName of fnNames){
|
|
30
|
+
const functionArtifact = contract.functions.find((f)=>fnName === f.name);
|
|
30
31
|
if (functionArtifact) {
|
|
31
32
|
err.enrichWithFunctionName(parsedContractAddress, await FunctionSelector.fromNameAndParameters(functionArtifact), functionArtifact.name);
|
|
32
|
-
}
|
|
33
|
-
else {
|
|
33
|
+
} else {
|
|
34
34
|
logger.warn(`Could not find function artifact in contract ${contract.name} for function '${fnName}' when enriching error callstack`);
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
|
-
}
|
|
38
|
-
else {
|
|
37
|
+
} else {
|
|
39
38
|
logger.warn(`Could not find contract in database for address: ${parsedContractAddress} when enriching error callstack`);
|
|
40
39
|
}
|
|
41
40
|
}));
|
|
@@ -61,12 +60,10 @@ export async function enrichPublicSimulationError(err, contractDataOracle, db, l
|
|
|
61
60
|
// Thus, we can safely assume here that the Brillig function id is `0`.
|
|
62
61
|
const parsedCallStack = resolveOpcodeLocations(noirCallStack, debugInfo, 0);
|
|
63
62
|
err.setNoirCallStack(parsedCallStack);
|
|
64
|
-
}
|
|
65
|
-
catch (err) {
|
|
63
|
+
} catch (err) {
|
|
66
64
|
logger.warn(`Could not resolve noir call stack for ${originalFailingFunction.contractAddress.toString()}:${originalFailingFunction.functionName?.toString() ?? ''}: ${err}`);
|
|
67
65
|
}
|
|
68
66
|
}
|
|
69
67
|
await enrichSimulationError(err, db, logger);
|
|
70
68
|
}
|
|
71
69
|
}
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JfZW5yaWNoaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B4ZV9zZXJ2aWNlL2Vycm9yX2VucmljaGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXdCLHlCQUF5QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU5QyxPQUFPLEVBQUUscUNBQXFDLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUl4Rzs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxxQkFBcUIsQ0FBQyxHQUFvQixFQUFFLEVBQWUsRUFBRSxNQUFjO0lBQy9GLDJFQUEyRTtJQUMzRSxxR0FBcUc7SUFDckcsc0dBQXNHO0lBQ3RHLE1BQU0sa0JBQWtCLEdBQTZCLElBQUksR0FBRyxFQUFFLENBQUM7SUFFL0QsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUU7UUFDL0QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ3hELGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ2hFLENBQUM7UUFDRCxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFFLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxRQUFRLEVB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
|
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
export * from './pxe_service.js';
|
|
2
2
|
export { enrichPublicSimulationError } from './error_enriching.js';
|
|
3
3
|
export { pxeTestSuite } from './test/pxe_test_suite.js';
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHhlX3NlcnZpY2UvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUMifQ==
|