@aztec/prover-client 0.0.1-commit.b9865e97 → 0.0.1-commit.be03c316

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 (78) hide show
  1. package/dest/light/lightweight_checkpoint_builder.d.ts +1 -1
  2. package/dest/light/lightweight_checkpoint_builder.d.ts.map +1 -1
  3. package/dest/light/lightweight_checkpoint_builder.js +3 -1
  4. package/dest/mocks/test_context.d.ts +9 -11
  5. package/dest/mocks/test_context.d.ts.map +1 -1
  6. package/dest/mocks/test_context.js +13 -22
  7. package/dest/orchestrator/block-building-helpers.d.ts +1 -1
  8. package/dest/orchestrator/checkpoint-proving-state.d.ts +13 -36
  9. package/dest/orchestrator/checkpoint-proving-state.d.ts.map +1 -1
  10. package/dest/orchestrator/checkpoint-proving-state.js +18 -125
  11. package/dest/orchestrator/checkpoint-sub-tree-orchestrator.d.ts +116 -62
  12. package/dest/orchestrator/checkpoint-sub-tree-orchestrator.d.ts.map +1 -1
  13. package/dest/orchestrator/checkpoint-sub-tree-orchestrator.js +1005 -90
  14. package/dest/orchestrator/chonk-cache.d.ts +39 -0
  15. package/dest/orchestrator/chonk-cache.d.ts.map +1 -0
  16. package/dest/orchestrator/chonk-cache.js +80 -0
  17. package/dest/orchestrator/index.d.ts +2 -3
  18. package/dest/orchestrator/index.d.ts.map +1 -1
  19. package/dest/orchestrator/index.js +1 -2
  20. package/dest/orchestrator/proving-scheduler.d.ts +26 -17
  21. package/dest/orchestrator/proving-scheduler.d.ts.map +1 -1
  22. package/dest/orchestrator/proving-scheduler.js +28 -25
  23. package/dest/orchestrator/top-tree-orchestrator.d.ts +11 -6
  24. package/dest/orchestrator/top-tree-orchestrator.d.ts.map +1 -1
  25. package/dest/orchestrator/top-tree-orchestrator.js +71 -21
  26. package/dest/orchestrator/top-tree-proving-state.d.ts +1 -1
  27. package/dest/orchestrator/top-tree-proving-state.d.ts.map +1 -1
  28. package/dest/orchestrator/tx-proving-state.d.ts +3 -3
  29. package/dest/orchestrator/tx-proving-state.d.ts.map +1 -1
  30. package/dest/prover-client/prover-client.d.ts +17 -19
  31. package/dest/prover-client/prover-client.d.ts.map +1 -1
  32. package/dest/prover-client/prover-client.js +24 -25
  33. package/dest/proving_broker/broker_prover_facade.d.ts +3 -3
  34. package/dest/proving_broker/broker_prover_facade.d.ts.map +1 -1
  35. package/dest/test/epoch_settlement.d.ts +36 -0
  36. package/dest/test/epoch_settlement.d.ts.map +1 -0
  37. package/dest/test/epoch_settlement.js +52 -0
  38. package/dest/test/index.d.ts +2 -0
  39. package/dest/test/index.d.ts.map +1 -0
  40. package/dest/test/index.js +1 -0
  41. package/dest/test/mock_prover.d.ts +1 -1
  42. package/dest/test/mock_prover.js +2 -2
  43. package/package.json +17 -16
  44. package/src/light/lightweight_checkpoint_builder.ts +2 -0
  45. package/src/mocks/test_context.ts +14 -34
  46. package/src/orchestrator/checkpoint-proving-state.ts +14 -168
  47. package/src/orchestrator/checkpoint-sub-tree-orchestrator.ts +902 -129
  48. package/src/orchestrator/chonk-cache.ts +99 -0
  49. package/src/orchestrator/index.ts +1 -2
  50. package/src/orchestrator/proving-scheduler.ts +29 -25
  51. package/src/orchestrator/top-tree-orchestrator.ts +114 -44
  52. package/src/orchestrator/top-tree-proving-state.ts +0 -1
  53. package/src/orchestrator/tx-proving-state.ts +3 -3
  54. package/src/prover-client/prover-client.ts +35 -49
  55. package/src/proving_broker/broker_prover_facade.ts +2 -2
  56. package/src/test/epoch_settlement.ts +82 -0
  57. package/src/test/index.ts +1 -0
  58. package/src/test/mock_prover.ts +2 -2
  59. package/dest/orchestrator/epoch-proving-context.d.ts +0 -51
  60. package/dest/orchestrator/epoch-proving-context.d.ts.map +0 -1
  61. package/dest/orchestrator/epoch-proving-context.js +0 -81
  62. package/dest/orchestrator/epoch-proving-state.d.ts +0 -75
  63. package/dest/orchestrator/epoch-proving-state.d.ts.map +0 -1
  64. package/dest/orchestrator/epoch-proving-state.js +0 -269
  65. package/dest/orchestrator/orchestrator.d.ts +0 -118
  66. package/dest/orchestrator/orchestrator.d.ts.map +0 -1
  67. package/dest/orchestrator/orchestrator.js +0 -1113
  68. package/dest/orchestrator/top-tree-proving-scheduler.d.ts +0 -62
  69. package/dest/orchestrator/top-tree-proving-scheduler.d.ts.map +0 -1
  70. package/dest/orchestrator/top-tree-proving-scheduler.js +0 -73
  71. package/dest/prover-client/server-epoch-prover.d.ts +0 -32
  72. package/dest/prover-client/server-epoch-prover.d.ts.map +0 -1
  73. package/dest/prover-client/server-epoch-prover.js +0 -40
  74. package/src/orchestrator/epoch-proving-context.ts +0 -101
  75. package/src/orchestrator/epoch-proving-state.ts +0 -380
  76. package/src/orchestrator/orchestrator.ts +0 -1111
  77. package/src/orchestrator/top-tree-proving-scheduler.ts +0 -154
  78. package/src/prover-client/server-epoch-prover.ts +0 -69
