@aztec/pxe 0.0.0-test.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/README.md +13 -0
- package/dest/bin/index.d.ts +3 -0
- package/dest/bin/index.d.ts.map +1 -0
- package/dest/bin/index.js +28 -0
- package/dest/config/index.d.ts +48 -0
- package/dest/config/index.d.ts.map +1 -0
- package/dest/config/index.js +74 -0
- package/dest/config/package_info.d.ts +5 -0
- package/dest/config/package_info.d.ts.map +1 -0
- package/dest/config/package_info.js +6 -0
- package/dest/entrypoints/client/bundle/index.d.ts +6 -0
- package/dest/entrypoints/client/bundle/index.d.ts.map +1 -0
- package/dest/entrypoints/client/bundle/index.js +5 -0
- package/dest/entrypoints/client/bundle/utils.d.ts +16 -0
- package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -0
- package/dest/entrypoints/client/bundle/utils.js +30 -0
- package/dest/entrypoints/client/lazy/index.d.ts +6 -0
- package/dest/entrypoints/client/lazy/index.d.ts.map +1 -0
- package/dest/entrypoints/client/lazy/index.js +5 -0
- package/dest/entrypoints/client/lazy/utils.d.ts +15 -0
- package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -0
- package/dest/entrypoints/client/lazy/utils.js +29 -0
- package/dest/entrypoints/client/pxe_creation_options.d.ts +11 -0
- package/dest/entrypoints/client/pxe_creation_options.d.ts.map +1 -0
- package/dest/entrypoints/client/pxe_creation_options.js +1 -0
- package/dest/entrypoints/server/index.d.ts +7 -0
- package/dest/entrypoints/server/index.d.ts.map +1 -0
- package/dest/entrypoints/server/index.js +6 -0
- package/dest/entrypoints/server/utils.d.ts +16 -0
- package/dest/entrypoints/server/utils.d.ts.map +1 -0
- package/dest/entrypoints/server/utils.js +45 -0
- package/dest/kernel_oracle/index.d.ts +45 -0
- package/dest/kernel_oracle/index.d.ts.map +1 -0
- package/dest/kernel_oracle/index.js +76 -0
- package/dest/kernel_prover/hints/build_private_kernel_reset_private_inputs.d.ts +28 -0
- package/dest/kernel_prover/hints/build_private_kernel_reset_private_inputs.d.ts.map +1 -0
- package/dest/kernel_prover/hints/build_private_kernel_reset_private_inputs.js +270 -0
- package/dest/kernel_prover/hints/index.d.ts +2 -0
- package/dest/kernel_prover/hints/index.d.ts.map +1 -0
- package/dest/kernel_prover/hints/index.js +1 -0
- package/dest/kernel_prover/index.d.ts +3 -0
- package/dest/kernel_prover/index.d.ts.map +1 -0
- package/dest/kernel_prover/index.js +2 -0
- package/dest/kernel_prover/kernel_prover.d.ts +38 -0
- package/dest/kernel_prover/kernel_prover.d.ts.map +1 -0
- package/dest/kernel_prover/kernel_prover.js +217 -0
- package/dest/kernel_prover/proving_data_oracle.d.ts +73 -0
- package/dest/kernel_prover/proving_data_oracle.d.ts.map +1 -0
- package/dest/kernel_prover/proving_data_oracle.js +4 -0
- package/dest/note_decryption_utils/add_public_values_to_payload.d.ts +11 -0
- package/dest/note_decryption_utils/add_public_values_to_payload.d.ts.map +1 -0
- package/dest/note_decryption_utils/add_public_values_to_payload.js +47 -0
- package/dest/pxe_http/index.d.ts +2 -0
- package/dest/pxe_http/index.d.ts.map +1 -0
- package/dest/pxe_http/index.js +1 -0
- package/dest/pxe_http/pxe_http_server.d.ts +16 -0
- package/dest/pxe_http/pxe_http_server.d.ts.map +1 -0
- package/dest/pxe_http/pxe_http_server.js +27 -0
- package/dest/pxe_oracle_interface/index.d.ts +159 -0
- package/dest/pxe_oracle_interface/index.d.ts.map +1 -0
- package/dest/pxe_oracle_interface/index.js +692 -0
- package/dest/pxe_oracle_interface/tagging_utils.d.ts +17 -0
- package/dest/pxe_oracle_interface/tagging_utils.d.ts.map +1 -0
- package/dest/pxe_oracle_interface/tagging_utils.js +23 -0
- package/dest/pxe_service/error_enriching.d.ts +11 -0
- package/dest/pxe_service/error_enriching.d.ts.map +1 -0
- package/dest/pxe_service/error_enriching.js +69 -0
- package/dest/pxe_service/index.d.ts +3 -0
- package/dest/pxe_service/index.d.ts.map +1 -0
- package/dest/pxe_service/index.js +2 -0
- package/dest/pxe_service/pxe_service.d.ts +111 -0
- package/dest/pxe_service/pxe_service.d.ts.map +1 -0
- package/dest/pxe_service/pxe_service.js +664 -0
- package/dest/storage/address_data_provider/address_data_provider.d.ts +13 -0
- package/dest/storage/address_data_provider/address_data_provider.d.ts.map +1 -0
- package/dest/storage/address_data_provider/address_data_provider.js +50 -0
- package/dest/storage/address_data_provider/index.d.ts +2 -0
- package/dest/storage/address_data_provider/index.d.ts.map +1 -0
- package/dest/storage/address_data_provider/index.js +1 -0
- package/dest/storage/auth_witness_data_provider/auth_witness_data_provider.d.ts +11 -0
- package/dest/storage/auth_witness_data_provider/auth_witness_data_provider.d.ts.map +1 -0
- package/dest/storage/auth_witness_data_provider/auth_witness_data_provider.js +20 -0
- package/dest/storage/auth_witness_data_provider/index.d.ts +2 -0
- package/dest/storage/auth_witness_data_provider/index.d.ts.map +1 -0
- package/dest/storage/auth_witness_data_provider/index.js +1 -0
- package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts +16 -0
- package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts.map +1 -0
- package/dest/storage/capsule_data_provider/capsule_data_provider.js +57 -0
- package/dest/storage/capsule_data_provider/index.d.ts +2 -0
- package/dest/storage/capsule_data_provider/index.d.ts.map +1 -0
- package/dest/storage/capsule_data_provider/index.js +1 -0
- package/dest/storage/contract_data_provider/contract_data_provider.d.ts +109 -0
- package/dest/storage/contract_data_provider/contract_data_provider.d.ts.map +1 -0
- package/dest/storage/contract_data_provider/contract_data_provider.js +183 -0
- package/dest/storage/contract_data_provider/index.d.ts +3 -0
- package/dest/storage/contract_data_provider/index.d.ts.map +1 -0
- package/dest/storage/contract_data_provider/index.js +2 -0
- package/dest/storage/contract_data_provider/private_functions_tree.d.ts +66 -0
- package/dest/storage/contract_data_provider/private_functions_tree.d.ts.map +1 -0
- package/dest/storage/contract_data_provider/private_functions_tree.js +99 -0
- package/dest/storage/data_provider.d.ts +4 -0
- package/dest/storage/data_provider.d.ts.map +1 -0
- package/dest/storage/data_provider.js +1 -0
- package/dest/storage/index.d.ts +10 -0
- package/dest/storage/index.d.ts.map +1 -0
- package/dest/storage/index.js +9 -0
- package/dest/storage/note_data_provider/index.d.ts +3 -0
- package/dest/storage/note_data_provider/index.d.ts.map +1 -0
- package/dest/storage/note_data_provider/index.js +2 -0
- package/dest/storage/note_data_provider/note_dao.d.ts +106 -0
- package/dest/storage/note_data_provider/note_dao.d.ts.map +1 -0
- package/dest/storage/note_data_provider/note_dao.js +106 -0
- package/dest/storage/note_data_provider/note_data_provider.d.ts +20 -0
- package/dest/storage/note_data_provider/note_data_provider.d.ts.map +1 -0
- package/dest/storage/note_data_provider/note_data_provider.js +249 -0
- package/dest/storage/sync_data_provider/index.d.ts +2 -0
- package/dest/storage/sync_data_provider/index.d.ts.map +1 -0
- package/dest/storage/sync_data_provider/index.js +1 -0
- package/dest/storage/sync_data_provider/sync_data_provider.d.ts +12 -0
- package/dest/storage/sync_data_provider/sync_data_provider.d.ts.map +1 -0
- package/dest/storage/sync_data_provider/sync_data_provider.js +29 -0
- package/dest/storage/tagging_data_provider/index.d.ts +2 -0
- package/dest/storage/tagging_data_provider/index.d.ts.map +1 -0
- package/dest/storage/tagging_data_provider/index.js +1 -0
- package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts +18 -0
- package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts.map +1 -0
- package/dest/storage/tagging_data_provider/tagging_data_provider.js +65 -0
- package/dest/synchronizer/index.d.ts +2 -0
- package/dest/synchronizer/index.d.ts.map +1 -0
- package/dest/synchronizer/index.js +1 -0
- package/dest/synchronizer/synchronizer.d.ts +37 -0
- package/dest/synchronizer/synchronizer.d.ts.map +1 -0
- package/dest/synchronizer/synchronizer.js +103 -0
- package/dest/test/pxe_test_suite.d.ts +3 -0
- package/dest/test/pxe_test_suite.d.ts.map +1 -0
- package/dest/test/pxe_test_suite.js +97 -0
- package/package.json +105 -0
- package/src/bin/index.ts +38 -0
- package/src/config/index.ts +124 -0
- package/src/config/package_info.ts +3 -0
- package/src/entrypoints/client/bundle/index.ts +5 -0
- package/src/entrypoints/client/bundle/utils.ts +58 -0
- package/src/entrypoints/client/lazy/index.ts +5 -0
- package/src/entrypoints/client/lazy/utils.ts +53 -0
- package/src/entrypoints/client/pxe_creation_options.ts +7 -0
- package/src/entrypoints/server/index.ts +6 -0
- package/src/entrypoints/server/utils.ts +71 -0
- package/src/kernel_oracle/index.ts +117 -0
- package/src/kernel_prover/hints/build_private_kernel_reset_private_inputs.ts +472 -0
- package/src/kernel_prover/hints/index.ts +1 -0
- package/src/kernel_prover/index.ts +2 -0
- package/src/kernel_prover/kernel_prover.ts +351 -0
- package/src/kernel_prover/proving_data_oracle.ts +83 -0
- package/src/note_decryption_utils/add_public_values_to_payload.ts +64 -0
- package/src/pxe_http/index.ts +1 -0
- package/src/pxe_http/pxe_http_server.ts +29 -0
- package/src/pxe_oracle_interface/index.ts +925 -0
- package/src/pxe_oracle_interface/tagging_utils.ts +32 -0
- package/src/pxe_service/error_enriching.ts +106 -0
- package/src/pxe_service/index.ts +2 -0
- package/src/pxe_service/pxe_service.ts +949 -0
- package/src/storage/address_data_provider/address_data_provider.ts +71 -0
- package/src/storage/address_data_provider/index.ts +1 -0
- package/src/storage/auth_witness_data_provider/auth_witness_data_provider.ts +34 -0
- package/src/storage/auth_witness_data_provider/index.ts +1 -0
- package/src/storage/capsule_data_provider/capsule_data_provider.ts +80 -0
- package/src/storage/capsule_data_provider/index.ts +1 -0
- package/src/storage/contract_data_provider/contract_data_provider.ts +261 -0
- package/src/storage/contract_data_provider/index.ts +2 -0
- package/src/storage/contract_data_provider/private_functions_tree.ts +131 -0
- package/src/storage/data_provider.ts +3 -0
- package/src/storage/index.ts +10 -0
- package/src/storage/note_data_provider/index.ts +2 -0
- package/src/storage/note_data_provider/note_dao.ts +162 -0
- package/src/storage/note_data_provider/note_data_provider.ts +345 -0
- package/src/storage/sync_data_provider/index.ts +1 -0
- package/src/storage/sync_data_provider/sync_data_provider.ts +40 -0
- package/src/storage/tagging_data_provider/index.ts +1 -0
- package/src/storage/tagging_data_provider/tagging_data_provider.ts +92 -0
- package/src/synchronizer/index.ts +1 -0
- package/src/synchronizer/synchronizer.ts +121 -0
- package/src/test/pxe_test_suite.ts +111 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { Fr } from '@aztec/foundation/fields';
|
|
2
|
+
import { IndexedTaggingSecret } from '@aztec/stdlib/logs';
|
|
3
|
+
|
|
4
|
+
// Half the size of the window we slide over the tagging secret indexes.
|
|
5
|
+
export const WINDOW_HALF_SIZE = 10;
|
|
6
|
+
|
|
7
|
+
export function getIndexedTaggingSecretsForTheWindow(
|
|
8
|
+
secretsAndWindows: { appTaggingSecret: Fr; leftMostIndex: number; rightMostIndex: number }[],
|
|
9
|
+
): IndexedTaggingSecret[] {
|
|
10
|
+
const secrets: IndexedTaggingSecret[] = [];
|
|
11
|
+
for (const secretAndWindow of secretsAndWindows) {
|
|
12
|
+
for (let i = secretAndWindow.leftMostIndex; i <= secretAndWindow.rightMostIndex; i++) {
|
|
13
|
+
secrets.push(new IndexedTaggingSecret(secretAndWindow.appTaggingSecret, i));
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
return secrets;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Creates a map from app tagging secret to initial index.
|
|
21
|
+
* @param indexedTaggingSecrets - The indexed tagging secrets to get the initial indexes from.
|
|
22
|
+
* @returns The map from app tagging secret to initial index.
|
|
23
|
+
*/
|
|
24
|
+
export function getInitialIndexesMap(indexedTaggingSecrets: IndexedTaggingSecret[]): { [k: string]: number } {
|
|
25
|
+
const initialIndexes: { [k: string]: number } = {};
|
|
26
|
+
|
|
27
|
+
for (const indexedTaggingSecret of indexedTaggingSecrets) {
|
|
28
|
+
initialIndexes[indexedTaggingSecret.appTaggingSecret.toString()] = indexedTaggingSecret.index;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
return initialIndexes;
|
|
32
|
+
}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { PUBLIC_DISPATCH_SELECTOR } from '@aztec/constants';
|
|
2
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
3
|
+
import type { Logger } from '@aztec/foundation/log';
|
|
4
|
+
import { resolveAssertionMessageFromRevertData, resolveOpcodeLocations } from '@aztec/simulator/client';
|
|
5
|
+
import { FunctionSelector } from '@aztec/stdlib/abi';
|
|
6
|
+
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
7
|
+
import { type SimulationError, isNoirCallStackUnresolved } from '@aztec/stdlib/errors';
|
|
8
|
+
|
|
9
|
+
import type { ContractDataProvider } from '../storage/contract_data_provider/contract_data_provider.js';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Adds contract and function names to a simulation error, if they
|
|
13
|
+
* can be found in the PXE database
|
|
14
|
+
* @param err - The error to enrich.
|
|
15
|
+
*/
|
|
16
|
+
export async function enrichSimulationError(
|
|
17
|
+
err: SimulationError,
|
|
18
|
+
contractDataProvider: ContractDataProvider,
|
|
19
|
+
logger: Logger,
|
|
20
|
+
) {
|
|
21
|
+
// Maps contract addresses to the set of function names that were in error.
|
|
22
|
+
// Map and Set do reference equality for their keys instead of value equality, so we store the string
|
|
23
|
+
// representation to get e.g. different contract address objects with the same address value to match.
|
|
24
|
+
const mentionedFunctions: Map<string, Set<string>> = new Map();
|
|
25
|
+
|
|
26
|
+
err.getCallStack().forEach(({ contractAddress, functionName }) => {
|
|
27
|
+
if (!mentionedFunctions.has(contractAddress.toString())) {
|
|
28
|
+
mentionedFunctions.set(contractAddress.toString(), new Set());
|
|
29
|
+
}
|
|
30
|
+
mentionedFunctions.get(contractAddress.toString())!.add(functionName?.toString() ?? '');
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
await Promise.all(
|
|
34
|
+
[...mentionedFunctions.entries()].map(async ([contractAddress, fnNames]) => {
|
|
35
|
+
const parsedContractAddress = AztecAddress.fromString(contractAddress);
|
|
36
|
+
const contract = await contractDataProvider.getContract(parsedContractAddress);
|
|
37
|
+
if (contract) {
|
|
38
|
+
err.enrichWithContractName(parsedContractAddress, contract.name);
|
|
39
|
+
for (const fnName of fnNames) {
|
|
40
|
+
const functionArtifact = contract.functions.find(f => fnName === f.name);
|
|
41
|
+
if (functionArtifact) {
|
|
42
|
+
err.enrichWithFunctionName(
|
|
43
|
+
parsedContractAddress,
|
|
44
|
+
await FunctionSelector.fromNameAndParameters(functionArtifact),
|
|
45
|
+
functionArtifact.name,
|
|
46
|
+
);
|
|
47
|
+
} else {
|
|
48
|
+
logger.warn(
|
|
49
|
+
`Could not find function artifact in contract ${contract.name} for function '${fnName}' when enriching error callstack`,
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
} else {
|
|
54
|
+
logger.warn(
|
|
55
|
+
`Could not find contract in database for address: ${parsedContractAddress} when enriching error callstack`,
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
}),
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export async function enrichPublicSimulationError(
|
|
63
|
+
err: SimulationError,
|
|
64
|
+
contractDataProvider: ContractDataProvider,
|
|
65
|
+
logger: Logger,
|
|
66
|
+
) {
|
|
67
|
+
const callStack = err.getCallStack();
|
|
68
|
+
const originalFailingFunction = callStack[callStack.length - 1];
|
|
69
|
+
// TODO(https://github.com/AztecProtocol/aztec-packages/issues/8985): Properly fix this.
|
|
70
|
+
// To be able to resolve the assertion message, we need to use the information from the public dispatch function,
|
|
71
|
+
// no matter what the call stack selector points to (since we've modified it to point to the target function).
|
|
72
|
+
// We should remove this because the AVM (or public protocol) shouldn't be aware of the public dispatch calling convention.
|
|
73
|
+
|
|
74
|
+
const artifact = await contractDataProvider.getFunctionArtifact(
|
|
75
|
+
originalFailingFunction.contractAddress,
|
|
76
|
+
FunctionSelector.fromField(new Fr(PUBLIC_DISPATCH_SELECTOR)),
|
|
77
|
+
);
|
|
78
|
+
const assertionMessage = resolveAssertionMessageFromRevertData(err.revertData, artifact);
|
|
79
|
+
if (assertionMessage) {
|
|
80
|
+
err.setOriginalMessage(err.getOriginalMessage() + `${assertionMessage}`);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
const debugInfo = await contractDataProvider.getFunctionDebugMetadata(
|
|
84
|
+
originalFailingFunction.contractAddress,
|
|
85
|
+
FunctionSelector.fromField(new Fr(PUBLIC_DISPATCH_SELECTOR)),
|
|
86
|
+
);
|
|
87
|
+
|
|
88
|
+
const noirCallStack = err.getNoirCallStack();
|
|
89
|
+
if (debugInfo) {
|
|
90
|
+
if (isNoirCallStackUnresolved(noirCallStack)) {
|
|
91
|
+
try {
|
|
92
|
+
// Public functions are simulated as a single Brillig entry point.
|
|
93
|
+
// Thus, we can safely assume here that the Brillig function id is `0`.
|
|
94
|
+
const parsedCallStack = resolveOpcodeLocations(noirCallStack, debugInfo, 0);
|
|
95
|
+
err.setNoirCallStack(parsedCallStack);
|
|
96
|
+
} catch (err) {
|
|
97
|
+
logger.warn(
|
|
98
|
+
`Could not resolve noir call stack for ${originalFailingFunction.contractAddress.toString()}:${
|
|
99
|
+
originalFailingFunction.functionName?.toString() ?? ''
|
|
100
|
+
}: ${err}`,
|
|
101
|
+
);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
await enrichSimulationError(err, contractDataProvider, logger);
|
|
105
|
+
}
|
|
106
|
+
}
|