@aztec/prover-client 0.42.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.
Files changed (58) hide show
  1. package/README.md +1 -0
  2. package/dest/config.d.ts +21 -0
  3. package/dest/config.d.ts.map +1 -0
  4. package/dest/config.js +31 -0
  5. package/dest/index.d.ts +4 -0
  6. package/dest/index.d.ts.map +1 -0
  7. package/dest/index.js +3 -0
  8. package/dest/mocks/fixtures.d.ts +22 -0
  9. package/dest/mocks/fixtures.d.ts.map +1 -0
  10. package/dest/mocks/fixtures.js +95 -0
  11. package/dest/mocks/test_context.d.ts +32 -0
  12. package/dest/mocks/test_context.d.ts.map +1 -0
  13. package/dest/mocks/test_context.js +116 -0
  14. package/dest/orchestrator/block-building-helpers.d.ts +36 -0
  15. package/dest/orchestrator/block-building-helpers.d.ts.map +1 -0
  16. package/dest/orchestrator/block-building-helpers.js +236 -0
  17. package/dest/orchestrator/orchestrator.d.ts +113 -0
  18. package/dest/orchestrator/orchestrator.d.ts.map +1 -0
  19. package/dest/orchestrator/orchestrator.js +574 -0
  20. package/dest/orchestrator/proving-state.d.ts +68 -0
  21. package/dest/orchestrator/proving-state.d.ts.map +1 -0
  22. package/dest/orchestrator/proving-state.js +142 -0
  23. package/dest/orchestrator/tx-proving-state.d.ts +35 -0
  24. package/dest/orchestrator/tx-proving-state.d.ts.map +1 -0
  25. package/dest/orchestrator/tx-proving-state.js +92 -0
  26. package/dest/prover-agent/index.d.ts +4 -0
  27. package/dest/prover-agent/index.d.ts.map +1 -0
  28. package/dest/prover-agent/index.js +4 -0
  29. package/dest/prover-agent/memory-proving-queue.d.ts +64 -0
  30. package/dest/prover-agent/memory-proving-queue.d.ts.map +1 -0
  31. package/dest/prover-agent/memory-proving-queue.js +187 -0
  32. package/dest/prover-agent/prover-agent.d.ts +30 -0
  33. package/dest/prover-agent/prover-agent.d.ts.map +1 -0
  34. package/dest/prover-agent/prover-agent.js +115 -0
  35. package/dest/prover-agent/proving-error.d.ts +5 -0
  36. package/dest/prover-agent/proving-error.d.ts.map +1 -0
  37. package/dest/prover-agent/proving-error.js +9 -0
  38. package/dest/prover-agent/rpc.d.ts +5 -0
  39. package/dest/prover-agent/rpc.d.ts.map +1 -0
  40. package/dest/prover-agent/rpc.js +53 -0
  41. package/dest/tx-prover/tx-prover.d.ts +65 -0
  42. package/dest/tx-prover/tx-prover.d.ts.map +1 -0
  43. package/dest/tx-prover/tx-prover.js +122 -0
  44. package/package.json +87 -0
  45. package/src/config.ts +59 -0
  46. package/src/index.ts +4 -0
  47. package/src/mocks/fixtures.ts +182 -0
  48. package/src/mocks/test_context.ts +217 -0
  49. package/src/orchestrator/block-building-helpers.ts +470 -0
  50. package/src/orchestrator/orchestrator.ts +883 -0
  51. package/src/orchestrator/proving-state.ts +210 -0
  52. package/src/orchestrator/tx-proving-state.ts +139 -0
  53. package/src/prover-agent/index.ts +3 -0
  54. package/src/prover-agent/memory-proving-queue.ts +303 -0
  55. package/src/prover-agent/prover-agent.ts +144 -0
  56. package/src/prover-agent/proving-error.ts +9 -0
  57. package/src/prover-agent/rpc.ts +91 -0
  58. package/src/tx-prover/tx-prover.ts +171 -0
