@aztec/prover-client 0.0.1-commit.d431d1c → 0.0.1-commit.d58ff9d0

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 (132) 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 +14 -6
  5. package/dest/light/lightweight_checkpoint_builder.d.ts.map +1 -1
  6. package/dest/light/lightweight_checkpoint_builder.js +66 -27
  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 +2 -1
  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 +3 -3
  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} +311 -472
  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 +66 -14
  45. package/dest/proving_broker/broker_prover_facade.d.ts +6 -5
  46. package/dest/proving_broker/broker_prover_facade.d.ts.map +1 -1
  47. package/dest/proving_broker/broker_prover_facade.js +16 -22
  48. package/dest/proving_broker/config.d.ts +12 -64
  49. package/dest/proving_broker/config.d.ts.map +1 -1
  50. package/dest/proving_broker/config.js +22 -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_agent.d.ts +4 -3
  64. package/dest/proving_broker/proving_agent.d.ts.map +1 -1
  65. package/dest/proving_broker/proving_agent.js +4 -4
  66. package/dest/proving_broker/proving_broker.d.ts +8 -5
  67. package/dest/proving_broker/proving_broker.d.ts.map +1 -1
  68. package/dest/proving_broker/proving_broker.js +68 -11
  69. package/dest/proving_broker/proving_broker_database/persisted.js +2 -2
  70. package/dest/proving_broker/proving_broker_instrumentation.d.ts +3 -1
  71. package/dest/proving_broker/proving_broker_instrumentation.d.ts.map +1 -1
  72. package/dest/proving_broker/proving_broker_instrumentation.js +18 -7
  73. package/dest/proving_broker/proving_job_controller.d.ts +4 -3
  74. package/dest/proving_broker/proving_job_controller.d.ts.map +1 -1
  75. package/dest/proving_broker/proving_job_controller.js +6 -3
  76. package/dest/proving_broker/rpc.d.ts +6 -2
  77. package/dest/proving_broker/rpc.d.ts.map +1 -1
  78. package/dest/proving_broker/rpc.js +87 -23
  79. package/dest/test/epoch_settlement.d.ts +36 -0
  80. package/dest/test/epoch_settlement.d.ts.map +1 -0
  81. package/dest/test/epoch_settlement.js +52 -0
  82. package/dest/test/index.d.ts +2 -0
  83. package/dest/test/index.d.ts.map +1 -0
  84. package/dest/test/index.js +1 -0
  85. package/dest/test/mock_prover.d.ts +4 -4
  86. package/dest/test/mock_prover.js +2 -2
  87. package/package.json +20 -20
  88. package/src/config.ts +18 -2
  89. package/src/light/lightweight_checkpoint_builder.ts +79 -31
  90. package/src/mocks/fixtures.ts +2 -1
  91. package/src/mocks/test_context.ts +27 -43
  92. package/src/orchestrator/block-building-helpers.ts +3 -3
  93. package/src/orchestrator/block-proving-state.ts +9 -0
  94. package/src/orchestrator/checkpoint-proving-state.ts +21 -162
  95. package/src/orchestrator/checkpoint-sub-tree-orchestrator.ts +1044 -0
  96. package/src/orchestrator/chonk-cache.ts +99 -0
  97. package/src/orchestrator/index.ts +8 -1
  98. package/src/orchestrator/proving-scheduler.ts +160 -0
  99. package/src/orchestrator/top-tree-orchestrator.ts +384 -0
  100. package/src/orchestrator/top-tree-proving-state.ts +219 -0
  101. package/src/orchestrator/tx-proving-state.ts +3 -3
  102. package/src/prover-client/prover-client.ts +146 -20
  103. package/src/proving_broker/broker_prover_facade.ts +25 -25
  104. package/src/proving_broker/config.ts +25 -2
  105. package/src/proving_broker/index.ts +1 -0
  106. package/src/proving_broker/proof_store/factory.ts +10 -32
  107. package/src/proving_broker/proof_store/file_store_proof_store.ts +78 -0
  108. package/src/proving_broker/proof_store/index.ts +1 -1
  109. package/src/proving_broker/proving_agent.ts +5 -2
  110. package/src/proving_broker/proving_broker.ts +64 -8
  111. package/src/proving_broker/proving_broker_database/persisted.ts +2 -2
  112. package/src/proving_broker/proving_broker_instrumentation.ts +19 -6
  113. package/src/proving_broker/proving_job_controller.ts +9 -3
  114. package/src/proving_broker/rpc.ts +46 -20
  115. package/src/test/epoch_settlement.ts +82 -0
  116. package/src/test/index.ts +1 -0
  117. package/src/test/mock_prover.ts +2 -2
  118. package/dest/orchestrator/epoch-proving-state.d.ts +0 -75
  119. package/dest/orchestrator/epoch-proving-state.d.ts.map +0 -1
  120. package/dest/orchestrator/epoch-proving-state.js +0 -267
  121. package/dest/orchestrator/orchestrator.d.ts +0 -123
  122. package/dest/orchestrator/orchestrator.d.ts.map +0 -1
  123. package/dest/prover-client/server-epoch-prover.d.ts +0 -32
  124. package/dest/prover-client/server-epoch-prover.d.ts.map +0 -1
  125. package/dest/prover-client/server-epoch-prover.js +0 -40
  126. package/dest/proving_broker/proof_store/gcs_proof_store.d.ts +0 -14
  127. package/dest/proving_broker/proof_store/gcs_proof_store.d.ts.map +0 -1
  128. package/dest/proving_broker/proof_store/gcs_proof_store.js +0 -52
  129. package/src/orchestrator/epoch-proving-state.ts +0 -378
  130. package/src/orchestrator/orchestrator.ts +0 -1267
  131. package/src/prover-client/server-epoch-prover.ts +0 -69
  132. package/src/proving_broker/proof_store/gcs_proof_store.ts +0 -76
