@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.
Files changed (133) hide show
  1. package/dest/config.d.ts +1 -1
  2. package/dest/config.d.ts.map +1 -1
  3. package/dest/config.js +16 -2
  4. package/dest/light/lightweight_checkpoint_builder.d.ts +12 -5
  5. package/dest/light/lightweight_checkpoint_builder.d.ts.map +1 -1
  6. package/dest/light/lightweight_checkpoint_builder.js +59 -23
  7. package/dest/mocks/fixtures.d.ts +1 -1
  8. package/dest/mocks/fixtures.d.ts.map +1 -1
  9. package/dest/mocks/fixtures.js +3 -3
  10. package/dest/mocks/test_context.d.ts +11 -11
  11. package/dest/mocks/test_context.d.ts.map +1 -1
  12. package/dest/mocks/test_context.js +31 -30
  13. package/dest/orchestrator/block-building-helpers.d.ts +4 -4
  14. package/dest/orchestrator/block-building-helpers.d.ts.map +1 -1
  15. package/dest/orchestrator/block-building-helpers.js +4 -4
  16. package/dest/orchestrator/block-proving-state.d.ts +4 -1
  17. package/dest/orchestrator/block-proving-state.d.ts.map +1 -1
  18. package/dest/orchestrator/block-proving-state.js +7 -0
  19. package/dest/orchestrator/checkpoint-proving-state.d.ts +20 -36
  20. package/dest/orchestrator/checkpoint-proving-state.d.ts.map +1 -1
  21. package/dest/orchestrator/checkpoint-proving-state.js +22 -120
  22. package/dest/orchestrator/checkpoint-sub-tree-orchestrator.d.ts +161 -0
  23. package/dest/orchestrator/checkpoint-sub-tree-orchestrator.d.ts.map +1 -0
  24. package/dest/orchestrator/{orchestrator.js → checkpoint-sub-tree-orchestrator.js} +285 -462
  25. package/dest/orchestrator/chonk-cache.d.ts +39 -0
  26. package/dest/orchestrator/chonk-cache.d.ts.map +1 -0
  27. package/dest/orchestrator/chonk-cache.js +80 -0
  28. package/dest/orchestrator/index.d.ts +4 -2
  29. package/dest/orchestrator/index.d.ts.map +1 -1
  30. package/dest/orchestrator/index.js +3 -1
  31. package/dest/orchestrator/proving-scheduler.d.ts +81 -0
  32. package/dest/orchestrator/proving-scheduler.d.ts.map +1 -0
  33. package/dest/orchestrator/proving-scheduler.js +120 -0
  34. package/dest/orchestrator/top-tree-orchestrator.d.ts +88 -0
  35. package/dest/orchestrator/top-tree-orchestrator.d.ts.map +1 -0
  36. package/dest/orchestrator/top-tree-orchestrator.js +232 -0
  37. package/dest/orchestrator/top-tree-proving-state.d.ts +61 -0
  38. package/dest/orchestrator/top-tree-proving-state.d.ts.map +1 -0
  39. package/dest/orchestrator/top-tree-proving-state.js +185 -0
  40. package/dest/orchestrator/tx-proving-state.d.ts +3 -3
  41. package/dest/orchestrator/tx-proving-state.d.ts.map +1 -1
  42. package/dest/prover-client/prover-client.d.ts +64 -7
  43. package/dest/prover-client/prover-client.d.ts.map +1 -1
  44. package/dest/prover-client/prover-client.js +62 -13
  45. package/dest/proving_broker/broker_prover_facade.d.ts +3 -3
  46. package/dest/proving_broker/broker_prover_facade.d.ts.map +1 -1
  47. package/dest/proving_broker/broker_prover_facade.js +26 -20
  48. package/dest/proving_broker/config.d.ts +11 -67
  49. package/dest/proving_broker/config.d.ts.map +1 -1
  50. package/dest/proving_broker/config.js +16 -5
  51. package/dest/proving_broker/index.d.ts +2 -1
  52. package/dest/proving_broker/index.d.ts.map +1 -1
  53. package/dest/proving_broker/index.js +1 -0
  54. package/dest/proving_broker/proof_store/factory.d.ts +2 -5
  55. package/dest/proving_broker/proof_store/factory.d.ts.map +1 -1
  56. package/dest/proving_broker/proof_store/factory.js +7 -30
  57. package/dest/proving_broker/proof_store/file_store_proof_store.d.ts +18 -0
  58. package/dest/proving_broker/proof_store/file_store_proof_store.d.ts.map +1 -0
  59. package/dest/proving_broker/proof_store/file_store_proof_store.js +60 -0
  60. package/dest/proving_broker/proof_store/index.d.ts +2 -2
  61. package/dest/proving_broker/proof_store/index.d.ts.map +1 -1
  62. package/dest/proving_broker/proof_store/index.js +1 -1
  63. package/dest/proving_broker/proving_broker.d.ts +9 -5
  64. package/dest/proving_broker/proving_broker.d.ts.map +1 -1
  65. package/dest/proving_broker/proving_broker.js +245 -70
  66. package/dest/proving_broker/proving_broker_database/memory.d.ts +5 -2
  67. package/dest/proving_broker/proving_broker_database/memory.d.ts.map +1 -1
  68. package/dest/proving_broker/proving_broker_database/memory.js +14 -1
  69. package/dest/proving_broker/proving_broker_database/persisted.d.ts +15 -2
  70. package/dest/proving_broker/proving_broker_database/persisted.d.ts.map +1 -1
  71. package/dest/proving_broker/proving_broker_database/persisted.js +57 -6
  72. package/dest/proving_broker/proving_broker_database.d.ts +27 -1
  73. package/dest/proving_broker/proving_broker_database.d.ts.map +1 -1
  74. package/dest/proving_broker/proving_broker_instrumentation.d.ts +3 -1
  75. package/dest/proving_broker/proving_broker_instrumentation.d.ts.map +1 -1
  76. package/dest/proving_broker/proving_broker_instrumentation.js +7 -0
  77. package/dest/proving_broker/rpc.d.ts +18 -5
  78. package/dest/proving_broker/rpc.d.ts.map +1 -1
  79. package/dest/proving_broker/rpc.js +98 -23
  80. package/dest/test/epoch_settlement.d.ts +36 -0
  81. package/dest/test/epoch_settlement.d.ts.map +1 -0
  82. package/dest/test/epoch_settlement.js +52 -0
  83. package/dest/test/index.d.ts +2 -0
  84. package/dest/test/index.d.ts.map +1 -0
  85. package/dest/test/index.js +1 -0
  86. package/dest/test/mock_prover.d.ts +4 -4
  87. package/dest/test/mock_prover.js +2 -2
  88. package/package.json +20 -20
  89. package/src/config.ts +18 -2
  90. package/src/light/lightweight_checkpoint_builder.ts +63 -25
  91. package/src/mocks/fixtures.ts +2 -4
  92. package/src/mocks/test_context.ts +27 -43
  93. package/src/orchestrator/block-building-helpers.ts +4 -4
  94. package/src/orchestrator/block-proving-state.ts +9 -0
  95. package/src/orchestrator/checkpoint-proving-state.ts +21 -162
  96. package/src/orchestrator/checkpoint-sub-tree-orchestrator.ts +1044 -0
  97. package/src/orchestrator/chonk-cache.ts +99 -0
  98. package/src/orchestrator/index.ts +8 -1
  99. package/src/orchestrator/proving-scheduler.ts +160 -0
  100. package/src/orchestrator/top-tree-orchestrator.ts +384 -0
  101. package/src/orchestrator/top-tree-proving-state.ts +219 -0
  102. package/src/orchestrator/tx-proving-state.ts +3 -3
  103. package/src/prover-client/prover-client.ts +134 -25
  104. package/src/proving_broker/broker_prover_facade.ts +29 -23
  105. package/src/proving_broker/config.ts +16 -2
  106. package/src/proving_broker/index.ts +1 -0
  107. package/src/proving_broker/proof_store/factory.ts +10 -32
  108. package/src/proving_broker/proof_store/file_store_proof_store.ts +78 -0
  109. package/src/proving_broker/proof_store/index.ts +1 -1
  110. package/src/proving_broker/proving_broker.ts +237 -72
  111. package/src/proving_broker/proving_broker_database/memory.ts +16 -2
  112. package/src/proving_broker/proving_broker_database/persisted.ts +71 -8
  113. package/src/proving_broker/proving_broker_database.ts +30 -0
  114. package/src/proving_broker/proving_broker_instrumentation.ts +9 -0
  115. package/src/proving_broker/rpc.ts +62 -20
  116. package/src/test/epoch_settlement.ts +82 -0
  117. package/src/test/index.ts +1 -0
  118. package/src/test/mock_prover.ts +2 -2
  119. package/dest/orchestrator/epoch-proving-state.d.ts +0 -75
  120. package/dest/orchestrator/epoch-proving-state.d.ts.map +0 -1
  121. package/dest/orchestrator/epoch-proving-state.js +0 -267
  122. package/dest/orchestrator/orchestrator.d.ts +0 -128
  123. package/dest/orchestrator/orchestrator.d.ts.map +0 -1
  124. package/dest/prover-client/server-epoch-prover.d.ts +0 -32
  125. package/dest/prover-client/server-epoch-prover.d.ts.map +0 -1
  126. package/dest/prover-client/server-epoch-prover.js +0 -40
  127. package/dest/proving_broker/proof_store/gcs_proof_store.d.ts +0 -14
  128. package/dest/proving_broker/proof_store/gcs_proof_store.d.ts.map +0 -1
  129. package/dest/proving_broker/proof_store/gcs_proof_store.js +0 -52
  130. package/src/orchestrator/epoch-proving-state.ts +0 -378
  131. package/src/orchestrator/orchestrator.ts +0 -1281
  132. package/src/prover-client/server-epoch-prover.ts +0 -69
  133. 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM3RCxPQUFPLEVBQ0wsS0FBSyxrQkFBa0IsRUFJeEIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsS0FBSyxZQUFZLEVBQXdCLE1BQU0sd0NBQXdDLENBQUM7QUFFakcsT0FBTyxFQUNMLEtBQUssaUJBQWlCLEVBQ3RCLEtBQUssa0JBQWtCLEVBR3hCLE1BQU0sNEJBQTRCLENBQUM7QUFFcEMsdURBQXVEO0FBQ3ZELE1BQU0sTUFBTSxzQkFBc0IsR0FBRyxZQUFZLEdBQUcsaUJBQWlCLEdBQUcsa0JBQWtCLEdBQUcsUUFBUSxHQUFHLFVBQVUsQ0FBQztBQUVuSCxpRUFBaUU7QUFDakUsTUFBTSxNQUFNLGtCQUFrQixHQUFHLHNCQUFzQixHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUU3RyxlQUFPLE1BQU0sZ0JBQWdCLEVBQUUsa0JBQWtCLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FnQ3RFLENBQUM7QUFFRixlQUFPLE1BQU0sMEJBQTBCLEVBQUUsa0JBQWtCLENBQUMsc0JBQXNCLENBS2pGLENBQUM7QUFFRjs7OztHQUlHO0FBQ0gsd0JBQWdCLGdCQUFnQixJQUFJLHNCQUFzQixDQUV6RCJ9
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM3RCxPQUFPLEVBQ0wsS0FBSyxrQkFBa0IsRUFJeEIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsS0FBSyxZQUFZLEVBQXdCLE1BQU0sd0NBQXdDLENBQUM7QUFFakcsT0FBTyxFQUNMLEtBQUssaUJBQWlCLEVBQ3RCLEtBQUssa0JBQWtCLEVBR3hCLE1BQU0sNEJBQTRCLENBQUM7QUFFcEMsdURBQXVEO0FBQ3ZELE1BQU0sTUFBTSxzQkFBc0IsR0FBRyxZQUFZLEdBQUcsaUJBQWlCLEdBQUcsa0JBQWtCLEdBQUcsUUFBUSxHQUFHLFVBQVUsQ0FBQztBQUVuSCxpRUFBaUU7QUFDakUsTUFBTSxNQUFNLGtCQUFrQixHQUFHLHNCQUFzQixHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUU3RyxlQUFPLE1BQU0sZ0JBQWdCLEVBQUUsa0JBQWtCLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FnRHRFLENBQUM7QUFFRixlQUFPLE1BQU0sMEJBQTBCLEVBQUUsa0JBQWtCLENBQUMsc0JBQXNCLENBS2pGLENBQUM7QUFFRjs7OztHQUlHO0FBQ0gsd0JBQWdCLGdCQUFnQixJQUFJLHNCQUFzQixDQUV6RCJ9
@@ -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,CAgCtE,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,kBAAkB,CAAC,sBAAsB,CAKjF,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,sBAAsB,CAEzD"}
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 number of chonk verifiers to run concurrently',
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: 'Number of threads to use for IVC verification',
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<L2Block>;
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHR3ZWlnaHRfY2hlY2twb2ludF9idWlsZGVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGlnaHQvbGlnaHR3ZWlnaHRfY2hlY2twb2ludF9idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxLQUFLLGdCQUFnQixFQUF5QixNQUFNLGlDQUFpQyxDQUFDO0FBRS9GLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEVBQWUsS0FBSyxjQUFjLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFDdkYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RCxPQUFPLEtBQUssRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBUWpGLE9BQU8sRUFDTCxLQUFLLHlCQUF5QixFQUM5QixLQUFLLGVBQWUsRUFDcEIsS0FBSyxXQUFXLEVBQ2hCLGNBQWMsRUFDZixNQUFNLGtCQUFrQixDQUFDO0FBUTFCOzs7OztHQUtHO0FBQ0gscUJBQWEsNEJBQTRCO2FBU3JCLGdCQUFnQixFQUFFLGdCQUFnQjthQUNsQyxTQUFTLEVBQUUseUJBQXlCO2FBQ3BDLGNBQWMsRUFBRSxFQUFFLEVBQUU7SUFDcEMsT0FBTyxDQUFDLFFBQVEsQ0FBQywyQkFBMkI7YUFDNUIsRUFBRSxFQUFFLHlCQUF5QjtJQVovQyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBUztJQUVoQyxPQUFPLENBQUMsWUFBWSxDQUFnQztJQUNwRCxPQUFPLENBQUMsVUFBVSxDQUFhO0lBQy9CLE9BQU8sQ0FBQyxNQUFNLENBQWlCO0lBQy9CLE9BQU8sQ0FBQyxVQUFVLENBQVk7SUFFOUIsWUFDa0IsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQ2xDLFNBQVMsRUFBRSx5QkFBeUIsRUFDcEMsY0FBYyxFQUFFLEVBQUUsRUFBRSxFQUNuQiwyQkFBMkIsRUFBRSxFQUFFLEVBQUUsRUFDbEMsRUFBRSxFQUFFLHlCQUF5QixFQUM3QyxRQUFRLENBQUMsRUFBRSxjQUFjLEVBUTFCO0lBRUQsT0FBYSxrQkFBa0IsQ0FDN0IsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQ2xDLFNBQVMsRUFBRSx5QkFBeUIsRUFDcEMsY0FBYyxFQUFFLEVBQUUsRUFBRSxFQUNwQiwyQkFBMkIsRUFBRSxFQUFFLEVBQUUsRUFDakMsRUFBRSxFQUFFLHlCQUF5QixFQUM3QixRQUFRLENBQUMsRUFBRSxjQUFjLEdBQ3hCLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBQyxDQWV2QztJQUVEOzs7OztPQUtHO0lBQ0gsT0FBYSxnQkFBZ0IsQ0FDM0IsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQ2xDLFNBQVMsRUFBRSx5QkFBeUIsRUFDcEMsY0FBYyxFQUFFLEVBQUUsRUFBRSxFQUNwQiwyQkFBMkIsRUFBRSxFQUFFLEVBQUUsRUFDakMsRUFBRSxFQUFFLHlCQUF5QixFQUM3QixjQUFjLEVBQUUsT0FBTyxFQUFFLEVBQ3pCLFFBQVEsQ0FBQyxFQUFFLGNBQWMsR0FDeEIsT0FBTyxDQUFDLDRCQUE0QixDQUFDLENBOEN2QztJQUVEOzs7T0FHRztJQUNVLFFBQVEsQ0FDbkIsZUFBZSxFQUFFLGVBQWUsRUFDaEMsR0FBRyxFQUFFLFdBQVcsRUFBRSxFQUNsQixJQUFJLEdBQUU7UUFBRSxnQkFBZ0IsQ0FBQyxFQUFFLE9BQU8sQ0FBQztRQUFDLGdCQUFnQixDQUFDLEVBQUUsY0FBYyxDQUFBO0tBQU8sR0FDM0UsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQWlFbEI7SUFFSyxrQkFBa0IsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLENBOEM5QztJQUVELEtBQUssaUNBY0o7Q0FDRiJ9
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":"AAEA,OAAO,EAAE,KAAK,gBAAgB,EAAyB,MAAM,iCAAiC,CAAC;AAE/F,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AACvF,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAQjF,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;aACpC,cAAc,EAAE,EAAE,EAAE;IACpC,OAAO,CAAC,QAAQ,CAAC,2BAA2B;aAC5B,EAAE,EAAE,yBAAyB;IAZ/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,EACpC,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,GACxB,OAAO,CAAC,4BAA4B,CAAC,CAevC;IAED;;;;;OAKG;IACH,OAAa,gBAAgB,CAC3B,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAE,yBAAyB,EACpC,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,CA8CvC;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,OAAO,CAAC,CAiElB;IAEK,kBAAkB,IAAI,OAAO,CAAC,UAAU,CAAC,CA8C9C;IAED,KAAK,iCAcJ;CACF"}
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.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, padArrayEnd(l1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP));
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
- this.lastArchives.push(await getTreeSnapshot(MerkleTreeId.ARCHIVE, this.db));
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 block;
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
- // TODO(palla/mbps): Should we source this from the constants instead?
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
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZXMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2Nrcy9maXh0dXJlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRCxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUl4RCxPQUFPLEVBQUUsS0FBSyxnQkFBZ0IsRUFBK0MsTUFBTSx5QkFBeUIsQ0FBQztBQUc3RyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFpQm5ELGVBQU8sTUFBTSxvQkFBb0I7Ozs7Ozs7Y0FrQ2hDLENBQUM7QUFFRix3QkFBc0IsWUFBWSxDQUNoQyxNQUFNLEVBQUU7SUFBRSxvQkFBb0IsRUFBRSxNQUFNLEdBQUcsU0FBUyxDQUFDO0lBQUMsY0FBYyxFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUE7Q0FBRSxFQUN4RixNQUFNLENBQUMsRUFBRSxNQUFNLEdBQ2QsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBZ0IzQjtBQUVELGVBQU8sTUFBTSxXQUFXLGtKQWlCdkIsQ0FBQztBQUVGLGVBQU8sTUFBTSx1QkFBdUIsdUdBZ0JuQyxDQUFDIn0=
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;AAiBnD,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"}
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"}
@@ -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 { BB_RELEASE_DIR = 'cpp/build/bin', TEMP_DIR = '/tmp', BB_BINARY_PATH = '', BB_WORKING_DIRECTORY = '', BB_SKIP_CLEANUP = '', NOIR_RELEASE_DIR = 'noir-repo/target/release', ACVM_BINARY_PATH = '', ACVM_WORKING_DIRECTORY = '' } = process.env;
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)), '../../../../barretenberg/', BB_RELEASE_DIR)}/bb-avm`;
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)), '../../../../noir/', NOIR_RELEASE_DIR)}/acvm`;
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, orchestrator: TestProvingOrchestrator, feePayer: AztecAddress, initialFeePayerBalance: Fr, directoriesToCleanup: string[], logger: Logger);
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
- declare class TestProvingOrchestrator extends ProvingOrchestrator {
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":"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"}
1
+ {"version":3,"file":"test_context.d.ts","sourceRoot":"","sources":["../../src/mocks/test_context.ts"],"names":[],"mappings":"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"}
@@ -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, orchestrator, feePayer, initialFeePayerBalance, directoriesToCleanup, logger){
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.fromNumber(42222);
66
+ const feePayer = AztecAddress.fromNumberUnsafe(42222);
64
67
  const initialFeePayerBalance = new Fr(10n ** 20n);
65
68
  const feePayerSlot = await computeFeePayerBalanceLeafSlot(feePayer);
66
- const prefilledPublicData = [
67
- new PublicDataTreeLeaf(feePayerSlot, initialFeePayerBalance)
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(/*rollupAddress=*/ undefined, /*cleanupTmpDir=*/ true, prefilledPublicData);
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: 2,
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, orchestrator, feePayer, initialFeePayerBalance, directoriesToCleanup, logger);
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, constants, l1ToL2Messages, previousCheckpointOutHashes, cleanFork);
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
- }