@aztec/foundation 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.
@@ -1,4 +1,5 @@
1
1
  import { type Logger } from '../log/index.js';
2
+ import { type DateProvider } from '../timer/index.js';
2
3
  /** An error that indicates that the operation should not be retried. */
3
4
  export declare class NoRetryError extends Error {
4
5
  }
@@ -30,6 +31,19 @@ export declare function makeBackoff(retries: number[]): Generator<number, void,
30
31
  * @throws If `NoRetryError` is thrown by the `fn`, it is rethrown.
31
32
  */
32
33
  export declare function retry<Result>(fn: () => Promise<Result>, name?: string, backoff?: Generator<number, void, unknown>, log?: Logger, failSilently?: boolean): Promise<Result>;
34
+ /**
35
+ * Timeout specification accepted by {@link retryUntil}. Either a plain number of seconds, an explicit
36
+ * `{ timeout }` in seconds, or an absolute `{ deadline }` with an optional {@link DateProvider} used to
37
+ * read the current time. A deadline is converted to the remaining seconds at call time; a deadline that
38
+ * has already passed yields a zero remaining budget, matching the immediate-timeout semantics of a
39
+ * non-positive numeric timeout.
40
+ */
41
+ export type RetryUntilTimeout = number | {
42
+ timeout: number;
43
+ } | {
44
+ deadline: Date;
45
+ dateProvider?: DateProvider;
46
+ };
33
47
  /**
34
48
  * Retry an asynchronous function until it returns a truthy value or the specified timeout is exceeded.
35
49
  * The function is retried periodically with a fixed interval between attempts. The operation can be named for better error messages.
@@ -37,11 +51,14 @@ export declare function retry<Result>(fn: () => Promise<Result>, name?: string,
37
51
  *
38
52
  * @param fn - The asynchronous function to be retried, which should return a truthy value upon success or undefined otherwise.
39
53
  * @param name - The optional name of the operation, used for generating timeout error message.
40
- * @param timeout - The optional maximum time, in seconds, to keep retrying before throwing a timeout error. Defaults to 0 (never timeout).
54
+ * @param timeout - The maximum time to keep retrying before throwing a timeout error. Accepts a number of
55
+ * seconds (0 = never time out), an explicit `{ timeout }` in seconds, or an absolute `{ deadline }` with an
56
+ * optional `dateProvider`. A deadline already in the past times out on the first interval, the same as a
57
+ * zero/negative numeric timeout. Defaults to 0 (never timeout).
41
58
  * @param interval - The optional interval, in seconds, between retry attempts. Defaults to 1 second.
42
59
  * @returns A Promise that resolves with the successful (truthy) result of the provided function, or rejects if timeout is exceeded.
43
60
  */
44
- export declare function retryUntil<T>(fn: () => (T | undefined) | Promise<T | undefined>, name?: string, timeout?: number, interval?: number): Promise<NonNullable<Awaited<T>>>;
61
+ export declare function retryUntil<T>(fn: () => (T | undefined) | Promise<T | undefined>, name?: string, timeout?: RetryUntilTimeout, interval?: number): Promise<NonNullable<Awaited<T>>>;
45
62
  /**
46
63
  * Retry an asynchronous function until it returns a truthy value or the maximum number of retries is exceeded.
47
64
  * The function is retried periodically with a fixed interval between attempts.
@@ -63,4 +80,4 @@ export declare function retryTimes<T>(fn: () => (T | undefined) | Promise<T | un
63
80
  * @param interval - Optional interval in seconds. Defaults to 0.1s (100ms).
64
81
  */