@@ -1,3 +1,4 @@
1
+ import { EpochNumberSchema } from '@aztec/foundation/branded-types';
1
2
  import { createSafeJsonRpcClient } from '@aztec/foundation/json-rpc/client';
2
3
  import { ProofUri, ProvingJob, ProvingJobId, ProvingJobStatus } from '@aztec/stdlib/interfaces/server';
3
4
  import { ProvingRequestType } from '@aztec/stdlib/proofs';
@@ -5,6 +6,19 @@ import { optional } from '@aztec/stdlib/schemas';
5
6
  import { getVersioningResponseHandler } from '@aztec/stdlib/versioning';
6
7
  import { makeTracedFetch } from '@aztec/telemetry-client';
7
8
  import { z } from 'zod';
9
+ /** Indefinite backoff for broker communication: 1, 1, 1, 2, 4, 4, 4, ... seconds. */ export function* proverBrokerBackoff() {
10
+ const v = [
11
+ 1,
12
+ 1,
13
+ 1,
14
+ 2,
15
+ 4
16
+ ];
17
+ let i = 0;
18
+ while(true){
19
+ yield v[Math.min(i++, v.length - 1)];
20
+ }
21
+ }
8
22
  const ProvingJobFilterSchema = z.object({
9
23
  allowList: z.array(z.nativeEnum(ProvingRequestType))
10
24
  });
@@ -13,48 +27,98 @@ const GetProvingJobResponse = z.object({
13
27
  time: z.number()
14
28
  });