@@ -1,62 +0,0 @@
1
- import type { NESTED_RECURSIVE_PROOF_LENGTH, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH } from '@aztec/constants';
2
- import type { EpochNumber } from '@aztec/foundation/branded-types';
3
- import type { LoggerBindings } from '@aztec/foundation/log';
4
- import type { TreeNodeLocation } from '@aztec/foundation/trees';
5
- import type { PublicInputsAndRecursiveProof, ServerCircuitProver } from '@aztec/stdlib/interfaces/server';
6
- import type { CheckpointMergeRollupPrivateInputs, CheckpointPaddingRollupPrivateInputs, CheckpointRollupPublicInputs, RootRollupPrivateInputs, RootRollupPublicInputs } from '@aztec/stdlib/rollup';
7
- import { ProvingScheduler, type ProvingStateLike } from './proving-scheduler.js';
8
- type CheckpointRollupProof = PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>;
9
- type RootRollupProof = PublicInputsAndRecursiveProof<RootRollupPublicInputs, typeof NESTED_RECURSIVE_PROOF_LENGTH>;
10
- /**
11
- * State interface required by the top-tree proving drivers (checkpoint-merge → padding →
12
- * root-rollup). Both `EpochProvingState` and `TopTreeProvingState` satisfy it structurally;
13
- * the per-checkpoint state in `EpochProvingState` (block/tx proving, world-state forks)
14
- * is owned outside this surface.
15
- */
16
- export interface TopTreeStateLike extends ProvingStateLike {
17
- readonly epochNumber: EpochNumber;
18
- readonly totalNumCheckpoints: number;
19
- tryStartProvingCheckpointMerge(location: TreeNodeLocation): boolean;
20
- setCheckpointMergeRollupProof(location: TreeNodeLocation, provingOutput: CheckpointRollupProof): void;
21
- isReadyForCheckpointMerge(location: TreeNodeLocation): boolean;
22
- getParentLocation(location: TreeNodeLocation): TreeNodeLocation;
23
- getCheckpointMergeRollupInputs(location: TreeNodeLocation): CheckpointMergeRollupPrivateInputs;
24
- tryStartProvingPaddingCheckpoint(): boolean;
25
- setCheckpointPaddingProof(provingOutput: CheckpointRollupProof): void;
26
- getPaddingCheckpointInputs(): CheckpointPaddingRollupPrivateInputs;
27
- tryStartProvingRootRollup(): boolean;
28
- setRootRollupProof(provingOutput: RootRollupProof): void;
29
- isReadyForRootRollup(): boolean;
30
- getRootRollupInputs(): RootRollupPrivateInputs;
31
- }
32
- /**
33
- * Shared scheduling for the top-tree section of epoch proving — checkpoint-merge,
34
- * padding (single-checkpoint case), and root rollup. Both `ProvingOrchestrator` and
35
- * `TopTreeOrchestrator` extend this; their per-checkpoint-root drivers diverge (one
36
- * drains state-derived inputs once block-merge is done, the other builds inputs from
37
- * caller-supplied checkpoint data), but the rest of the tree is identical.
38
- *
39
- * Subclasses provide a `wrapCircuitCall` hook for telemetry (the orchestrator wraps
40
- * each call in a span; the top-tree leaves it as identity), and an
41
- * `onRootRollupComplete` hook to invoke the right shape of `state.resolve()` —
42
- * `EpochProvingState.resolve` takes a `ProvingResult`, `TopTreeProvingState.resolve`
43
- * is no-arg.
44
- */
45
- export declare abstract class TopTreeProvingScheduler extends ProvingScheduler {
46
- protected readonly prover: ServerCircuitProver;
47
- constructor(prover: ServerCircuitProver, enqueueConcurrency: number, loggerName?: string, bindings?: LoggerBindings);
48
- /**
49
- * Wraps a circuit call for telemetry. Default is identity; the orchestrator overrides
50
- * to wrap with `wrapCallbackInSpan`.
51
- */
52
- protected wrapCircuitCall<T>(_circuitName: string, fn: (signal: AbortSignal) => Promise<T>): (signal: AbortSignal) => Promise<T>;
53
- /** Called once the root rollup proof has been set; subclasses call `state.resolve(...)` with the right shape. */
54
- protected abstract onRootRollupComplete(state: TopTreeStateLike): void;
55
- protected enqueueCheckpointMergeRollup(state: TopTreeStateLike, location: TreeNodeLocation): void;
56
- protected enqueueEpochPadding(state: TopTreeStateLike): void;
57
- protected enqueueRootRollup(state: TopTreeStateLike): void;
58
- protected checkAndEnqueueNextCheckpointMergeRollup(state: TopTreeStateLike, currentLocation: TreeNodeLocation): void;
59
- protected checkAndEnqueueRootRollup(state: TopTreeStateLike): void;
60
- }
61
- export {};
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9wLXRyZWUtcHJvdmluZy1zY2hlZHVsZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vcmNoZXN0cmF0b3IvdG9wLXRyZWUtcHJvdmluZy1zY2hlZHVsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsNkJBQTZCLEVBQUUseUNBQXlDLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqSCxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RCxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxFQUFFLDZCQUE2QixFQUFFLG1CQUFtQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDMUcsT0FBTyxLQUFLLEVBQ1Ysa0NBQWtDLEVBQ2xDLG9DQUFvQyxFQUNwQyw0QkFBNEIsRUFDNUIsdUJBQXVCLEVBQ3ZCLHNCQUFzQixFQUN2QixNQUFNLHNCQUFzQixDQUFDO0FBRTlCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFakYsS0FBSyxxQkFBcUIsR0FBRyw2QkFBNkIsQ0FDeEQsNEJBQTRCLEVBQzVCLE9BQU8seUNBQXlDLENBQ2pELENBQUM7QUFFRixLQUFLLGVBQWUsR0FBRyw2QkFBNkIsQ0FBQyxzQkFBc0IsRUFBRSxPQUFPLDZCQUE2QixDQUFDLENBQUM7QUFFbkg7Ozs7O0dBS0c7QUFDSCxNQUFNLFdBQVcsZ0JBQWlCLFNBQVEsZ0JBQWdCO0lBQ3hELFFBQVEsQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDO0lBQ2xDLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxNQUFNLENBQUM7SUFFckMsOEJBQThCLENBQUMsUUFBUSxFQUFFLGdCQUFnQixHQUFHLE9BQU8sQ0FBQztJQUNwRSw2QkFBNkIsQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLHFCQUFxQixHQUFHLElBQUksQ0FBQztJQUN0Ryx5QkFBeUIsQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDO0lBQy9ELGlCQUFpQixDQUFDLFFBQVEsRUFBRSxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztJQUNoRSw4QkFBOEIsQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLEdBQUcsa0NBQWtDLENBQUM7SUFFL0YsZ0NBQWdDLElBQUksT0FBTyxDQUFDO0lBQzVDLHlCQUF5QixDQUFDLGFBQWEsRUFBRSxxQkFBcUIsR0FBRyxJQUFJLENBQUM7SUFDdEUsMEJBQTBCLElBQUksb0NBQW9DLENBQUM7SUFFbkUseUJBQXlCLElBQUksT0FBTyxDQUFDO0lBQ3JDLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxlQUFlLEdBQUcsSUFBSSxDQUFDO0lBQ3pELG9CQUFvQixJQUFJLE9BQU8sQ0FBQztJQUNoQyxtQkFBbUIsSUFBSSx1QkFBdUIsQ0FBQztDQUNoRDtBQUVEOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILDhCQUFzQix1QkFBd0IsU0FBUSxnQkFBZ0I7SUFFbEUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsbUJBQW1CO0lBRGhELFlBQ3FCLE1BQU0sRUFBRSxtQkFBbUIsRUFDOUMsa0JBQWtCLEVBQUUsTUFBTSxFQUMxQixVQUFVLENBQUMsRUFBRSxNQUFNLEVBQ25CLFFBQVEsQ0FBQyxFQUFFLGNBQWMsRUFHMUI7SUFFRDs7O09BR0c7SUFDSCxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUMsRUFDekIsWUFBWSxFQUFFLE1BQU0sRUFDcEIsRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFLFdBQVcsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQ3RDLENBQUMsTUFBTSxFQUFFLFdBQVcsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBRXJDO0lBRUQsaUhBQWlIO0lBQ2pILFNBQVMsQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsS0FBSyxFQUFFLGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUV2RSxTQUFTLENBQUMsNEJBQTRCLENBQUMsS0FBSyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsUUFlekY7SUFFRCxTQUFTLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLGdCQUFnQixRQWVwRDtJQUVELFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLFFBY2xEO0lBRUQsU0FBUyxDQUFDLHdDQUF3QyxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLFFBVTVHO0lBRUQsU0FBUyxDQUFDLHlCQUF5QixDQUFDLEtBQUssRUFBRSxnQkFBZ0IsUUFLMUQ7Q0FDRiJ9
@@ -1 +0,0 @@
1
- {"version":3,"file":"top-tree-proving-scheduler.d.ts","sourceRoot":"","sources":["../../src/orchestrator/top-tree-proving-scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,yCAAyC,EAAE,MAAM,kBAAkB,CAAC;AACjH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAAE,6BAA6B,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC1G,OAAO,KAAK,EACV,kCAAkC,EAClC,oCAAoC,EACpC,4BAA4B,EAC5B,uBAAuB,EACvB,sBAAsB,EACvB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAEjF,KAAK,qBAAqB,GAAG,6BAA6B,CACxD,4BAA4B,EAC5B,OAAO,yCAAyC,CACjD,CAAC;AAEF,KAAK,eAAe,GAAG,6BAA6B,CAAC,sBAAsB,EAAE,OAAO,6BAA6B,CAAC,CAAC;AAEnH;;;;;GAKG;AACH,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACxD,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IAErC,8BAA8B,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC;IACpE,6BAA6B,CAAC,QAAQ,EAAE,gBAAgB,EAAE,aAAa,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACtG,yBAAyB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC;IAC/D,iBAAiB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,gBAAgB,CAAC;IAChE,8BAA8B,CAAC,QAAQ,EAAE,gBAAgB,GAAG,kCAAkC,CAAC;IAE/F,gCAAgC,IAAI,OAAO,CAAC;IAC5C,yBAAyB,CAAC,aAAa,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACtE,0BAA0B,IAAI,oCAAoC,CAAC;IAEnE,yBAAyB,IAAI,OAAO,CAAC;IACrC,kBAAkB,CAAC,aAAa,EAAE,eAAe,GAAG,IAAI,CAAC;IACzD,oBAAoB,IAAI,OAAO,CAAC;IAChC,mBAAmB,IAAI,uBAAuB,CAAC;CAChD;AAED;;;;;;;;;;;;GAYG;AACH,8BAAsB,uBAAwB,SAAQ,gBAAgB;IAElE,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,mBAAmB;IADhD,YACqB,MAAM,EAAE,mBAAmB,EAC9C,kBAAkB,EAAE,MAAM,EAC1B,UAAU,CAAC,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,cAAc,EAG1B;IAED;;;OAGG;IACH,SAAS,CAAC,eAAe,CAAC,CAAC,EACzB,YAAY,EAAE,MAAM,EACpB,EAAE,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,GACtC,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,CAErC;IAED,iHAAiH;IACjH,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAEvE,SAAS,CAAC,4BAA4B,CAAC,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,gBAAgB,QAezF;IAED,SAAS,CAAC,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,QAepD;IAED,SAAS,CAAC,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,QAclD;IAED,SAAS,CAAC,wCAAwC,CAAC,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,gBAAgB,QAU5G;IAED,SAAS,CAAC,yBAAyB,CAAC,KAAK,EAAE,gBAAgB,QAK1D;CACF"}
@@ -1,73 +0,0 @@
1
- import { ProvingScheduler } from './proving-scheduler.js';
2
- /**
3
- * Shared scheduling for the top-tree section of epoch proving — checkpoint-merge,
4
- * padding (single-checkpoint case), and root rollup. Both `ProvingOrchestrator` and
5
- * `TopTreeOrchestrator` extend this; their per-checkpoint-root drivers diverge (one
6
- * drains state-derived inputs once block-merge is done, the other builds inputs from
7
- * caller-supplied checkpoint data), but the rest of the tree is identical.
8
- *
9
- * Subclasses provide a `wrapCircuitCall` hook for telemetry (the orchestrator wraps
10
- * each call in a span; the top-tree leaves it as identity), and an
11
- * `onRootRollupComplete` hook to invoke the right shape of `state.resolve()` —
12
- * `EpochProvingState.resolve` takes a `ProvingResult`, `TopTreeProvingState.resolve`
13
- * is no-arg.
14
- */ export class TopTreeProvingScheduler extends ProvingScheduler {
15
- prover;
16
- constructor(prover, enqueueConcurrency, loggerName, bindings){
17
- super(enqueueConcurrency, loggerName, bindings), this.prover = prover;
18
- }
19
- /**
20
- * Wraps a circuit call for telemetry. Default is identity; the orchestrator overrides
21
- * to wrap with `wrapCallbackInSpan`.
22
- */ wrapCircuitCall(_circuitName, fn) {
23
- return fn;
24
- }
25
- enqueueCheckpointMergeRollup(state, location) {
26
- if (!state.verifyState() || !state.tryStartProvingCheckpointMerge(location)) {
27
- return;
28
- }
29
- const inputs = state.getCheckpointMergeRollupInputs(location);
30
- this.deferredProving(state, this.wrapCircuitCall('rollup-checkpoint-merge', (signal)=>this.prover.getCheckpointMergeRollupProof(inputs, signal, state.epochNumber)), (result)=>{
31
- state.setCheckpointMergeRollupProof(location, result);
32
- this.checkAndEnqueueNextCheckpointMergeRollup(state, location);
33
- });
34
- }
35
- enqueueEpochPadding(state) {
36
- if (!state.verifyState() || !state.tryStartProvingPaddingCheckpoint()) {
37
- return;
38
- }
39
- const inputs = state.getPaddingCheckpointInputs();
40
- this.deferredProving(state, this.wrapCircuitCall('rollup-checkpoint-padding', (signal)=>this.prover.getCheckpointPaddingRollupProof(inputs, signal, state.epochNumber)), (result)=>{
41
- state.setCheckpointPaddingProof(result);
42
- this.checkAndEnqueueRootRollup(state);
43
- });
44
- }
45
- enqueueRootRollup(state) {
46
- if (!state.verifyState() || !state.tryStartProvingRootRollup()) {
47
- return;
48
- }
49
- const inputs = state.getRootRollupInputs();
50
- this.deferredProving(state, this.wrapCircuitCall('rollup-root', (signal)=>this.prover.getRootRollupProof(inputs, signal, state.epochNumber)), (result)=>{
51
- this.logger.verbose(`Completed root rollup for epoch ${state.epochNumber}`);
52
- state.setRootRollupProof(result);
53
- this.onRootRollupComplete(state);
54
- });
55
- }
56
- checkAndEnqueueNextCheckpointMergeRollup(state, currentLocation) {
57
- if (!state.isReadyForCheckpointMerge(currentLocation)) {
58
- return;
59
- }
60
- const parentLocation = state.getParentLocation(currentLocation);
61
- if (parentLocation.level === 0) {
62
- this.checkAndEnqueueRootRollup(state);
63
- } else {
64
- this.enqueueCheckpointMergeRollup(state, parentLocation);
65
- }
66
- }
67
- checkAndEnqueueRootRollup(state) {
68
- if (!state.isReadyForRootRollup()) {
69
- return;
70
- }
71
- this.enqueueRootRollup(state);
72
- }
73
- }
@@ -1,32 +0,0 @@
1
- import type { BatchedBlob, FinalBlobBatchingChallenges } from '@aztec/blob-lib/types';
2
- import { BlockNumber, EpochNumber } from '@aztec/foundation/branded-types';
3
- import type { Fr } from '@aztec/foundation/curves/bn254';
4
- import type { EthAddress } from '@aztec/stdlib/block';
5
- import type { EpochProver } from '@aztec/stdlib/interfaces/server';
6
- import type { Proof } from '@aztec/stdlib/proofs';
7
- import type { CheckpointConstantData, RootRollupPublicInputs } from '@aztec/stdlib/rollup';
8
- import type { BlockHeader, ProcessedTx, Tx } from '@aztec/stdlib/tx';
9
- import type { UInt64 } from '@aztec/stdlib/types';
10
- import type { ProvingOrchestrator } from '../orchestrator/orchestrator.js';
11
- import type { BrokerCircuitProverFacade } from '../proving_broker/broker_prover_facade.js';
12
- /** Encapsulates the proving orchestrator and the broker facade */
13
- export declare class ServerEpochProver implements EpochProver {
14
- private facade;
15
- private orchestrator;
16
- constructor(facade: BrokerCircuitProverFacade, orchestrator: ProvingOrchestrator);
17
- startNewEpoch(epochNumber: EpochNumber, totalNumCheckpoints: number, finalBlobBatchingChallenges: FinalBlobBatchingChallenges): void;
18
- startNewCheckpoint(checkpointIndex: number, constants: CheckpointConstantData, l1ToL2Messages: Fr[], totalNumBlocks: number, headerOfLastBlockInPreviousCheckpoint: BlockHeader): Promise<void>;
19
- startChonkVerifierCircuits(txs: Tx[]): Promise<void>;
20
- setBlockCompleted(blockNumber: BlockNumber, expectedBlockHeader?: BlockHeader): Promise<BlockHeader>;
21
- finalizeEpoch(): Promise<{
22
- publicInputs: RootRollupPublicInputs;
23
- proof: Proof;
24
- batchedBlobInputs: BatchedBlob;
25
- }>;
26
- cancel(): void;
27
- getProverId(): EthAddress;
28
- stop(): Promise<void>;
29
- startNewBlock(blockNumber: BlockNumber, timestamp: UInt64, totalNumTxs: number): Promise<void>;
30
- addTxs(txs: ProcessedTx[]): Promise<void>;
31
- }
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLWVwb2NoLXByb3Zlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3Zlci1jbGllbnQvc2VydmVyLWVwb2NoLXByb3Zlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RixPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzNFLE9BQU8sS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pELE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sS0FBSyxFQUFFLHNCQUFzQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0YsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRCxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzNFLE9BQU8sS0FBSyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFFM0Ysa0VBQWtFO0FBQ2xFLHFCQUFhLGlCQUFrQixZQUFXLFdBQVc7SUFFakQsT0FBTyxDQUFDLE1BQU07SUFDZCxPQUFPLENBQUMsWUFBWTtJQUZ0QixZQUNVLE1BQU0sRUFBRSx5QkFBeUIsRUFDakMsWUFBWSxFQUFFLG1CQUFtQixFQUN2QztJQUVKLGFBQWEsQ0FDWCxXQUFXLEVBQUUsV0FBVyxFQUN4QixtQkFBbUIsRUFBRSxNQUFNLEVBQzNCLDJCQUEyQixFQUFFLDJCQUEyQixHQUN2RCxJQUFJLENBR047SUFDRCxrQkFBa0IsQ0FDaEIsZUFBZSxFQUFFLE1BQU0sRUFDdkIsU0FBUyxFQUFFLHNCQUFzQixFQUNqQyxjQUFjLEVBQUUsRUFBRSxFQUFFLEVBQ3BCLGNBQWMsRUFBRSxNQUFNLEVBQ3RCLHFDQUFxQyxFQUFFLFdBQVcsR0FDakQsT0FBTyxDQUFDLElBQUksQ0FBQyxDQVFmO0lBQ0QsMEJBQTBCLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FFbkQ7SUFDRCxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixDQUFDLEVBQUUsV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FFbkc7SUFDRCxhQUFhLElBQUksT0FBTyxDQUFDO1FBQUUsWUFBWSxFQUFFLHNCQUFzQixDQUFDO1FBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQztRQUFDLGlCQUFpQixFQUFFLFdBQVcsQ0FBQTtLQUFFLENBQUMsQ0FFL0c7SUFDRCxNQUFNLElBQUksSUFBSSxDQUViO0lBQ0QsV0FBVyxJQUFJLFVBQVUsQ0FFeEI7SUFDSyxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUcxQjtJQUNELGFBQWEsQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBRTdGO0lBQ0QsTUFBTSxDQUFDLEdBQUcsRUFBRSxXQUFXLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBRXhDO0NBQ0YifQ==
@@ -1 +0,0 @@
1
- {"version":3,"file":"server-epoch-prover.d.ts","sourceRoot":"","sources":["../../src/prover-client/server-epoch-prover.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACtF,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC3F,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AAE3F,kEAAkE;AAClE,qBAAa,iBAAkB,YAAW,WAAW;IAEjD,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,YAAY;IAFtB,YACU,MAAM,EAAE,yBAAyB,EACjC,YAAY,EAAE,mBAAmB,EACvC;IAEJ,aAAa,CACX,WAAW,EAAE,WAAW,EACxB,mBAAmB,EAAE,MAAM,EAC3B,2BAA2B,EAAE,2BAA2B,GACvD,IAAI,CAGN;IACD,kBAAkB,CAChB,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,sBAAsB,EACjC,cAAc,EAAE,EAAE,EAAE,EACpB,cAAc,EAAE,MAAM,EACtB,qCAAqC,EAAE,WAAW,GACjD,OAAO,CAAC,IAAI,CAAC,CAQf;IACD,0BAA0B,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAEnD;IACD,iBAAiB,CAAC,WAAW,EAAE,WAAW,EAAE,mBAAmB,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAEnG;IACD,aAAa,IAAI,OAAO,CAAC;QAAE,YAAY,EAAE,sBAAsB,CAAC;QAAC,KAAK,EAAE,KAAK,CAAC;QAAC,iBAAiB,EAAE,WAAW,CAAA;KAAE,CAAC,CAE/G;IACD,MAAM,IAAI,IAAI,CAEb;IACD,WAAW,IAAI,UAAU,CAExB;IACK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAG1B;IACD,aAAa,CAAC,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7F;IACD,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAExC;CACF"}
@@ -1,40 +0,0 @@
1
- /** Encapsulates the proving orchestrator and the broker facade */ export class ServerEpochProver {
2
- facade;
3
- orchestrator;
4
- constructor(facade, orchestrator){
5
- this.facade = facade;
6
- this.orchestrator = orchestrator;
7
- }
8
- startNewEpoch(epochNumber, totalNumCheckpoints, finalBlobBatchingChallenges) {
9
- this.orchestrator.startNewEpoch(epochNumber, totalNumCheckpoints, finalBlobBatchingChallenges);
10
- this.facade.start();
11
- }
12
- startNewCheckpoint(checkpointIndex, constants, l1ToL2Messages, totalNumBlocks, headerOfLastBlockInPreviousCheckpoint) {
13
- return this.orchestrator.startNewCheckpoint(checkpointIndex, constants, l1ToL2Messages, totalNumBlocks, headerOfLastBlockInPreviousCheckpoint);
14
- }
15
- startChonkVerifierCircuits(txs) {
16
- return this.orchestrator.startChonkVerifierCircuits(txs);
17
- }
18
- setBlockCompleted(blockNumber, expectedBlockHeader) {
19
- return this.orchestrator.setBlockCompleted(blockNumber, expectedBlockHeader);
20
- }
21
- finalizeEpoch() {
22
- return this.orchestrator.finalizeEpoch();
23
- }
24
- cancel() {
25
- this.orchestrator.cancel();
26
- }
27
- getProverId() {
28
- return this.orchestrator.getProverId();
29
- }
30
- async stop() {
31
- await this.facade.stop();
32
- await this.orchestrator.stop();
33
- }
34
- startNewBlock(blockNumber, timestamp, totalNumTxs) {
35
- return this.orchestrator.startNewBlock(blockNumber, timestamp, totalNumTxs);
36
- }
37
- addTxs(txs) {
38
- return this.orchestrator.addTxs(txs);
39
- }
40
- }
@@ -1,101 +0,0 @@
1
- import type { NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH } from '@aztec/constants';
2
- import type { EpochNumber } from '@aztec/foundation/branded-types';
3
- import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
4
- import type { PublicInputsAndRecursiveProof, ServerCircuitProver } from '@aztec/stdlib/interfaces/server';
5
- import type { PublicChonkVerifierPrivateInputs, PublicChonkVerifierPublicInputs } from '@aztec/stdlib/rollup';
6
-
7
- /**
8
- * Result of a chonk-verifier proof, cached per tx hash on `EpochProvingContext`.
9
- */
10
- export type ChonkVerifierProofResult = PublicInputsAndRecursiveProof<
11
- PublicChonkVerifierPublicInputs,
12
- typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH
13
- >;
14
-
15
- /**
16
- * Per-epoch state shared across every `CheckpointSubTreeOrchestrator` constructed for
17
- * the same epoch. Owns the chonk-verifier proof cache so a tx whose checkpoint is
18
- * reorged out and re-appears in a replacement checkpoint does not have to re-prove
19
- * its chonk circuit.
20
- *
21
- * The context's chonk-verifier broker jobs are deliberately submitted **outside** the
22
- * sub-tree's deferred-proving queue. The sub-tree's `cancel()` therefore does not abort
23
- * them — by design, because their result is tx-scoped, not sub-tree-scoped, and a
24
- * replacement sub-tree should be able to consume the cached proof.
25
- *
26
- * Callers (`EpochProvingJob`, or unit tests) construct one context per epoch and pass
27
- * it into every sub-tree they create. `stop()` aborts every in-flight chonk job.
28
- */
29
- export class EpochProvingContext {
30
- private readonly cache = new Map<string, Promise<ChonkVerifierProofResult>>();
31
- /** Abort controllers for in-flight chonk jobs, keyed by tx hash. */
32
- private readonly pending = new Map<string, AbortController>();
33
- private readonly log: Logger;
34
- private stopped = false;
35
-
36
- constructor(
37
- private readonly prover: ServerCircuitProver,
38
- public readonly epochNumber: EpochNumber,
39
- bindings?: LoggerBindings,
40
- ) {
41
- this.log = createLogger('prover-client:epoch-proving-context', bindings);
42
- }
43
-
44
- /**
45
- * Returns the cached chonk-verifier proof promise for the given tx hash, or
46
- * `undefined` if none has been enqueued yet. Non-mutating.
47
- */
48
- public getCached(txHash: string): Promise<ChonkVerifierProofResult> | undefined {
49
- return this.cache.get(txHash);
50
- }
51
-
52
- /**
53
- * Enqueues a chonk-verifier proof for the given tx hash, returning the promise (or
54
- * the already-cached one if already enqueued). The promise resolves when the broker
55
- * delivers the result; on rejection (including `stop()`), the cache entry is removed
56
- * so a subsequent caller can re-enqueue.
57
- */
58
- public enqueue(txHash: string, inputs: PublicChonkVerifierPrivateInputs): Promise<ChonkVerifierProofResult> {
59
- if (this.stopped) {
60
- return Promise.reject(new Error('EpochProvingContext is stopped'));
61
- }
62
-
63
- const cached = this.cache.get(txHash);
64
- if (cached) {
65
- return cached;
66
- }
67
-
68
- const controller = new AbortController();
69
- this.pending.set(txHash, controller);
70
- this.log.debug(`Enqueueing chonk-verifier circuit`, { txHash, epochNumber: this.epochNumber });
71
-
72
- const promise = this.prover
73
- .getPublicChonkVerifierProof(inputs, controller.signal, this.epochNumber)
74
- .finally(() => this.pending.delete(txHash));
75
-
76
- // Self-clean on rejection so a future caller can re-enqueue. Mark the rejection
77
- // path as observed to silence unhandled-rejection warnings when no consumer
78
- // awaits the promise (e.g. when the only `.then` chain belonged to a cancelled
79
- // sub-tree's tx-proving state).
80
- promise.catch(err => {
81
- this.cache.delete(txHash);
82
- this.log.debug(`Chonk-verifier proof failed; evicted from cache`, { txHash, error: `${err}` });
83
- });
84
-
85
- this.cache.set(txHash, promise);
86
- return promise;
87
- }
88
-
89
- /**
90
- * Aborts every in-flight chonk-verifier broker job and clears the cache. Called by
91
- * the owning `EpochProvingJob` when the job stops.
92
- */
93
- public stop() {
94
- this.stopped = true;
95
- for (const controller of this.pending.values()) {
96
- controller.abort();
97
- }
98
- this.pending.clear();
99
- this.cache.clear();
100
- }
101
- }