65
82
  export declare function retryFastUntil<T>(fn: () => (T | undefined) | Promise<T | undefined>, name?: string, timeout?: number, interval?: number): Promise<NonNullable<Awaited<T>>>;
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZXRyeS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0saUJBQWlCLENBQUM7QUFJNUQsd0VBQXdFO0FBQ3hFLHFCQUFhLFlBQWEsU0FBUSxLQUFLO0NBQUc7QUFFMUM7Ozs7Ozs7R0FPRztBQUNILHdCQUFpQixnQkFBZ0IscUNBTWhDO0FBRUQ7Ozs7R0FJRztBQUNILHdCQUFpQixXQUFXLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxvQ0FJN0M7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILHdCQUFzQixLQUFLLENBQUMsTUFBTSxFQUNoQyxFQUFFLEVBQUUsTUFBTSxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQ3pCLElBQUksU0FBYyxFQUNsQixPQUFPLG1DQUFxQixFQUM1QixHQUFHLEdBQUUsTUFBeUMsRUFDOUMsWUFBWSxVQUFRLG1CQW9CckI7QUFFRDs7Ozs7Ozs7OztHQVVHO0FBQ0gsd0JBQXNCLFVBQVUsQ0FBQyxDQUFDLEVBQ2hDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLEVBQ2xELElBQUksU0FBSyxFQUNULE9BQU8sU0FBSSxFQUNYLFFBQVEsU0FBSSxvQ0FlYjtBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILHdCQUFzQixVQUFVLENBQUMsQ0FBQyxFQUNoQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxFQUNsRCxJQUFJLG9CQUFLLEVBQ1QsVUFBVSxFQUFFLE1BQU0sRUFDbEIsYUFBYSxTQUFJLG9DQWNsQjtBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsd0JBQWdCLGNBQWMsQ0FBQyxDQUFDLEVBQzlCLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLEVBQ2xELElBQUksU0FBSyxFQUNULE9BQU8sU0FBSyxFQUNaLFFBQVEsU0FBTSxvQ0FHZiJ9
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZXRyeS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0saUJBQWlCLENBQUM7QUFFNUQsT0FBTyxFQUFFLEtBQUssWUFBWSxFQUFTLE1BQU0sbUJBQW1CLENBQUM7QUFFN0Qsd0VBQXdFO0FBQ3hFLHFCQUFhLFlBQWEsU0FBUSxLQUFLO0NBQUc7QUFFMUM7Ozs7Ozs7R0FPRztBQUNILHdCQUFpQixnQkFBZ0IscUNBTWhDO0FBRUQ7Ozs7R0FJRztBQUNILHdCQUFpQixXQUFXLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxvQ0FJN0M7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILHdCQUFzQixLQUFLLENBQUMsTUFBTSxFQUNoQyxFQUFFLEVBQUUsTUFBTSxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQ3pCLElBQUksU0FBYyxFQUNsQixPQUFPLG1DQUFxQixFQUM1QixHQUFHLEdBQUUsTUFBeUMsRUFDOUMsWUFBWSxVQUFRLG1CQW9CckI7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxHQUFHO0lBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQTtDQUFFLEdBQUc7SUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDO0lBQUMsWUFBWSxDQUFDLEVBQUUsWUFBWSxDQUFBO0NBQUUsQ0FBQztBQXFCL0c7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILHdCQUFzQixVQUFVLENBQUMsQ0FBQyxFQUNoQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxFQUNsRCxJQUFJLFNBQUssRUFDVCxPQUFPLEdBQUUsaUJBQXFCLEVBQzlCLFFBQVEsU0FBSSxvQ0FnQmI7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCx3QkFBc0IsVUFBVSxDQUFDLENBQUMsRUFDaEMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsRUFDbEQsSUFBSSxvQkFBSyxFQUNULFVBQVUsRUFBRSxNQUFNLEVBQ2xCLGFBQWEsU0FBSSxvQ0FjbEI7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILHdCQUFnQixjQUFjLENBQUMsQ0FBQyxFQUM5QixFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxFQUNsRCxJQUFJLFNBQUssRUFDVCxPQUFPLFNBQUssRUFDWixRQUFRLFNBQU0sb0NBR2YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/retry/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,iBAAiB,CAAC;AAI5D,wEAAwE;AACxE,qBAAa,YAAa,SAAQ,KAAK;CAAG;AAE1C;;;;;;;GAOG;AACH,wBAAiB,gBAAgB,qCAMhC;AAED;;;;GAIG;AACH,wBAAiB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,oCAI7C;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,KAAK,CAAC,MAAM,EAChC,EAAE,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,EACzB,IAAI,SAAc,EAClB,OAAO,mCAAqB,EAC5B,GAAG,GAAE,MAAyC,EAC9C,YAAY,UAAQ,mBAoBrB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,UAAU,CAAC,CAAC,EAChC,EAAE,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,EAClD,IAAI,SAAK,EACT,OAAO,SAAI,EACX,QAAQ,SAAI,oCAeb;AAED;;;;;;;;;GASG;AACH,wBAAsB,UAAU,CAAC,CAAC,EAChC,EAAE,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,EAClD,IAAI,oBAAK,EACT,UAAU,EAAE,MAAM,EAClB,aAAa,SAAI,oCAclB;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAC9B,EAAE,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,EAClD,IAAI,SAAK,EACT,OAAO,SAAK,EACZ,QAAQ,SAAM,oCAGf"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/retry/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,iBAAiB,CAAC;AAE5D,OAAO,EAAE,KAAK,YAAY,EAAS,MAAM,mBAAmB,CAAC;AAE7D,wEAAwE;AACxE,qBAAa,YAAa,SAAQ,KAAK;CAAG;AAE1C;;;;;;;GAOG;AACH,wBAAiB,gBAAgB,qCAMhC;AAED;;;;GAIG;AACH,wBAAiB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,oCAI7C;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,KAAK,CAAC,MAAM,EAChC,EAAE,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,EACzB,IAAI,SAAc,EAClB,OAAO,mCAAqB,EAC5B,GAAG,GAAE,MAAyC,EAC9C,YAAY,UAAQ,mBAoBrB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,QAAQ,EAAE,IAAI,CAAC;IAAC,YAAY,CAAC,EAAE,YAAY,CAAA;CAAE,CAAC;AAqB/G;;;;;;;;;;;;;GAaG;AACH,wBAAsB,UAAU,CAAC,CAAC,EAChC,EAAE,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,EAClD,IAAI,SAAK,EACT,OAAO,GAAE,iBAAqB,EAC9B,QAAQ,SAAI,oCAgBb;AAED;;;;;;;;;GASG;AACH,wBAAsB,UAAU,CAAC,CAAC,EAChC,EAAE,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,EAClD,IAAI,oBAAK,EACT,UAAU,EAAE,MAAM,EAClB,aAAa,SAAI,oCAclB;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAC9B,EAAE,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,EAClD,IAAI,SAAK,EACT,OAAO,SAAK,EACZ,QAAQ,SAAM,oCAGf"}
@@ -68,6 +68,23 @@ import { Timer } from '../timer/index.js';
68
68
  }
69
69
  }
70
70
  }
