@aztec/stdlib 5.0.0-nightly.20260623 → 5.0.0-nightly.20260624

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.
@@ -20,7 +20,11 @@ export declare function bufferAsFields(input: Buffer, targetLength: number): Fr[
20
20
  * bytecode commitment computations to diverge from what the circuit produced.
21
21
  *
22
22
  * @param fields - An output from bufferAsFields: [byteLength, ...payloadFields].
23
+ * @param maxByteLength - Optional upper bound on the declared byte length. When the field array comes
24
+ * from untrusted input (e.g. a gossiped contract-class log), pass the payload capacity so an
25
+ * attacker-declared length cannot force a large `Buffer.alloc` before the value is otherwise
26
+ * rejected. Throws if the declared length exceeds it, before allocating.
23
27
  * @returns A buffer of exactly `byteLength` bytes.
24
28
  */
25
- export declare function bufferFromFields(fields: Fr[]): Buffer;
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVmZmVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWJpL2J1ZmZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFJcEQ7Ozs7OztHQU1HO0FBQ0gsd0JBQWdCLGNBQWMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLEdBQUcsRUFBRSxFQUFFLENBY3hFO0FBRUQ7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCx3QkFBZ0IsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLE1BQU0sQ0FjckQifQ==
29
+ export declare function bufferFromFields(fields: Fr[], maxByteLength?: number): Buffer;
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVmZmVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWJpL2J1ZmZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFJcEQ7Ozs7OztHQU1HO0FBQ0gsd0JBQWdCLGNBQWMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLEdBQUcsRUFBRSxFQUFFLENBY3hFO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUNILHdCQUFnQixnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsYUFBYSxDQUFDLEVBQUUsTUFBTSxHQUFHLE1BQU0sQ0FzQjdFIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"buffer.d.ts","sourceRoot":"","sources":["../../src/abi/buffer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAIpD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,EAAE,EAAE,CAcxE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM,CAcrD"}
1
+ {"version":3,"file":"buffer.d.ts","sourceRoot":"","sources":["../../src/abi/buffer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAIpD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,EAAE,EAAE,CAcxE;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAsB7E"}
@@ -37,10 +37,22 @@ import chunk from 'lodash.chunk';
37
37
  * bytecode commitment computations to diverge from what the circuit produced.
38
38
  *
39
39
  * @param fields - An output from bufferAsFields: [byteLength, ...payloadFields].
40
+ * @param maxByteLength - Optional upper bound on the declared byte length. When the field array comes
41
+ * from untrusted input (e.g. a gossiped contract-class log), pass the payload capacity so an
42
+ * attacker-declared length cannot force a large `Buffer.alloc` before the value is otherwise
43
+ * rejected. Throws if the declared length exceeds it, before allocating.
40
44
  * @returns A buffer of exactly `byteLength` bytes.
41
- */ export function bufferFromFields(fields) {
45
+ */ export function bufferFromFields(fields, maxByteLength) {
46
+ // A valid bufferAsFields output always has at least the leading byte-length field, so an empty
47
+ // input encodes no data. Guard so `length` (the destructured head) is never undefined.
48
+ if (fields.length === 0) {
49
+ return Buffer.alloc(0);
50
+ }
42
51
  const [length, ...payload] = fields;
43
52
  const byteLength = length.toNumber();
53
+ if (maxByteLength !== undefined && byteLength > maxByteLength) {
54
+ throw new Error(`Declared byte length ${byteLength} exceeds maximum ${maxByteLength}`);
55
+ }
44
56
  const raw = Buffer.concat(payload.map((f)=>f.toBuffer().subarray(1)));
45
57
  if (raw.length >= byteLength) {
46
58
  return raw.subarray(0, byteLength);
@@ -1,7 +1,7 @@
1
1
  import { defaultFetch } from '@aztec/foundation/json-rpc/client';
2
2
  import { type ApiSchemaFor } from '../schemas/index.js';
3
3
  import { type ComponentsVersions } from '../versioning/index.js';
4
- declare const EpochProvingJobState: readonly ["initialized", "awaiting-checkpoints", "awaiting-predecessor", "publishing-proof", "completed", "superseded", "failed", "stopped", "cancelled", "timed-out"];
4
+ declare const EpochProvingJobState: readonly ["initialized", "awaiting-checkpoints", "awaiting-root", "awaiting-predecessor", "publishing-proof", "completed", "superseded", "failed", "stopped", "cancelled", "timed-out"];
5
5
  export type EpochProvingJobState = (typeof EpochProvingJobState)[number];
6
6
  export declare const EpochProvingJobTerminalState: EpochProvingJobState[];
7
7
  export type EpochProvingJobTerminalState = (typeof EpochProvingJobTerminalState)[number];
@@ -23,4 +23,4 @@ export interface ProverNodeApi {
23
23
  export declare const ProverNodeApiSchema: ApiSchemaFor<ProverNodeApi>;
24
24
  export declare function createProverNodeAdminClient(url: string, versions?: Partial<ComponentsVersions>, fetch?: typeof defaultFetch, apiKey?: string): ProverNodeApi;
25
25
  export {};
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmVyLW5vZGUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbnRlcmZhY2VzL3Byb3Zlci1ub2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBMkIsWUFBWSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFJMUYsT0FBTyxFQUFFLEtBQUssWUFBWSxFQUFXLE1BQU0scUJBQXFCLENBQUM7QUFDakUsT0FBTyxFQUFFLEtBQUssa0JBQWtCLEVBQWdDLE1BQU0sd0JBQXdCLENBQUM7QUFFL0YsUUFBQSxNQUFNLG9CQUFvQix3S0FXaEIsQ0FBQztBQUVYLE1BQU0sTUFBTSxvQkFBb0IsR0FBRyxDQUFDLE9BQU8sb0JBQW9CLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUV6RSxlQUFPLE1BQU0sNEJBQTRCLEVBQUUsb0JBQW9CLEVBT3JELENBQUM7QUFFWCxNQUFNLE1BQU0sNEJBQTRCLEdBQUcsQ0FBQyxPQUFPLDRCQUE0QixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7QUFFekYsaURBQWlEO0FBQ2pELE1BQU0sV0FBVyxhQUFhO0lBQzVCLE9BQU8sSUFBSSxPQUFPLENBQUM7UUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDO1FBQUMsTUFBTSxFQUFFLG9CQUFvQixDQUFDO1FBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQTtLQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRTFGOzs7O09BSUc7SUFDSCxVQUFVLENBQUMsV0FBVyxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7Q0FDbEQ7QUFFRCw2Q0FBNkM7QUFDN0MsZUFBTyxNQUFNLG1CQUFtQixFQUFFLFlBQVksQ0FBQyxhQUFhLENBTzNELENBQUM7QUFFRix3QkFBZ0IsMkJBQTJCLENBQ3pDLEdBQUcsRUFBRSxNQUFNLEVBQ1gsUUFBUSxHQUFFLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBTSxFQUMxQyxLQUFLLHNCQUFlLEVBQ3BCLE1BQU0sQ0FBQyxFQUFFLE1BQU0sR0FDZCxhQUFhLENBT2YifQ==
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmVyLW5vZGUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbnRlcmZhY2VzL3Byb3Zlci1ub2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBMkIsWUFBWSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFJMUYsT0FBTyxFQUFFLEtBQUssWUFBWSxFQUFXLE1BQU0scUJBQXFCLENBQUM7QUFDakUsT0FBTyxFQUFFLEtBQUssa0JBQWtCLEVBQWdDLE1BQU0sd0JBQXdCLENBQUM7QUFFL0YsUUFBQSxNQUFNLG9CQUFvQix5TEFZaEIsQ0FBQztBQUVYLE1BQU0sTUFBTSxvQkFBb0IsR0FBRyxDQUFDLE9BQU8sb0JBQW9CLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUV6RSxlQUFPLE1BQU0sNEJBQTRCLEVBQUUsb0JBQW9CLEVBT3JELENBQUM7QUFFWCxNQUFNLE1BQU0sNEJBQTRCLEdBQUcsQ0FBQyxPQUFPLDRCQUE0QixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7QUFFekYsaURBQWlEO0FBQ2pELE1BQU0sV0FBVyxhQUFhO0lBQzVCLE9BQU8sSUFBSSxPQUFPLENBQUM7UUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDO1FBQUMsTUFBTSxFQUFFLG9CQUFvQixDQUFDO1FBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQTtLQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRTFGOzs7O09BSUc7SUFDSCxVQUFVLENBQUMsV0FBVyxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7Q0FDbEQ7QUFFRCw2Q0FBNkM7QUFDN0MsZUFBTyxNQUFNLG1CQUFtQixFQUFFLFlBQVksQ0FBQyxhQUFhLENBTzNELENBQUM7QUFFRix3QkFBZ0IsMkJBQTJCLENBQ3pDLEdBQUcsRUFBRSxNQUFNLEVBQ1gsUUFBUSxHQUFFLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBTSxFQUMxQyxLQUFLLHNCQUFlLEVBQ3BCLE1BQU0sQ0FBQyxFQUFFLE1BQU0sR0FDZCxhQUFhLENBT2YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"prover-node.d.ts","sourceRoot":"","sources":["../../src/interfaces/prover-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAI1F,OAAO,EAAE,KAAK,YAAY,EAAW,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,KAAK,kBAAkB,EAAgC,MAAM,wBAAwB,CAAC;AAE/F,QAAA,MAAM,oBAAoB,wKAWhB,CAAC;AAEX,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzE,eAAO,MAAM,4BAA4B,EAAE,oBAAoB,EAOrD,CAAC;AAEX,MAAM,MAAM,4BAA4B,GAAG,CAAC,OAAO,4BAA4B,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzF,iDAAiD;AACjD,MAAM,WAAW,aAAa;IAC5B,OAAO,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,oBAAoB,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC,CAAC;IAE1F;;;;OAIG;IACH,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAClD;AAED,6CAA6C;AAC7C,eAAO,MAAM,mBAAmB,EAAE,YAAY,CAAC,aAAa,CAO3D,CAAC;AAEF,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,MAAM,EACX,QAAQ,GAAE,OAAO,CAAC,kBAAkB,CAAM,EAC1C,KAAK,sBAAe,EACpB,MAAM,CAAC,EAAE,MAAM,GACd,aAAa,CAOf"}
1
+ {"version":3,"file":"prover-node.d.ts","sourceRoot":"","sources":["../../src/interfaces/prover-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAI1F,OAAO,EAAE,KAAK,YAAY,EAAW,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,KAAK,kBAAkB,EAAgC,MAAM,wBAAwB,CAAC;AAE/F,QAAA,MAAM,oBAAoB,yLAYhB,CAAC;AAEX,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzE,eAAO,MAAM,4BAA4B,EAAE,oBAAoB,EAOrD,CAAC;AAEX,MAAM,MAAM,4BAA4B,GAAG,CAAC,OAAO,4BAA4B,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzF,iDAAiD;AACjD,MAAM,WAAW,aAAa;IAC5B,OAAO,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,oBAAoB,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC,CAAC;IAE1F;;;;OAIG;IACH,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAClD;AAED,6CAA6C;AAC7C,eAAO,MAAM,mBAAmB,EAAE,YAAY,CAAC,aAAa,CAO3D,CAAC;AAEF,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,MAAM,EACX,QAAQ,GAAE,OAAO,CAAC,kBAAkB,CAAM,EAC1C,KAAK,sBAAe,EACpB,MAAM,CAAC,EAAE,MAAM,GACd,aAAa,CAOf"}
@@ -5,6 +5,7 @@ import { getVersioningResponseHandler } from '../versioning/index.js';
5
5
  const EpochProvingJobState = [
6
6
  'initialized',
7
7
  'awaiting-checkpoints',
8
+ 'awaiting-root',
8
9
  'awaiting-predecessor',
9
10
  'publishing-proof',
10
11
  'completed',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/stdlib",
3
- "version": "5.0.0-nightly.20260623",
3
+ "version": "5.0.0-nightly.20260624",
4
4
  "type": "module",
5
5
  "inherits": [
6
6
  "../package.common.json",
@@ -92,13 +92,13 @@
92
92
  },
93
93
  "dependencies": {
94
94
  "@aws-sdk/client-s3": "^3.892.0",
95
- "@aztec/bb.js": "5.0.0-nightly.20260623",
96
- "@aztec/blob-lib": "5.0.0-nightly.20260623",
97
- "@aztec/constants": "5.0.0-nightly.20260623",
98
- "@aztec/ethereum": "5.0.0-nightly.20260623",
99
- "@aztec/foundation": "5.0.0-nightly.20260623",
100
- "@aztec/l1-artifacts": "5.0.0-nightly.20260623",
101
- "@aztec/noir-noirc_abi": "5.0.0-nightly.20260623",
95
+ "@aztec/bb.js": "5.0.0-nightly.20260624",
96
+ "@aztec/blob-lib": "5.0.0-nightly.20260624",
97
+ "@aztec/constants": "5.0.0-nightly.20260624",
98
+ "@aztec/ethereum": "5.0.0-nightly.20260624",
99
+ "@aztec/foundation": "5.0.0-nightly.20260624",
100
+ "@aztec/l1-artifacts": "5.0.0-nightly.20260624",
101
+ "@aztec/noir-noirc_abi": "5.0.0-nightly.20260624",
102
102
  "@google-cloud/storage": "^7.15.0",
103
103
  "axios": "^1.15.1",
104
104
  "json-stringify-deterministic": "1.0.12",
package/src/abi/buffer.ts CHANGED
@@ -38,11 +38,23 @@ export function bufferAsFields(input: Buffer, targetLength: number): Fr[] {
38
38
  * bytecode commitment computations to diverge from what the circuit produced.
39
39
  *
40
40
  * @param fields - An output from bufferAsFields: [byteLength, ...payloadFields].
41
+ * @param maxByteLength - Optional upper bound on the declared byte length. When the field array comes
42
+ * from untrusted input (e.g. a gossiped contract-class log), pass the payload capacity so an
43
+ * attacker-declared length cannot force a large `Buffer.alloc` before the value is otherwise
44
+ * rejected. Throws if the declared length exceeds it, before allocating.
41
45
  * @returns A buffer of exactly `byteLength` bytes.
42
46
  */
43
- export function bufferFromFields(fields: Fr[]): Buffer {
47
+ export function bufferFromFields(fields: Fr[], maxByteLength?: number): Buffer {
48
+ // A valid bufferAsFields output always has at least the leading byte-length field, so an empty
49
+ // input encodes no data. Guard so `length` (the destructured head) is never undefined.
50
+ if (fields.length === 0) {
51
+ return Buffer.alloc(0);
52
+ }
44
53
  const [length, ...payload] = fields;
45
54
  const byteLength = length.toNumber();
55
+ if (maxByteLength !== undefined && byteLength > maxByteLength) {
56
+ throw new Error(`Declared byte length ${byteLength} exceeds maximum ${maxByteLength}`);
57
+ }
46
58
  const raw = Buffer.concat(payload.map(f => f.toBuffer().subarray(1)));
47
59
  if (raw.length >= byteLength) {
48
60
  return raw.subarray(0, byteLength);
@@ -8,6 +8,7 @@ import { type ComponentsVersions, getVersioningResponseHandler } from '../versio
8
8
  const EpochProvingJobState = [
9
9
  'initialized',
10
10
  'awaiting-checkpoints',
11
+ 'awaiting-root',
11
12
  'awaiting-predecessor',
12
13
  'publishing-proof',
13
14
  'completed',