15
29
  export const ProvingJobProducerSchema = {
16
- enqueueProvingJob: z.function().args(ProvingJob).returns(ProvingJobStatus),
17
- getProvingJobStatus: z.function().args(ProvingJobId).returns(ProvingJobStatus),
18
- cancelProvingJob: z.function().args(ProvingJobId).returns(z.void()),
19
- getCompletedJobs: z.function().args(z.array(ProvingJobId)).returns(z.array(ProvingJobId))
30
+ enqueueProvingJob: z.function({
31
+ input: z.tuple([
32
+ ProvingJob
33
+ ]),
34
+ output: ProvingJobStatus
35
+ }),
36
+ getProvingJobStatus: z.function({
37
+ input: z.tuple([
38
+ ProvingJobId
39
+ ]),
40
+ output: ProvingJobStatus
41
+ }),
42
+ cancelProvingJob: z.function({
43
+ input: z.tuple([
44
+ ProvingJobId
45
+ ]),
46
+ output: z.void()
47
+ }),
48
+ getCompletedJobs: z.function({
49
+ input: z.tuple([
50
+ z.array(ProvingJobId)
51
+ ]),
52
+ output: z.array(ProvingJobId)
53
+ })
20
54
  };
21
55
  export const ProvingJobConsumerSchema = {
22
- getProvingJob: z.function().args(optional(ProvingJobFilterSchema)).returns(GetProvingJobResponse.optional()),
23
- reportProvingJobError: z.function().args(ProvingJobId, z.string(), optional(z.boolean()), optional(ProvingJobFilterSchema)).returns(GetProvingJobResponse.optional()),
24
- reportProvingJobProgress: z.function().args(ProvingJobId, z.number(), optional(ProvingJobFilterSchema)).returns(GetProvingJobResponse.optional()),
25
- reportProvingJobSuccess: z.function().args(ProvingJobId, ProofUri, optional(ProvingJobFilterSchema)).returns(GetProvingJobResponse.optional())
56
+ getProvingJob: z.function({
57
+ input: z.tuple([
58
+ optional(ProvingJobFilterSchema)
59
+ ]),
60
+ output: GetProvingJobResponse.optional()
61
+ }),
62
+ reportProvingJobError: z.function({
63
+ input: z.tuple([
64
+ ProvingJobId,
65
+ z.string(),
66
+ optional(z.boolean()),
67
+ optional(ProvingJobFilterSchema)
68
+ ]),
69
+ output: GetProvingJobResponse.optional()
70
+ }),
71
+ reportProvingJobProgress: z.function({
72
+ input: z.tuple([
73
+ ProvingJobId,
74
+ z.number(),
75
+ optional(ProvingJobFilterSchema)
76
+ ]),
77
+ output: GetProvingJobResponse.optional()
78
+ }),
79
+ reportProvingJobSuccess: z.function({
80
+ input: z.tuple([
81
+ ProvingJobId,
82
+ ProofUri,
83
+ optional(ProvingJobFilterSchema)
84
+ ]),
85
+ output: GetProvingJobResponse.optional()
86
+ })
26
87
  };
27
88
  export const ProvingJobBrokerSchema = {
28
89
  ...ProvingJobConsumerSchema,
29
90
  ...ProvingJobProducerSchema
30
91
  };