71
+ /**
72
+ * Resolves a {@link RetryUntilTimeout} to a numeric timeout in seconds for the legacy timer-based loop.
73
+ * A numeric/`{ timeout }` value passes through unchanged (0 means never time out, negative times out on the
74
+ * first interval). A `{ deadline }` is the remaining seconds until the deadline; when the deadline is already
75
+ * at or past `now` it resolves to a negative value so the loop times out immediately instead of being read as
76
+ * the never-timeout sentinel 0.
77
+ */ function resolveRetryUntilTimeoutSeconds(timeout) {
78
+ if (typeof timeout === 'number') {
79
+ return timeout;
80
+ }
81
+ if ('deadline' in timeout) {
82
+ const now = timeout.dateProvider?.now() ?? Date.now();
83
+ const remainingSeconds = (timeout.deadline.getTime() - now) / 1000;
84
+ return remainingSeconds > 0 ? remainingSeconds : -1;
85
+ }
86
+ return timeout.timeout;
87
+ }
71
88
  /**
72
89
  * Retry an asynchronous function until it returns a truthy value or the specified timeout is exceeded.
73
90
  * The function is retried periodically with a fixed interval between attempts. The operation can be named for better error messages.
@@ -75,10 +92,14 @@ import { Timer } from '../timer/index.js';
75
92
  *
76
93
  * @param fn - The asynchronous function to be retried, which should return a truthy value upon success or undefined otherwise.
77
94
  * @param name - The optional name of the operation, used for generating timeout error message.
78
- * @param timeout - The optional maximum time, in seconds, to keep retrying before throwing a timeout error. Defaults to 0 (never timeout).
95
+ * @param timeout - The maximum time to keep retrying before throwing a timeout error. Accepts a number of
96
+ * seconds (0 = never time out), an explicit `{ timeout }` in seconds, or an absolute `{ deadline }` with an
97
+ * optional `dateProvider`. A deadline already in the past times out on the first interval, the same as a
98
+ * zero/negative numeric timeout. Defaults to 0 (never timeout).
79
99
  * @param interval - The optional interval, in seconds, between retry attempts. Defaults to 1 second.
80
100
  * @returns A Promise that resolves with the successful (truthy) result of the provided function, or rejects if timeout is exceeded.
81
101
  */ export async function retryUntil(fn, name = '', timeout = 0, interval = 1) {
102
+ const timeoutSeconds = resolveRetryUntilTimeoutSeconds(timeout);
82
103
  const timer = new Timer();
83
104
  while(true){
84
105
  const result = await fn();
@@ -86,7 +107,7 @@ import { Timer } from '../timer/index.js';
86
107
  return result;
87
108
  }
88
109
  await sleep(interval * 1000);
89
- if (timeout && timer.s() > timeout) {
110
+ if (timeoutSeconds && timer.s() > timeoutSeconds) {
90
111
  throw new TimeoutError(name ? `Timeout awaiting ${name}` : 'Timeout');
91
112
  }
92
113
  }
@@ -11,9 +11,8 @@ export declare function updateInlineTestData(targetFileFromRepoRoot: string, ite
11
11
  /**
12
12
  * Updates the sample Prover.toml files in noir-projects/noir-protocol-circuits/crates/.
13
13
  * @remarks Requires AZTEC_GENERATE_TEST_DATA=1 to be set
14
- * To re-gen, run 'AZTEC_GENERATE_TEST_DATA=1 FAKE_PROOFS=1 yarn test:e2e full.test'
15
- * To re-gen public base only, run 'AZTEC_GENERATE_TEST_DATA=1 yarn workspace @aztec/prover-client test orchestrator_public_functions'
14
+ * To re-gen, run 'AZTEC_GENERATE_TEST_DATA=1 FAKE_PROOFS=1 yarn test:e2e e2e_prover/full.test'
16
15
  */
17
16
  export declare function updateProtocolCircuitSampleInputs(circuitName: string, value: string): void;
18
17
  export declare function getPathToFile(targetFileFromRepoRoot: string): string;
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZXN0aW5nL2ZpbGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLDJGQUEyRjtBQUMzRix3QkFBZ0IsYUFBYSxDQUFDLHNCQUFzQixFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxHQUFHLE1BQU0sRUFBRSxHQUFHLEdBQUUsT0FBZSxRQVM1RztBQUVELHdCQUFnQixZQUFZLENBQUMsUUFBUSxFQUFFLE1BQU0sR0FBRyxNQUFNLENBR3JEO0FBRUQ7Ozs7O0dBS0c7QUFDSCx3QkFBZ0Isb0JBQW9CLENBQUMsc0JBQXNCLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sUUFtQm5HO0FBRUQ7Ozs7O0dBS0c7QUFDSCx3QkFBZ0IsaUNBQWlDLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxRQU1uRjtBQUVELHdCQUFnQixhQUFhLENBQUMsc0JBQXNCLEVBQUUsTUFBTSxVQU8zRCJ9
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZXN0aW5nL2ZpbGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLDJGQUEyRjtBQUMzRix3QkFBZ0IsYUFBYSxDQUFDLHNCQUFzQixFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxHQUFHLE1BQU0sRUFBRSxHQUFHLEdBQUUsT0FBZSxRQVM1RztBQUVELHdCQUFnQixZQUFZLENBQUMsUUFBUSxFQUFFLE1BQU0sR0FBRyxNQUFNLENBR3JEO0FBRUQ7Ozs7O0dBS0c7QUFDSCx3QkFBZ0Isb0JBQW9CLENBQUMsc0JBQXNCLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sUUFtQm5HO0FBRUQ7Ozs7R0FJRztBQUNILHdCQUFnQixpQ0FBaUMsQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLFFBTW5GO0FBRUQsd0JBQWdCLGFBQWEsQ0FBQyxzQkFBc0IsRUFBRSxNQUFNLFVBTzNEIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/testing/files/index.ts"],"names":[],"mappings":"AAOA,2FAA2F;AAC3F,wBAAgB,aAAa,CAAC,sBAAsB,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,GAAE,OAAe,QAS5G;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGrD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,sBAAsB,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAmBnG;AAED;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAMnF;AAED,wBAAgB,aAAa,CAAC,sBAAsB,EAAE,MAAM,UAO3D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/testing/files/index.ts"],"names":[],"mappings":"AAOA,2FAA2F;AAC3F,wBAAgB,aAAa,CAAC,sBAAsB,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,GAAE,OAAe,QAS5G;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGrD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,sBAAsB,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAmBnG;AAED;;;;GAIG;AACH,wBAAgB,iCAAiC,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAMnF;AAED,wBAAgB,aAAa,CAAC,sBAAsB,EAAE,MAAM,UAO3D"}
@@ -40,8 +40,7 @@ export function readTestData(repoPath) {
40
40
  /**
41
41
  * Updates the sample Prover.toml files in noir-projects/noir-protocol-circuits/crates/.
42
42
  * @remarks Requires AZTEC_GENERATE_TEST_DATA=1 to be set
43
- * To re-gen, run 'AZTEC_GENERATE_TEST_DATA=1 FAKE_PROOFS=1 yarn test:e2e full.test'
44
- * To re-gen public base only, run 'AZTEC_GENERATE_TEST_DATA=1 yarn workspace @aztec/prover-client test orchestrator_public_functions'
43
+ * To re-gen, run 'AZTEC_GENERATE_TEST_DATA=1 FAKE_PROOFS=1 yarn test:e2e e2e_prover/full.test'
45
44
  */ export function updateProtocolCircuitSampleInputs(circuitName, value) {
46
45
  const logger = createConsoleLogger('aztec:testing:test_data');
47
46
  const targetFileFromRepoRoot = `noir-projects/noir-protocol-circuits/crates/${circuitName}/Prover.toml`;
@@ -29,10 +29,6 @@ export declare class MembershipWitness<N extends number> {
29
29
  toBuffer(): Buffer<ArrayBufferLike>;
30
30
  toJSON(): Buffer<ArrayBufferLike>;
31
31
  toFields(): Fr[];
32
- /**
33
- * Returns a representation of the membership witness as expected by intrinsic Noir deserialization.
34
- */
35
- toNoirRepresentation(): (string | string[])[];
36
32
  static schemaFor<N extends number>(size: N): import("zod").ZodPipe<import("../schemas/types.js").ZodFor<Buffer<ArrayBufferLike>>, import("zod").ZodTransform<MembershipWitness<N>, Buffer<ArrayBufferLike>>>;
37
33
  /**
38
34
  * Creates a random membership witness. Used for testing purposes.
@@ -64,4 +60,4 @@ export declare class MembershipWitness<N extends number> {
64
60
  };
65
61
  static fromSiblingPath<N extends number>(leafIndex: bigint, siblingPath: SiblingPath<N>): MembershipWitness<N>;
66
62
  }
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtYmVyc2hpcF93aXRuZXNzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHJlZXMvbWVtYmVyc2hpcF93aXRuZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssS0FBSyxFQUFxQixNQUFNLHVCQUF1QixDQUFDO0FBQ3BGLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXJEOztHQUVHO0FBQ0gscUJBQWEsaUJBQWlCLENBQUMsQ0FBQyxTQUFTLE1BQU07SUFNM0M7O09BRUc7SUFDSSxTQUFTLEVBQUUsTUFBTTtJQUN4Qjs7T0FFRztJQUNJLFdBQVcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQVpsQztJQUNFOztPQUVHO0lBQ0gsUUFBUSxFQUFFLENBQUM7SUFDWDs7T0FFRztJQUNJLFNBQVMsRUFBRSxNQUFNO0lBQ3hCOztPQUVHO0lBQ0ksV0FBVyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBR2pDO0lBRUQsUUFBUSw0QkFFUDtJQUVELE1BQU0sNEJBRUw7SUFFRCxRQUFRLElBQUksRUFBRSxFQUFFLENBRWY7SUFFRDs7T0FFRztJQUNJLG9CQUFvQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FHbkQ7SUFFRCxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsbUtBRXpDO0lBRUQ7Ozs7T0FJRztJQUNILE9BQWMsTUFBTSxDQUFDLENBQUMsU0FBUyxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUMsd0JBUWpEO0lBRUQ7Ozs7O09BS0c7SUFDSCxPQUFjLEtBQUssQ0FBQyxDQUFDLFNBQVMsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsU0FBUyxTQUFLLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBS3ZGO0lBRUQsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFNBQVMsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBTS9HO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxHQUFHLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUtoRztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsU0FBUyxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsR0FBRztRQUFFLFVBQVUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLFlBQVksR0FBRyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQTtLQUFFLENBU2xIO0lBRUQsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFNBQVMsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FFN0c7Q0FDRiJ9
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtYmVyc2hpcF93aXRuZXNzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHJlZXMvbWVtYmVyc2hpcF93aXRuZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssS0FBSyxFQUFxQixNQUFNLHVCQUF1QixDQUFDO0FBQ3BGLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXJEOztHQUVHO0FBQ0gscUJBQWEsaUJBQWlCLENBQUMsQ0FBQyxTQUFTLE1BQU07SUFNM0M7O09BRUc7SUFDSSxTQUFTLEVBQUUsTUFBTTtJQUN4Qjs7T0FFRztJQUNJLFdBQVcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQVpsQztJQUNFOztPQUVHO0lBQ0gsUUFBUSxFQUFFLENBQUM7SUFDWDs7T0FFRztJQUNJLFNBQVMsRUFBRSxNQUFNO0lBQ3hCOztPQUVHO0lBQ0ksV0FBVyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBR2pDO0lBRUQsUUFBUSw0QkFFUDtJQUVELE1BQU0sNEJBRUw7SUFFRCxRQUFRLElBQUksRUFBRSxFQUFFLENBRWY7SUFFRCxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsbUtBRXpDO0lBRUQ7Ozs7T0FJRztJQUNILE9BQWMsTUFBTSxDQUFDLENBQUMsU0FBUyxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUMsd0JBUWpEO0lBRUQ7Ozs7O09BS0c7SUFDSCxPQUFjLEtBQUssQ0FBQyxDQUFDLFNBQVMsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsU0FBUyxTQUFLLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBS3ZGO0lBRUQsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFNBQVMsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBTS9HO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxHQUFHLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUtoRztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsU0FBUyxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsR0FBRztRQUFFLFVBQVUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLFlBQVksR0FBRyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQTtLQUFFLENBU2xIO0lBRUQsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFNBQVMsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FFN0c7Q0FDRiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"membership_witness.d.ts","sourceRoot":"","sources":["../../src/trees/membership_witness.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,KAAK,KAAK,EAAqB,MAAM,uBAAuB,CAAC;AACpF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD;;GAEG;AACH,qBAAa,iBAAiB,CAAC,CAAC,SAAS,MAAM;IAM3C;;OAEG;IACI,SAAS,EAAE,MAAM;IACxB;;OAEG;IACI,WAAW,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IAZlC;IACE;;OAEG;IACH,QAAQ,EAAE,CAAC;IACX;;OAEG;IACI,SAAS,EAAE,MAAM;IACxB;;OAEG;IACI,WAAW,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAGjC;IAED,QAAQ,4BAEP;IAED,MAAM,4BAEL;IAED,QAAQ,IAAI,EAAE,EAAE,CAEf;IAED;;OAEG;IACI,oBAAoB,IAAI,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,CAGnD;IAED,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,mKAEzC;IAED;;;;OAIG;IACH,OAAc,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,QAAQ,EAAE,CAAC,wBAQjD;IAED;;;;;OAKG;IACH,OAAc,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,SAAK,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAKvF;IAED,MAAM,CAAC,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAM/G;IAED;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,EAAE,IAAI,EAAE,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAKhG;IAED;;;;OAIG;IACH,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG;QAAE,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAA;KAAE,CASlH;IAED,MAAM,CAAC,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAE7G;CACF"}
1
+ {"version":3,"file":"membership_witness.d.ts","sourceRoot":"","sources":["../../src/trees/membership_witness.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,KAAK,KAAK,EAAqB,MAAM,uBAAuB,CAAC;AACpF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD;;GAEG;AACH,qBAAa,iBAAiB,CAAC,CAAC,SAAS,MAAM;IAM3C;;OAEG;IACI,SAAS,EAAE,MAAM;IACxB;;OAEG;IACI,WAAW,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IAZlC;IACE;;OAEG;IACH,QAAQ,EAAE,CAAC;IACX;;OAEG;IACI,SAAS,EAAE,MAAM;IACxB;;OAEG;IACI,WAAW,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAGjC;IAED,QAAQ,4BAEP;IAED,MAAM,4BAEL;IAED,QAAQ,IAAI,EAAE,EAAE,CAEf;IAED,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,mKAEzC;IAED;;;;OAIG;IACH,OAAc,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,QAAQ,EAAE,CAAC,wBAQjD;IAED;;;;;OAKG;IACH,OAAc,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,SAAK,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAKvF;IAED,MAAM,CAAC,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAM/G;IAED;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,EAAE,IAAI,EAAE,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAKhG;IAED;;;;OAIG;IACH,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG;QAAE,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAA;KAAE,CASlH;IAED,MAAM,CAAC,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAE7G;CACF"}
@@ -31,15 +31,6 @@ import { BufferReader, serializeToBuffer } from '../serialize/index.js';
31
31
  ...this.siblingPath
32
32
  ];
33
33
  }
34
- /**
35
- * Returns a representation of the membership witness as expected by intrinsic Noir deserialization.
36
- */ toNoirRepresentation() {
37
- // TODO(#12874): remove the stupid as string conversion by modifying ForeignCallOutput type in acvm.js
38
- return [
39
- new Fr(this.leafIndex).toString(),
40
- this.siblingPath.map((fr)=>fr.toString())
41
- ];
42
- }
43
34
  static schemaFor(size) {
44
35
  return schemas.Buffer.transform((b)=>MembershipWitness.fromBuffer(b, size));
45
36
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/foundation",
3
- "version": "0.0.1-commit.b9865e97",
3
+ "version": "0.0.1-commit.be03c316",
4
4
  "type": "module",
5
5
  "main": "./dest/index.js",
6
6
  "types": "./dest/index.d.ts",
@@ -146,7 +146,7 @@
146
146
  "testEnvironment": "../../foundation/src/jest/env.mjs"
147
147
  },
148
148
  "dependencies": {
149
- "@aztec/bb.js": "0.0.1-commit.b9865e97",
149
+ "@aztec/bb.js": "0.0.1-commit.be03c316",
150
150
  "@koa/cors": "^5.0.0",
151
151
  "@noble/curves": "=1.7.0",
152
152
  "@noble/hashes": "^1.6.1",
@@ -10,7 +10,8 @@ export type EnvVar =
10
10
  | 'ARCHIVER_URL'
11
11
  | 'ARCHIVER_VIEM_POLLING_INTERVAL_MS'
12
12
  | 'ARCHIVER_BATCH_SIZE'
13
- | 'ARCHIVER_ORPHAN_PROPOSED_BLOCK_PRUNE_GRACE_SECONDS'
13
+ | 'ARCHIVER_ORPHAN_PRUNE_NO_PROPOSAL_TOLERANCE'
14
+ | 'ARCHIVER_SKIP_ORPHAN_PROPOSED_BLOCK_PRUNING'
14
15
  | 'AZTEC_ADMIN_PORT'
15
16
  | 'AZTEC_NODE_DEBUG'
16
17
  | 'AZTEC_ADMIN_API_KEY_HASH'
@@ -77,6 +78,7 @@ export type EnvVar =
77
78
  | 'DEBUG_P2P_DISABLE_COLOCATION_PENALTY'
78
79
  | 'ENABLE_PROVER_NODE'
79
80
  | 'USE_AUTOMINE_SEQUENCER'
81
+ | 'AUTOMINE_ENABLE_PROVE_EPOCH'
80
82
  | 'ETHEREUM_HOSTS'
81
83
  | 'ETHEREUM_DEBUG_HOSTS'
82
84
  | 'ETHEREUM_ALLOW_NO_DEBUG_HOSTS'
@@ -97,6 +99,7 @@ export type EnvVar =
97
99
  | 'MNEMONIC'
98
100
  | 'NETWORK'
99
101
  | 'NETWORK_CONFIG_LOCATION'
102
+ | 'ALLOW_OVERRIDING_NETWORK_CONFIG'
100
103
  | 'USE_GCLOUD_LOGGING'
101
104
  | 'OTEL_EXPORTER_OTLP_METRICS_ENDPOINT'
102
105
  | 'OTEL_EXPORTER_OTLP_TRACES_ENDPOINT'
@@ -116,7 +119,6 @@ export type EnvVar =
116
119
  | 'P2P_BATCH_TX_REQUESTER_TX_BATCH_SIZE'
117
120
  | 'P2P_BATCH_TX_REQUESTER_BAD_PEER_THRESHOLD'
118
121
  | 'P2P_BLOCK_CHECK_INTERVAL_MS'
119
- | 'P2P_SLOT_CHECK_INTERVAL_MS'
120
122
  | 'P2P_BLOCK_REQUEST_BATCH_SIZE'
121
123
  | 'P2P_BOOTSTRAP_NODE_ENR_VERSION_CHECK'
122
124
  | 'P2P_BOOTSTRAP_NODES_AS_FULL_PEERS'
@@ -135,7 +137,9 @@ export type EnvVar =
135
137
  | 'P2P_GOSSIPSUB_TX_INVALID_MESSAGE_DELIVERIES_WEIGHT'
136
138
  | 'P2P_GOSSIPSUB_TX_TOPIC_WEIGHT'
137
139
  | 'P2P_L2_QUEUE_SIZE'
140
+ | 'P2P_MAX_GOSSIP_CLOCK_DISPARITY_MS'
138
141
  | 'P2P_MAX_PEERS'
142
+ | 'P2P_PEER_BAN_DURATION_SECONDS'
139
143
  | 'P2P_PEER_CHECK_INTERVAL_MS'
140
144
  | 'P2P_PEER_FAILED_BAN_TIME_MS'
141
145
  | 'P2P_PEER_PENALTY_VALUES'
@@ -164,6 +168,7 @@ export type EnvVar =
164
168
  | 'P2P_MIN_TX_POOL_AGE_MS'
165
169
  | 'P2P_MISSING_TX_COLLECTION_DEADLINE_SLOTS'
166
170
  | 'P2P_RPC_PRICE_BUMP_PERCENTAGE'
171
+ | 'P2P_KEEP_FINALIZED_TXS_FOR_SLOTS'
167
172
  | 'P2P_TX_VALIDATION_CACHE_SIZE'
168
173
  | 'DEBUG_P2P_INSTRUMENT_MESSAGES'
169
174
  | 'PEER_ID_PRIVATE_KEY'
@@ -186,6 +191,7 @@ export type EnvVar =
186
191
  | 'PROVER_FAILED_PROOF_STORE'
187
192
  | 'PROVER_NODE_FAILED_EPOCH_STORE'
188
193
  | 'PROVER_NODE_DISABLE_PROOF_PUBLISH'
194
+ | 'PROVER_NODE_PROOF_SUBMISSION_TARGET_ADDRESS'
189
195
  | 'PROVER_ID'
190
196
  | 'PROVER_NODE_POLLING_INTERVAL_MS'
191
197
  | 'PROVER_NODE_MAX_PENDING_JOBS'
@@ -212,6 +218,7 @@ export type EnvVar =
212
218
  | 'RPC_MAX_BODY_SIZE'
213
219
  | 'RPC_SIMULATE_PUBLIC_MAX_GAS_LIMIT'
214
220
  | 'RPC_SIMULATE_PUBLIC_MAX_DEBUG_LOG_MEMORY_READS'
221
+ | 'OFFENSE_COLLECTION_ENABLED'
215
222
  | 'SENTINEL_ENABLED'
216
223
  | 'SENTINEL_HISTORY_LENGTH_IN_EPOCHS'
217
224
  | 'SENTINEL_HISTORIC_EPOCH_PERFORMANCE_LENGTH_IN_EPOCHS'
@@ -223,18 +230,23 @@ export type EnvVar =
223
230
  | 'SEQ_MAX_DA_BLOCK_GAS'
224
231
  | 'SEQ_MAX_L2_BLOCK_GAS'
225
232
  | 'SEQ_PER_BLOCK_ALLOCATION_MULTIPLIER'
233
+ | 'SEQ_PER_BLOCK_DA_ALLOCATION_MULTIPLIER'
226
234
  | 'SEQ_REDISTRIBUTE_CHECKPOINT_BUDGET'
227
235
  | 'SEQ_PUBLISHER_PRIVATE_KEY'
228
236
  | 'SEQ_PUBLISHER_PRIVATE_KEYS'
229
237
  | 'SEQ_PUBLISHER_ADDRESSES'
230
238
  | 'SEQ_PUBLISHER_ALLOW_INVALID_STATES'
231
239
  | 'SEQ_PUBLISHER_FORWARDER_ADDRESS'
240
+ | 'SEQ_PUBLISHER_PREVIOUS_L1_BLOCK_WAIT_TIMEOUT_MS'
241
+ | 'SEQ_PUBLISHER_PREVIOUS_L1_BLOCK_WAIT_POLL_INTERVAL_MS'
232
242
  | 'PUBLISHER_FUNDING_THRESHOLD'
233
243
  | 'PUBLISHER_FUNDING_AMOUNT'
234
244
  | 'SEQ_POLLING_INTERVAL_MS'
235
- | 'SEQ_ENFORCE_TIME_TABLE'
236
245
  | 'SEQ_L1_PUBLISHING_TIME_ALLOWANCE_IN_SLOT'
237
246
  | 'SEQ_ATTESTATION_PROPAGATION_TIME'
247
+ | 'SEQ_CHECKPOINT_PROPOSAL_PREPARE_TIME'
248
+ | 'CHECKPOINT_PROPOSAL_SYNC_GRACE_SECONDS'
249
+ | 'SEQ_MIN_BLOCK_DURATION'
238
250
  | 'SEQ_BLOCK_DURATION_MS'
239
251
  | 'SEQ_LAST_BLOCK_DURATION_MS'
240
252
  | 'SEQ_EXPECTED_BLOCK_PROPOSALS_PER_SLOT'
@@ -332,6 +344,11 @@ export type EnvVar =
332
344
  | 'AZTEC_GOVERNANCE_PROPOSER_ROUND_SIZE'
333
345
  | 'AZTEC_GOVERNANCE_VOTING_DURATION'
334
346
  | 'AZTEC_EXIT_DELAY_SECONDS'
347
+ | 'AZTEC_ENTRY_QUEUE_BOOTSTRAP_VALIDATOR_SET_SIZE'
348
+ | 'AZTEC_ENTRY_QUEUE_BOOTSTRAP_FLUSH_SIZE'
349
+ | 'AZTEC_ENTRY_QUEUE_FLUSH_SIZE_MIN'
350
+ | 'AZTEC_ENTRY_QUEUE_FLUSH_SIZE_QUOTIENT'
351
+ | 'AZTEC_ENTRY_QUEUE_MAX_FLUSH_SIZE'
335
352
  | 'L1_GAS_LIMIT_BUFFER_PERCENTAGE'
336
353
  | 'L1_GAS_PRICE_MAX'
337
354
  | 'L1_FEE_PER_GAS_GWEI_MAX'
@@ -356,7 +373,7 @@ export type EnvVar =
356
373
  | 'K8S_POD_NAME'
357
374
  | 'K8S_POD_UID'
358
375
  | 'K8S_NAMESPACE_NAME'
359
- | 'ENABLE_VERSION_CHECK'
376
+ | 'ENABLE_AUTO_SHUTDOWN'
360
377
  | 'WEB3_SIGNER_URL'
361
378
  | 'SKIP_ARCHIVER_INITIAL_SYNC'
362
379
  | 'BLOB_ALLOW_EMPTY_SOURCES'
@@ -367,10 +384,12 @@ export type EnvVar =
367
384
  | 'MAX_BLOCKS_PER_CHECKPOINT'
368
385
  | 'LEGACY_BLS_CLI'
369
386
  | 'DEBUG_FORCE_TX_PROOF_VERIFICATION'
387
+ | 'VALIDATOR_ALLOW_EPHEMERAL_SIGNING_PROTECTION'
370
388
  | 'VALIDATOR_HA_SIGNING_ENABLED'
371
389
  | 'VALIDATOR_HA_NODE_ID'
372
390
  | 'VALIDATOR_HA_POLLING_INTERVAL_MS'
373
391
  | 'VALIDATOR_HA_SIGNING_TIMEOUT_MS'
392
+ | 'VALIDATOR_SIGNER_CALL_TIMEOUT_MS'
374
393
  | 'VALIDATOR_HA_MAX_STUCK_DUTIES_AGE_MS'
375
394
  | 'VALIDATOR_HA_OLD_DUTIES_MAX_AGE_H'
376
395
  | 'VALIDATOR_HA_DATABASE_URL'
@@ -119,21 +119,29 @@ export function omitConfigMappings<T, K extends keyof T>(
119
119
  }
120
120
 
121
121
  /**
122
- * Generates parseEnv and default values for a numerical config value.
123
- * @param defaultVal - The default numerical value to use if the environment variable is not set or is invalid
124
- * @returns Object with parseEnv and default values for a numerical config value
122
+ * Generates parseEnv and default values for an integer config value.
123
+ *
124
+ * The default is used only when the environment variable is unset or empty. A set-but-invalid
125
+ * value (non-numeric, fractional, or outside the safe-integer range) throws rather than silently
126
+ * falling back to the default.
127
+ * @param defaultVal - The default value to use when the environment variable is unset
128
+ * @returns Object with parseEnv and default values for an integer config value
125
129
  */
126
130
  export function numberConfigHelper(defaultVal: number): Pick<ConfigMapping<number>, 'parseEnv' | 'defaultValue'> {
127
131
  return {
128
- parseEnv: (val: string) => safeParseNumber(val, defaultVal),
132
+ parseEnv: (val: string) => parseSafeInteger(val),
129
133
  defaultValue: defaultVal,
130
134
  };
131
135
  }
132
136
 
133
137
  /**
134
- * Generates parseEnv and default values for a numerical config value.
135
- * @param defaultVal - The default numerical value to use if the environment variable is not set or is invalid
136
- * @returns Object with parseEnv and default values for a numerical config value
138
+ * Generates parseEnv and default values for a floating-point config value.
139
+ *
140
+ * The default is used only when the environment variable is unset or empty. A set-but-invalid
141
+ * value (not a finite number) throws rather than silently falling back to the default.
142
+ * @param defaultVal - The default value to use when the environment variable is unset
143
+ * @param validationFn - Optional extra validation applied to the parsed value; should throw on invalid input
144
+ * @returns Object with parseEnv and default values for a floating-point config value
137
145
  */
138
146
  export function floatConfigHelper(
139
147
  defaultVal: number,
@@ -141,7 +149,7 @@ export function floatConfigHelper(
141
149
  ): Pick<ConfigMapping<number>, 'parseEnv' | 'defaultValue'> {
142
150
  return {
143
151
  parseEnv: (val: string): number => {
144
- const parsed = safeParseFloat(val, defaultVal);
152
+ const parsed = parseFiniteNumber(val);
145
153
  validationFn?.(parsed);
146
154
  return parsed;
147
155
  },
@@ -150,12 +158,17 @@ export function floatConfigHelper(
150
158
  }
151
159
 
152
160
  /**
153
- * Parses an environment variable to a 0-1 percentage value
161
+ * Generates parseEnv and default values for a 0-1 percentage config value.
162
+ *
163
+ * The default is used only when the environment variable is unset or empty. A set-but-invalid
164
+ * value (not a finite number, or outside the 0-1 range) throws rather than silently falling back
165
+ * to the default.
166
+ * @param defaultVal - The default value to use when the environment variable is unset
154
167
  */
155
168
  export function percentageConfigHelper(defaultVal: number): Pick<ConfigMapping<number>, 'parseEnv' | 'defaultValue'> {
156
169
  return {
157
170
  parseEnv: (val: string): number => {
158
- const parsed = safeParseFloat(val, defaultVal);
171
+ const parsed = parseFiniteNumber(val);
159
172
  if (parsed < 0 || parsed > 1) {
160
173
  throw new TypeError(`Invalid percentage value: ${parsed} should be between 0 and 1`);
161
174
  }
@@ -205,13 +218,7 @@ export function bigintConfigHelper(
205
218
  */
206
219
  export function optionalNumberConfigHelper(): Pick<ConfigMapping<number>, 'parseEnv'> {
207
220
  return {
208
- parseEnv: (val: string) => {
209
- const parsedValue = parseInt(val);
210
- if (!Number.isSafeInteger(parsedValue)) {
211
- throw new Error(`Invalid number: ${val}`);
212
- }
213
- return parsedValue;
214
- },
221
+ parseEnv: (val: string) => parseSafeInteger(val),
215
222
  };
216
223
  }
217
224
 
@@ -344,27 +351,36 @@ export function secretFqConfigHelper(defaultValue?: Fq): {
344
351
  }
345
352
 
346
353
  /**
347
- * Safely parses a number from a string.
348
- * If the value is not a number or is not a safe integer, the default value is returned.
354
+ * Parses a string into a safe integer, throwing if the value is numeric but not an integer.
355
+ *
356
+ * Unlike `parseInt`, this does not silently truncate decimals: `'0.8'` throws rather than
357
+ * becoming `0`. A fractional value indicates the caller intended a non-integer where only
358
+ * integers are supported (use `floatConfigHelper`/`percentageConfigHelper` for those).
349
359
  * @param value - The string value to parse
350
- * @param defaultValue - The default value to return
351
- * @returns Either parsed value or default value
360
+ * @returns The parsed integer value
352
361
  */
353
- function safeParseNumber(value: string, defaultValue: number): number {
354
- const parsedValue = parseInt(value, 10);
355
- return Number.isSafeInteger(parsedValue) ? parsedValue : defaultValue;
362
+ function parseSafeInteger(value: string): number {
363
+ const parsedValue = parseFloat(value);
364
+ if (!Number.isSafeInteger(parsedValue)) {
365
+ throw new Error(`Invalid integer config value '${value}'; expected a whole number`);
366
+ }
367
+ return parsedValue;
356
368
  }
357
369
 
358
370
  /**
359
- * Safely parses a floating point number from a string.
360
- * If the value is not a number, the default value is returned.
371
+ * Parses a string into a finite floating-point number, throwing if the value is not a finite number.
372
+ *
373
+ * Invalid input (e.g. `'abc'`, or an overflow to `Infinity`) throws rather than being silently
374
+ * swallowed, so a misconfigured value fails loudly instead of falling back to the config default.
361
375
  * @param value - The string value to parse
362
- * @param defaultValue - The default value to return
363
- * @returns Either parsed value or default value
376
+ * @returns The parsed number
364
377
  */
365
- function safeParseFloat(value: string, defaultValue: number): number {
378
+ function parseFiniteNumber(value: string): number {
366
379
  const parsedValue = parseFloat(value);
367
- return Number.isNaN(parsedValue) ? defaultValue : parsedValue;
380
+ if (!Number.isFinite(parsedValue)) {
381
+ throw new Error(`Invalid number config value '${value}'`);
382
+ }
383
+ return parsedValue;
368
384
  }
369
385
 
370
386
  /**
@@ -1,7 +1,8 @@
1
1
  import { randomBytes } from '@aztec/foundation/crypto/random';
2
2
 
3
- import { createCipheriv, createDecipheriv, createHash, pbkdf2Sync, randomUUID } from 'crypto';
3
+ import { createCipheriv, createDecipheriv, createHash, pbkdf2, pbkdf2Sync, randomUUID } from 'crypto';
4
4
  import { readFileSync } from 'fs';
5
+ import { promisify } from 'util';
5
6
  import { z } from 'zod';
6
7
 
7
8
  /**
@@ -100,24 +101,15 @@ export interface Bn254KeystoreInterface {
100
101
  version: number;
101
102
  }
102
103
 
103
- /**
104
- * Creates a BN254 keystore object for a BN254 BLS private key.
105
- *
106
- * Uses PBKDF2 with SHA-256 for key derivation and AES-128-CTR for encryption,
107
- * following the EIP-2335 specification format.
108
- *
109
- * @param password - Password for encrypting the private key
110
- * @param privateKeyHex - Private key as 0x-prefixed hex string (32 bytes)
111
- * @param pubkeyHex - Public key as hex string (compressed or uncompressed)
112
- * @param derivationPath - BIP-44 style derivation path (e.g., "m/12381/3600/0/0/0")
113
- * @returns BN254 keystore object ready to be serialized to JSON
114
- * @throws Error if private key is not 32-byte hex
115
- */
116
- export function createBn254Keystore(
117
- password: string,
104
+ const pbkdf2Async = promisify(pbkdf2);
105
+
106
+ function createBn254KeystoreFromDerivedKey(
118
107
  privateKeyHex: string,
119
108
  pubkeyHex: string,
120
109
  derivationPath: string,
110
+ salt: Buffer,
111
+ iv: Buffer,
112
+ dk: Buffer,
121
113
  ): Bn254Keystore {
122
114
  const ensureHex = (hex: string) => hex.replace(/^0x/i, '');
123
115
  const privHex = ensureHex(privateKeyHex);
@@ -125,11 +117,7 @@ export function createBn254Keystore(
125
117
  throw new Error('BLS private key must be 32-byte hex');
126
118
  }
127
119
 
128
- const salt = randomBytes(32);
129
- const iv = randomBytes(16);
130
- const dk = pbkdf2Sync(Buffer.from(password.normalize('NFKD'), 'utf8'), salt, 262144, 32, 'sha256');
131
120
  const cipherKey = dk.subarray(0, 16);
132
-
133
121
  const cipher = createCipheriv('aes-128-ctr', cipherKey, iv);
134
122
  const plaintext = Buffer.from(privHex, 'hex');
135
123
  const ciphertext = Buffer.concat([cipher.update(plaintext), cipher.final()]);
@@ -166,6 +154,31 @@ export function createBn254Keystore(
166
154
  };
167
155
  }
168
156
 
157
+ /**
158
+ * Creates a BN254 keystore object for a BN254 BLS private key.
159
+ *
160
+ * Uses PBKDF2 with SHA-256 for key derivation and AES-128-CTR for encryption,
161
+ * following the EIP-2335 specification format.
162
+ *
163
+ * @param password - Password for encrypting the private key
164
+ * @param privateKeyHex - Private key as 0x-prefixed hex string (32 bytes)
165
+ * @param pubkeyHex - Public key as hex string (compressed or uncompressed)
166
+ * @param derivationPath - BIP-44 style derivation path (e.g., "m/12381/3600/0/0/0")
167
+ * @returns BN254 keystore object ready to be serialized to JSON
168
+ * @throws Error if private key is not 32-byte hex
169
+ */
170
+ export async function createBn254Keystore(
171
+ password: string,
172
+ privateKeyHex: string,
173
+ pubkeyHex: string,
174
+ derivationPath: string,
175
+ ): Promise<Bn254Keystore> {
176
+ const salt = randomBytes(32);
177
+ const iv = randomBytes(16);
178
+ const dk = await pbkdf2Async(Buffer.from(password.normalize('NFKD'), 'utf8'), salt, 262144, 32, 'sha256');
179
+ return createBn254KeystoreFromDerivedKey(privateKeyHex, pubkeyHex, derivationPath, salt, iv, dk);
180
+ }
181
+
169
182
  /**
170
183
  * Loads and validates a BN254 keystore file.
171
184
  *
@@ -1,10 +1,26 @@
1
- import { BarretenbergSync } from '@aztec/bb.js';
1
+ import { BarretenbergSync, CircuitKind } from '@aztec/bb.js';
2
2
 
3
3
  import { Fr } from '../../curves/bn254/field.js';
4
4
 
5
- export async function vkAsFieldsMegaHonk(input: Buffer): Promise<Fr[]> {
5
+ export async function vkAsFields(input: Buffer, kind: CircuitKind): Promise<Fr[]> {
6
6
  await BarretenbergSync.initSingleton();
7
7
  const api = BarretenbergSync.getSingleton();
8
- const response = api.megaVkAsFields({ verificationKey: input });
9
- return response.fields.map(field => Fr.fromBuffer(Buffer.from(field)));
8
+ switch (kind) {
9
+ case CircuitKind.App: {
10
+ const response = api.megaAppVkAsFields({ verificationKey: input });
11
+ return response.fields.map(field => Fr.fromBuffer(Buffer.from(field)));
12
+ }
13
+ case CircuitKind.Kernel: {
14
+ const response = api.megaKernelVkAsFields({ verificationKey: input });
15
+ return response.fields.map(field => Fr.fromBuffer(Buffer.from(field)));
16
+ }
17
+ case CircuitKind.HidingKernel: {
18
+ const response = api.megaZKVkAsFields({ verificationKey: input });
19
+ return response.fields.map(field => Fr.fromBuffer(Buffer.from(field)));
20
+ }
21
+ default: {
22
+ const _exhaustive: never = kind;
23
+ throw new Error(`vkAsFields: unhandled CircuitKind ${_exhaustive}`);
24
+ }
25
+ }
10
26
  }
@@ -22,16 +22,17 @@ export function makeLoggingErrorHandler(
22
22
  * at a specified polling interval. It allows starting, stopping, and checking the status of the
23
23
  * internally managed promise. The class also supports interrupting the polling process when stopped.
24
24
  */
25
- export class RunningPromise {
25
+ export class RunningPromise<T = void> {
26
26
  private running = false;
27
27
  private runningPromise = Promise.resolve();
28
28
  private interruptibleSleep = new InterruptibleSleep();
29
29
  private requested: PromiseWithResolvers<void> | undefined = undefined;
30
+ private requestedArg: T | undefined = undefined;
30
31
 
31
32
  public static readonly EXIT: typeof EXIT = EXIT;
32
33
 
33
34
  constructor(
34
- private fn: () => void | Promise<void>,
35
+ private fn: (arg?: T) => void | Promise<void>,
35
36
  private logger = createLogger('running-promise'),
36
37
  private pollingIntervalMS = 10000,
37
38
  private handleError: ErrorHandler = makeLoggingErrorHandler(logger),
@@ -51,7 +52,7 @@ export class RunningPromise {
51
52
  while (this.running) {
52
53
  const hasRequested = this.requested !== undefined;
53
54
  try {
54
- await this.fn();
55
+ await this.fn(this.requestedArg);
55
56
  } catch (err) {
56
57
  const code = await this.handleError(err);
57
58
  if (code === RunningPromise.EXIT) {
@@ -64,6 +65,7 @@ export class RunningPromise {
64
65
  if (hasRequested) {
65
66
  this.requested!.resolve();
66
67
  this.requested = undefined;
68
+ this.requestedArg = undefined;
67
69
  }
68
70
 
69
71
  // If no immediate run was requested, sleep for the polling interval.
@@ -101,15 +103,16 @@ export class RunningPromise {
101
103
  * Triggers an immediate run of the function, bypassing the polling interval.
102
104
  * If the function is currently running, it will be allowed to continue and then called again immediately.
103
105
  */
104
- public async trigger() {
106
+ public async trigger(arg?: T): Promise<void> {
105
107
  if (!this.running) {
106
- return this.fn();
108
+ return this.fn(arg);
107
109
  }
108
110
 
109
111
  let requested = this.requested;
110
112
  if (!requested) {
111
113
  requested = promiseWithResolvers<void>();
112
114
  this.requested = requested;
115
+ this.requestedArg = arg;
113
116
  this.interruptibleSleep.interrupt();
114
117
  }
115
118
  await requested!.promise;