package/README.md ADDED
@@ -0,0 +1 @@
1
+ # Prover Client
@@ -0,0 +1,21 @@
1
+ import { type ProverConfig } from '@aztec/circuit-types';
2
+ /**
3
+ * The prover configuration.
4
+ */
5
+ export type ProverClientConfig = ProverConfig & {
6
+ /** The working directory to use for simulation/proving */
7
+ acvmWorkingDirectory: string;
8
+ /** The path to the ACVM binary */
9
+ acvmBinaryPath: string;
10
+ /** The working directory to for proving */
11
+ bbWorkingDirectory: string;
12
+ /** The path to the bb binary */
13
+ bbBinaryPath: string;
14
+ };
15
+ /**
16
+ * Returns the prover configuration from the environment variables.
17
+ * Note: If an environment variable is not set, the default value is used.
18
+ * @returns The prover configuration.
19
+ */
20
+ export declare function getProverEnvVars(): ProverClientConfig;
21
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIzD;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG;IAC9C,0DAA0D;IAC1D,oBAAoB,EAAE,MAAM,CAAC;IAC7B,kCAAkC;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,2CAA2C;IAC3C,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gCAAgC;IAChC,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,kBAAkB,CAmCrD"}
package/dest/config.js ADDED
@@ -0,0 +1,31 @@
1
+ import { tmpdir } from 'os';
2
+ /**
3
+ * Returns the prover configuration from the environment variables.
4
+ * Note: If an environment variable is not set, the default value is used.
5
+ * @returns The prover configuration.
6
+ */
7
+ export function getProverEnvVars() {
8
+ const { AZTEC_NODE_URL, ACVM_WORKING_DIRECTORY = tmpdir(), ACVM_BINARY_PATH = '', BB_WORKING_DIRECTORY = tmpdir(), BB_BINARY_PATH = '',
9
+ /** @deprecated */
10
+ PROVER_AGENTS = '1', PROVER_AGENT_ENABLED = '1', PROVER_AGENT_CONCURRENCY = PROVER_AGENTS, PROVER_AGENT_POLL_INTERVAL_MS = '100', PROVER_REAL_PROOFS = '', } = process.env;
11
+ const realProofs = ['1', 'true'].includes(PROVER_REAL_PROOFS);
12
+ const proverAgentEnabled = ['1', 'true'].includes(PROVER_AGENT_ENABLED);
13
+ const parsedProverConcurrency = parseInt(PROVER_AGENT_CONCURRENCY, 10);
14
+ const proverAgentConcurrency = Number.isSafeInteger(parsedProverConcurrency) ? parsedProverConcurrency : 1;
15
+ const parsedProverAgentPollInterval = parseInt(PROVER_AGENT_POLL_INTERVAL_MS, 10);
16
+ const proverAgentPollInterval = Number.isSafeInteger(parsedProverAgentPollInterval)
17
+ ? parsedProverAgentPollInterval
18
+ : 100;
19
+ return {
20
+ acvmWorkingDirectory: ACVM_WORKING_DIRECTORY,
21
+ acvmBinaryPath: ACVM_BINARY_PATH,
22
+ bbBinaryPath: BB_BINARY_PATH,
23
+ bbWorkingDirectory: BB_WORKING_DIRECTORY,
24
+ realProofs,
25
+ proverAgentEnabled,
26
+ proverAgentPollInterval,
27
+ proverAgentConcurrency,
28
+ nodeUrl: AZTEC_NODE_URL,
29
+ };
30
+ }
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBZ0I1Qjs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQjtJQUM5QixNQUFNLEVBQ0osY0FBYyxFQUNkLHNCQUFzQixHQUFHLE1BQU0sRUFBRSxFQUNqQyxnQkFBZ0IsR0FBRyxFQUFFLEVBQ3JCLG9CQUFvQixHQUFHLE1BQU0sRUFBRSxFQUMvQixjQUFjLEdBQUcsRUFBRTtJQUNuQixrQkFBa0I7SUFDbEIsYUFBYSxHQUFHLEdBQUcsRUFDbkIsb0JBQW9CLEdBQUcsR0FBRyxFQUMxQix3QkFBd0IsR0FBRyxhQUFhLEVBQ3hDLDZCQUE2QixHQUFHLEtBQUssRUFDckMsa0JBQWtCLEdBQUcsRUFBRSxHQUN4QixHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUM7SUFFaEIsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDOUQsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUN4RSxNQUFNLHVCQUF1QixHQUFHLFFBQVEsQ0FBQyx3QkFBd0IsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN2RSxNQUFNLHNCQUFzQixHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzRyxNQUFNLDZCQUE2QixHQUFHLFFBQVEsQ0FBQyw2QkFBNkIsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNsRixNQUFNLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsNkJBQTZCLENBQUM7UUFDakYsQ0FBQyxDQUFDLDZCQUE2QjtRQUMvQixDQUFDLENBQUMsR0FBRyxDQUFDO0lBRVIsT0FBTztRQUNMLG9CQUFvQixFQUFFLHNCQUFzQjtRQUM1QyxjQUFjLEVBQUUsZ0JBQWdCO1FBQ2hDLFlBQVksRUFBRSxjQUFjO1FBQzVCLGtCQUFrQixFQUFFLG9CQUFvQjtRQUN4QyxVQUFVO1FBQ1Ysa0JBQWtCO1FBQ2xCLHVCQUF1QjtRQUN2QixzQkFBc0I7UUFDdEIsT0FBTyxFQUFFLGNBQWM7S0FDeEIsQ0FBQztBQUNKLENBQUMifQ==
@@ -0,0 +1,4 @@
1
+ export { ProverClient } from '@aztec/circuit-types';
2
+ export * from './tx-prover/tx-prover.js';
3
+ export * from './config.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC"}
package/dest/index.js ADDED
@@ -0,0 +1,3 @@
1
+ export * from './tx-prover/tx-prover.js';
2
+ export * from './config.js';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLGFBQWEsQ0FBQyJ9
@@ -0,0 +1,22 @@
1
+ import { type ProcessedTx } from '@aztec/circuit-types';
2
+ import { Fr, GlobalVariables } from '@aztec/circuits.js';
3
+ import { type DebugLogger } from '@aztec/foundation/log';
4
+ import { type SimulationProvider } from '@aztec/simulator';
5
+ import { type MerkleTreeOperations } from '@aztec/world-state';
6
+ export declare const getEnvironmentConfig: (logger: DebugLogger) => Promise<{
7
+ acvmWorkingDirectory: string;
8
+ bbWorkingDirectory: string;
9
+ expectedAcvmPath: string;
10
+ expectedBBPath: string;
11
+ directoryToCleanup: string | undefined;
12
+ } | undefined>;
13
+ export declare function getSimulationProvider(config: {
14
+ acvmWorkingDirectory: string | undefined;
15
+ acvmBinaryPath: string | undefined;
16
+ }, logger?: DebugLogger): Promise<SimulationProvider>;
17
+ export declare const makeBloatedProcessedTx: (builderDb: MerkleTreeOperations, seed?: number) => Promise<ProcessedTx>;
18
+ export declare const makeEmptyProcessedTx: (builderDb: MerkleTreeOperations, chainId: Fr, version: Fr) => Promise<ProcessedTx>;
19
+ export declare const updateExpectedTreesFromTxs: (db: MerkleTreeOperations, txs: ProcessedTx[]) => Promise<void>;
20
+ export declare const makeGlobals: (blockNumber: number) => GlobalVariables;
21
+ export declare const makeEmptyProcessedTestTx: (builderDb: MerkleTreeOperations) => Promise<ProcessedTx>;
22
+ //# sourceMappingURL=fixtures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../../src/mocks/fixtures.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,WAAW,EAIjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAGL,EAAE,EAEF,eAAe,EAUhB,MAAM,oBAAoB,CAAC;AAK5B,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAuB,KAAK,kBAAkB,EAAiB,MAAM,kBAAkB,CAAC;AAC/F,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAgB/D,eAAO,MAAM,oBAAoB,WAAkB,WAAW;;;;;;cA6B7D,CAAC;AAEF,wBAAsB,qBAAqB,CACzC,MAAM,EAAE;IAAE,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,EACxF,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,kBAAkB,CAAC,CAe7B;AAED,eAAO,MAAM,sBAAsB,cAAqB,oBAAoB,wCA6B3E,CAAC;AAEF,eAAO,MAAM,oBAAoB,cAAqB,oBAAoB,WAAW,EAAE,WAAW,EAAE,yBAGnG,CAAC;AAGF,eAAO,MAAM,0BAA0B,OAAc,oBAAoB,OAAO,WAAW,EAAE,kBA+B5F,CAAC;AAEF,eAAO,MAAM,WAAW,gBAAiB,MAAM,oBAU9C,CAAC;AAEF,eAAO,MAAM,wBAAwB,cAAe,oBAAoB,KAAG,QAAQ,WAAW,CAE7F,CAAC"}
@@ -0,0 +1,95 @@
1
+ import { MerkleTreeId, makeEmptyProcessedTx as makeEmptyProcessedTxFromHistoricalTreeRoots, makeProcessedTx, mockTx, } from '@aztec/circuit-types';
2
+ import { AztecAddress, EthAddress, Fr, GasFees, GlobalVariables, KernelCircuitPublicInputs, MAX_NEW_L2_TO_L1_MSGS_PER_TX, MAX_NEW_NOTE_HASHES_PER_TX, MAX_NEW_NULLIFIERS_PER_TX, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, NULLIFIER_TREE_HEIGHT, PUBLIC_DATA_SUBTREE_HEIGHT, PublicDataTreeLeaf, PublicDataUpdateRequest, } from '@aztec/circuits.js';
3
+ import { fr, makeProof } from '@aztec/circuits.js/testing';
4
+ import { makeTuple } from '@aztec/foundation/array';
5
+ import { padArrayEnd } from '@aztec/foundation/collection';
6
+ import { randomBytes } from '@aztec/foundation/crypto';
7
+ import { fileURLToPath } from '@aztec/foundation/url';
8
+ import { NativeACVMSimulator, WASMSimulator } from '@aztec/simulator';
9
+ import * as fs from 'fs/promises';
10
+ import path from 'path';
11
+ const { BB_RELEASE_DIR = 'cpp/build/bin', TEMP_DIR = '/tmp', BB_BINARY_PATH = '', BB_WORKING_DIRECTORY = '', NOIR_RELEASE_DIR = 'noir-repo/target/release', ACVM_BINARY_PATH = '', ACVM_WORKING_DIRECTORY = '', } = process.env;
12
+ // Determines if we have access to the bb binary and a tmp folder for temp files
13
+ export const getEnvironmentConfig = async (logger) => {
14
+ try {
15
+ const expectedBBPath = BB_BINARY_PATH
16
+ ? BB_BINARY_PATH
17
+ : `${path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../../../../barretenberg/', BB_RELEASE_DIR)}/bb`;
18
+ await fs.access(expectedBBPath, fs.constants.R_OK);
19
+ const tempWorkingDirectory = `${TEMP_DIR}/${randomBytes(4).toString('hex')}`;
20
+ const bbWorkingDirectory = BB_WORKING_DIRECTORY ? BB_WORKING_DIRECTORY : `${tempWorkingDirectory}/bb`;
21
+ await fs.mkdir(bbWorkingDirectory, { recursive: true });
22
+ logger.verbose(`Using native BB binary at ${expectedBBPath} with working directory ${bbWorkingDirectory}`);
23
+ const expectedAcvmPath = ACVM_BINARY_PATH
24
+ ? ACVM_BINARY_PATH
25
+ : `${path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../../../../noir/', NOIR_RELEASE_DIR)}/acvm`;
26
+ await fs.access(expectedAcvmPath, fs.constants.R_OK);
27
+ const acvmWorkingDirectory = ACVM_WORKING_DIRECTORY ? ACVM_WORKING_DIRECTORY : `${tempWorkingDirectory}/acvm`;
28
+ await fs.mkdir(acvmWorkingDirectory, { recursive: true });
29
+ logger.verbose(`Using native ACVM binary at ${expectedAcvmPath} with working directory ${acvmWorkingDirectory}`);
30
+ return {
31
+ acvmWorkingDirectory,
32
+ bbWorkingDirectory,
33
+ expectedAcvmPath,
34
+ expectedBBPath,
35
+ directoryToCleanup: ACVM_WORKING_DIRECTORY && BB_WORKING_DIRECTORY ? undefined : tempWorkingDirectory,
36
+ };
37
+ }
38
+ catch (err) {
39
+ logger.verbose(`Native BB not available, error: ${err}`);
40
+ return undefined;
41
+ }
42
+ };
43
+ export async function getSimulationProvider(config, logger) {
44
+ if (config.acvmBinaryPath && config.acvmWorkingDirectory) {
45
+ try {
46
+ await fs.access(config.acvmBinaryPath, fs.constants.R_OK);
47
+ await fs.mkdir(config.acvmWorkingDirectory, { recursive: true });
48
+ logger?.info(`Using native ACVM at ${config.acvmBinaryPath} and working directory ${config.acvmWorkingDirectory}`);
49
+ return new NativeACVMSimulator(config.acvmWorkingDirectory, config.acvmBinaryPath);
50
+ }
51
+ catch {
52
+ logger?.warn(`Failed to access ACVM at ${config.acvmBinaryPath}, falling back to WASM`);
53
+ }
54
+ }
55
+ logger?.info('Using WASM ACVM simulation');
56
+ return new WASMSimulator();
57
+ }
58
+ export const makeBloatedProcessedTx = async (builderDb, seed = 0x1) => {
59
+ seed *= MAX_NEW_NULLIFIERS_PER_TX; // Ensure no clashing given incremental seeds
60
+ const tx = mockTx(seed);
61
+ const kernelOutput = KernelCircuitPublicInputs.empty();
62
+ kernelOutput.constants.historicalHeader = await builderDb.buildInitialHeader();
63
+ kernelOutput.end.publicDataUpdateRequests = makeTuple(MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, i => new PublicDataUpdateRequest(fr(i), fr(i + 10), i + 20), seed + 0x500);
64
+ kernelOutput.end.publicDataUpdateRequests = makeTuple(MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, i => new PublicDataUpdateRequest(fr(i), fr(i + 10), i + 20), seed + 0x600);
65
+ const processedTx = makeProcessedTx(tx, kernelOutput, makeProof(), []);
66
+ processedTx.data.end.newNoteHashes = makeTuple(MAX_NEW_NOTE_HASHES_PER_TX, fr, seed + 0x100);
67
+ processedTx.data.end.newNullifiers = makeTuple(MAX_NEW_NULLIFIERS_PER_TX, fr, seed + 0x100000);
68
+ processedTx.data.end.newNullifiers[tx.data.forPublic.end.newNullifiers.length - 1] = Fr.zero();
69
+ processedTx.data.end.newL2ToL1Msgs = makeTuple(MAX_NEW_L2_TO_L1_MSGS_PER_TX, fr, seed + 0x300);
70
+ processedTx.data.end.noteEncryptedLogsHash = Fr.fromBuffer(processedTx.noteEncryptedLogs.hash());
71
+ processedTx.data.end.encryptedLogsHash = Fr.fromBuffer(processedTx.encryptedLogs.hash());
72
+ processedTx.data.end.unencryptedLogsHash = Fr.fromBuffer(processedTx.unencryptedLogs.hash());
73
+ return processedTx;
74
+ };
75
+ export const makeEmptyProcessedTx = async (builderDb, chainId, version) => {
76
+ const header = await builderDb.buildInitialHeader();
77
+ return makeEmptyProcessedTxFromHistoricalTreeRoots(header, chainId, version);
78
+ };
79
+ // Updates the expectedDb trees based on the new note hashes, contracts, and nullifiers from these txs
80
+ export const updateExpectedTreesFromTxs = async (db, txs) => {
81
+ await db.appendLeaves(MerkleTreeId.NOTE_HASH_TREE, txs.flatMap(tx => padArrayEnd(tx.data.end.newNoteHashes.filter(x => !x.isZero()), Fr.zero(), MAX_NEW_NOTE_HASHES_PER_TX)));
82
+ await db.batchInsert(MerkleTreeId.NULLIFIER_TREE, txs.flatMap(tx => padArrayEnd(tx.data.end.newNullifiers.filter(x => !x.isZero()), Fr.zero(), MAX_NEW_NULLIFIERS_PER_TX).map(x => x.toBuffer())), NULLIFIER_TREE_HEIGHT);
83
+ for (const tx of txs) {
84
+ await db.batchInsert(MerkleTreeId.PUBLIC_DATA_TREE, tx.data.end.publicDataUpdateRequests.map(write => {
85
+ return new PublicDataTreeLeaf(write.leafSlot, write.newValue).toBuffer();
86
+ }), PUBLIC_DATA_SUBTREE_HEIGHT);
87
+ }
88
+ };
89
+ export const makeGlobals = (blockNumber) => {
90
+ return new GlobalVariables(Fr.ZERO, Fr.ZERO, new Fr(blockNumber), Fr.ZERO, EthAddress.ZERO, AztecAddress.ZERO, GasFees.empty());
91
+ };
92
+ export const makeEmptyProcessedTestTx = (builderDb) => {
93
+ return makeEmptyProcessedTx(builderDb, Fr.ZERO, Fr.ZERO);
94
+ };
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9ja3MvZml4dHVyZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFlBQVksRUFFWixvQkFBb0IsSUFBSSwyQ0FBMkMsRUFDbkUsZUFBZSxFQUNmLE1BQU0sR0FDUCxNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFDTCxZQUFZLEVBQ1osVUFBVSxFQUNWLEVBQUUsRUFDRixPQUFPLEVBQ1AsZUFBZSxFQUNmLHlCQUF5QixFQUN6Qiw0QkFBNEIsRUFDNUIsMEJBQTBCLEVBQzFCLHlCQUF5QixFQUN6QixzQ0FBc0MsRUFDdEMscUJBQXFCLEVBQ3JCLDBCQUEwQixFQUMxQixrQkFBa0IsRUFDbEIsdUJBQXVCLEdBQ3hCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzNELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLG1CQUFtQixFQUEyQixhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUcvRixPQUFPLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsQyxPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFFeEIsTUFBTSxFQUNKLGNBQWMsR0FBRyxlQUFlLEVBQ2hDLFFBQVEsR0FBRyxNQUFNLEVBQ2pCLGNBQWMsR0FBRyxFQUFFLEVBQ25CLG9CQUFvQixHQUFHLEVBQUUsRUFDekIsZ0JBQWdCLEdBQUcsMEJBQTBCLEVBQzdDLGdCQUFnQixHQUFHLEVBQUUsRUFDckIs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
@@ -0,0 +1,32 @@
1
+ import { type BBProverConfig } from '@aztec/bb-prover';
2
+ import { type BlockProver, type ProcessedTx, type ServerCircuitProver, type Tx, type TxValidator } from '@aztec/circuit-types';
3
+ import { type Gas, GlobalVariables, type Nullifier, type TxContext } from '@aztec/circuits.js';
4
+ import { type Fr } from '@aztec/foundation/fields';
5
+ import { type DebugLogger } from '@aztec/foundation/log';
6
+ import { type ContractsDataSourcePublicDB, type PublicExecution, type PublicExecutionResult, type PublicExecutor, PublicProcessor, type SimulationProvider, type WorldStatePublicDB } from '@aztec/simulator';
7
+ import { type MerkleTreeOperations } from '@aztec/world-state';
8
+ import { type MockProxy } from 'jest-mock-extended';
9
+ import { ProvingOrchestrator } from '../orchestrator/orchestrator.js';
10
+ import { ProverAgent } from '../prover-agent/prover-agent.js';
11
+ export declare class TestContext {
12
+ publicExecutor: MockProxy<PublicExecutor>;
13
+ publicContractsDB: MockProxy<ContractsDataSourcePublicDB>;
14
+ publicWorldStateDB: MockProxy<WorldStatePublicDB>;
15
+ publicProcessor: PublicProcessor;
16
+ simulationProvider: SimulationProvider;
17
+ globalVariables: GlobalVariables;
18
+ actualDb: MerkleTreeOperations;
19
+ prover: ServerCircuitProver;
20
+ proverAgent: ProverAgent;
21
+ orchestrator: ProvingOrchestrator;
22
+ blockNumber: number;
23
+ directoriesToCleanup: string[];
24
+ logger: DebugLogger;
25
+ blockProver: BlockProver;
26
+ constructor(publicExecutor: MockProxy<PublicExecutor>, publicContractsDB: MockProxy<ContractsDataSourcePublicDB>, publicWorldStateDB: MockProxy<WorldStatePublicDB>, publicProcessor: PublicProcessor, simulationProvider: SimulationProvider, globalVariables: GlobalVariables, actualDb: MerkleTreeOperations, prover: ServerCircuitProver, proverAgent: ProverAgent, orchestrator: ProvingOrchestrator, blockNumber: number, directoriesToCleanup: string[], logger: DebugLogger);
27
+ static new(logger: DebugLogger, proverCount?: number, createProver?: (bbConfig: BBProverConfig) => Promise<ServerCircuitProver>, blockNumber?: number): Promise<TestContext>;
28
+ cleanup(): Promise<void>;
29
+ processPublicFunctions(txs: Tx[], maxTransactions: number, blockProver?: BlockProver, txValidator?: TxValidator<ProcessedTx>): Promise<[ProcessedTx[], import("@aztec/circuit-types").FailedTx[], import("@aztec/circuit-types").NestedProcessReturnValues[]]>;
30
+ processPublicFunctionsWithMockExecutorImplementation(txs: Tx[], maxTransactions: number, blockProver?: BlockProver, txValidator?: TxValidator<ProcessedTx>, executorMock?: (execution: PublicExecution, globalVariables: GlobalVariables, availableGas: Gas, txContext: TxContext, pendingNullifiers: Nullifier[], transactionFee?: Fr, sideEffectCounter?: number) => Promise<PublicExecutionResult>): Promise<[ProcessedTx[], import("@aztec/circuit-types").FailedTx[], import("@aztec/circuit-types").NestedProcessReturnValues[]]>;
31
+ }
32
+ //# sourceMappingURL=test_context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test_context.d.ts","sourceRoot":"","sources":["../../src/mocks/test_context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,116 @@
1
+ import { GlobalVariables, Header, getMockVerificationKeys, } from '@aztec/circuits.js';
2
+ import { openTmpStore } from '@aztec/kv-store/utils';
3
+ import { PublicExecutionResultBuilder, PublicProcessor, RealPublicKernelCircuitSimulator, WASMSimulator, } from '@aztec/simulator';
4
+ import { MerkleTrees } from '@aztec/world-state';
5
+ import * as fs from 'fs/promises';
6
+ import { mock } from 'jest-mock-extended';
7
+ import { TestCircuitProver } from '../../../bb-prover/src/test/test_circuit_prover.js';
8
+ import { ProvingOrchestrator } from '../orchestrator/orchestrator.js';
9
+ import { MemoryProvingQueue } from '../prover-agent/memory-proving-queue.js';
10
+ import { ProverAgent } from '../prover-agent/prover-agent.js';
11
+ import { getEnvironmentConfig, getSimulationProvider, makeGlobals } from './fixtures.js';
12
+ class DummyProverClient {
13
+ constructor(orchestrator, verificationKeys = getMockVerificationKeys()) {
14
+ this.orchestrator = orchestrator;
15
+ this.verificationKeys = verificationKeys;
16
+ }
17
+ startNewBlock(numTxs, globalVariables, l1ToL2Messages) {
18
+ return this.orchestrator.startNewBlock(numTxs, globalVariables, l1ToL2Messages, this.verificationKeys);
19
+ }
20
+ addNewTx(tx) {
21
+ return this.orchestrator.addNewTx(tx);
22
+ }
23
+ cancelBlock() {
24
+ return this.orchestrator.cancelBlock();
25
+ }
26
+ finaliseBlock() {
27
+ return this.orchestrator.finaliseBlock();
28
+ }
29
+ setBlockCompleted() {
30
+ return this.orchestrator.setBlockCompleted();
31
+ }
32
+ }
33
+ export class TestContext {
34
+ constructor(publicExecutor, publicContractsDB, publicWorldStateDB, publicProcessor, simulationProvider, globalVariables, actualDb, prover, proverAgent, orchestrator, blockNumber, directoriesToCleanup, logger) {
35
+ this.publicExecutor = publicExecutor;
36
+ this.publicContractsDB = publicContractsDB;
37
+ this.publicWorldStateDB = publicWorldStateDB;
38
+ this.publicProcessor = publicProcessor;
39
+ this.simulationProvider = simulationProvider;
40
+ this.globalVariables = globalVariables;
41
+ this.actualDb = actualDb;
42
+ this.prover = prover;
43
+ this.proverAgent = proverAgent;
44
+ this.orchestrator = orchestrator;
45
+ this.blockNumber = blockNumber;
46
+ this.directoriesToCleanup = directoriesToCleanup;
47
+ this.logger = logger;
48
+ this.blockProver = new DummyProverClient(this.orchestrator);
49
+ }
50
+ static async new(logger, proverCount = 4, createProver = _ => Promise.resolve(new TestCircuitProver(new WASMSimulator())), blockNumber = 3) {
51
+ const globalVariables = makeGlobals(blockNumber);
52
+ const publicExecutor = mock();
53
+ const publicContractsDB = mock();
54
+ const publicWorldStateDB = mock();
55
+ const publicKernel = new RealPublicKernelCircuitSimulator(new WASMSimulator());
56
+ const actualDb = await MerkleTrees.new(openTmpStore()).then(t => t.asLatest());
57
+ const processor = new PublicProcessor(actualDb, publicExecutor, publicKernel, GlobalVariables.empty(), Header.empty(), publicContractsDB, publicWorldStateDB);
58
+ let localProver;
59
+ const config = await getEnvironmentConfig(logger);
60
+ const simulationProvider = await getSimulationProvider({
61
+ acvmWorkingDirectory: config?.acvmWorkingDirectory,
62
+ acvmBinaryPath: config?.expectedAcvmPath,
63
+ });
64
+ if (!config) {
65
+ localProver = new TestCircuitProver(simulationProvider);
66
+ }
67
+ else {
68
+ const bbConfig = {
69
+ acvmBinaryPath: config.expectedAcvmPath,
70
+ acvmWorkingDirectory: config.acvmWorkingDirectory,
71
+ bbBinaryPath: config.expectedBBPath,
72
+ bbWorkingDirectory: config.bbWorkingDirectory,
73
+ };
74
+ localProver = await createProver(bbConfig);
75
+ }
76
+ const queue = new MemoryProvingQueue();
77
+ const orchestrator = new ProvingOrchestrator(actualDb, queue);
78
+ const agent = new ProverAgent(localProver, proverCount);
79
+ agent.start(queue);
80
+ return new this(publicExecutor, publicContractsDB, publicWorldStateDB, processor, simulationProvider, globalVariables, actualDb, localProver, agent, orchestrator, blockNumber, [config?.directoryToCleanup ?? ''], logger);
81
+ }
82
+ async cleanup() {
83
+ await this.proverAgent.stop();
84
+ for (const dir of this.directoriesToCleanup.filter(x => x !== '')) {
85
+ await fs.rm(dir, { recursive: true, force: true });
86
+ }
87
+ }
88
+ async processPublicFunctions(txs, maxTransactions, blockProver, txValidator) {
89
+ const defaultExecutorImplementation = (execution, _globalVariables, availableGas, _txContext, _pendingNullifiers, transactionFee, _sideEffectCounter) => {
90
+ for (const tx of txs) {
91
+ const allCalls = tx.publicTeardownFunctionCall.isEmpty()
92
+ ? tx.enqueuedPublicFunctionCalls
93
+ : [...tx.enqueuedPublicFunctionCalls, tx.publicTeardownFunctionCall];
94
+ for (const request of allCalls) {
95
+ if (execution.contractAddress.equals(request.contractAddress)) {
96
+ const result = PublicExecutionResultBuilder.fromPublicCallRequest({ request }).build({
97
+ startGasLeft: availableGas,
98
+ endGasLeft: availableGas,
99
+ transactionFee,
100
+ });
101
+ return Promise.resolve(result);
102
+ }
103
+ }
104
+ }
105
+ throw new Error(`Unexpected execution request: ${execution}`);
106
+ };
107
+ return await this.processPublicFunctionsWithMockExecutorImplementation(txs, maxTransactions, blockProver, txValidator, defaultExecutorImplementation);
108
+ }
109
+ async processPublicFunctionsWithMockExecutorImplementation(txs, maxTransactions, blockProver, txValidator, executorMock) {
110
+ if (executorMock) {
111
+ this.publicExecutor.simulate.mockImplementation(executorMock);
112
+ }
113
+ return await this.publicProcessor.process(txs, maxTransactions, blockProver, txValidator);
114
+ }
115
+ }
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF9jb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vY2tzL3Rlc3RfY29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxPQUFPLEVBRUwsZUFBZSxFQUNmLE1BQU0sRUFHTix1QkFBdUIsR0FDeEIsTUFBTSxvQkFBb0IsQ0FBQztBQUc1QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUlMLDRCQUE0QixFQUU1QixlQUFlLEVBQ2YsZ0NBQWdDLEVBRWhDLGFBQWEsR0FFZCxNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBNkIsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFNUUsT0FBTyxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbEMsT0FBTyxFQUFrQixJQUFJLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUUxRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUN2RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLHFCQUFxQixFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6RixNQUFNLGlCQUFpQjtJQUNyQixZQUFvQixZQUFpQyxFQUFVLG1CQUFtQix1QkFBdUIsRUFBRTtRQUF2RixpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFBVSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQTRCO0lBQUcsQ0FBQztJQUMvRyxhQUFhLENBQUMsTUFBYyxFQUFFLGVBQWdDLEVBQUUsY0FBb0I7UUFDbEYsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUs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
@@ -0,0 +1,36 @@
1
+ import { MerkleTreeId, type ProcessedTx } from '@aztec/circuit-types';
2
+ import { AppendOnlyTreeSnapshot, type BaseOrMergeRollupPublicInputs, BaseRollupInputs, ConstantRollupData, Fr, type GlobalVariables, KernelData, type L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH, MembershipWitness, MergeRollupInputs, NESTED_RECURSIVE_PROOF_LENGTH, type NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, PartialStateReference, PreviousRollupData, PublicDataTreeLeaf, type PublicDataTreeLeafPreimage, type RecursiveProof, type RootParityInput, RootRollupInputs, type RootRollupPublicInputs, type StateReference, type VerificationKeyAsFields, type VerificationKeyData } from '@aztec/circuits.js';
3
+ import { type Tuple } from '@aztec/foundation/serialize';
4
+ import { type MerkleTreeOperations } from '@aztec/world-state';
5
+ /**
6
+ * Type representing the names of the trees for the base rollup.
7
+ */
8
+ type BaseTreeNames = 'NoteHashTree' | 'ContractTree' | 'NullifierTree' | 'PublicDataTree';
9
+ /**
10
+ * Type representing the names of the trees.
11
+ */
12
+ export type TreeNames = BaseTreeNames | 'L1ToL2MessageTree' | 'Archive';
13
+ export declare function buildBaseRollupInput(tx: ProcessedTx, globalVariables: GlobalVariables, db: MerkleTreeOperations, kernelVk: VerificationKeyData): Promise<BaseRollupInputs>;
14
+ export declare function createMergeRollupInputs(left: [BaseOrMergeRollupPublicInputs, RecursiveProof<typeof NESTED_RECURSIVE_PROOF_LENGTH>, VerificationKeyAsFields], right: [BaseOrMergeRollupPublicInputs, RecursiveProof<typeof NESTED_RECURSIVE_PROOF_LENGTH>, VerificationKeyAsFields]): MergeRollupInputs;
15
+ export declare function validateRootOutput(rootOutput: RootRollupPublicInputs, db: MerkleTreeOperations): Promise<void>;
16
+ export declare function validateState(state: StateReference, db: MerkleTreeOperations): Promise<void>;
17
+ export declare function getRootRollupInput(rollupOutputLeft: BaseOrMergeRollupPublicInputs, rollupProofLeft: RecursiveProof<typeof NESTED_RECURSIVE_PROOF_LENGTH>, verificationKeyLeft: VerificationKeyAsFields, rollupOutputRight: BaseOrMergeRollupPublicInputs, rollupProofRight: RecursiveProof<typeof NESTED_RECURSIVE_PROOF_LENGTH>, verificationKeyRight: VerificationKeyAsFields, l1ToL2Roots: RootParityInput<typeof NESTED_RECURSIVE_PROOF_LENGTH>, newL1ToL2Messages: Tuple<Fr, typeof NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP>, messageTreeSnapshot: AppendOnlyTreeSnapshot, messageTreeRootSiblingPath: Tuple<Fr, typeof L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH>, db: MerkleTreeOperations): Promise<RootRollupInputs>;
18
+ export declare function getPreviousRollupDataFromPublicInputs(rollupOutput: BaseOrMergeRollupPublicInputs, rollupProof: RecursiveProof<typeof NESTED_RECURSIVE_PROOF_LENGTH>, vk: VerificationKeyAsFields): PreviousRollupData;
19
+ export declare function getConstantRollupData(globalVariables: GlobalVariables, db: MerkleTreeOperations): Promise<ConstantRollupData>;
20
+ export declare function getTreeSnapshot(id: MerkleTreeId, db: MerkleTreeOperations): Promise<AppendOnlyTreeSnapshot>;
21
+ export declare function getKernelDataFor(tx: ProcessedTx, vk: VerificationKeyData): KernelData;
22
+ export declare function makeEmptyMembershipWitness<N extends number>(height: N): MembershipWitness<N>;
23
+ export declare function processPublicDataUpdateRequests(tx: ProcessedTx, db: MerkleTreeOperations): Promise<{
24
+ lowPublicDataWritesPreimages: [PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage, PublicDataTreeLeafPreimage];
25
+ lowPublicDataWritesMembershipWitnesses: [MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>, MembershipWitness<40>];
26
+ newPublicDataSubtreeSiblingPath: [Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr];
27
+ sortedPublicDataWrites: [PublicDataTreeLeaf, PublicDataTreeLeaf, PublicDataTreeLeaf, PublicDataTreeLeaf, PublicDataTreeLeaf, PublicDataTreeLeaf, PublicDataTreeLeaf, PublicDataTreeLeaf, PublicDataTreeLeaf, PublicDataTreeLeaf, PublicDataTreeLeaf, PublicDataTreeLeaf, PublicDataTreeLeaf, PublicDataTreeLeaf, PublicDataTreeLeaf, PublicDataTreeLeaf, PublicDataTreeLeaf, PublicDataTreeLeaf, PublicDataTreeLeaf, PublicDataTreeLeaf, PublicDataTreeLeaf, PublicDataTreeLeaf, PublicDataTreeLeaf, PublicDataTreeLeaf, PublicDataTreeLeaf, PublicDataTreeLeaf, PublicDataTreeLeaf, PublicDataTreeLeaf, PublicDataTreeLeaf, PublicDataTreeLeaf, PublicDataTreeLeaf, PublicDataTreeLeaf];
28
+ sortedPublicDataWritesIndexes: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number];
29
+ }>;
30
+ export declare function getSubtreeSiblingPath(treeId: MerkleTreeId, subtreeHeight: number, db: MerkleTreeOperations): Promise<Fr[]>;
31
+ export declare function getMembershipWitnessFor<N extends number>(value: Fr, treeId: MerkleTreeId, height: N, db: MerkleTreeOperations): Promise<MembershipWitness<N>>;
32
+ export declare function validatePartialState(partialState: PartialStateReference, treeSnapshots: Map<MerkleTreeId, AppendOnlyTreeSnapshot>): void;
33
+ export declare function validateSimulatedTree(localTree: AppendOnlyTreeSnapshot, simulatedTree: AppendOnlyTreeSnapshot, name: TreeNames, label?: string): void;
34
+ export declare function validateTx(tx: ProcessedTx): void;
35
+ export {};
36
+ //# sourceMappingURL=block-building-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-building-helpers.d.ts","sourceRoot":"","sources":["../../src/orchestrator/block-building-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAEL,sBAAsB,EACtB,KAAK,6BAA6B,EAClC,gBAAgB,EAChB,kBAAkB,EAClB,EAAE,EACF,KAAK,eAAe,EACpB,UAAU,EACV,KAAK,wCAAwC,EAG7C,iBAAiB,EACjB,iBAAiB,EACjB,6BAA6B,EAM7B,KAAK,mCAAmC,EAKxC,qBAAqB,EACrB,kBAAkB,EAElB,kBAAkB,EAClB,KAAK,0BAA0B,EAG/B,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,gBAAgB,EAChB,KAAK,sBAAsB,EAE3B,KAAK,cAAc,EAEnB,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,EAEzB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,KAAK,KAAK,EAAgC,MAAM,6BAA6B,CAAC;AAEvF,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAS/D;;GAEG;AACH,KAAK,aAAa,GAAG,cAAc,GAAG,cAAc,GAAG,eAAe,GAAG,gBAAgB,CAAC;AAC1F;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,mBAAmB,GAAG,SAAS,CAAC;AAGxE,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,WAAW,EACf,eAAe,EAAE,eAAe,EAChC,EAAE,EAAE,oBAAoB,EACxB,QAAQ,EAAE,mBAAmB,6BA6G9B;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,CAAC,6BAA6B,EAAE,cAAc,CAAC,OAAO,6BAA6B,CAAC,EAAE,uBAAuB,CAAC,EACpH,KAAK,EAAE,CAAC,6BAA6B,EAAE,cAAc,CAAC,OAAO,6BAA6B,CAAC,EAAE,uBAAuB,CAAC,qBAOtH;AAGD,wBAAsB,kBAAkB,CAAC,UAAU,EAAE,sBAAsB,EAAE,EAAE,EAAE,oBAAoB,iBAKpG;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE,oBAAoB,iBAelF;AAGD,wBAAsB,kBAAkB,CACtC,gBAAgB,EAAE,6BAA6B,EAC/C,eAAe,EAAE,cAAc,CAAC,OAAO,6BAA6B,CAAC,EACrE,mBAAmB,EAAE,uBAAuB,EAC5C,iBAAiB,EAAE,6BAA6B,EAChD,gBAAgB,EAAE,cAAc,CAAC,OAAO,6BAA6B,CAAC,EACtE,oBAAoB,EAAE,uBAAuB,EAC7C,WAAW,EAAE,eAAe,CAAC,OAAO,6BAA6B,CAAC,EAClE,iBAAiB,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,mCAAmC,CAAC,EACxE,mBAAmB,EAAE,sBAAsB,EAC3C,0BAA0B,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,wCAAwC,CAAC,EACtF,EAAE,EAAE,oBAAoB,6BAgCzB;AAED,wBAAgB,qCAAqC,CACnD,YAAY,EAAE,6BAA6B,EAC3C,WAAW,EAAE,cAAc,CAAC,OAAO,6BAA6B,CAAC,EACjE,EAAE,EAAE,uBAAuB,sBAe5B;AAED,wBAAsB,qBAAqB,CACzC,eAAe,EAAE,eAAe,EAChC,EAAE,EAAE,oBAAoB,GACvB,OAAO,CAAC,kBAAkB,CAAC,CAS7B;AAED,wBAAsB,eAAe,CAAC,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,oBAAoB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAGjH;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,mBAAmB,GAAG,UAAU,CAarF;AAED,wBAAgB,0BAA0B,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,wBAMrE;AAED,wBAAsB,+BAA+B,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,oBAAoB;;;;;;GA+D9F;AAED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,YAAY,EACpB,aAAa,EAAE,MAAM,EACrB,EAAE,EAAE,oBAAoB,GACvB,OAAO,CAAC,EAAE,EAAE,CAAC,CAMf;AAGD,wBAAsB,uBAAuB,CAAC,CAAC,SAAS,MAAM,EAC5D,KAAK,EAAE,EAAE,EACT,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,CAAC,EACT,EAAE,EAAE,oBAAoB,GACvB,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAY/B;AAED,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,qBAAqB,EACnC,aAAa,EAAE,GAAG,CAAC,YAAY,EAAE,sBAAsB,CAAC,QASzD;AAGD,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,sBAAsB,EACjC,aAAa,EAAE,sBAAsB,EACrC,IAAI,EAAE,SAAS,EACf,KAAK,CAAC,EAAE,MAAM,QAYf;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,WAAW,QAczC"}