31
- export function createProvingJobBrokerClient(url, versions, fetch = makeTracedFetch([
32
- 1,
33
- 2,
34
- 3
35
- ], false)) {
92
+ export const ProvingJobBrokerDebugSchema = {
93
+ replayProvingJob: z.function({
94
+ input: z.tuple([
95
+ ProvingJobId,
96
+ z.nativeEnum(ProvingRequestType),
97
+ EpochNumberSchema,
98
+ ProofUri
99
+ ]),
100
+ output: ProvingJobStatus
101
+ })
102
+ };
103
+ export const ProvingJobBrokerSchemaWithDebug = {
104
+ ...ProvingJobBrokerSchema,
105
+ ...ProvingJobBrokerDebugSchema
106
+ };
107
+ export function createProvingJobBrokerClient(url, versions, fetch = makeTracedFetch(proverBrokerBackoff, false)) {
36
108
  return createSafeJsonRpcClient(url, ProvingJobBrokerSchema, {
37
109
  namespaceMethods: 'proverBroker',
38
110
  fetch,
39
111
  onResponse: getVersioningResponseHandler(versions)
40
112
  });
41
113
  }
42
- export function createProvingJobProducerClient(url, versions, fetch = makeTracedFetch([
43
- 1,
44
- 2,
45
- 3
46
- ], false)) {
114
+ export function createProvingJobProducerClient(url, versions, fetch = makeTracedFetch(proverBrokerBackoff, false)) {
47
115
  return createSafeJsonRpcClient(url, ProvingJobProducerSchema, {
48
116
  namespaceMethods: 'provingJobProducer',
49
117
  fetch,
50
118
  onResponse: getVersioningResponseHandler(versions)
51
119
  });
52
120
  }
53
- export function createProvingJobConsumerClient(url, versions, fetch = makeTracedFetch([
54
- 1,
55
- 2,
56
- 3
57
- ], false)) {
121
+ export function createProvingJobConsumerClient(url, versions, fetch = makeTracedFetch(proverBrokerBackoff, false)) {
58
122
  return createSafeJsonRpcClient(url, ProvingJobConsumerSchema, {
59
123
  namespaceMethods: 'provingJobConsumer',
60
124
  fetch,
@@ -0,0 +1,36 @@
1
+ import type { RollupCheatCodes } from '@aztec/ethereum/test';
2
+ import type { CheckpointNumber, EpochNumber } from '@aztec/foundation/branded-types';
3
+ import type { Logger } from '@aztec/foundation/log';
4
+ import type { L2BlockSource } from '@aztec/stdlib/block';
5
+ /** Arguments for {@link settleEpochOutbox}. */
6
+ export type SettleEpochOutboxArgs = {
7
+ /** Cheat codes used to write the computed out hash directly into the L1 Outbox storage. */
8
+ rollupCheatCodes: RollupCheatCodes;
9
+ /** Source of checkpointed L2 blocks for the epoch being settled. */
10
+ l2BlockSource: L2BlockSource;
11
+ /** Epoch to settle. */
12
+ epoch: EpochNumber;
13
+ /**
14
+ * When set, only checkpoints up to and including this number are covered. Used to settle a partial
15
+ * epoch (the AZIP-14 Outbox keeps one root per `numCheckpointsInEpoch`, so a prefix of an epoch can
16
+ * be settled and consumed before the epoch completes). When omitted, every checkpointed block in the
17
+ * epoch is covered.
18
+ */
19
+ maxCheckpoint?: CheckpointNumber;
20
+ log: Logger;
21
+ };
22
+ /**
23
+ * Computes the epoch out hash over the checkpointed blocks of an epoch (optionally only up to
24
+ * `maxCheckpoint`) and writes it into the L1 Outbox via cheat codes. This is the synthetic,
25
+ * no-prover equivalent of an epoch root proof landing on L1: it makes the L2-to-L1 messages in the
26
+ * covered checkpoints consumable. It does NOT advance the rollup's proven tip — callers
27
+ * `markAsProven` separately so a single prove call can settle multiple epochs before marking proven.
28
+ *
29
+ * Used by the test-only proving drivers: the `AutomineSequencer`'s auto-settle loop and the standalone
30
+ * `EpochTestSettler`. Lives here (rather than in either consumer) so both share one implementation.
31
+ *
32
+ * @returns The last checkpoint number covered by the settled range, or `undefined` if the epoch has
33
+ * no checkpointed blocks (within the `maxCheckpoint` bound).
34
+ */
35
+ export declare function settleEpochOutbox({ rollupCheatCodes, l2BlockSource, epoch, maxCheckpoint, log }: SettleEpochOutboxArgs): Promise<CheckpointNumber | undefined>;
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXBvY2hfc2V0dGxlbWVudC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3QvZXBvY2hfc2V0dGxlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdELE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBYyxNQUFNLGlDQUFpQyxDQUFDO0FBRWpHLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR3pELCtDQUErQztBQUMvQyxNQUFNLE1BQU0scUJBQXFCLEdBQUc7SUFDbEMsMkZBQTJGO0lBQzNGLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDO0lBQ25DLG9FQUFvRTtJQUNwRSxhQUFhLEVBQUUsYUFBYSxDQUFDO0lBQzdCLHVCQUF1QjtJQUN2QixLQUFLLEVBQUUsV0FBVyxDQUFDO0lBQ25COzs7OztPQUtHO0lBQ0gsYUFBYSxDQUFDLEVBQUUsZ0JBQWdCLENBQUM7SUFDakMsR0FBRyxFQUFFLE1BQU0sQ0FBQztDQUNiLENBQUM7QUFFRjs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCx3QkFBc0IsaUJBQWlCLENBQUMsRUFDdEMsZ0JBQWdCLEVBQ2hCLGFBQWEsRUFDYixLQUFLLEVBQ0wsYUFBYSxFQUNiLEdBQUcsRUFDSixFQUFFLHFCQUFxQixHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLENBQUMsQ0FxQy9EIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"epoch_settlement.d.ts","sourceRoot":"","sources":["../../src/test/epoch_settlement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAc,MAAM,iCAAiC,CAAC;AAEjG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,+CAA+C;AAC/C,MAAM,MAAM,qBAAqB,GAAG;IAClC,2FAA2F;IAC3F,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,oEAAoE;IACpE,aAAa,EAAE,aAAa,CAAC;IAC7B,uBAAuB;IACvB,KAAK,EAAE,WAAW,CAAC;IACnB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,gBAAgB,CAAC;IACjC,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAsB,iBAAiB,CAAC,EACtC,gBAAgB,EAChB,aAAa,EACb,KAAK,EACL,aAAa,EACb,GAAG,EACJ,EAAE,qBAAqB,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAqC/D"}
@@ -0,0 +1,52 @@
1
+ import { computeEpochOutHash } from '@aztec/stdlib/messaging';
2
+ /**
3
+ * Computes the epoch out hash over the checkpointed blocks of an epoch (optionally only up to
4
+ * `maxCheckpoint`) and writes it into the L1 Outbox via cheat codes. This is the synthetic,
5
+ * no-prover equivalent of an epoch root proof landing on L1: it makes the L2-to-L1 messages in the
6
+ * covered checkpoints consumable. It does NOT advance the rollup's proven tip — callers
7
+ * `markAsProven` separately so a single prove call can settle multiple epochs before marking proven.
8
+ *
9
+ * Used by the test-only proving drivers: the `AutomineSequencer`'s auto-settle loop and the standalone
10
+ * `EpochTestSettler`. Lives here (rather than in either consumer) so both share one implementation.
11
+ *
12
+ * @returns The last checkpoint number covered by the settled range, or `undefined` if the epoch has
13
+ * no checkpointed blocks (within the `maxCheckpoint` bound).
14
+ */ export async function settleEpochOutbox({ rollupCheatCodes, l2BlockSource, epoch, maxCheckpoint, log }) {
15
+ let blocks = await l2BlockSource.getBlocks({
16
+ epoch,
17
+ onlyCheckpointed: true
18
+ });
19
+ if (maxCheckpoint !== undefined) {
20
+ blocks = blocks.filter((block)=>block.checkpointNumber <= maxCheckpoint);
21
+ }
22
+ if (blocks.length === 0) {
23
+ return undefined;
24
+ }
25
+ log.info(`Settling epoch ${epoch}${maxCheckpoint !== undefined ? ` up to checkpoint ${maxCheckpoint}` : ''} with blocks ${blocks[0]?.header.getBlockNumber()} to ${blocks.at(-1)?.header.getBlockNumber()}`, {
26
+ epoch,
27
+ maxCheckpoint,
28
+ blocks: blocks.map((block)=>block.toBlockInfo())
29
+ });
30
+ const messagesInEpoch = [];
31
+ // Undefined (not SlotNumber.ZERO) so a first checkpointed block at slot 0 still opens checkpoint 0.
32
+ let previousSlotNumber;
33
+ let checkpointIndex = -1;
34
+ for (const block of blocks){
35
+ const slotNumber = block.header.globalVariables.slotNumber;
36
+ if (slotNumber !== previousSlotNumber) {
37
+ checkpointIndex++;
38
+ messagesInEpoch[checkpointIndex] = [];
39
+ previousSlotNumber = slotNumber;
40
+ }
41
+ messagesInEpoch[checkpointIndex].push(block.body.txEffects.map((txEffect)=>txEffect.l2ToL1Msgs));
42
+ }
43
+ const outHash = computeEpochOutHash(messagesInEpoch);
44
+ if (!outHash.isZero()) {
45
+ await rollupCheatCodes.insertOutbox(epoch, messagesInEpoch.length, outHash.toBigInt());
46
+ } else {
47
+ log.info(`No L2 to L1 messages in epoch ${epoch}`, {
48
+ epoch
49
+ });
50
+ }
51
+ return blocks.at(-1)?.checkpointNumber;
52
+ }
@@ -0,0 +1,2 @@
1
+ export { settleEpochOutbox, type SettleEpochOutboxArgs } from './epoch_settlement.js';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxLQUFLLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUMifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,KAAK,qBAAqB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1 @@
1
+ export { settleEpochOutbox } from './epoch_settlement.js';
@@ -19,9 +19,9 @@ export declare class TestBroker implements ProvingJobProducer {
19
19
  }
20
20
  export declare class MockProver implements ServerCircuitProver {
21
21
  constructor();
22
- getAvmProof(_inputs: AvmCircuitInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<import("@aztec/stdlib/proofs").RecursiveProof<16200>>;
23
- getBaseParityProof(_inputs: ParityBasePrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<import("@aztec/stdlib/parity").ParityPublicInputs, 457>>;
24
- getRootParityProof(_inputs: ParityRootPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<import("@aztec/stdlib/parity").ParityPublicInputs, 457>>;
22
+ getAvmProof(_inputs: AvmCircuitInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<import("@aztec/stdlib/proofs").RecursiveProof<14532>>;
23
+ getBaseParityProof(_inputs: ParityBasePrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<import("@aztec/stdlib/parity").ParityPublicInputs, 410>>;
24
+ getRootParityProof(_inputs: ParityRootPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<import("@aztec/stdlib/parity").ParityPublicInputs, 410>>;
25
25
  getPublicChonkVerifierProof(_inputs: PublicChonkVerifierPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<PublicChonkVerifierPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
26
26
  getPrivateTxBaseRollupProof(_baseRollupInput: PrivateTxBaseRollupPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
27
27
  getPublicTxBaseRollupProof(_inputs: PublicTxBaseRollupPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
@@ -31,7 +31,7 @@ export declare class MockProver implements ServerCircuitProver {
31
31
  getBlockRootEmptyTxFirstRollupProof(_input: BlockRootEmptyTxFirstRollupPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
32
32
  getBlockRootRollupProof(_input: BlockRootRollupPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
33
33
  getBlockRootSingleTxRollupProof(_input: BlockRootSingleTxRollupPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
34
- getBlockMergeRollupProof(_input: BlockMergeRollupPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, 531>>;
34
+ getBlockMergeRollupProof(_input: BlockMergeRollupPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, 480>>;
35
35
  getCheckpointRootRollupProof(_input: CheckpointRootRollupPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
36
36
  getCheckpointRootSingleBlockRollupProof(_input: CheckpointRootSingleBlockRollupPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
37
37
  getCheckpointMergeRollupProof(_input: CheckpointMergeRollupPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
@@ -1,4 +1,4 @@
1
- import { AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED, NESTED_RECURSIVE_PROOF_LENGTH, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, RECURSIVE_PROOF_LENGTH } from '@aztec/constants';
1
+ import { AVM_V2_PROOF_LENGTH_IN_FIELDS, NESTED_RECURSIVE_PROOF_LENGTH, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, RECURSIVE_PROOF_LENGTH } from '@aztec/constants';
2
2
  import { times } from '@aztec/foundation/collection';
3
3
  import { makePublicInputsAndRecursiveProof } from '@aztec/stdlib/interfaces/server';
4
4
  import { makeEmptyRecursiveProof, makeRecursiveProof } from '@aztec/stdlib/proofs';
@@ -44,7 +44,7 @@ export class TestBroker {
44
44
  export class MockProver {
45
45
  constructor(){}
46
46
  getAvmProof(_inputs, _signal, _epochNumber) {
47
- return Promise.resolve(makeEmptyRecursiveProof(AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED));
47
+ return Promise.resolve(makeEmptyRecursiveProof(AVM_V2_PROOF_LENGTH_IN_FIELDS));
48
48
  }
49
49
  getBaseParityProof(_inputs, _signal, _epochNumber) {
50
50
  return Promise.resolve(makePublicInputsAndRecursiveProof(makeParityPublicInputs(), makeRecursiveProof(RECURSIVE_PROOF_LENGTH), VerificationKeyData.makeFakeHonk()));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/prover-client",
3
- "version": "0.0.1-commit.d431d1c",
3
+ "version": "0.0.1-commit.d58ff9d0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./dest/index.js",
@@ -9,7 +9,8 @@
9
9
  "./orchestrator": "./dest/orchestrator/index.js",
10
10
  "./helpers": "./dest/orchestrator/block-building-helpers.js",
11
11
  "./light": "./dest/light/index.js",
12
- "./config": "./dest/config.js"
12
+ "./config": "./dest/config.js",
13
+ "./test": "./dest/test/index.js"
13
14
  },
14
15
  "typedocOptions": {
15
16
  "entryPoints": [
@@ -27,8 +28,8 @@
27
28
  "build:dev": "../scripts/tsc.sh --watch",
28
29
  "clean": "rm -rf ./dest .tsbuildinfo",
29
30
  "bb": "node --no-warnings ./dest/bb/index.js",
30
- "test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --testTimeout=3500000 --forceExit",
31
- "test:debug": "LOG_LEVEL=debug NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --testTimeout=1500000 --forceExit --testNamePattern prover/bb_prover/parity"
31
+ "test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --testTimeout=3500000",
32
+ "test:debug": "LOG_LEVEL=\"debug; info: json-rpc, simulator\" NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --testTimeout=1500000 --testNamePattern prover/bb_prover/parity"
32
33
  },
33
34
  "jest": {
34
35
  "moduleNameMapper": {
@@ -68,29 +69,28 @@
68
69
  ]
69
70
  },
70
71
  "dependencies": {
71
- "@aztec/bb-prover": "0.0.1-commit.d431d1c",
72
- "@aztec/blob-lib": "0.0.1-commit.d431d1c",
73
- "@aztec/constants": "0.0.1-commit.d431d1c",
74
- "@aztec/ethereum": "0.0.1-commit.d431d1c",
75
- "@aztec/foundation": "0.0.1-commit.d431d1c",
76
- "@aztec/kv-store": "0.0.1-commit.d431d1c",
77
- "@aztec/noir-protocol-circuits-types": "0.0.1-commit.d431d1c",
78
- "@aztec/noir-types": "0.0.1-commit.d431d1c",
79
- "@aztec/protocol-contracts": "0.0.1-commit.d431d1c",
80
- "@aztec/simulator": "0.0.1-commit.d431d1c",
81
- "@aztec/stdlib": "0.0.1-commit.d431d1c",
82
- "@aztec/telemetry-client": "0.0.1-commit.d431d1c",
83
- "@aztec/world-state": "0.0.1-commit.d431d1c",
84
- "@google-cloud/storage": "^7.15.0",
72
+ "@aztec/bb-prover": "0.0.1-commit.d58ff9d0",
73
+ "@aztec/blob-lib": "0.0.1-commit.d58ff9d0",
74
+ "@aztec/constants": "0.0.1-commit.d58ff9d0",
75
+ "@aztec/ethereum": "0.0.1-commit.d58ff9d0",
76
+ "@aztec/foundation": "0.0.1-commit.d58ff9d0",
77
+ "@aztec/kv-store": "0.0.1-commit.d58ff9d0",
78
+ "@aztec/noir-protocol-circuits-types": "0.0.1-commit.d58ff9d0",
79
+ "@aztec/noir-types": "0.0.1-commit.d58ff9d0",
80
+ "@aztec/protocol-contracts": "0.0.1-commit.d58ff9d0",
81
+ "@aztec/simulator": "0.0.1-commit.d58ff9d0",
82
+ "@aztec/stdlib": "0.0.1-commit.d58ff9d0",
83
+ "@aztec/telemetry-client": "0.0.1-commit.d58ff9d0",
84
+ "@aztec/world-state": "0.0.1-commit.d58ff9d0",
85
85
  "@iarna/toml": "^2.2.5",
86
86
  "commander": "^12.1.0",
87
87
  "lodash.chunk": "^4.2.0",
88
88
  "source-map-support": "^0.5.21",
89
89
  "tslib": "^2.4.0",
90
- "zod": "^3.23.8"
90
+ "zod": "^4"
91
91
  },
92
92
  "devDependencies": {
93
- "@aztec/noir-contracts.js": "0.0.1-commit.d431d1c",
93
+ "@aztec/noir-contracts.js": "0.0.1-commit.d58ff9d0",
94
94
  "@jest/globals": "^30.0.0",
95
95
  "@types/jest": "^30.0.0",
96
96
  "@types/node": "^22.15.17",
package/src/config.ts CHANGED
@@ -44,14 +44,30 @@ export const bbConfigMappings: ConfigMappingsType<BBConfig & ACVMConfig> = {
44
44
  },
45
45
  numConcurrentIVCVerifiers: {
46
46
  env: 'BB_NUM_IVC_VERIFIERS',
47
- description: 'Max number of chonk verifiers to run concurrently',
47
+ description: 'Max concurrent verifications for the RPC verifier (QueuedIVCVerifier).',
48
48
  ...numberConfigHelper(8),
49
49
  },
50
50
  bbIVCConcurrency: {
51
51
  env: 'BB_IVC_CONCURRENCY',
52
- description: 'Number of threads to use for IVC verification',
52
+ description: 'Thread count for the RPC IVC verifier.',
53
53
  ...numberConfigHelper(1),
54
54
  },
55
+ bbChonkVerifyMaxBatch: {
56
+ env: 'BB_CHONK_VERIFY_MAX_BATCH',
57
+ description:
58
+ '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.',
59
+ ...numberConfigHelper(16),
60
+ },
61
+ bbChonkVerifyConcurrency: {
62
+ env: 'BB_CHONK_VERIFY_BATCH_CONCURRENCY',
63
+ description: 'Thread count for the peer batch verifier parallel reduce. 0 = auto.',
64
+ ...numberConfigHelper(6),
65
+ },
66
+ bbDebugOutputDir: {
67
+ env: 'BB_DEBUG_OUTPUT_DIR',
68
+ description:
69
+ 'When set, bb.js operations write input/output files and log equivalent CLI commands to this directory',
70
+ },
55
71
  };
56
72
 
57
73
  export const proverClientConfigMappings: ConfigMappingsType<ProverClientUserConfig> = {