@aztec/prover-client 0.0.1-commit.c31f2472 → 0.0.1-commit.c52d6e7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/config.d.ts +1 -1
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +16 -2
- package/dest/light/lightweight_checkpoint_builder.d.ts +12 -5
- package/dest/light/lightweight_checkpoint_builder.d.ts.map +1 -1
- package/dest/light/lightweight_checkpoint_builder.js +59 -23
- package/dest/mocks/fixtures.d.ts +1 -1
- package/dest/mocks/fixtures.d.ts.map +1 -1
- package/dest/mocks/fixtures.js +3 -3
- package/dest/mocks/test_context.d.ts +11 -11
- package/dest/mocks/test_context.d.ts.map +1 -1
- package/dest/mocks/test_context.js +31 -30
- package/dest/orchestrator/block-building-helpers.d.ts +4 -4
- package/dest/orchestrator/block-building-helpers.d.ts.map +1 -1
- package/dest/orchestrator/block-building-helpers.js +4 -4
- package/dest/orchestrator/block-proving-state.d.ts +4 -1
- package/dest/orchestrator/block-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/block-proving-state.js +7 -0
- package/dest/orchestrator/checkpoint-proving-state.d.ts +20 -36
- package/dest/orchestrator/checkpoint-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/checkpoint-proving-state.js +22 -120
- package/dest/orchestrator/checkpoint-sub-tree-orchestrator.d.ts +161 -0
- package/dest/orchestrator/checkpoint-sub-tree-orchestrator.d.ts.map +1 -0
- package/dest/orchestrator/{orchestrator.js → checkpoint-sub-tree-orchestrator.js} +285 -462
- package/dest/orchestrator/chonk-cache.d.ts +39 -0
- package/dest/orchestrator/chonk-cache.d.ts.map +1 -0
- package/dest/orchestrator/chonk-cache.js +80 -0
- package/dest/orchestrator/index.d.ts +4 -2
- package/dest/orchestrator/index.d.ts.map +1 -1
- package/dest/orchestrator/index.js +3 -1
- package/dest/orchestrator/proving-scheduler.d.ts +81 -0
- package/dest/orchestrator/proving-scheduler.d.ts.map +1 -0
- package/dest/orchestrator/proving-scheduler.js +120 -0
- package/dest/orchestrator/top-tree-orchestrator.d.ts +88 -0
- package/dest/orchestrator/top-tree-orchestrator.d.ts.map +1 -0
- package/dest/orchestrator/top-tree-orchestrator.js +232 -0
- package/dest/orchestrator/top-tree-proving-state.d.ts +61 -0
- package/dest/orchestrator/top-tree-proving-state.d.ts.map +1 -0
- package/dest/orchestrator/top-tree-proving-state.js +185 -0
- package/dest/orchestrator/tx-proving-state.d.ts +3 -3
- package/dest/orchestrator/tx-proving-state.d.ts.map +1 -1
- package/dest/prover-client/prover-client.d.ts +64 -7
- package/dest/prover-client/prover-client.d.ts.map +1 -1
- package/dest/prover-client/prover-client.js +62 -13
- package/dest/proving_broker/broker_prover_facade.d.ts +3 -3
- package/dest/proving_broker/broker_prover_facade.d.ts.map +1 -1
- package/dest/proving_broker/broker_prover_facade.js +26 -20
- package/dest/proving_broker/config.d.ts +11 -67
- package/dest/proving_broker/config.d.ts.map +1 -1
- package/dest/proving_broker/config.js +16 -5
- package/dest/proving_broker/index.d.ts +2 -1
- package/dest/proving_broker/index.d.ts.map +1 -1
- package/dest/proving_broker/index.js +1 -0
- package/dest/proving_broker/proof_store/factory.d.ts +2 -5
- package/dest/proving_broker/proof_store/factory.d.ts.map +1 -1
- package/dest/proving_broker/proof_store/factory.js +7 -30
- package/dest/proving_broker/proof_store/file_store_proof_store.d.ts +18 -0
- package/dest/proving_broker/proof_store/file_store_proof_store.d.ts.map +1 -0
- package/dest/proving_broker/proof_store/file_store_proof_store.js +60 -0
- package/dest/proving_broker/proof_store/index.d.ts +2 -2
- package/dest/proving_broker/proof_store/index.d.ts.map +1 -1
- package/dest/proving_broker/proof_store/index.js +1 -1
- package/dest/proving_broker/proving_broker.d.ts +9 -5
- package/dest/proving_broker/proving_broker.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker.js +245 -70
- package/dest/proving_broker/proving_broker_database/memory.d.ts +5 -2
- package/dest/proving_broker/proving_broker_database/memory.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker_database/memory.js +14 -1
- package/dest/proving_broker/proving_broker_database/persisted.d.ts +15 -2
- package/dest/proving_broker/proving_broker_database/persisted.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker_database/persisted.js +57 -6
- package/dest/proving_broker/proving_broker_database.d.ts +27 -1
- package/dest/proving_broker/proving_broker_database.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker_instrumentation.d.ts +3 -1
- package/dest/proving_broker/proving_broker_instrumentation.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker_instrumentation.js +7 -0
- package/dest/proving_broker/rpc.d.ts +18 -5
- package/dest/proving_broker/rpc.d.ts.map +1 -1
- package/dest/proving_broker/rpc.js +98 -23
- package/dest/test/epoch_settlement.d.ts +36 -0
- package/dest/test/epoch_settlement.d.ts.map +1 -0
- package/dest/test/epoch_settlement.js +52 -0
- package/dest/test/index.d.ts +2 -0
- package/dest/test/index.d.ts.map +1 -0
- package/dest/test/index.js +1 -0
- package/dest/test/mock_prover.d.ts +4 -4
- package/dest/test/mock_prover.js +2 -2
- package/package.json +20 -20
- package/src/config.ts +18 -2
- package/src/light/lightweight_checkpoint_builder.ts +63 -25
- package/src/mocks/fixtures.ts +2 -4
- package/src/mocks/test_context.ts +27 -43
- package/src/orchestrator/block-building-helpers.ts +4 -4
- package/src/orchestrator/block-proving-state.ts +9 -0
- package/src/orchestrator/checkpoint-proving-state.ts +21 -162
- package/src/orchestrator/checkpoint-sub-tree-orchestrator.ts +1044 -0
- package/src/orchestrator/chonk-cache.ts +99 -0
- package/src/orchestrator/index.ts +8 -1
- package/src/orchestrator/proving-scheduler.ts +160 -0
- package/src/orchestrator/top-tree-orchestrator.ts +384 -0
- package/src/orchestrator/top-tree-proving-state.ts +219 -0
- package/src/orchestrator/tx-proving-state.ts +3 -3
- package/src/prover-client/prover-client.ts +134 -25
- package/src/proving_broker/broker_prover_facade.ts +29 -23
- package/src/proving_broker/config.ts +16 -2
- package/src/proving_broker/index.ts +1 -0
- package/src/proving_broker/proof_store/factory.ts +10 -32
- package/src/proving_broker/proof_store/file_store_proof_store.ts +78 -0
- package/src/proving_broker/proof_store/index.ts +1 -1
- package/src/proving_broker/proving_broker.ts +237 -72
- package/src/proving_broker/proving_broker_database/memory.ts +16 -2
- package/src/proving_broker/proving_broker_database/persisted.ts +71 -8
- package/src/proving_broker/proving_broker_database.ts +30 -0
- package/src/proving_broker/proving_broker_instrumentation.ts +9 -0
- package/src/proving_broker/rpc.ts +62 -20
- package/src/test/epoch_settlement.ts +82 -0
- package/src/test/index.ts +1 -0
- package/src/test/mock_prover.ts +2 -2
- package/dest/orchestrator/epoch-proving-state.d.ts +0 -75
- package/dest/orchestrator/epoch-proving-state.d.ts.map +0 -1
- package/dest/orchestrator/epoch-proving-state.js +0 -267
- package/dest/orchestrator/orchestrator.d.ts +0 -128
- package/dest/orchestrator/orchestrator.d.ts.map +0 -1
- package/dest/prover-client/server-epoch-prover.d.ts +0 -32
- package/dest/prover-client/server-epoch-prover.d.ts.map +0 -1
- package/dest/prover-client/server-epoch-prover.js +0 -40
- package/dest/proving_broker/proof_store/gcs_proof_store.d.ts +0 -14
- package/dest/proving_broker/proof_store/gcs_proof_store.d.ts.map +0 -1
- package/dest/proving_broker/proof_store/gcs_proof_store.js +0 -52
- package/src/orchestrator/epoch-proving-state.ts +0 -378
- package/src/orchestrator/orchestrator.ts +0 -1281
- package/src/prover-client/server-epoch-prover.ts +0 -69
- package/src/proving_broker/proof_store/gcs_proof_store.ts +0 -76
package/dest/config.d.ts
CHANGED
|
@@ -14,4 +14,4 @@ export declare const proverClientConfigMappings: ConfigMappingsType<ProverClient
|
|
|
14
14
|
* @returns The prover configuration.
|
|
15
15
|
*/
|
|
16
16
|
export declare function getProverEnvVars(): ProverClientUserConfig;
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM3RCxPQUFPLEVBQ0wsS0FBSyxrQkFBa0IsRUFJeEIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsS0FBSyxZQUFZLEVBQXdCLE1BQU0sd0NBQXdDLENBQUM7QUFFakcsT0FBTyxFQUNMLEtBQUssaUJBQWlCLEVBQ3RCLEtBQUssa0JBQWtCLEVBR3hCLE1BQU0sNEJBQTRCLENBQUM7QUFFcEMsdURBQXVEO0FBQ3ZELE1BQU0sTUFBTSxzQkFBc0IsR0FBRyxZQUFZLEdBQUcsaUJBQWlCLEdBQUcsa0JBQWtCLEdBQUcsUUFBUSxHQUFHLFVBQVUsQ0FBQztBQUVuSCxpRUFBaUU7QUFDakUsTUFBTSxNQUFNLGtCQUFrQixHQUFHLHNCQUFzQixHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUU3RyxlQUFPLE1BQU0sZ0JBQWdCLEVBQUUsa0JBQWtCLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FnRHRFLENBQUM7QUFFRixlQUFPLE1BQU0sMEJBQTBCLEVBQUUsa0JBQWtCLENBQUMsc0JBQXNCLENBS2pGLENBQUM7QUFFRjs7OztHQUlHO0FBQ0gsd0JBQWdCLGdCQUFnQixJQUFJLHNCQUFzQixDQUV6RCJ9
|
package/dest/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EACL,KAAK,kBAAkB,EAIxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,YAAY,EAAwB,MAAM,wCAAwC,CAAC;AAEjG,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EAGxB,MAAM,4BAA4B,CAAC;AAEpC,uDAAuD;AACvD,MAAM,MAAM,sBAAsB,GAAG,YAAY,GAAG,iBAAiB,GAAG,kBAAkB,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEnH,iEAAiE;AACjE,MAAM,MAAM,kBAAkB,GAAG,sBAAsB,GAAG,QAAQ,CAAC,IAAI,CAAC,sBAAsB,EAAE,UAAU,CAAC,CAAC,CAAC;AAE7G,eAAO,MAAM,gBAAgB,EAAE,kBAAkB,CAAC,QAAQ,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EACL,KAAK,kBAAkB,EAIxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,YAAY,EAAwB,MAAM,wCAAwC,CAAC;AAEjG,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EAGxB,MAAM,4BAA4B,CAAC;AAEpC,uDAAuD;AACvD,MAAM,MAAM,sBAAsB,GAAG,YAAY,GAAG,iBAAiB,GAAG,kBAAkB,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEnH,iEAAiE;AACjE,MAAM,MAAM,kBAAkB,GAAG,sBAAsB,GAAG,QAAQ,CAAC,IAAI,CAAC,sBAAsB,EAAE,UAAU,CAAC,CAAC,CAAC;AAE7G,eAAO,MAAM,gBAAgB,EAAE,kBAAkB,CAAC,QAAQ,GAAG,UAAU,CAgDtE,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,kBAAkB,CAAC,sBAAsB,CAKjF,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,sBAAsB,CAEzD"}
|
package/dest/config.js
CHANGED
|
@@ -25,13 +25,27 @@ export const bbConfigMappings = {
|
|
|
25
25
|
},
|
|
26
26
|
numConcurrentIVCVerifiers: {
|
|
27
27
|
env: 'BB_NUM_IVC_VERIFIERS',
|
|
28
|
-
description: 'Max
|
|
28
|
+
description: 'Max concurrent verifications for the RPC verifier (QueuedIVCVerifier).',
|
|
29
29
|
...numberConfigHelper(8)
|
|
30
30
|
},
|
|
31
31
|
bbIVCConcurrency: {
|
|
32
32
|
env: 'BB_IVC_CONCURRENCY',
|
|
33
|
-
description: '
|
|
33
|
+
description: 'Thread count for the RPC IVC verifier.',
|
|
34
34
|
...numberConfigHelper(1)
|
|
35
|
+
},
|
|
36
|
+
bbChonkVerifyMaxBatch: {
|
|
37
|
+
env: 'BB_CHONK_VERIFY_MAX_BATCH',
|
|
38
|
+
description: 'Upper bound on proofs per batch for the peer chonk batch verifier. Proofs are verified immediately as they arrive; this only caps how many can accumulate while a batch is already being processed.',
|
|
39
|
+
...numberConfigHelper(16)
|
|
40
|
+
},
|
|
41
|
+
bbChonkVerifyConcurrency: {
|
|
42
|
+
env: 'BB_CHONK_VERIFY_BATCH_CONCURRENCY',
|
|
43
|
+
description: 'Thread count for the peer batch verifier parallel reduce. 0 = auto.',
|
|
44
|
+
...numberConfigHelper(6)
|
|
45
|
+
},
|
|
46
|
+
bbDebugOutputDir: {
|
|
47
|
+
env: 'BB_DEBUG_OUTPUT_DIR',
|
|
48
|
+
description: 'When set, bb.js operations write input/output files and log equivalent CLI commands to this directory'
|
|
35
49
|
}
|
|
36
50
|
};
|
|
37
51
|
export const proverClientConfigMappings = {
|
|
@@ -14,6 +14,7 @@ import { type CheckpointGlobalVariables, type GlobalVariables, type ProcessedTx,
|
|
|
14
14
|
export declare class LightweightCheckpointBuilder {
|
|
15
15
|
readonly checkpointNumber: CheckpointNumber;
|
|
16
16
|
readonly constants: CheckpointGlobalVariables;
|
|
17
|
+
feeAssetPriceModifier: bigint;
|
|
17
18
|
readonly l1ToL2Messages: Fr[];
|
|
18
19
|
private readonly previousCheckpointOutHashes;
|
|
19
20
|
readonly db: MerkleTreeWriteOperations;
|
|
@@ -22,15 +23,18 @@ export declare class LightweightCheckpointBuilder {
|
|
|
22
23
|
private spongeBlob;
|
|
23
24
|
private blocks;
|
|
24
25
|
private blobFields;
|
|
25
|
-
constructor(checkpointNumber: CheckpointNumber, constants: CheckpointGlobalVariables, l1ToL2Messages: Fr[], previousCheckpointOutHashes: Fr[], db: MerkleTreeWriteOperations, bindings?: LoggerBindings);
|
|
26
|
-
static startNewCheckpoint(checkpointNumber: CheckpointNumber, constants: CheckpointGlobalVariables, l1ToL2Messages: Fr[], previousCheckpointOutHashes: Fr[], db: MerkleTreeWriteOperations, bindings?: LoggerBindings): Promise<LightweightCheckpointBuilder>;
|
|
26
|
+
constructor(checkpointNumber: CheckpointNumber, constants: CheckpointGlobalVariables, feeAssetPriceModifier: bigint, l1ToL2Messages: Fr[], previousCheckpointOutHashes: Fr[], db: MerkleTreeWriteOperations, bindings?: LoggerBindings);
|
|
27
|
+
static startNewCheckpoint(checkpointNumber: CheckpointNumber, constants: CheckpointGlobalVariables, l1ToL2Messages: Fr[], previousCheckpointOutHashes: Fr[], db: MerkleTreeWriteOperations, bindings?: LoggerBindings, feeAssetPriceModifier?: bigint): Promise<LightweightCheckpointBuilder>;
|
|
27
28
|
/**
|
|
28
29
|
* Resumes building a checkpoint from existing blocks. This is used for validator re-execution
|
|
29
30
|
* where blocks have already been built and their effects are already in the database.
|
|
30
31
|
* Unlike startNewCheckpoint, this does NOT append l1ToL2Messages to the tree since they
|
|
31
32
|
* were already added when the blocks were originally built.
|
|
32
33
|
*/
|
|
33
|
-
static resumeCheckpoint(checkpointNumber: CheckpointNumber, constants: CheckpointGlobalVariables, l1ToL2Messages: Fr[], previousCheckpointOutHashes: Fr[], db: MerkleTreeWriteOperations, existingBlocks: L2Block[], bindings?: LoggerBindings): Promise<LightweightCheckpointBuilder>;
|
|
34
|
+
static resumeCheckpoint(checkpointNumber: CheckpointNumber, constants: CheckpointGlobalVariables, feeAssetPriceModifier: bigint, l1ToL2Messages: Fr[], previousCheckpointOutHashes: Fr[], db: MerkleTreeWriteOperations, existingBlocks: L2Block[], bindings?: LoggerBindings): Promise<LightweightCheckpointBuilder>;
|
|
35
|
+
/** Returns how many blocks have been added to this checkpoint so far */
|
|
36
|
+
getBlockCount(): number;
|
|
37
|
+
getBlocks(): L2Block[];
|
|
34
38
|
/**
|
|
35
39
|
* Adds a new block to the checkpoint. The tx effects must have already been inserted into the db if
|
|
36
40
|
* this is called after tx processing, if that's not the case, then set `insertTxsEffects` to true.
|
|
@@ -38,8 +42,11 @@ export declare class LightweightCheckpointBuilder {
|
|
|
38
42
|
addBlock(globalVariables: GlobalVariables, txs: ProcessedTx[], opts?: {
|
|
39
43
|
insertTxsEffects?: boolean;
|
|
40
44
|
expectedEndState?: StateReference;
|
|
41
|
-
}): Promise<
|
|
45
|
+
}): Promise<{
|
|
46
|
+
block: L2Block;
|
|
47
|
+
timings: Record<string, number>;
|
|
48
|
+
}>;
|
|
42
49
|
completeCheckpoint(): Promise<Checkpoint>;
|
|
43
50
|
clone(): LightweightCheckpointBuilder;
|
|
44
51
|
}
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHR3ZWlnaHRfY2hlY2twb2ludF9idWlsZGVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGlnaHQvbGlnaHR3ZWlnaHRfY2hlY2twb2ludF9idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxLQUFLLGdCQUFnQixFQUF5QixNQUFNLGlDQUFpQyxDQUFDO0FBQy9GLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEVBQWUsS0FBSyxjQUFjLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFFdkYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RCxPQUFPLEtBQUssRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBU2pGLE9BQU8sRUFDTCxLQUFLLHlCQUF5QixFQUM5QixLQUFLLGVBQWUsRUFDcEIsS0FBSyxXQUFXLEVBQ2hCLGNBQWMsRUFDZixNQUFNLGtCQUFrQixDQUFDO0FBUTFCOzs7OztHQUtHO0FBQ0gscUJBQWEsNEJBQTRCO2FBU3JCLGdCQUFnQixFQUFFLGdCQUFnQjthQUNsQyxTQUFTLEVBQUUseUJBQXlCO0lBQzdDLHFCQUFxQixFQUFFLE1BQU07YUFDcEIsY0FBYyxFQUFFLEVBQUUsRUFBRTtJQUNwQyxPQUFPLENBQUMsUUFBUSxDQUFDLDJCQUEyQjthQUM1QixFQUFFLEVBQUUseUJBQXlCO0lBYi9DLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFTO0lBRWhDLE9BQU8sQ0FBQyxZQUFZLENBQWdDO0lBQ3BELE9BQU8sQ0FBQyxVQUFVLENBQWE7SUFDL0IsT0FBTyxDQUFDLE1BQU0sQ0FBaUI7SUFDL0IsT0FBTyxDQUFDLFVBQVUsQ0FBWTtJQUU5QixZQUNrQixnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFDbEMsU0FBUyxFQUFFLHlCQUF5QixFQUM3QyxxQkFBcUIsRUFBRSxNQUFNLEVBQ3BCLGNBQWMsRUFBRSxFQUFFLEVBQUUsRUFDbkIsMkJBQTJCLEVBQUUsRUFBRSxFQUFFLEVBQ2xDLEVBQUUsRUFBRSx5QkFBeUIsRUFDN0MsUUFBUSxDQUFDLEVBQUUsY0FBYyxFQVExQjtJQUVELE9BQWEsa0JBQWtCLENBQzdCLGdCQUFnQixFQUFFLGdCQUFnQixFQUNsQyxTQUFTLEVBQUUseUJBQXlCLEVBQ3BDLGNBQWMsRUFBRSxFQUFFLEVBQUUsRUFDcEIsMkJBQTJCLEVBQUUsRUFBRSxFQUFFLEVBQ2pDLEVBQUUsRUFBRSx5QkFBeUIsRUFDN0IsUUFBUSxDQUFDLEVBQUUsY0FBYyxFQUN6QixxQkFBcUIsR0FBRSxNQUFXLEdBQ2pDLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBQyxDQWF2QztJQUVEOzs7OztPQUtHO0lBQ0gsT0FBYSxnQkFBZ0IsQ0FDM0IsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQ2xDLFNBQVMsRUFBRSx5QkFBeUIsRUFDcEMscUJBQXFCLEVBQUUsTUFBTSxFQUM3QixjQUFjLEVBQUUsRUFBRSxFQUFFLEVBQ3BCLDJCQUEyQixFQUFFLEVBQUUsRUFBRSxFQUNqQyxFQUFFLEVBQUUseUJBQXlCLEVBQzdCLGNBQWMsRUFBRSxPQUFPLEVBQUUsRUFDekIsUUFBUSxDQUFDLEVBQUUsY0FBYyxHQUN4QixPQUFPLENBQUMsNEJBQTRCLENBQUMsQ0FtRHZDO0lBRUQsd0VBQXdFO0lBQ2pFLGFBQWEsV0FFbkI7SUFFTSxTQUFTLGNBRWY7SUFFRDs7O09BR0c7SUFDVSxRQUFRLENBQ25CLGVBQWUsRUFBRSxlQUFlLEVBQ2hDLEdBQUcsRUFBRSxXQUFXLEVBQUUsRUFDbEIsSUFBSSxHQUFFO1FBQUUsZ0JBQWdCLENBQUMsRUFBRSxPQUFPLENBQUM7UUFBQyxnQkFBZ0IsQ0FBQyxFQUFFLGNBQWMsQ0FBQTtLQUFPLEdBQzNFLE9BQU8sQ0FBQztRQUFFLEtBQUssRUFBRSxPQUFPLENBQUM7UUFBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQTtLQUFFLENBQUMsQ0E4RTlEO0lBRUssa0JBQWtCLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQXVEOUM7SUFFRCxLQUFLLGlDQWVKO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lightweight_checkpoint_builder.d.ts","sourceRoot":"","sources":["../../src/light/lightweight_checkpoint_builder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lightweight_checkpoint_builder.d.ts","sourceRoot":"","sources":["../../src/light/lightweight_checkpoint_builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,gBAAgB,EAAyB,MAAM,iCAAiC,CAAC;AAC/F,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAEvF,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AASjF,OAAO,EACL,KAAK,yBAAyB,EAC9B,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,cAAc,EACf,MAAM,kBAAkB,CAAC;AAQ1B;;;;;GAKG;AACH,qBAAa,4BAA4B;aASrB,gBAAgB,EAAE,gBAAgB;aAClC,SAAS,EAAE,yBAAyB;IAC7C,qBAAqB,EAAE,MAAM;aACpB,cAAc,EAAE,EAAE,EAAE;IACpC,OAAO,CAAC,QAAQ,CAAC,2BAA2B;aAC5B,EAAE,EAAE,yBAAyB;IAb/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC,OAAO,CAAC,YAAY,CAAgC;IACpD,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,UAAU,CAAY;IAE9B,YACkB,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAE,yBAAyB,EAC7C,qBAAqB,EAAE,MAAM,EACpB,cAAc,EAAE,EAAE,EAAE,EACnB,2BAA2B,EAAE,EAAE,EAAE,EAClC,EAAE,EAAE,yBAAyB,EAC7C,QAAQ,CAAC,EAAE,cAAc,EAQ1B;IAED,OAAa,kBAAkB,CAC7B,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAE,yBAAyB,EACpC,cAAc,EAAE,EAAE,EAAE,EACpB,2BAA2B,EAAE,EAAE,EAAE,EACjC,EAAE,EAAE,yBAAyB,EAC7B,QAAQ,CAAC,EAAE,cAAc,EACzB,qBAAqB,GAAE,MAAW,GACjC,OAAO,CAAC,4BAA4B,CAAC,CAavC;IAED;;;;;OAKG;IACH,OAAa,gBAAgB,CAC3B,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAE,yBAAyB,EACpC,qBAAqB,EAAE,MAAM,EAC7B,cAAc,EAAE,EAAE,EAAE,EACpB,2BAA2B,EAAE,EAAE,EAAE,EACjC,EAAE,EAAE,yBAAyB,EAC7B,cAAc,EAAE,OAAO,EAAE,EACzB,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,4BAA4B,CAAC,CAmDvC;IAED,wEAAwE;IACjE,aAAa,WAEnB;IAEM,SAAS,cAEf;IAED;;;OAGG;IACU,QAAQ,CACnB,eAAe,EAAE,eAAe,EAChC,GAAG,EAAE,WAAW,EAAE,EAClB,IAAI,GAAE;QAAE,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAAC,gBAAgB,CAAC,EAAE,cAAc,CAAA;KAAO,GAC3E,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC,CA8E9D;IAEK,kBAAkB,IAAI,OAAO,CAAC,UAAU,CAAC,CAuD9C;IAED,KAAK,iCAeJ;CACF"}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { SpongeBlob, computeBlobsHashFromBlobs, encodeCheckpointEndMarker, getBlobsPerL1Block } from '@aztec/blob-lib';
|
|
2
|
-
import { NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP } from '@aztec/constants';
|
|
3
2
|
import { IndexWithinCheckpoint } from '@aztec/foundation/branded-types';
|
|
4
|
-
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
5
3
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
6
4
|
import { createLogger } from '@aztec/foundation/log';
|
|
5
|
+
import { elapsed } from '@aztec/foundation/timer';
|
|
7
6
|
import { L2Block } from '@aztec/stdlib/block';
|
|
8
7
|
import { Checkpoint } from '@aztec/stdlib/checkpoint';
|
|
9
|
-
import { accumulateCheckpointOutHashes, computeCheckpointOutHash, computeInHashFromL1ToL2Messages } from '@aztec/stdlib/messaging';
|
|
8
|
+
import { accumulateCheckpointOutHashes, appendL1ToL2MessagesToTree, computeCheckpointOutHash, computeInHashFromL1ToL2Messages } from '@aztec/stdlib/messaging';
|
|
10
9
|
import { CheckpointHeader, computeBlockHeadersHash } from '@aztec/stdlib/rollup';
|
|
11
10
|
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
12
11
|
import { buildHeaderAndBodyFromTxs, getTreeSnapshot, insertSideEffects } from '../orchestrator/block-building-helpers.js';
|
|
@@ -18,6 +17,7 @@ import { buildHeaderAndBodyFromTxs, getTreeSnapshot, insertSideEffects } from '.
|
|
|
18
17
|
*/ export class LightweightCheckpointBuilder {
|
|
19
18
|
checkpointNumber;
|
|
20
19
|
constants;
|
|
20
|
+
feeAssetPriceModifier;
|
|
21
21
|
l1ToL2Messages;
|
|
22
22
|
previousCheckpointOutHashes;
|
|
23
23
|
db;
|
|
@@ -26,9 +26,10 @@ import { buildHeaderAndBodyFromTxs, getTreeSnapshot, insertSideEffects } from '.
|
|
|
26
26
|
spongeBlob;
|
|
27
27
|
blocks;
|
|
28
28
|
blobFields;
|
|
29
|
-
constructor(checkpointNumber, constants, l1ToL2Messages, previousCheckpointOutHashes, db, bindings){
|
|
29
|
+
constructor(checkpointNumber, constants, feeAssetPriceModifier, l1ToL2Messages, previousCheckpointOutHashes, db, bindings){
|
|
30
30
|
this.checkpointNumber = checkpointNumber;
|
|
31
31
|
this.constants = constants;
|
|
32
|
+
this.feeAssetPriceModifier = feeAssetPriceModifier;
|
|
32
33
|
this.l1ToL2Messages = l1ToL2Messages;
|
|
33
34
|
this.previousCheckpointOutHashes = previousCheckpointOutHashes;
|
|
34
35
|
this.db = db;
|
|
@@ -42,26 +43,30 @@ import { buildHeaderAndBodyFromTxs, getTreeSnapshot, insertSideEffects } from '.
|
|
|
42
43
|
this.spongeBlob = SpongeBlob.init();
|
|
43
44
|
this.logger.debug('Starting new checkpoint', {
|
|
44
45
|
constants,
|
|
45
|
-
l1ToL2Messages
|
|
46
|
+
l1ToL2Messages,
|
|
47
|
+
feeAssetPriceModifier
|
|
46
48
|
});
|
|
47
49
|
}
|
|
48
|
-
static async startNewCheckpoint(checkpointNumber, constants, l1ToL2Messages, previousCheckpointOutHashes, db, bindings) {
|
|
50
|
+
static async startNewCheckpoint(checkpointNumber, constants, l1ToL2Messages, previousCheckpointOutHashes, db, bindings, feeAssetPriceModifier = 0n) {
|
|
49
51
|
// Insert l1-to-l2 messages into the tree.
|
|
50
|
-
await db
|
|
51
|
-
return new LightweightCheckpointBuilder(checkpointNumber, constants, l1ToL2Messages, previousCheckpointOutHashes, db, bindings);
|
|
52
|
+
await appendL1ToL2MessagesToTree(db, l1ToL2Messages);
|
|
53
|
+
return new LightweightCheckpointBuilder(checkpointNumber, constants, feeAssetPriceModifier, l1ToL2Messages, previousCheckpointOutHashes, db, bindings);
|
|
52
54
|
}
|
|
53
55
|
/**
|
|
54
56
|
* Resumes building a checkpoint from existing blocks. This is used for validator re-execution
|
|
55
57
|
* where blocks have already been built and their effects are already in the database.
|
|
56
58
|
* Unlike startNewCheckpoint, this does NOT append l1ToL2Messages to the tree since they
|
|
57
59
|
* were already added when the blocks were originally built.
|
|
58
|
-
*/ static async resumeCheckpoint(checkpointNumber, constants, l1ToL2Messages, previousCheckpointOutHashes, db, existingBlocks, bindings) {
|
|
59
|
-
const builder = new LightweightCheckpointBuilder(checkpointNumber, constants, l1ToL2Messages, previousCheckpointOutHashes, db, bindings);
|
|
60
|
+
*/ static async resumeCheckpoint(checkpointNumber, constants, feeAssetPriceModifier, l1ToL2Messages, previousCheckpointOutHashes, db, existingBlocks, bindings) {
|
|
61
|
+
const builder = new LightweightCheckpointBuilder(checkpointNumber, constants, feeAssetPriceModifier, l1ToL2Messages, previousCheckpointOutHashes, db, bindings);
|
|
60
62
|
builder.logger.debug('Resuming checkpoint from existing blocks', {
|
|
61
63
|
checkpointNumber,
|
|
62
64
|
numExistingBlocks: existingBlocks.length,
|
|
63
65
|
blockNumbers: existingBlocks.map((b)=>b.header.getBlockNumber())
|
|
64
66
|
});
|
|
67
|
+
if (existingBlocks.length === 0) {
|
|
68
|
+
throw new Error(`Cannot resume checkpoint ${checkpointNumber} with no existing blocks`);
|
|
69
|
+
}
|
|
65
70
|
// Validate block order and consistency
|
|
66
71
|
for(let i = 1; i < existingBlocks.length; i++){
|
|
67
72
|
const prev = existingBlocks[i - 1];
|
|
@@ -87,28 +92,41 @@ import { buildHeaderAndBodyFromTxs, getTreeSnapshot, insertSideEffects } from '.
|
|
|
87
92
|
}
|
|
88
93
|
return builder;
|
|
89
94
|
}
|
|
95
|
+
/** Returns how many blocks have been added to this checkpoint so far */ getBlockCount() {
|
|
96
|
+
return this.blocks.length;
|
|
97
|
+
}
|
|
98
|
+
getBlocks() {
|
|
99
|
+
return this.blocks;
|
|
100
|
+
}
|
|
90
101
|
/**
|
|
91
102
|
* Adds a new block to the checkpoint. The tx effects must have already been inserted into the db if
|
|
92
103
|
* this is called after tx processing, if that's not the case, then set `insertTxsEffects` to true.
|
|
93
104
|
*/ async addBlock(globalVariables, txs, opts = {}) {
|
|
105
|
+
const timings = {};
|
|
94
106
|
const isFirstBlock = this.blocks.length === 0;
|
|
95
107
|
// Empty blocks are only allowed as the first block in a checkpoint
|
|
96
108
|
if (!isFirstBlock && txs.length === 0) {
|
|
97
109
|
throw new Error('Cannot add empty block that is not the first block in the checkpoint.');
|
|
98
110
|
}
|
|
99
111
|
if (isFirstBlock) {
|
|
100
|
-
|
|
112
|
+
const [msGetInitialArchive, initialArchive] = await elapsed(()=>getTreeSnapshot(MerkleTreeId.ARCHIVE, this.db));
|
|
113
|
+
this.lastArchives.push(initialArchive);
|
|
114
|
+
timings.getInitialArchive = msGetInitialArchive;
|
|
101
115
|
}
|
|
102
116
|
const lastArchive = this.lastArchives.at(-1);
|
|
103
117
|
if (opts.insertTxsEffects) {
|
|
104
118
|
this.logger.debug(`Inserting side effects for ${txs.length} txs for block ${globalVariables.blockNumber} into db`, {
|
|
105
119
|
txs: txs.map((tx)=>tx.hash.toString())
|
|
106
120
|
});
|
|
121
|
+
let msInsertSideEffects = 0;
|
|
107
122
|
for (const tx of txs){
|
|
108
|
-
await insertSideEffects(tx, this.db);
|
|
123
|
+
const [ms] = await elapsed(()=>insertSideEffects(tx, this.db));
|
|
124
|
+
msInsertSideEffects += ms;
|
|
109
125
|
}
|
|
126
|
+
timings.insertSideEffects = msInsertSideEffects;
|
|
110
127
|
}
|
|
111
|
-
const endState = await this.db.getStateReference();
|
|
128
|
+
const [msGetEndState, endState] = await elapsed(()=>this.db.getStateReference());
|
|
129
|
+
timings.getEndState = msGetEndState;
|
|
112
130
|
if (opts.expectedEndState && !endState.equals(opts.expectedEndState)) {
|
|
113
131
|
this.logger.error('End state after processing txs does not match expected end state', {
|
|
114
132
|
globalVariables: globalVariables.toInspect(),
|
|
@@ -117,15 +135,22 @@ import { buildHeaderAndBodyFromTxs, getTreeSnapshot, insertSideEffects } from '.
|
|
|
117
135
|
});
|
|
118
136
|
throw new Error(`End state does not match expected end state when building block ${globalVariables.blockNumber}`);
|
|
119
137
|
}
|
|
120
|
-
const { header, body, blockBlobFields } = await buildHeaderAndBodyFromTxs(txs, lastArchive, endState, globalVariables, this.spongeBlob, isFirstBlock);
|
|
138
|
+
const [msBuildHeaderAndBody, { header, body, blockBlobFields }] = await elapsed(()=>buildHeaderAndBodyFromTxs(txs, lastArchive, endState, globalVariables, this.spongeBlob, isFirstBlock));
|
|
139
|
+
timings.buildHeaderAndBody = msBuildHeaderAndBody;
|
|
121
140
|
header.state.validate();
|
|
122
141
|
await this.db.updateArchive(header);
|
|
123
|
-
const newArchive = await getTreeSnapshot(MerkleTreeId.ARCHIVE, this.db);
|
|
142
|
+
const [msUpdateArchive, newArchive] = await elapsed(()=>getTreeSnapshot(MerkleTreeId.ARCHIVE, this.db));
|
|
143
|
+
timings.updateArchive = msUpdateArchive;
|
|
124
144
|
this.lastArchives.push(newArchive);
|
|
145
|
+
const expectedNextLeafIndex = Number(globalVariables.blockNumber) + 1;
|
|
146
|
+
if (newArchive.nextAvailableLeafIndex !== expectedNextLeafIndex) {
|
|
147
|
+
throw new Error(`Archive tree next leaf index mismatch after building block ${globalVariables.blockNumber} (expected ${expectedNextLeafIndex} but got ${newArchive.nextAvailableLeafIndex})`);
|
|
148
|
+
}
|
|
125
149
|
const indexWithinCheckpoint = IndexWithinCheckpoint(this.blocks.length);
|
|
126
150
|
const block = new L2Block(newArchive, header, body, this.checkpointNumber, indexWithinCheckpoint);
|
|
127
151
|
this.blocks.push(block);
|
|
128
|
-
await this.spongeBlob.absorb(blockBlobFields);
|
|
152
|
+
const [msSpongeAbsorb] = await elapsed(()=>this.spongeBlob.absorb(blockBlobFields));
|
|
153
|
+
timings.spongeAbsorb = msSpongeAbsorb;
|
|
129
154
|
this.blobFields.push(...blockBlobFields);
|
|
130
155
|
this.logger.debug(`Built block ${header.getBlockNumber()}`, {
|
|
131
156
|
globalVariables: globalVariables.toInspect(),
|
|
@@ -134,7 +159,10 @@ import { buildHeaderAndBodyFromTxs, getTreeSnapshot, insertSideEffects } from '.
|
|
|
134
159
|
blockHash: (await block.hash()).toString(),
|
|
135
160
|
txs: block.body.txEffects.map((tx)=>tx.txHash.toString())
|
|
136
161
|
});
|
|
137
|
-
return
|
|
162
|
+
return {
|
|
163
|
+
block,
|
|
164
|
+
timings
|
|
165
|
+
};
|
|
138
166
|
}
|
|
139
167
|
async completeCheckpoint() {
|
|
140
168
|
if (!this.blocks.length) {
|
|
@@ -148,7 +176,7 @@ import { buildHeaderAndBodyFromTxs, getTreeSnapshot, insertSideEffects } from '.
|
|
|
148
176
|
const blocks = this.blocks;
|
|
149
177
|
const blockHeadersHash = await computeBlockHeadersHash(blocks.map((block)=>block.header));
|
|
150
178
|
const newArchive = this.lastArchives[this.lastArchives.length - 1];
|
|
151
|
-
const blobs = getBlobsPerL1Block(this.blobFields);
|
|
179
|
+
const blobs = await getBlobsPerL1Block(this.blobFields);
|
|
152
180
|
const blobsHash = computeBlobsHashFromBlobs(blobs);
|
|
153
181
|
const inHash = computeInHashFromL1ToL2Messages(this.l1ToL2Messages);
|
|
154
182
|
const { slotNumber, coinbase, feeRecipient, gasFees } = this.constants;
|
|
@@ -157,10 +185,10 @@ import { buildHeaderAndBodyFromTxs, getTreeSnapshot, insertSideEffects } from '.
|
|
|
157
185
|
...this.previousCheckpointOutHashes,
|
|
158
186
|
checkpointOutHash
|
|
159
187
|
]);
|
|
160
|
-
//
|
|
161
|
-
// timestamp of a checkpoint is the timestamp of the last block in the checkpoint.
|
|
188
|
+
// All blocks in the checkpoint have the same timestamp
|
|
162
189
|
const timestamp = blocks[blocks.length - 1].timestamp;
|
|
163
190
|
const totalManaUsed = blocks.reduce((acc, block)=>acc.add(block.header.totalManaUsed), Fr.ZERO);
|
|
191
|
+
const accumulatedFees = blocks.reduce((acc, block)=>acc.add(block.header.totalFees), Fr.ZERO);
|
|
164
192
|
const header = CheckpointHeader.from({
|
|
165
193
|
lastArchiveRoot: this.lastArchives[0].root,
|
|
166
194
|
blobsHash,
|
|
@@ -172,12 +200,20 @@ import { buildHeaderAndBodyFromTxs, getTreeSnapshot, insertSideEffects } from '.
|
|
|
172
200
|
coinbase,
|
|
173
201
|
feeRecipient,
|
|
174
202
|
gasFees,
|
|
175
|
-
totalManaUsed
|
|
203
|
+
totalManaUsed,
|
|
204
|
+
accumulatedFees
|
|
205
|
+
});
|
|
206
|
+
this.logger.debug(`Completed checkpoint ${this.checkpointNumber}`, {
|
|
207
|
+
checkpointNumber: this.checkpointNumber,
|
|
208
|
+
headerHash: header.hash().toString(),
|
|
209
|
+
checkpointOutHash: checkpointOutHash.toString(),
|
|
210
|
+
numPreviousCheckpointOutHashes: this.previousCheckpointOutHashes.length,
|
|
211
|
+
...header.toInspect()
|
|
176
212
|
});
|
|
177
|
-
return new Checkpoint(newArchive, header, blocks, this.checkpointNumber);
|
|
213
|
+
return new Checkpoint(newArchive, header, blocks, this.checkpointNumber, this.feeAssetPriceModifier);
|
|
178
214
|
}
|
|
179
215
|
clone() {
|
|
180
|
-
const clone = new LightweightCheckpointBuilder(this.checkpointNumber, this.constants, [
|
|
216
|
+
const clone = new LightweightCheckpointBuilder(this.checkpointNumber, this.constants, this.feeAssetPriceModifier, [
|
|
181
217
|
...this.l1ToL2Messages
|
|
182
218
|
], [
|
|
183
219
|
...this.previousCheckpointOutHashes
|
package/dest/mocks/fixtures.d.ts
CHANGED
|
@@ -17,4 +17,4 @@ export declare function getSimulator(config: {
|
|
|
17
17
|
}, logger?: Logger): Promise<CircuitSimulator>;
|
|
18
18
|
export declare const makeGlobals: (blockNumber: number, slotNumber?: number, overrides?: Partial<FieldsOf<GlobalVariables> & FieldsOf<CheckpointConstantData>>) => GlobalVariables;
|
|
19
19
|
export declare const makeCheckpointConstants: (slotNumber: number, overrides?: Partial<FieldsOf<CheckpointConstantData>>) => CheckpointConstantData;
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZXMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2Nrcy9maXh0dXJlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRCxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUl4RCxPQUFPLEVBQUUsS0FBSyxnQkFBZ0IsRUFBK0MsTUFBTSx5QkFBeUIsQ0FBQztBQUc3RyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFlbkQsZUFBTyxNQUFNLG9CQUFvQjs7Ozs7OztjQWtDaEMsQ0FBQztBQUVGLHdCQUFzQixZQUFZLENBQ2hDLE1BQU0sRUFBRTtJQUFFLG9CQUFvQixFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUM7SUFBQyxjQUFjLEVBQUUsTUFBTSxHQUFHLFNBQVMsQ0FBQTtDQUFFLEVBQ3hGLE1BQU0sQ0FBQyxFQUFFLE1BQU0sR0FDZCxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FnQjNCO0FBRUQsZUFBTyxNQUFNLFdBQVcsa0pBaUJ2QixDQUFDO0FBRUYsZUFBTyxNQUFNLHVCQUF1Qix1R0FnQm5DLENBQUMifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../../src/mocks/fixtures.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAIxD,OAAO,EAAE,KAAK,gBAAgB,EAA+C,MAAM,yBAAyB,CAAC;AAG7G,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../../src/mocks/fixtures.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAIxD,OAAO,EAAE,KAAK,gBAAgB,EAA+C,MAAM,yBAAyB,CAAC;AAG7G,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAenD,eAAO,MAAM,oBAAoB;;;;;;;cAkChC,CAAC;AAEF,wBAAsB,YAAY,CAChC,MAAM,EAAE;IAAE,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,EACxF,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,gBAAgB,CAAC,CAgB3B;AAED,eAAO,MAAM,WAAW,kJAiBvB,CAAC;AAEF,eAAO,MAAM,uBAAuB,uGAgBnC,CAAC"}
|
package/dest/mocks/fixtures.js
CHANGED
|
@@ -12,11 +12,11 @@ import { CheckpointConstantData } from '@aztec/stdlib/rollup';
|
|
|
12
12
|
import { GlobalVariables } from '@aztec/stdlib/tx';
|
|
13
13
|
import { promises as fs } from 'fs';
|
|
14
14
|
import path from 'path';
|
|
15
|
-
const {
|
|
15
|
+
const { TEMP_DIR = '/tmp', BB_BINARY_PATH = '', BB_WORKING_DIRECTORY = '', BB_SKIP_CLEANUP = '', ACVM_BINARY_PATH = '', ACVM_WORKING_DIRECTORY = '' } = process.env;
|
|
16
16
|
// Determines if we have access to the bb binary and a tmp folder for temp files
|
|
17
17
|
export const getEnvironmentConfig = async (logger)=>{
|
|
18
18
|
try {
|
|
19
|
-
const expectedBBPath = BB_BINARY_PATH ? BB_BINARY_PATH : `${path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../../../../
|
|
19
|
+
const expectedBBPath = BB_BINARY_PATH ? BB_BINARY_PATH : `${path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../../../../labs-aztec-toolchain/bin')}/bb-avm`;
|
|
20
20
|
await fs.access(expectedBBPath, fs.constants.R_OK);
|
|
21
21
|
const tempWorkingDirectory = `${TEMP_DIR}/${randomBytes(4).toString('hex')}`;
|
|
22
22
|
const bbWorkingDirectory = BB_WORKING_DIRECTORY ? BB_WORKING_DIRECTORY : `${tempWorkingDirectory}/bb`;
|
|
@@ -24,7 +24,7 @@ export const getEnvironmentConfig = async (logger)=>{
|
|
|
24
24
|
recursive: true
|
|
25
25
|
});
|
|
26
26
|
logger.info(`Found native BB binary at ${expectedBBPath} with working directory ${bbWorkingDirectory}`);
|
|
27
|
-
const expectedAcvmPath = ACVM_BINARY_PATH ? ACVM_BINARY_PATH : `${path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../../../../
|
|
27
|
+
const expectedAcvmPath = ACVM_BINARY_PATH ? ACVM_BINARY_PATH : `${path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../../../../labs-aztec-toolchain/bin')}/acvm`;
|
|
28
28
|
await fs.access(expectedAcvmPath, fs.constants.R_OK);
|
|
29
29
|
const acvmWorkingDirectory = ACVM_WORKING_DIRECTORY ? ACVM_WORKING_DIRECTORY : `${tempWorkingDirectory}/acvm`;
|
|
30
30
|
await fs.mkdir(acvmWorkingDirectory, {
|
|
@@ -1,23 +1,28 @@
|
|
|
1
1
|
import type { BBProverConfig } from '@aztec/bb-prover';
|
|
2
2
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
3
|
import type { Logger } from '@aztec/foundation/log';
|
|
4
|
+
import { SerialQueue } from '@aztec/foundation/queue';
|
|
4
5
|
import type { FieldsOf } from '@aztec/foundation/types';
|
|
5
6
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
7
|
+
import type { Checkpoint } from '@aztec/stdlib/checkpoint';
|
|
6
8
|
import type { MerkleTreeWriteOperations, ServerCircuitProver } from '@aztec/stdlib/interfaces/server';
|
|
7
9
|
import type { CheckpointConstantData } from '@aztec/stdlib/rollup';
|
|
8
10
|
import { mockProcessedTx } from '@aztec/stdlib/testing';
|
|
9
11
|
import { type BlockHeader, type GlobalVariables, type ProcessedTx } from '@aztec/stdlib/tx';
|
|
10
12
|
import type { MerkleTreeAdminDatabase } from '@aztec/world-state';
|
|
11
|
-
import type { BlockProvingState } from '../orchestrator/block-proving-state.js';
|
|
12
|
-
import { ProvingOrchestrator } from '../orchestrator/index.js';
|
|
13
13
|
import { BrokerCircuitProverFacade } from '../proving_broker/broker_prover_facade.js';
|
|
14
14
|
import { TestBroker } from '../test/mock_prover.js';
|
|
15
|
+
/**
|
|
16
|
+
* Builds a started `SerialQueue` for use as an orchestrator's deferred-job queue in
|
|
17
|
+
* tests. Production wires a single shared queue via `ProverClient`; tests that construct
|
|
18
|
+
* orchestrators directly use one of these per orchestrator (or share one).
|
|
19
|
+
*/
|
|
20
|
+
export declare function makeTestDeferredJobQueue(concurrency?: number): SerialQueue;
|
|
15
21
|
export declare class TestContext {
|
|
16
22
|
worldState: MerkleTreeAdminDatabase;
|
|
17
23
|
prover: ServerCircuitProver;
|
|
18
24
|
broker: TestBroker;
|
|
19
25
|
brokerProverFacade: BrokerCircuitProverFacade;
|
|
20
|
-
orchestrator: TestProvingOrchestrator;
|
|
21
26
|
private feePayer;
|
|
22
27
|
private directoriesToCleanup;
|
|
23
28
|
private logger;
|
|
@@ -29,8 +34,7 @@ export declare class TestContext {
|
|
|
29
34
|
private nextBlockNumber;
|
|
30
35
|
private epochNumber;
|
|
31
36
|
private feePayerBalance;
|
|
32
|
-
constructor(worldState: MerkleTreeAdminDatabase, prover: ServerCircuitProver, broker: TestBroker, brokerProverFacade: BrokerCircuitProverFacade,
|
|
33
|
-
get epochProver(): TestProvingOrchestrator;
|
|
37
|
+
constructor(worldState: MerkleTreeAdminDatabase, prover: ServerCircuitProver, broker: TestBroker, brokerProverFacade: BrokerCircuitProverFacade, feePayer: AztecAddress, initialFeePayerBalance: Fr, directoriesToCleanup: string[], logger: Logger);
|
|
34
38
|
static new(logger: Logger, { proverCount, createProver }?: {
|
|
35
39
|
proverCount?: number;
|
|
36
40
|
createProver?: (bbConfig: BBProverConfig) => Promise<ServerCircuitProver>;
|
|
@@ -46,6 +50,7 @@ export declare class TestContext {
|
|
|
46
50
|
makeProcessedTxOpts?: (blockGlobalVariables: GlobalVariables, txIndex: number) => Partial<Parameters<typeof mockProcessedTx>[0]>;
|
|
47
51
|
} & Partial<FieldsOf<CheckpointConstantData>>): Promise<{
|
|
48
52
|
constants: CheckpointConstantData;
|
|
53
|
+
checkpoint: Checkpoint;
|
|
49
54
|
header: import("@aztec/stdlib/rollup").CheckpointHeader;
|
|
50
55
|
blocks: {
|
|
51
56
|
header: BlockHeader;
|
|
@@ -58,9 +63,4 @@ export declare class TestContext {
|
|
|
58
63
|
private getBlockHeader;
|
|
59
64
|
private updateTrees;
|
|
60
65
|
}
|
|
61
|
-
|
|
62
|
-
isVerifyBuiltBlockAgainstSyncedStateEnabled: boolean;
|
|
63
|
-
protected verifyBuiltBlockAgainstSyncedState(provingState: BlockProvingState): Promise<void>;
|
|
64
|
-
}
|
|
65
|
-
export {};
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF9jb250ZXh0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9ja3MvdGVzdF9jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBS3ZELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRCxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUt4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFHM0QsT0FBTyxLQUFLLEVBQUUseUJBQXlCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RyxPQUFPLEtBQUssRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV4RCxPQUFPLEVBQ0wsS0FBSyxXQUFXLEVBQ2hCLEtBQUssZUFBZSxFQUNwQixLQUFLLFdBQVcsRUFHakIsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBV2xFLE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDaEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDdEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBR3BELHFCQUFhLFdBQVc7SUFXYixVQUFVLEVBQUUsdUJBQXVCO0lBQ25DLE1BQU0sRUFBRSxtQkFBbUI7SUFDM0IsTUFBTSxFQUFFLFVBQVU7SUFDbEIsa0JBQWtCLEVBQUUseUJBQXlCO0lBQzdDLFlBQVksRUFBRSx1QkFBdUI7SUFDNUMsT0FBTyxDQUFDLFFBQVE7SUFFaEIsT0FBTyxDQUFDLG9CQUFvQjtJQUM1QixPQUFPLENBQUMsTUFBTTtJQWxCaEIsT0FBTyxDQUFDLE9BQU8sQ0FBdUM7SUFDdEQsT0FBTyxDQUFDLFdBQVcsQ0FBb0I7SUFDdkMsT0FBTyxDQUFDLG1CQUFtQixDQUFZO0lBQ3ZDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBSztJQUNoQyxPQUFPLENBQUMsb0JBQW9CLENBQXVCO0lBQ25ELE9BQU8sQ0FBQyxlQUFlLENBQUs7SUFDNUIsT0FBTyxDQUFDLFdBQVcsQ0FBSztJQUN4QixPQUFPLENBQUMsZUFBZSxDQUFLO0lBRTVCLFlBQ1MsVUFBVSxFQUFFLHVCQUF1QixFQUNuQyxNQUFNLEVBQUUsbUJBQW1CLEVBQzNCLE1BQU0sRUFBRSxVQUFVLEVBQ2xCLGtCQUFrQixFQUFFLHlCQUF5QixFQUM3QyxZQUFZLEVBQUUsdUJBQXVCLEVBQ3BDLFFBQVEsRUFBRSxZQUFZLEVBQzlCLHNCQUFzQixFQUFFLEVBQUUsRUFDbEIsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEVBQzlCLE1BQU0sRUFBRSxNQUFNLEVBR3ZCO0lBRUQsSUFBVyxXQUFXLDRCQUVyQjtJQUVELE9BQWEsR0FBRyxDQUNkLE1BQU0sRUFBRSxNQUFNLEVBQ2QsRUFDRSxXQUFlLEVBQ2YsWUFBOEcsRUFDL0csR0FBRTtRQUNELFdBQVcsQ0FBQyxFQUFFLE1BQU0sQ0FBQztRQUNyQixZQUFZLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxjQUFjLEtBQUssT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUM7S0FDdEUsd0JBdURQO0lBRU0sT0FBTyx1Q0FFYjtJQUVLLE9BQU8sa0JBVVo7SUFFTSxhQUFhLFNBS25CO0lBR00sYUFBYSxXQUVuQjtJQUVZLHNCQUFzQixtRUFHbEM7SUFFWSxjQUFjLENBQ3pCLFNBQVMsRUFBRSxNQUFNLEVBQ2pCLEVBQ0UsY0FBa0IsRUFDbEIsaUJBQXFCLEVBQ3JCLG1CQUFnQyxFQUNoQyxHQUFHLFlBQVksRUFDaEIsR0FBRTtRQUNELGNBQWMsQ0FBQyxFQUFFLE1BQU0sR0FBRyxNQUFNLEVBQUUsQ0FBQztRQUNuQyxpQkFBaUIsQ0FBQyxFQUFFLE1BQU0sQ0FBQztRQUMzQixtQkFBbUIsQ0FBQyxFQUFFLENBQ3BCLG9CQUFvQixFQUFFLGVBQWUsRUFDckMsT0FBTyxFQUFFLE1BQU0sS0FDWixPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNyRCxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsc0JBQXNCLENBQUMsQ0FBTTs7Ozs7Ozs7O09BMEduRDtZQUVhLGVBQWU7SUFvQjdCLE9BQU8sQ0FBQyxjQUFjO1lBU1IsV0FBVztDQThCMUI7QUFFRCxjQUFNLHVCQUF3QixTQUFRLG1CQUFtQjtJQUNoRCwyQ0FBMkMsVUFBUztJQUkzRCxVQUFtQixrQ0FBa0MsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUtwRztDQUNGIn0=
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF9jb250ZXh0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9ja3MvdGVzdF9jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBS3ZELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFLeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sS0FBSyxFQUFFLHlCQUF5QixFQUFFLG1CQUFtQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdEcsT0FBTyxLQUFLLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFeEQsT0FBTyxFQUNMLEtBQUssV0FBVyxFQUNoQixLQUFLLGVBQWUsRUFDcEIsS0FBSyxXQUFXLEVBR2pCLE1BQU0sa0JBQWtCLENBQUM7QUFFMUIsT0FBTyxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQVdsRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUN0RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHcEQ7Ozs7R0FJRztBQUNILHdCQUFnQix3QkFBd0IsQ0FBQyxXQUFXLFNBQUssR0FBRyxXQUFXLENBSXRFO0FBRUQscUJBQWEsV0FBVztJQVdiLFVBQVUsRUFBRSx1QkFBdUI7SUFDbkMsTUFBTSxFQUFFLG1CQUFtQjtJQUMzQixNQUFNLEVBQUUsVUFBVTtJQUNsQixrQkFBa0IsRUFBRSx5QkFBeUI7SUFDcEQsT0FBTyxDQUFDLFFBQVE7SUFFaEIsT0FBTyxDQUFDLG9CQUFvQjtJQUM1QixPQUFPLENBQUMsTUFBTTtJQWpCaEIsT0FBTyxDQUFDLE9BQU8sQ0FBdUM7SUFDdEQsT0FBTyxDQUFDLFdBQVcsQ0FBb0I7SUFDdkMsT0FBTyxDQUFDLG1CQUFtQixDQUFZO0lBQ3ZDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBSztJQUNoQyxPQUFPLENBQUMsb0JBQW9CLENBQXVCO0lBQ25ELE9BQU8sQ0FBQyxlQUFlLENBQUs7SUFDNUIsT0FBTyxDQUFDLFdBQVcsQ0FBSztJQUN4QixPQUFPLENBQUMsZUFBZSxDQUFLO0lBRTVCLFlBQ1MsVUFBVSxFQUFFLHVCQUF1QixFQUNuQyxNQUFNLEVBQUUsbUJBQW1CLEVBQzNCLE1BQU0sRUFBRSxVQUFVLEVBQ2xCLGtCQUFrQixFQUFFLHlCQUF5QixFQUM1QyxRQUFRLEVBQUUsWUFBWSxFQUM5QixzQkFBc0IsRUFBRSxFQUFFLEVBQ2xCLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxFQUM5QixNQUFNLEVBQUUsTUFBTSxFQUd2QjtJQUVELE9BQWEsR0FBRyxDQUNkLE1BQU0sRUFBRSxNQUFNLEVBQ2QsRUFDRSxXQUFlLEVBQ2YsWUFBOEcsRUFDL0csR0FBRTtRQUNELFdBQVcsQ0FBQyxFQUFFLE1BQU0sQ0FBQztRQUNyQixZQUFZLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxjQUFjLEtBQUssT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUM7S0FDdEUsd0JBNkNQO0lBRU0sT0FBTyx1Q0FFYjtJQUVLLE9BQU8sa0JBV1o7SUFFTSxhQUFhLFNBS25CO0lBR00sYUFBYSxXQUVuQjtJQUVZLHNCQUFzQixtRUFHbEM7SUFFWSxjQUFjLENBQ3pCLFNBQVMsRUFBRSxNQUFNLEVBQ2pCLEVBQ0UsY0FBa0IsRUFDbEIsaUJBQXFCLEVBQ3JCLG1CQUFnQyxFQUNoQyxHQUFHLFlBQVksRUFDaEIsR0FBRTtRQUNELGNBQWMsQ0FBQyxFQUFFLE1BQU0sR0FBRyxNQUFNLEVBQUUsQ0FBQztRQUNuQyxpQkFBaUIsQ0FBQyxFQUFFLE1BQU0sQ0FBQztRQUMzQixtQkFBbUIsQ0FBQyxFQUFFLENBQ3BCLG9CQUFvQixFQUFFLGVBQWUsRUFDckMsT0FBTyxFQUFFLE1BQU0sS0FDWixPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNyRCxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsc0JBQXNCLENBQUMsQ0FBTTs7Ozs7Ozs7OztPQTJHbkQ7WUFFYSxlQUFlO0lBb0I3QixPQUFPLENBQUMsY0FBYztZQVNSLFdBQVc7Q0E4QjFCIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test_context.d.ts","sourceRoot":"","sources":["../../src/mocks/test_context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAKvD,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAKxD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"test_context.d.ts","sourceRoot":"","sources":["../../src/mocks/test_context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAKvD,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAKxD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,WAAW,EAGjB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAWlE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGpD;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,SAAK,GAAG,WAAW,CAItE;AAED,qBAAa,WAAW;IAWb,UAAU,EAAE,uBAAuB;IACnC,MAAM,EAAE,mBAAmB;IAC3B,MAAM,EAAE,UAAU;IAClB,kBAAkB,EAAE,yBAAyB;IACpD,OAAO,CAAC,QAAQ;IAEhB,OAAO,CAAC,oBAAoB;IAC5B,OAAO,CAAC,MAAM;IAjBhB,OAAO,CAAC,OAAO,CAAuC;IACtD,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,mBAAmB,CAAY;IACvC,OAAO,CAAC,mBAAmB,CAAK;IAChC,OAAO,CAAC,oBAAoB,CAAuB;IACnD,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,eAAe,CAAK;IAE5B,YACS,UAAU,EAAE,uBAAuB,EACnC,MAAM,EAAE,mBAAmB,EAC3B,MAAM,EAAE,UAAU,EAClB,kBAAkB,EAAE,yBAAyB,EAC5C,QAAQ,EAAE,YAAY,EAC9B,sBAAsB,EAAE,EAAE,EAClB,oBAAoB,EAAE,MAAM,EAAE,EAC9B,MAAM,EAAE,MAAM,EAGvB;IAED,OAAa,GAAG,CACd,MAAM,EAAE,MAAM,EACd,EACE,WAAe,EACf,YAA8G,EAC/G,GAAE;QACD,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAC;KACtE,wBA6CP;IAEM,OAAO,uCAEb;IAEK,OAAO,kBAWZ;IAEM,aAAa,SAKnB;IAGM,aAAa,WAEnB;IAEY,sBAAsB,mEAGlC;IAEY,cAAc,CACzB,SAAS,EAAE,MAAM,EACjB,EACE,cAAkB,EAClB,iBAAqB,EACrB,mBAAgC,EAChC,GAAG,YAAY,EAChB,GAAE;QACD,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QACnC,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,mBAAmB,CAAC,EAAE,CACpB,oBAAoB,EAAE,eAAe,EACrC,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACrD,GAAG,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAM;;;;;;;;;;OA2GnD;YAEa,eAAe;IAoB7B,OAAO,CAAC,cAAc;YASR,WAAW;CA8B1B"}
|
|
@@ -3,12 +3,12 @@ import { NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP } from '@aztec/constants';
|
|
|
3
3
|
import { BlockNumber, CheckpointNumber } from '@aztec/foundation/branded-types';
|
|
4
4
|
import { padArrayEnd, times, timesAsync } from '@aztec/foundation/collection';
|
|
5
5
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
6
|
+
import { SerialQueue } from '@aztec/foundation/queue';
|
|
6
7
|
import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
7
8
|
import { ProtocolContractsList } from '@aztec/protocol-contracts';
|
|
8
9
|
import { computeFeePayerBalanceLeafSlot } from '@aztec/protocol-contracts/fee-juice';
|
|
9
10
|
import { PublicDataWrite } from '@aztec/stdlib/avm';
|
|
10
11
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
11
|
-
import { EthAddress } from '@aztec/stdlib/block';
|
|
12
12
|
import { mockProcessedTx } from '@aztec/stdlib/testing';
|
|
13
13
|
import { MerkleTreeId, PublicDataTreeLeaf } from '@aztec/stdlib/trees';
|
|
14
14
|
import { TreeSnapshots } from '@aztec/stdlib/tx';
|
|
@@ -16,16 +16,23 @@ import { NativeWorldStateService } from '@aztec/world-state/native';
|
|
|
16
16
|
import { promises as fs } from 'fs';
|
|
17
17
|
import { LightweightCheckpointBuilder } from '../light/lightweight_checkpoint_builder.js';
|
|
18
18
|
import { buildFinalBlobChallenges, getTreeSnapshot, insertSideEffects } from '../orchestrator/block-building-helpers.js';
|
|
19
|
-
import { ProvingOrchestrator } from '../orchestrator/index.js';
|
|
20
19
|
import { BrokerCircuitProverFacade } from '../proving_broker/broker_prover_facade.js';
|
|
21
20
|
import { TestBroker } from '../test/mock_prover.js';
|
|
22
21
|
import { getEnvironmentConfig, getSimulator, makeCheckpointConstants, makeGlobals } from './fixtures.js';
|
|
22
|
+
/**
|
|
23
|
+
* Builds a started `SerialQueue` for use as an orchestrator's deferred-job queue in
|
|
24
|
+
* tests. Production wires a single shared queue via `ProverClient`; tests that construct
|
|
25
|
+
* orchestrators directly use one of these per orchestrator (or share one).
|
|
26
|
+
*/ export function makeTestDeferredJobQueue(concurrency = 10) {
|
|
27
|
+
const queue = new SerialQueue();
|
|
28
|
+
queue.start(concurrency);
|
|
29
|
+
return queue;
|
|
30
|
+
}
|
|
23
31
|
export class TestContext {
|
|
24
32
|
worldState;
|
|
25
33
|
prover;
|
|
26
34
|
broker;
|
|
27
35
|
brokerProverFacade;
|
|
28
|
-
orchestrator;
|
|
29
36
|
feePayer;
|
|
30
37
|
directoriesToCleanup;
|
|
31
38
|
logger;
|
|
@@ -37,12 +44,11 @@ export class TestContext {
|
|
|
37
44
|
nextBlockNumber;
|
|
38
45
|
epochNumber;
|
|
39
46
|
feePayerBalance;
|
|
40
|
-
constructor(worldState, prover, broker, brokerProverFacade,
|
|
47
|
+
constructor(worldState, prover, broker, brokerProverFacade, feePayer, initialFeePayerBalance, directoriesToCleanup, logger){
|
|
41
48
|
this.worldState = worldState;
|
|
42
49
|
this.prover = prover;
|
|
43
50
|
this.broker = broker;
|
|
44
51
|
this.brokerProverFacade = brokerProverFacade;
|
|
45
|
-
this.orchestrator = orchestrator;
|
|
46
52
|
this.feePayer = feePayer;
|
|
47
53
|
this.directoriesToCleanup = directoriesToCleanup;
|
|
48
54
|
this.logger = logger;
|
|
@@ -55,19 +61,19 @@ export class TestContext {
|
|
|
55
61
|
this.epochNumber = 1;
|
|
56
62
|
this.feePayerBalance = initialFeePayerBalance;
|
|
57
63
|
}
|
|
58
|
-
get epochProver() {
|
|
59
|
-
return this.orchestrator;
|
|
60
|
-
}
|
|
61
64
|
static async new(logger, { proverCount = 4, createProver = async (bbConfig)=>new TestCircuitProver(await getSimulator(bbConfig, logger)) } = {}) {
|
|
62
65
|
const directoriesToCleanup = [];
|
|
63
|
-
const feePayer = AztecAddress.
|
|
66
|
+
const feePayer = AztecAddress.fromNumberUnsafe(42222);
|
|
64
67
|
const initialFeePayerBalance = new Fr(10n ** 20n);
|
|
65
68
|
const feePayerSlot = await computeFeePayerBalanceLeafSlot(feePayer);
|
|
66
|
-
const
|
|
67
|
-
|
|
68
|
-
|
|
69
|
+
const genesis = {
|
|
70
|
+
prefilledPublicData: [
|
|
71
|
+
new PublicDataTreeLeaf(feePayerSlot, initialFeePayerBalance)
|
|
72
|
+
],
|
|
73
|
+
genesisTimestamp: 0n
|
|
74
|
+
};
|
|
69
75
|
// Separated dbs for public processor and prover - see public_processor for context
|
|
70
|
-
const ws = await NativeWorldStateService.tmp(/*
|
|
76
|
+
const ws = await NativeWorldStateService.tmp(/*cleanupTmpDir=*/ true, genesis);
|
|
71
77
|
let localProver;
|
|
72
78
|
const config = await getEnvironmentConfig(logger);
|
|
73
79
|
if (!config) {
|
|
@@ -79,8 +85,10 @@ export class TestContext {
|
|
|
79
85
|
bbBinaryPath: config.expectedBBPath,
|
|
80
86
|
bbWorkingDirectory: config.bbWorkingDirectory,
|
|
81
87
|
bbSkipCleanup: config.bbSkipCleanup,
|
|
82
|
-
numConcurrentIVCVerifiers:
|
|
83
|
-
bbIVCConcurrency: 1
|
|
88
|
+
numConcurrentIVCVerifiers: 8,
|
|
89
|
+
bbIVCConcurrency: 1,
|
|
90
|
+
bbChonkVerifyMaxBatch: 16,
|
|
91
|
+
bbChonkVerifyConcurrency: 6
|
|
84
92
|
};
|
|
85
93
|
localProver = await createProver(bbConfig);
|
|
86
94
|
}
|
|
@@ -89,10 +97,9 @@ export class TestContext {
|
|
|
89
97
|
}
|
|
90
98
|
const broker = new TestBroker(proverCount, localProver);
|
|
91
99
|
const facade = new BrokerCircuitProverFacade(broker);
|
|
92
|
-
const orchestrator = new TestProvingOrchestrator(ws, facade, EthAddress.ZERO);
|
|
93
100
|
await broker.start();
|
|
94
101
|
facade.start();
|
|
95
|
-
return new this(ws, localProver, broker, facade,
|
|
102
|
+
return new this(ws, localProver, broker, facade, feePayer, initialFeePayerBalance, directoriesToCleanup, logger);
|
|
96
103
|
}
|
|
97
104
|
getFork() {
|
|
98
105
|
return this.worldState.fork();
|
|
@@ -100,6 +107,7 @@ export class TestContext {
|
|
|
100
107
|
async cleanup() {
|
|
101
108
|
await this.brokerProverFacade.stop();
|
|
102
109
|
await this.broker.stop();
|
|
110
|
+
await this.worldState.close();
|
|
103
111
|
for (const dir of this.directoriesToCleanup.filter((x)=>x !== '')){
|
|
104
112
|
try {
|
|
105
113
|
await fs.rm(dir, {
|
|
@@ -173,13 +181,16 @@ export class TestContext {
|
|
|
173
181
|
});
|
|
174
182
|
const cleanFork = await this.worldState.fork();
|
|
175
183
|
const previousCheckpointOutHashes = this.checkpointOutHashes;
|
|
176
|
-
const builder = await LightweightCheckpointBuilder.startNewCheckpoint(checkpointNumber,
|
|
184
|
+
const builder = await LightweightCheckpointBuilder.startNewCheckpoint(checkpointNumber, {
|
|
185
|
+
...constants,
|
|
186
|
+
timestamp
|
|
187
|
+
}, l1ToL2Messages, previousCheckpointOutHashes, cleanFork);
|
|
177
188
|
// Add tx effects to db and build block headers.
|
|
178
189
|
const blocks = [];
|
|
179
190
|
for(let i = 0; i < numBlocks; i++){
|
|
180
191
|
const txs = blockTxs[i];
|
|
181
192
|
const state = blockEndStates[i];
|
|
182
|
-
const block = await builder.addBlock(blockGlobalVariables[i], txs, {
|
|
193
|
+
const { block } = await builder.addBlock(blockGlobalVariables[i], txs, {
|
|
183
194
|
expectedEndState: state,
|
|
184
195
|
insertTxsEffects: true
|
|
185
196
|
});
|
|
@@ -197,6 +208,7 @@ export class TestContext {
|
|
|
197
208
|
this.checkpointOutHashes.push(checkpoint.getCheckpointOutHash());
|
|
198
209
|
return {
|
|
199
210
|
constants,
|
|
211
|
+
checkpoint,
|
|
200
212
|
header: checkpoint.header,
|
|
201
213
|
blocks,
|
|
202
214
|
l1ToL2Messages,
|
|
@@ -242,14 +254,3 @@ export class TestContext {
|
|
|
242
254
|
return endStateReference;
|
|
243
255
|
}
|
|
244
256
|
}
|
|
245
|
-
class TestProvingOrchestrator extends ProvingOrchestrator {
|
|
246
|
-
isVerifyBuiltBlockAgainstSyncedStateEnabled = false;
|
|
247
|
-
// Disable this check by default, since it requires seeding world state with the block being built
|
|
248
|
-
// This is only enabled in some tests with multiple blocks that populate the pending chain via makePendingBlock
|
|
249
|
-
verifyBuiltBlockAgainstSyncedState(provingState) {
|
|
250
|
-
if (this.isVerifyBuiltBlockAgainstSyncedStateEnabled) {
|
|
251
|
-
return super.verifyBuiltBlockAgainstSyncedState(provingState);
|
|
252
|
-
}
|
|
253
|
-
return Promise.resolve();
|
|
254
|
-
}
|
|
255
|
-
}
|