@aztec/stdlib 1.0.0-nightly.20250618 → 1.0.0-nightly.20250619

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 (35) hide show
  1. package/dest/block/block_hash.d.ts +4 -0
  2. package/dest/block/block_hash.d.ts.map +1 -1
  3. package/dest/block/block_hash.js +11 -0
  4. package/dest/block/in_block.d.ts +7 -6
  5. package/dest/block/in_block.d.ts.map +1 -1
  6. package/dest/block/in_block.js +4 -4
  7. package/dest/config/node-rpc-config.d.ts +2 -0
  8. package/dest/config/node-rpc-config.d.ts.map +1 -1
  9. package/dest/config/node-rpc-config.js +5 -0
  10. package/dest/epoch-helpers/index.d.ts +10 -5
  11. package/dest/epoch-helpers/index.d.ts.map +1 -1
  12. package/dest/epoch-helpers/index.js +13 -8
  13. package/dest/interfaces/pxe.d.ts +3 -3
  14. package/dest/interfaces/pxe.d.ts.map +1 -1
  15. package/dest/interfaces/pxe.js +2 -2
  16. package/dest/interfaces/server_circuit_prover.d.ts +6 -1
  17. package/dest/interfaces/server_circuit_prover.d.ts.map +1 -1
  18. package/dest/kernel/private_kernel_prover_output.d.ts +0 -1
  19. package/dest/kernel/private_kernel_prover_output.d.ts.map +1 -1
  20. package/dest/tx/indexed_tx_effect.d.ts +5 -2
  21. package/dest/tx/indexed_tx_effect.d.ts.map +1 -1
  22. package/dest/tx/indexed_tx_effect.js +18 -0
  23. package/dest/tx/simulated_tx.d.ts +164 -0
  24. package/dest/tx/simulated_tx.d.ts.map +1 -1
  25. package/dest/tx/simulated_tx.js +25 -0
  26. package/package.json +10 -10
  27. package/src/block/block_hash.ts +14 -0
  28. package/src/block/in_block.ts +5 -6
  29. package/src/config/node-rpc-config.ts +7 -0
  30. package/src/epoch-helpers/index.ts +20 -10
  31. package/src/interfaces/pxe.ts +4 -3
  32. package/src/interfaces/server_circuit_prover.ts +10 -1
  33. package/src/kernel/private_kernel_prover_output.ts +0 -1
  34. package/src/tx/indexed_tx_effect.ts +22 -0
  35. package/src/tx/simulated_tx.ts +43 -0
@@ -1,11 +1,15 @@
1
1
  import { Buffer32 } from '@aztec/foundation/buffer';
2
2
  import { Fr } from '@aztec/foundation/fields';
3
+ import { BufferReader } from '@aztec/foundation/serialize';
3
4
  /** Hash of an L2 block. */
4
5
  export declare class L2BlockHash extends Buffer32 {
5
6
  constructor(
6
7
  /** The buffer containing the hash. */
7
8
  hash: Buffer);
8
9
  static random(): L2BlockHash;
10
+ static fromNumber(num: number): L2BlockHash;
11
+ static fromBuffer(buffer: Buffer | BufferReader): L2BlockHash;
12
+ static fromString(str: string): Buffer32;
9
13
  static get schema(): import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, string, string>, Buffer<ArrayBuffer>, string>, L2BlockHash, string>;
10
14
  static zero(): L2BlockHash;
11
15
  static fromField(hash: Fr): L2BlockHash;
@@ -1 +1 @@
1
- {"version":3,"file":"block_hash.d.ts","sourceRoot":"","sources":["../../src/block/block_hash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAI9C,2BAA2B;AAC3B,qBAAa,WAAY,SAAQ,QAAQ;;IAErC,sCAAsC;IACtC,IAAI,EAAE,MAAM;WAKE,MAAM;IAItB,MAAM,KAAK,MAAM,sNAEhB;IAED,MAAM,CAAC,IAAI;WAIK,SAAS,CAAC,IAAI,EAAE,EAAE;CAGnC"}
1
+ {"version":3,"file":"block_hash.d.ts","sourceRoot":"","sources":["../../src/block/block_hash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAI3D,2BAA2B;AAC3B,qBAAa,WAAY,SAAQ,QAAQ;;IAErC,sCAAsC;IACtC,IAAI,EAAE,MAAM;WAKE,MAAM;WAIN,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW;WAIpC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY;WAKxC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ;IAIjD,MAAM,KAAK,MAAM,sNAEhB;IAED,MAAM,CAAC,IAAI;WAIK,SAAS,CAAC,IAAI,EAAE,EAAE;CAGnC"}
@@ -1,5 +1,6 @@
1
1
  import { Buffer32 } from '@aztec/foundation/buffer';
2
2
  import { Fr } from '@aztec/foundation/fields';
3
+ import { BufferReader } from '@aztec/foundation/serialize';
3
4
  import { schemas } from '../schemas/schemas.js';
4
5
  /** Hash of an L2 block. */ export class L2BlockHash extends Buffer32 {
5
6
  constructor(/** The buffer containing the hash. */ hash){
@@ -8,6 +9,16 @@ import { schemas } from '../schemas/schemas.js';
8
9
  static random() {
9
10
  return new L2BlockHash(Fr.random().toBuffer());
10
11
  }
12
+ static fromNumber(num) {
13
+ return new L2BlockHash(super.fromNumber(num).toBuffer());
14
+ }
15
+ static fromBuffer(buffer) {
16
+ const reader = BufferReader.asReader(buffer);
17
+ return new L2BlockHash(reader.readBytes(L2BlockHash.SIZE));
18
+ }
19
+ static fromString(str) {
20
+ return new L2BlockHash(super.fromString(str).toBuffer());
21
+ }
11
22
  static get schema() {
12
23
  return schemas.BufferHex.transform((value)=>new L2BlockHash(value));
13
24
  }
@@ -1,8 +1,9 @@
1
1
  import { type ZodTypeAny, z } from 'zod';
2
+ import { L2BlockHash } from './block_hash.js';
2
3
  import type { L2Block } from './l2_block.js';
3
4
  export type InBlock<T> = {
4
5
  l2BlockNumber: number;
5
- l2BlockHash: string;
6
+ l2BlockHash: L2BlockHash;
6
7
  data: T;
7
8
  };
8
9
  export declare function randomInBlock<T>(data: T): InBlock<T>;
@@ -10,22 +11,22 @@ export declare function wrapInBlock<T>(data: T, block: L2Block): Promise<InBlock
10
11
  export declare function inBlockSchemaFor<T extends ZodTypeAny>(schema: T): z.ZodObject<{
11
12
  data: T;
12
13
  l2BlockNumber: z.ZodPipeline<z.ZodUnion<[z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodNumber>;
13
- l2BlockHash: z.ZodString;
14
+ l2BlockHash: z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>, Buffer<ArrayBuffer>, string>, L2BlockHash, string>;
14
15
  }, "strip", ZodTypeAny, { [k in keyof z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
15
16
  data: T;
16
17
  l2BlockNumber: z.ZodPipeline<z.ZodUnion<[z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodNumber>;
17
- l2BlockHash: z.ZodString;
18
+ l2BlockHash: z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>, Buffer<ArrayBuffer>, string>, L2BlockHash, string>;
18
19
  }>, any>]: z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
19
20
  data: T;
20
21
  l2BlockNumber: z.ZodPipeline<z.ZodUnion<[z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodNumber>;
21
- l2BlockHash: z.ZodString;
22
+ l2BlockHash: z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>, Buffer<ArrayBuffer>, string>, L2BlockHash, string>;
22
23
  }>, any>[k]; }, { [k_1 in keyof z.baseObjectInputType<{
23
24
  data: T;
24
25
  l2BlockNumber: z.ZodPipeline<z.ZodUnion<[z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodNumber>;
25
- l2BlockHash: z.ZodString;
26
+ l2BlockHash: z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>, Buffer<ArrayBuffer>, string>, L2BlockHash, string>;
26
27
  }>]: z.baseObjectInputType<{
27
28
  data: T;
28
29
  l2BlockNumber: z.ZodPipeline<z.ZodUnion<[z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodNumber>;
29
- l2BlockHash: z.ZodString;
30
+ l2BlockHash: z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>, Buffer<ArrayBuffer>, string>, L2BlockHash, string>;
30
31
  }>[k_1]; }>;
31
32
  //# sourceMappingURL=in_block.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"in_block.d.ts","sourceRoot":"","sources":["../../src/block/in_block.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGzC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAG7C,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,CAAC,CAAC;CACT,CAAC;AAEF,wBAAgB,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAMpD;AAED,wBAAsB,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAMjF;AAED,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,UAAU,EAAE,MAAM,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;YAM/D"}
1
+ {"version":3,"file":"in_block.d.ts","sourceRoot":"","sources":["../../src/block/in_block.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGzC,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAG7C,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,WAAW,CAAC;IACzB,IAAI,EAAE,CAAC,CAAC;CACT,CAAC;AAEF,wBAAgB,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAMpD;AAED,wBAAsB,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAMjF;AAED,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,UAAU,EAAE,MAAM,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;YAM/D"}
@@ -1,24 +1,24 @@
1
- import { Fr } from '@aztec/foundation/fields';
2
1
  import { z } from 'zod';
3
2
  import { schemas } from '../schemas/index.js';
3
+ import { L2BlockHash } from './block_hash.js';
4
4
  export function randomInBlock(data) {
5
5
  return {
6
6
  data,
7
7
  l2BlockNumber: Math.floor(Math.random() * 1000),
8
- l2BlockHash: Fr.random().toString()
8
+ l2BlockHash: L2BlockHash.random()
9
9
  };
10
10
  }
11
11
  export async function wrapInBlock(data, block) {
12
12
  return {
13
13
  data,
14
14
  l2BlockNumber: block.number,
15
- l2BlockHash: (await block.hash()).toString()
15
+ l2BlockHash: L2BlockHash.fromField(await block.hash())
16
16
  };
17
17
  }
18
18
  export function inBlockSchemaFor(schema) {
19
19
  return z.object({
20
20
  data: schema,
21
21
  l2BlockNumber: schemas.Integer,
22
- l2BlockHash: z.string()
22
+ l2BlockHash: L2BlockHash.schema
23
23
  });
24
24
  }
@@ -5,5 +5,7 @@ export type NodeRPCConfig = {
5
5
  rpcSimulatePublicMaxGasLimit: number;
6
6
  /** Maximum allowed batch size for JSON RPC batch requests. */
7
7
  rpcMaxBatchSize: number;
8
+ /** The maximum body size the RPC server will accept */
9
+ rpcMaxBodySize: string;
8
10
  };
9
11
  //# sourceMappingURL=node-rpc-config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"node-rpc-config.d.ts","sourceRoot":"","sources":["../../src/config/node-rpc-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,EAAsB,MAAM,0BAA0B,CAAC;AAEvF,eAAO,MAAM,qBAAqB,EAAE,kBAAkB,CAAC,aAAa,CAWnE,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,uFAAuF;IACvF,4BAA4B,EAAE,MAAM,CAAC;IACrC,8DAA8D;IAC9D,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC"}
1
+ {"version":3,"file":"node-rpc-config.d.ts","sourceRoot":"","sources":["../../src/config/node-rpc-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,EAAsB,MAAM,0BAA0B,CAAC;AAEvF,eAAO,MAAM,qBAAqB,EAAE,kBAAkB,CAAC,aAAa,CAgBnE,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,uFAAuF;IACvF,4BAA4B,EAAE,MAAM,CAAC;IACrC,8DAA8D;IAC9D,eAAe,EAAE,MAAM,CAAC;IACxB,uDAAuD;IACvD,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC"}
@@ -9,5 +9,10 @@ export const nodeRpcConfigMappings = {
9
9
  env: 'RPC_MAX_BATCH_SIZE',
10
10
  description: 'Maximum allowed batch size for JSON RPC batch requests.',
11
11
  ...numberConfigHelper(100)
12
+ },
13
+ rpcMaxBodySize: {
14
+ env: 'RPC_MAX_BODY_SIZE',
15
+ description: 'Maximum allowed batch size for JSON RPC batch requests.',
16
+ defaultValue: '50mb'
12
17
  }
13
18
  };
@@ -5,7 +5,7 @@ export type L1RollupConstants = {
5
5
  slotDuration: number;
6
6
  epochDuration: number;
7
7
  ethereumSlotDuration: number;
8
- proofSubmissionWindow: number;
8
+ proofSubmissionEpochs: number;
9
9
  };
10
10
  export declare const EmptyL1RollupConstants: L1RollupConstants;
11
11
  export declare const L1RollupConstantsSchema: z.ZodObject<{
@@ -14,21 +14,21 @@ export declare const L1RollupConstantsSchema: z.ZodObject<{
14
14
  slotDuration: z.ZodNumber;
15
15
  epochDuration: z.ZodNumber;
16
16
  ethereumSlotDuration: z.ZodNumber;
17
- proofSubmissionWindow: z.ZodNumber;
17
+ proofSubmissionEpochs: z.ZodNumber;
18
18
  }, "strip", z.ZodTypeAny, {
19
19
  l1StartBlock: bigint;
20
20
  l1GenesisTime: bigint;
21
21
  slotDuration: number;
22
22
  epochDuration: number;
23
23
  ethereumSlotDuration: number;
24
- proofSubmissionWindow: number;
24
+ proofSubmissionEpochs: number;
25
25
  }, {
26
26
  l1StartBlock: string | number | bigint;
27
27
  l1GenesisTime: string | number | bigint;
28
28
  slotDuration: number;
29
29
  epochDuration: number;
30
30
  ethereumSlotDuration: number;
31
- proofSubmissionWindow: number;
31
+ proofSubmissionEpochs: number;
32
32
  }>;
33
33
  /** Returns the timestamp for a given L2 slot. */
34
34
  export declare function getTimestampForSlot(slot: bigint, constants: Pick<L1RollupConstants, 'l1GenesisTime' | 'slotDuration'>): bigint;
@@ -45,9 +45,14 @@ export declare function getSlotRangeForEpoch(epochNumber: bigint, constants: Pic
45
45
  * Note that the endTimestamp is the start timestamp of the last L1 slot for the epoch.
46
46
  */
47
47
  export declare function getTimestampRangeForEpoch(epochNumber: bigint, constants: Pick<L1RollupConstants, 'l1GenesisTime' | 'slotDuration' | 'epochDuration' | 'ethereumSlotDuration'>): bigint[];
48
+ /**
49
+ * Returns the epoch number at which proofs are no longer accepted for a given epoch.
50
+ * See l1-contracts/src/core/libraries/TimeLib.sol
51
+ */
52
+ export declare function getProofSubmissionDeadlineEpoch(epochNumber: bigint, constants: Pick<L1RollupConstants, 'proofSubmissionEpochs'>): bigint;
48
53
  /**
49
54
  * Returns the deadline timestamp (in seconds) for submitting a proof for a given epoch.
50
55
  * Computed as the start of the given epoch plus the proof submission window.
51
56
  */
52
- export declare function getProofSubmissionDeadlineTimestamp(epochNumber: bigint, constants: Pick<L1RollupConstants, 'l1GenesisTime' | 'slotDuration' | 'epochDuration' | 'proofSubmissionWindow'>): bigint;
57
+ export declare function getProofSubmissionDeadlineTimestamp(epochNumber: bigint, constants: Pick<L1RollupConstants, 'l1GenesisTime' | 'slotDuration' | 'epochDuration' | 'proofSubmissionEpochs'>): bigint;
53
58
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/epoch-helpers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,MAAM,iBAAiB,GAAG;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qBAAqB,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,iBAOpC,CAAC;AAEF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;EAOE,CAAC;AAEvC,iDAAiD;AACjD,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,IAAI,CAAC,iBAAiB,EAAE,eAAe,GAAG,cAAc,CAAC,UAGrE;AAED,qDAAqD;AACrD,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,iBAAiB,EAAE,eAAe,GAAG,cAAc,CAAC,UAElH;AAED,sDAAsD;AACtD,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,IAAI,CAAC,iBAAiB,EAAE,eAAe,GAAG,cAAc,GAAG,eAAe,CAAC,UAGvF;AAED,iDAAiD;AACjD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,iBAAiB,EAAE,eAAe,CAAC,UAE/F;AAED,0EAA0E;AAC1E,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,iBAAiB,EAAE,eAAe,CAAC,YAG5G;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,IAAI,CAAC,iBAAiB,EAAE,eAAe,GAAG,cAAc,GAAG,eAAe,GAAG,sBAAsB,CAAC,YAUhH;AAED;;;GAGG;AACH,wBAAgB,mCAAmC,CACjD,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,IAAI,CAAC,iBAAiB,EAAE,eAAe,GAAG,cAAc,GAAG,eAAe,GAAG,uBAAuB,CAAC,UAQjH"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/epoch-helpers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,MAAM,iBAAiB,GAAG;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qBAAqB,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,iBAOpC,CAAC;AAEF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;EAOE,CAAC;AAEvC,iDAAiD;AACjD,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,IAAI,CAAC,iBAAiB,EAAE,eAAe,GAAG,cAAc,CAAC,UAGrE;AAED,qDAAqD;AACrD,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,iBAAiB,EAAE,eAAe,GAAG,cAAc,CAAC,UAElH;AAED,sDAAsD;AACtD,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,IAAI,CAAC,iBAAiB,EAAE,eAAe,GAAG,cAAc,GAAG,eAAe,CAAC,UAGvF;AAED,iDAAiD;AACjD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,iBAAiB,EAAE,eAAe,CAAC,UAE/F;AAED,0EAA0E;AAC1E,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,iBAAiB,EAAE,eAAe,CAAC,YAG5G;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,IAAI,CAAC,iBAAiB,EAAE,eAAe,GAAG,cAAc,GAAG,eAAe,GAAG,sBAAsB,CAAC,YAUhH;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAC7C,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,IAAI,CAAC,iBAAiB,EAAE,uBAAuB,CAAC,UAG5D;AAED;;;GAGG;AACH,wBAAgB,mCAAmC,CACjD,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,IAAI,CAAC,iBAAiB,EAAE,eAAe,GAAG,cAAc,GAAG,eAAe,GAAG,uBAAuB,CAAC,UAOjH"}
@@ -6,7 +6,7 @@ export const EmptyL1RollupConstants = {
6
6
  epochDuration: 1,
7
7
  slotDuration: 1,
8
8
  ethereumSlotDuration: 1,
9
- proofSubmissionWindow: 2
9
+ proofSubmissionEpochs: 1
10
10
  };
11
11
  export const L1RollupConstantsSchema = z.object({
12
12
  l1StartBlock: schemas.BigInt,
@@ -14,7 +14,7 @@ export const L1RollupConstantsSchema = z.object({
14
14
  slotDuration: z.number(),
15
15
  epochDuration: z.number(),
16
16
  ethereumSlotDuration: z.number(),
17
- proofSubmissionWindow: z.number()
17
+ proofSubmissionEpochs: z.number()
18
18
  });
19
19
  /** Returns the timestamp for a given L2 slot. */ export function getTimestampForSlot(slot, constants) {
20
20
  return constants.l1GenesisTime + slot * BigInt(constants.slotDuration);
@@ -46,14 +46,19 @@ export const L1RollupConstantsSchema = z.object({
46
46
  constants.l1GenesisTime + endSlot * BigInt(constants.slotDuration) + BigInt((ethereumSlotsPerL2Slot - 1) * constants.ethereumSlotDuration)
47
47
  ];
48
48
  }
49
+ /**
50
+ * Returns the epoch number at which proofs are no longer accepted for a given epoch.
51
+ * See l1-contracts/src/core/libraries/TimeLib.sol
52
+ */ export function getProofSubmissionDeadlineEpoch(epochNumber, constants) {
53
+ return epochNumber + BigInt(constants.proofSubmissionEpochs + 1);
54
+ }
49
55
  /**
50
56
  * Returns the deadline timestamp (in seconds) for submitting a proof for a given epoch.
51
57
  * Computed as the start of the given epoch plus the proof submission window.
52
58
  */ export function getProofSubmissionDeadlineTimestamp(epochNumber, constants) {
53
- // See l1-contracts/src/core/libraries/rollup/EpochProofLib.sol:
54
- // Slot deadline = startEpoch.toSlots() + Slot.wrap(rollupStore.config.proofSubmissionWindow);
55
- const [startSlot] = getSlotRangeForEpoch(epochNumber, constants);
56
- const deadlineSlot = startSlot + BigInt(constants.proofSubmissionWindow);
57
- const deadlineTimestamp = getTimestampForSlot(deadlineSlot, constants);
58
- return deadlineTimestamp;
59
+ // See l1-contracts/src/core/libraries/TimeLib.sol:
60
+ // return toSlots(_a) + Slot.wrap(store.epochDuration * (store.proofSubmissionEpochs + 1));
61
+ const deadlineEpoch = getProofSubmissionDeadlineEpoch(epochNumber, constants);
62
+ const [deadlineSlot] = getSlotRangeForEpoch(deadlineEpoch, constants);
63
+ return getTimestampForSlot(deadlineSlot, constants);
59
64
  }
@@ -12,7 +12,7 @@ import { GasFees } from '../gas/gas_fees.js';
12
12
  import { type LogFilter } from '../logs/log_filter.js';
13
13
  import { UniqueNote } from '../note/extended_note.js';
14
14
  import { type NotesFilter } from '../note/notes_filter.js';
15
- import { type IndexedTxEffect, PrivateExecutionResult, Tx, TxExecutionRequest, TxHash, TxReceipt, TxSimulationResult } from '../tx/index.js';
15
+ import { type IndexedTxEffect, PrivateExecutionResult, SimulationOverrides, Tx, TxExecutionRequest, TxHash, TxReceipt, TxSimulationResult } from '../tx/index.js';
16
16
  import { TxProfileResult, UtilitySimulationResult } from '../tx/profiling.js';
17
17
  import { TxProvingResult } from '../tx/proven_tx.js';
18
18
  import { type GetContractClassLogsResponse, type GetPublicLogsResponse } from './get_logs_response.js';
@@ -120,15 +120,15 @@ export interface PXE {
120
120
  *
121
121
  * @param txRequest - An authenticated tx request ready for simulation
122
122
  * @param simulatePublic - Whether to simulate the public part of the transaction.
123
- * @param msgSender - (Optional) The message sender to use for the simulation.
124
123
  * @param skipTxValidation - (Optional) If false, this function throws if the transaction is unable to be included in a block at the current state.
125
124
  * @param skipFeeEnforcement - (Optional) If false, fees are enforced.
125
+ * @param overrides - (Optional) State overrides for the simulation, such as msgSender, contract instances and artifacts.
126
126
  * @param scopes - (Optional) The accounts whose notes we can access in this call. Currently optional and will default to all.
127
127
  * @returns A simulated transaction result object that includes public and private return values.
128
128
  * @throws If the code for the functions executed in this transaction have not been made available via `addContracts`.
129
129
  * Also throws if simulatePublic is true and public simulation reverts.
130
130
  */
131
- simulateTx(txRequest: TxExecutionRequest, simulatePublic: boolean, msgSender?: AztecAddress, skipTxValidation?: boolean, skipFeeEnforcement?: boolean, scopes?: AztecAddress[]): Promise<TxSimulationResult>;
131
+ simulateTx(txRequest: TxExecutionRequest, simulatePublic: boolean, skipTxValidation?: boolean, skipFeeEnforcement?: boolean, overrides?: SimulationOverrides, scopes?: AztecAddress[]): Promise<TxSimulationResult>;
132
132
  /**
133
133
  * Profiles a transaction, reporting gate counts (unless disabled) and returns an execution trace.
134
134
  *
@@ -1 +1 @@
1
- {"version":3,"file":"pxe.d.ts","sourceRoot":"","sources":["../../src/interfaces/pxe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pxe.d.ts","sourceRoot":"","sources":["../../src/interfaces/pxe.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,7 @@ import { LogFilterSchema } from '../logs/log_filter.js';
10
10
  import { UniqueNote } from '../note/extended_note.js';
11
11
  import { NotesFilterSchema } from '../note/notes_filter.js';
12
12
  import { AbiDecodedSchema, optional, schemas } from '../schemas/schemas.js';
13
- import { PrivateExecutionResult, Tx, TxExecutionRequest, TxHash, TxReceipt, TxSimulationResult, indexedTxSchema } from '../tx/index.js';
13
+ import { PrivateExecutionResult, SimulationOverrides, Tx, TxExecutionRequest, TxHash, TxReceipt, TxSimulationResult, indexedTxSchema } from '../tx/index.js';
14
14
  import { TxProfileResult, UtilitySimulationResult } from '../tx/profiling.js';
15
15
  import { TxProvingResult } from '../tx/proven_tx.js';
16
16
  import { GetContractClassLogsResponseSchema, GetPublicLogsResponseSchema } from './get_logs_response.js';
@@ -67,7 +67,7 @@ export const PXESchema = {
67
67
  z.literal('full'),
68
68
  z.literal('execution-steps')
69
69
  ]), optional(z.boolean()), optional(schemas.AztecAddress)).returns(TxProfileResult.schema),
70
- simulateTx: z.function().args(TxExecutionRequest.schema, z.boolean(), optional(schemas.AztecAddress), optional(z.boolean()), optional(z.boolean()), optional(z.array(schemas.AztecAddress))).returns(TxSimulationResult.schema),
70
+ simulateTx: z.function().args(TxExecutionRequest.schema, z.boolean(), optional(z.boolean()), optional(z.boolean()), optional(SimulationOverrides.schema), optional(z.array(schemas.AztecAddress))).returns(TxSimulationResult.schema),
71
71
  sendTx: z.function().args(Tx.schema).returns(TxHash.schema),
72
72
  getTxReceipt: z.function().args(TxHash.schema).returns(TxReceipt.schema),
73
73
  getTxEffect: z.function().args(TxHash.schema).returns(indexedTxSchema().optional()),
@@ -73,6 +73,11 @@ export interface ServerCircuitProver {
73
73
  getAvmProof(inputs: AvmCircuitInputs, skipPublicInputsValidation?: boolean, // TODO(#14234)[Unconditional PIs validation]: Remove.
74
74
  signal?: AbortSignal, epochNumber?: number): Promise<ProofAndVerificationKey<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED>>;
75
75
  }
76
+ export type IVCProofVerificationResult = {
77
+ valid: boolean;
78
+ durationMs: number;
79
+ totalDurationMs: number;
80
+ };
76
81
  /**
77
82
  * A verifier used by nodes to check tx proofs are valid.
78
83
  */
@@ -82,7 +87,7 @@ export interface ClientProtocolCircuitVerifier {
82
87
  * @param tx - The tx to verify the proof of
83
88
  * @returns True if the proof is valid, false otherwise
84
89
  */
85
- verifyProof(tx: Tx): Promise<boolean>;
90
+ verifyProof(tx: Tx): Promise<IVCProofVerificationResult>;
86
91
  /**
87
92
  * Stop the verifier.
88
93
  */
@@ -1 +1 @@
1
- {"version":3,"file":"server_circuit_prover.d.ts","sourceRoot":"","sources":["../../src/interfaces/server_circuit_prover.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server_circuit_prover.d.ts","sourceRoot":"","sources":["../../src/interfaces/server_circuit_prover.ts"],"names":[],"mappings":"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"}
@@ -64,7 +64,6 @@ export interface PrivateKernelExecutionProofOutput<PublicInputsType extends Priv
64
64
  /** The private IVC proof optimized for user devices. It will be consumed by an Aztec prover,
65
65
  * which recursively verifies it through the "tube" circuit.*/
66
66
  clientIvcProof: ClientIvcProof;
67
- vk: Buffer;
68
67
  /**
69
68
  * The trace the clientIvcProof corresponds to.
70
69
  * A trace of app circuits interleaved with private kernel circuits.
@@ -1 +1 @@
1
- {"version":3,"file":"private_kernel_prover_output.d.ts","sourceRoot":"","sources":["../../src/kernel/private_kernel_prover_output.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAItD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,2CAA2C,CAAC;AAClG,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,gDAAgD,CAAC;AAE3G,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUrC,CAAC;AAEH;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,UAAU,CAAC;IAEpB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,KAAK,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC,CAAC;KAC/C,CAAC;CACH;AAED,kEAAkE;AAClE,MAAM,WAAW,iCAAiC,CAChD,gBAAgB,SAAS,gCAAgC,GAAG,oCAAoC;IAEhG,8DAA8D;IAC9D,YAAY,EAAE,gBAAgB,CAAC;IAC/B;kEAC8D;IAC9D,cAAc,EAAE,cAAc,CAAC;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX;;;;OAIG;IACH,cAAc,EAAE,oBAAoB,EAAE,CAAC;IACvC,0BAA0B;IAC1B,OAAO,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/B;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,oBAAoB,EAAE,2BAU3E"}
1
+ {"version":3,"file":"private_kernel_prover_output.d.ts","sourceRoot":"","sources":["../../src/kernel/private_kernel_prover_output.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAItD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,2CAA2C,CAAC;AAClG,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,gDAAgD,CAAC;AAE3G,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUrC,CAAC;AAEH;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,UAAU,CAAC;IAEpB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,KAAK,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC,CAAC;KAC/C,CAAC;CACH;AAED,kEAAkE;AAClE,MAAM,WAAW,iCAAiC,CAChD,gBAAgB,SAAS,gCAAgC,GAAG,oCAAoC;IAEhG,8DAA8D;IAC9D,YAAY,EAAE,gBAAgB,CAAC;IAC/B;kEAC8D;IAC9D,cAAc,EAAE,cAAc,CAAC;IAC/B;;;;OAIG;IACH,cAAc,EAAE,oBAAoB,EAAE,CAAC;IACvC,0BAA0B;IAC1B,OAAO,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/B;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,oBAAoB,EAAE,2BAU3E"}
@@ -1,3 +1,4 @@
1
+ import { L2BlockHash } from '../block/block_hash.js';
1
2
  import { type InBlock } from '../block/in_block.js';
2
3
  import { TxEffect } from './tx_effect.js';
3
4
  export type IndexedTxEffect = InBlock<TxEffect> & {
@@ -6,13 +7,13 @@ export type IndexedTxEffect = InBlock<TxEffect> & {
6
7
  export declare function indexedTxSchema(): import("zod").ZodObject<import("zod").objectUtil.extendShape<{
7
8
  data: import("@aztec/foundation/schemas").ZodFor<TxEffect>;
8
9
  l2BlockNumber: import("zod").ZodPipeline<import("zod").ZodUnion<[import("zod").ZodBigInt, import("zod").ZodNumber, import("zod").ZodString]>, import("zod").ZodNumber>;
9
- l2BlockHash: import("zod").ZodString;
10
+ l2BlockHash: import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, string, string>, Buffer<ArrayBuffer>, string>, L2BlockHash, string>;
10
11
  }, {
11
12
  txIndexInBlock: import("zod").ZodPipeline<import("zod").ZodUnion<[import("zod").ZodBigInt, import("zod").ZodNumber, import("zod").ZodString]>, import("zod").ZodNumber>;
12
13
  }>, "strip", import("zod").ZodTypeAny, {
13
14
  data: TxEffect;
14
15
  l2BlockNumber: number;
15
- l2BlockHash: string;
16
+ l2BlockHash: L2BlockHash;
16
17
  txIndexInBlock: number;
17
18
  }, {
18
19
  l2BlockNumber: string | number | bigint;
@@ -21,4 +22,6 @@ export declare function indexedTxSchema(): import("zod").ZodObject<import("zod")
21
22
  data?: any;
22
23
  }>;
23
24
  export declare function randomIndexedTxEffect(): Promise<IndexedTxEffect>;
25
+ export declare function serializeIndexedTxEffect(effect: IndexedTxEffect): Buffer;
26
+ export declare function deserializeIndexedTxEffect(buffer: Buffer): IndexedTxEffect;
24
27
  //# sourceMappingURL=indexed_tx_effect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"indexed_tx_effect.d.ts","sourceRoot":"","sources":["../../src/tx/indexed_tx_effect.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,OAAO,EAAmC,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG;IAAE,cAAc,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7E,wBAAgB,eAAe;;;;;;;;;;;;;;;;GAE9B;AAED,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,eAAe,CAAC,CAKtE"}
1
+ {"version":3,"file":"indexed_tx_effect.d.ts","sourceRoot":"","sources":["../../src/tx/indexed_tx_effect.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,KAAK,OAAO,EAAmC,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG;IAAE,cAAc,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7E,wBAAgB,eAAe;;;;;;;;;;;;;;;;GAE9B;AAED,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,eAAe,CAAC,CAKtE;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAExE;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CAc1E"}
@@ -1,4 +1,6 @@
1
1
  import { schemas } from '@aztec/foundation/schemas';
2
+ import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
3
+ import { L2BlockHash } from '../block/block_hash.js';
2
4
  import { inBlockSchemaFor, randomInBlock } from '../block/in_block.js';
3
5
  import { TxEffect } from './tx_effect.js';
4
6
  export function indexedTxSchema() {
@@ -12,3 +14,19 @@ export async function randomIndexedTxEffect() {
12
14
  txIndexInBlock: Math.floor(Math.random() * 1000)
13
15
  };
14
16
  }
17
+ export function serializeIndexedTxEffect(effect) {
18
+ return serializeToBuffer(effect.l2BlockHash, effect.l2BlockNumber, effect.txIndexInBlock, effect.data);
19
+ }
20
+ export function deserializeIndexedTxEffect(buffer) {
21
+ const reader = BufferReader.asReader(buffer);
22
+ const l2BlockHash = reader.readObject(L2BlockHash);
23
+ const l2BlockNumber = reader.readNumber();
24
+ const txIndexInBlock = reader.readNumber();
25
+ const data = reader.readObject(TxEffect);
26
+ return {
27
+ l2BlockHash,
28
+ l2BlockNumber,
29
+ txIndexInBlock,
30
+ data
31
+ };
32
+ }
@@ -1,11 +1,175 @@
1
1
  import { type ZodFor } from '@aztec/foundation/schemas';
2
2
  import type { FieldsOf } from '@aztec/foundation/types';
3
+ import { z } from 'zod';
4
+ import { type ContractArtifact } from '../abi/abi.js';
5
+ import { AztecAddress } from '../aztec-address/index.js';
6
+ import { type ContractInstanceWithAddress } from '../contract/interfaces/contract_instance.js';
3
7
  import type { GasUsed } from '../gas/gas_used.js';
4
8
  import { PrivateKernelTailCircuitPublicInputs } from '../kernel/private_kernel_tail_circuit_public_inputs.js';
5
9
  import { PrivateExecutionResult } from './private_execution_result.js';
6
10
  import { type SimulationStats } from './profiling.js';
7
11
  import { NestedProcessReturnValues, PublicSimulationOutput } from './public_simulation_output.js';
8
12
  import { Tx } from './tx.js';
13
+ export type ContractOverrides = Record<string, {
14
+ instance: ContractInstanceWithAddress;
15
+ artifact: ContractArtifact;
16
+ }>;
17
+ export declare class SimulationOverrides {
18
+ contracts?: ContractOverrides | undefined;
19
+ msgSender?: AztecAddress | undefined;
20
+ constructor(contracts?: ContractOverrides | undefined, msgSender?: AztecAddress | undefined);
21
+ static get schema(): z.ZodEffects<z.ZodObject<{
22
+ contracts: import("@aztec/foundation/schemas").ZodNullableOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
23
+ instance: z.ZodIntersection<z.ZodObject<{
24
+ version: z.ZodLiteral<1>;
25
+ salt: ZodFor<import("@aztec/foundation/schemas").Fr>;
26
+ deployer: ZodFor<AztecAddress>;
27
+ currentContractClassId: ZodFor<import("@aztec/foundation/schemas").Fr>;
28
+ originalContractClassId: ZodFor<import("@aztec/foundation/schemas").Fr>;
29
+ initializationHash: ZodFor<import("@aztec/foundation/schemas").Fr>;
30
+ publicKeys: z.ZodEffects<z.ZodObject<{
31
+ masterNullifierPublicKey: z.ZodType<import("@aztec/foundation/schemas").Point, any, string>;
32
+ masterIncomingViewingPublicKey: z.ZodType<import("@aztec/foundation/schemas").Point, any, string>;
33
+ masterOutgoingViewingPublicKey: z.ZodType<import("@aztec/foundation/schemas").Point, any, string>;
34
+ masterTaggingPublicKey: z.ZodType<import("@aztec/foundation/schemas").Point, any, string>;
35
+ }, "strip", z.ZodTypeAny, {
36
+ masterNullifierPublicKey: import("@aztec/foundation/schemas").Point;
37
+ masterIncomingViewingPublicKey: import("@aztec/foundation/schemas").Point;
38
+ masterOutgoingViewingPublicKey: import("@aztec/foundation/schemas").Point;
39
+ masterTaggingPublicKey: import("@aztec/foundation/schemas").Point;
40
+ }, {
41
+ masterNullifierPublicKey: string;
42
+ masterIncomingViewingPublicKey: string;
43
+ masterOutgoingViewingPublicKey: string;
44
+ masterTaggingPublicKey: string;
45
+ }>, import("../keys/public_keys.js").PublicKeys, {
46
+ masterNullifierPublicKey: string;
47
+ masterIncomingViewingPublicKey: string;
48
+ masterOutgoingViewingPublicKey: string;
49
+ masterTaggingPublicKey: string;
50
+ }>;
51
+ }, "strip", z.ZodTypeAny, {
52
+ version: 1;
53
+ salt: import("@aztec/foundation/schemas").Fr;
54
+ publicKeys: import("../keys/public_keys.js").PublicKeys;
55
+ deployer: AztecAddress;
56
+ currentContractClassId: import("@aztec/foundation/schemas").Fr;
57
+ originalContractClassId: import("@aztec/foundation/schemas").Fr;
58
+ initializationHash: import("@aztec/foundation/schemas").Fr;
59
+ }, {
60
+ version: 1;
61
+ publicKeys: {
62
+ masterNullifierPublicKey: string;
63
+ masterIncomingViewingPublicKey: string;
64
+ masterOutgoingViewingPublicKey: string;
65
+ masterTaggingPublicKey: string;
66
+ };
67
+ salt?: any;
68
+ deployer?: any;
69
+ currentContractClassId?: any;
70
+ originalContractClassId?: any;
71
+ initializationHash?: any;
72
+ }>, z.ZodObject<{
73
+ address: ZodFor<AztecAddress>;
74
+ }, "strip", z.ZodTypeAny, {
75
+ address: AztecAddress;
76
+ }, {
77
+ address?: any;
78
+ }>>;
79
+ artifact: ZodFor<ContractArtifact>;
80
+ }, "strip", z.ZodTypeAny, {
81
+ instance: {
82
+ version: 1;
83
+ salt: import("@aztec/foundation/schemas").Fr;
84
+ publicKeys: import("../keys/public_keys.js").PublicKeys;
85
+ deployer: AztecAddress;
86
+ currentContractClassId: import("@aztec/foundation/schemas").Fr;
87
+ originalContractClassId: import("@aztec/foundation/schemas").Fr;
88
+ initializationHash: import("@aztec/foundation/schemas").Fr;
89
+ } & {
90
+ address: AztecAddress;
91
+ };
92
+ artifact: ContractArtifact;
93
+ }, {
94
+ instance: {
95
+ version: 1;
96
+ publicKeys: {
97
+ masterNullifierPublicKey: string;
98
+ masterIncomingViewingPublicKey: string;
99
+ masterOutgoingViewingPublicKey: string;
100
+ masterTaggingPublicKey: string;
101
+ };
102
+ salt?: any;
103
+ deployer?: any;
104
+ currentContractClassId?: any;
105
+ originalContractClassId?: any;
106
+ initializationHash?: any;
107
+ } & {
108
+ address?: any;
109
+ };
110
+ artifact?: any;
111
+ }>>>;
112
+ msgSender: import("@aztec/foundation/schemas").ZodNullableOptional<ZodFor<AztecAddress>>;
113
+ }, "strip", z.ZodTypeAny, {
114
+ msgSender?: AztecAddress | undefined;
115
+ contracts?: Record<string, {
116
+ instance: {
117
+ version: 1;
118
+ salt: import("@aztec/foundation/schemas").Fr;
119
+ publicKeys: import("../keys/public_keys.js").PublicKeys;
120
+ deployer: AztecAddress;
121
+ currentContractClassId: import("@aztec/foundation/schemas").Fr;
122
+ originalContractClassId: import("@aztec/foundation/schemas").Fr;
123
+ initializationHash: import("@aztec/foundation/schemas").Fr;
124
+ } & {
125
+ address: AztecAddress;
126
+ };
127
+ artifact: ContractArtifact;
128
+ }> | undefined;
129
+ }, {
130
+ msgSender?: any;
131
+ contracts?: Record<string, {
132
+ instance: {
133
+ version: 1;
134
+ publicKeys: {
135
+ masterNullifierPublicKey: string;
136
+ masterIncomingViewingPublicKey: string;
137
+ masterOutgoingViewingPublicKey: string;
138
+ masterTaggingPublicKey: string;
139
+ };
140
+ salt?: any;
141
+ deployer?: any;
142
+ currentContractClassId?: any;
143
+ originalContractClassId?: any;
144
+ initializationHash?: any;
145
+ } & {
146
+ address?: any;
147
+ };
148
+ artifact?: any;
149
+ }> | undefined;
150
+ }>, SimulationOverrides, {
151
+ msgSender?: any;
152
+ contracts?: Record<string, {
153
+ instance: {
154
+ version: 1;
155
+ publicKeys: {
156
+ masterNullifierPublicKey: string;
157
+ masterIncomingViewingPublicKey: string;
158
+ masterOutgoingViewingPublicKey: string;
159
+ masterTaggingPublicKey: string;
160
+ };
161
+ salt?: any;
162
+ deployer?: any;
163
+ currentContractClassId?: any;
164
+ originalContractClassId?: any;
165
+ initializationHash?: any;
166
+ } & {
167
+ address?: any;
168
+ };
169
+ artifact?: any;
170
+ }> | undefined;
171
+ }>;
172
+ }
9
173
  export declare class PrivateSimulationResult {
10
174
  privateExecutionResult: PrivateExecutionResult;
11
175
  publicInputs: PrivateKernelTailCircuitPublicInputs;
@@ -1 +1 @@
1
- {"version":3,"file":"simulated_tx.d.ts","sourceRoot":"","sources":["../../src/tx/simulated_tx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAY,MAAM,2BAA2B,CAAC;AAClE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAKxD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,oCAAoC,EAAE,MAAM,wDAAwD,CAAC;AAE9G,OAAO,EAEL,sBAAsB,EAEvB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,KAAK,eAAe,EAAyB,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAClG,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAE7B,qBAAa,uBAAuB;IAEzB,sBAAsB,EAAE,sBAAsB;IAC9C,YAAY,EAAE,oCAAoC;gBADlD,sBAAsB,EAAE,sBAAsB,EAC9C,YAAY,EAAE,oCAAoC;IAG3D,sBAAsB;IAItB,aAAa,IAAI,EAAE;CAWpB;AAED,qBAAa,kBAAkB;IAEpB,sBAAsB,EAAE,sBAAsB;IAC9C,YAAY,EAAE,oCAAoC;IAClD,YAAY,CAAC,EAAE,sBAAsB;IACrC,KAAK,CAAC,EAAE,eAAe;gBAHvB,sBAAsB,EAAE,sBAAsB,EAC9C,YAAY,EAAE,oCAAoC,EAClD,YAAY,CAAC,EAAE,sBAAsB,YAAA,EACrC,KAAK,CAAC,EAAE,eAAe,YAAA;IAGhC,IAAI,OAAO,IAAI,OAAO,CASrB;IAED,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,kBAAkB,CAAC,CAS9C;IAED,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS,CAAC;IASjE,MAAM,CAAC,0CAA0C,CAC/C,uBAAuB,EAAE,uBAAuB,EAChD,YAAY,CAAC,EAAE,sBAAsB,EACrC,KAAK,CAAC,EAAE,eAAe;WAUZ,MAAM;IAQnB,sBAAsB;IAItB,aAAa,IAAI,EAAE;IAInB,qBAAqB;CAGtB;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,eAAe,EAAE,sBAAsB,GAAG,yBAAyB,CAWhH"}
1
+ {"version":3,"file":"simulated_tx.d.ts","sourceRoot":"","sources":["../../src/tx/simulated_tx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAY,MAAM,2BAA2B,CAAC;AAClE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,KAAK,gBAAgB,EAA0B,MAAM,eAAe,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EACL,KAAK,2BAA2B,EAEjC,MAAM,6CAA6C,CAAC;AAErD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,oCAAoC,EAAE,MAAM,wDAAwD,CAAC;AAE9G,OAAO,EAEL,sBAAsB,EAEvB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,KAAK,eAAe,EAAyB,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAClG,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAO7B,MAAM,MAAM,iBAAiB,GAAG,MAAM,CACpC,MAAM,EACN;IAAE,QAAQ,EAAE,2BAA2B,CAAC;IAAC,QAAQ,EAAE,gBAAgB,CAAA;CAAE,CACtE,CAAC;AAMF,qBAAa,mBAAmB;IAErB,SAAS,CAAC,EAAE,iBAAiB;IAC7B,SAAS,CAAC,EAAE,YAAY;gBADxB,SAAS,CAAC,EAAE,iBAAiB,YAAA,EAC7B,SAAS,CAAC,EAAE,YAAY,YAAA;IAGjC,MAAM,KAAK,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAchB;CACF;AAED,qBAAa,uBAAuB;IAEzB,sBAAsB,EAAE,sBAAsB;IAC9C,YAAY,EAAE,oCAAoC;gBADlD,sBAAsB,EAAE,sBAAsB,EAC9C,YAAY,EAAE,oCAAoC;IAG3D,sBAAsB;IAItB,aAAa,IAAI,EAAE;CAWpB;AAED,qBAAa,kBAAkB;IAEpB,sBAAsB,EAAE,sBAAsB;IAC9C,YAAY,EAAE,oCAAoC;IAClD,YAAY,CAAC,EAAE,sBAAsB;IACrC,KAAK,CAAC,EAAE,eAAe;gBAHvB,sBAAsB,EAAE,sBAAsB,EAC9C,YAAY,EAAE,oCAAoC,EAClD,YAAY,CAAC,EAAE,sBAAsB,YAAA,EACrC,KAAK,CAAC,EAAE,eAAe,YAAA;IAGhC,IAAI,OAAO,IAAI,OAAO,CASrB;IAED,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,kBAAkB,CAAC,CAS9C;IAED,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS,CAAC;IASjE,MAAM,CAAC,0CAA0C,CAC/C,uBAAuB,EAAE,uBAAuB,EAChD,YAAY,CAAC,EAAE,sBAAsB,EACrC,KAAK,CAAC,EAAE,eAAe;WAUZ,MAAM;IAQnB,sBAAsB;IAItB,aAAa,IAAI,EAAE;IAInB,qBAAqB;CAGtB;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,eAAe,EAAE,sBAAsB,GAAG,yBAAyB,CAWhH"}
@@ -1,5 +1,8 @@
1
1
  import { optional } from '@aztec/foundation/schemas';
2
2
  import { z } from 'zod';
3
+ import { ContractArtifactSchema } from '../abi/abi.js';
4
+ import { AztecAddress } from '../aztec-address/index.js';
5
+ import { ContractInstanceWithAddressSchema } from '../contract/interfaces/contract_instance.js';
3
6
  import { Gas } from '../gas/gas.js';
4
7
  import { PrivateKernelTailCircuitPublicInputs } from '../kernel/private_kernel_tail_circuit_public_inputs.js';
5
8
  import { ClientIvcProof } from '../proofs/client_ivc_proof.js';
@@ -7,6 +10,28 @@ import { PrivateExecutionResult, collectSortedContractClassLogs } from './privat
7
10
  import { SimulationStatsSchema } from './profiling.js';
8
11
  import { NestedProcessReturnValues, PublicSimulationOutput } from './public_simulation_output.js';
9
12
  import { Tx } from './tx.js';
13
+ /*
14
+ * Optional values that can be overridden during simulation. In order to simulate a transaction with these
15
+ * set, it *must* be run without the kernel circuits, or validations will fail
16
+ */ export class SimulationOverrides {
17
+ contracts;
18
+ msgSender;
19
+ constructor(contracts, msgSender){
20
+ this.contracts = contracts;
21
+ this.msgSender = msgSender;
22
+ }
23
+ static get schema() {
24
+ return z.object({
25
+ contracts: optional(z.record(z.string(), z.object({
26
+ instance: ContractInstanceWithAddressSchema,
27
+ artifact: ContractArtifactSchema
28
+ }))),
29
+ msgSender: optional(AztecAddress.schema)
30
+ }).transform(({ contracts, msgSender })=>{
31
+ return new SimulationOverrides(contracts, msgSender);
32
+ });
33
+ }
34
+ }
10
35
  export class PrivateSimulationResult {
11
36
  privateExecutionResult;
12
37
  publicInputs;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/stdlib",
3
- "version": "1.0.0-nightly.20250618",
3
+ "version": "1.0.0-nightly.20250619",
4
4
  "type": "module",
5
5
  "inherits": [
6
6
  "../package.common.json",
@@ -67,12 +67,12 @@
67
67
  "test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --passWithNoTests --maxWorkers=${JEST_MAX_WORKERS:-8}"
68
68
  },
69
69
  "dependencies": {
70
- "@aztec/bb.js": "1.0.0-nightly.20250618",
71
- "@aztec/blob-lib": "1.0.0-nightly.20250618",
72
- "@aztec/constants": "1.0.0-nightly.20250618",
73
- "@aztec/ethereum": "1.0.0-nightly.20250618",
74
- "@aztec/foundation": "1.0.0-nightly.20250618",
75
- "@aztec/noir-noirc_abi": "1.0.0-nightly.20250618",
70
+ "@aztec/bb.js": "1.0.0-nightly.20250619",
71
+ "@aztec/blob-lib": "1.0.0-nightly.20250619",
72
+ "@aztec/constants": "1.0.0-nightly.20250619",
73
+ "@aztec/ethereum": "1.0.0-nightly.20250619",
74
+ "@aztec/foundation": "1.0.0-nightly.20250619",
75
+ "@aztec/noir-noirc_abi": "1.0.0-nightly.20250619",
76
76
  "@google-cloud/storage": "^7.15.0",
77
77
  "axios": "^1.9.0",
78
78
  "json-stringify-deterministic": "1.0.12",
@@ -87,9 +87,9 @@
87
87
  "zod": "^3.23.8"
88
88
  },
89
89
  "devDependencies": {
90
- "@jest/expect": "^29.5.0",
90
+ "@jest/expect": "^30.0.0",
91
91
  "@jest/globals": "^30.0.0",
92
- "@types/jest": "^29.5.0",
92
+ "@types/jest": "^30.0.0",
93
93
  "@types/lodash.chunk": "^4.2.9",
94
94
  "@types/lodash.isequal": "^4.5.8",
95
95
  "@types/lodash.omit": "^4.5.7",
@@ -98,7 +98,7 @@
98
98
  "@types/pako": "^2.0.3",
99
99
  "eslint": "^9.26.0",
100
100
  "jest": "^30.0.0",
101
- "jest-mock-extended": "^4.0.0-beta1",
101
+ "jest-mock-extended": "^4.0.0",
102
102
  "prettier": "^3.5.3",
103
103
  "ts-node": "^10.9.1",
104
104
  "typescript": "^5.3.3"
@@ -1,5 +1,6 @@
1
1
  import { Buffer32 } from '@aztec/foundation/buffer';
2
2
  import { Fr } from '@aztec/foundation/fields';
3
+ import { BufferReader } from '@aztec/foundation/serialize';
3
4
 
4
5
  import { schemas } from '../schemas/schemas.js';
5
6
 
@@ -16,6 +17,19 @@ export class L2BlockHash extends Buffer32 {
16
17
  return new L2BlockHash(Fr.random().toBuffer());
17
18
  }
18
19
 
20
+ static override fromNumber(num: number): L2BlockHash {
21
+ return new L2BlockHash(super.fromNumber(num).toBuffer());
22
+ }
23
+
24
+ static override fromBuffer(buffer: Buffer | BufferReader) {
25
+ const reader = BufferReader.asReader(buffer);
26
+ return new L2BlockHash(reader.readBytes(L2BlockHash.SIZE));
27
+ }
28
+
29
+ static override fromString(str: string): Buffer32 {
30
+ return new L2BlockHash(super.fromString(str).toBuffer());
31
+ }
32
+
19
33
  static get schema() {
20
34
  return schemas.BufferHex.transform(value => new L2BlockHash(value));
21
35
  }
@@ -1,14 +1,13 @@
1
- import { Fr } from '@aztec/foundation/fields';
2
-
3
1
  import { type ZodTypeAny, z } from 'zod';
4
2
 
5
3
  import { schemas } from '../schemas/index.js';
4
+ import { L2BlockHash } from './block_hash.js';
6
5
  import type { L2Block } from './l2_block.js';
7
6
 
8
7
  // Note: If you expand this type with indexInBlock, then delete `IndexedTxEffect` and use this type instead.
9
8
  export type InBlock<T> = {
10
9
  l2BlockNumber: number;
11
- l2BlockHash: string;
10
+ l2BlockHash: L2BlockHash;
12
11
  data: T;
13
12
  };
14
13
 
@@ -16,7 +15,7 @@ export function randomInBlock<T>(data: T): InBlock<T> {
16
15
  return {
17
16
  data,
18
17
  l2BlockNumber: Math.floor(Math.random() * 1000),
19
- l2BlockHash: Fr.random().toString(),
18
+ l2BlockHash: L2BlockHash.random(),
20
19
  };
21
20
  }
22
21
 
@@ -24,7 +23,7 @@ export async function wrapInBlock<T>(data: T, block: L2Block): Promise<InBlock<T
24
23
  return {
25
24
  data,
26
25
  l2BlockNumber: block.number,
27
- l2BlockHash: (await block.hash()).toString(),
26
+ l2BlockHash: L2BlockHash.fromField(await block.hash()),
28
27
  };
29
28
  }
30
29
 
@@ -32,6 +31,6 @@ export function inBlockSchemaFor<T extends ZodTypeAny>(schema: T) {
32
31
  return z.object({
33
32
  data: schema,
34
33
  l2BlockNumber: schemas.Integer,
35
- l2BlockHash: z.string(),
34
+ l2BlockHash: L2BlockHash.schema,
36
35
  });
37
36
  }
@@ -11,6 +11,11 @@ export const nodeRpcConfigMappings: ConfigMappingsType<NodeRPCConfig> = {
11
11
  description: 'Maximum allowed batch size for JSON RPC batch requests.',
12
12
  ...numberConfigHelper(100),
13
13
  },
14
+ rpcMaxBodySize: {
15
+ env: 'RPC_MAX_BODY_SIZE',
16
+ description: 'Maximum allowed batch size for JSON RPC batch requests.',
17
+ defaultValue: '50mb',
18
+ },
14
19
  };
15
20
 
16
21
  export type NodeRPCConfig = {
@@ -18,4 +23,6 @@ export type NodeRPCConfig = {
18
23
  rpcSimulatePublicMaxGasLimit: number;
19
24
  /** Maximum allowed batch size for JSON RPC batch requests. */
20
25
  rpcMaxBatchSize: number;
26
+ /** The maximum body size the RPC server will accept */
27
+ rpcMaxBodySize: string;
21
28
  };
@@ -8,7 +8,7 @@ export type L1RollupConstants = {
8
8
  slotDuration: number;
9
9
  epochDuration: number;
10
10
  ethereumSlotDuration: number;
11
- proofSubmissionWindow: number;
11
+ proofSubmissionEpochs: number;
12
12
  };
13
13
 
14
14
  export const EmptyL1RollupConstants: L1RollupConstants = {
@@ -17,7 +17,7 @@ export const EmptyL1RollupConstants: L1RollupConstants = {
17
17
  epochDuration: 1, // Not 0 to pervent division by zero
18
18
  slotDuration: 1,
19
19
  ethereumSlotDuration: 1,
20
- proofSubmissionWindow: 2,
20
+ proofSubmissionEpochs: 1,
21
21
  };
22
22
 
23
23
  export const L1RollupConstantsSchema = z.object({
@@ -26,7 +26,7 @@ export const L1RollupConstantsSchema = z.object({
26
26
  slotDuration: z.number(),
27
27
  epochDuration: z.number(),
28
28
  ethereumSlotDuration: z.number(),
29
- proofSubmissionWindow: z.number(),
29
+ proofSubmissionEpochs: z.number(),
30
30
  }) satisfies ZodFor<L1RollupConstants>;
31
31
 
32
32
  /** Returns the timestamp for a given L2 slot. */
@@ -79,18 +79,28 @@ export function getTimestampRangeForEpoch(
79
79
  ];
80
80
  }
81
81
 
82
+ /**
83
+ * Returns the epoch number at which proofs are no longer accepted for a given epoch.
84
+ * See l1-contracts/src/core/libraries/TimeLib.sol
85
+ */
86
+ export function getProofSubmissionDeadlineEpoch(
87
+ epochNumber: bigint,
88
+ constants: Pick<L1RollupConstants, 'proofSubmissionEpochs'>,
89
+ ) {
90
+ return epochNumber + BigInt(constants.proofSubmissionEpochs + 1);
91
+ }
92
+
82
93
  /**
83
94
  * Returns the deadline timestamp (in seconds) for submitting a proof for a given epoch.
84
95
  * Computed as the start of the given epoch plus the proof submission window.
85
96
  */
86
97
  export function getProofSubmissionDeadlineTimestamp(
87
98
  epochNumber: bigint,
88
- constants: Pick<L1RollupConstants, 'l1GenesisTime' | 'slotDuration' | 'epochDuration' | 'proofSubmissionWindow'>,
99
+ constants: Pick<L1RollupConstants, 'l1GenesisTime' | 'slotDuration' | 'epochDuration' | 'proofSubmissionEpochs'>,
89
100
  ) {
90
- // See l1-contracts/src/core/libraries/rollup/EpochProofLib.sol:
91
- // Slot deadline = startEpoch.toSlots() + Slot.wrap(rollupStore.config.proofSubmissionWindow);
92
- const [startSlot] = getSlotRangeForEpoch(epochNumber, constants);
93
- const deadlineSlot = startSlot + BigInt(constants.proofSubmissionWindow);
94
- const deadlineTimestamp = getTimestampForSlot(deadlineSlot, constants);
95
- return deadlineTimestamp;
101
+ // See l1-contracts/src/core/libraries/TimeLib.sol:
102
+ // return toSlots(_a) + Slot.wrap(store.epochDuration * (store.proofSubmissionEpochs + 1));
103
+ const deadlineEpoch = getProofSubmissionDeadlineEpoch(epochNumber, constants);
104
+ const [deadlineSlot] = getSlotRangeForEpoch(deadlineEpoch, constants);
105
+ return getTimestampForSlot(deadlineSlot, constants);
96
106
  }
@@ -30,6 +30,7 @@ import { AbiDecodedSchema, optional, schemas } from '../schemas/schemas.js';
30
30
  import {
31
31
  type IndexedTxEffect,
32
32
  PrivateExecutionResult,
33
+ SimulationOverrides,
33
34
  Tx,
34
35
  TxExecutionRequest,
35
36
  TxHash,
@@ -159,9 +160,9 @@ export interface PXE {
159
160
  *
160
161
  * @param txRequest - An authenticated tx request ready for simulation
161
162
  * @param simulatePublic - Whether to simulate the public part of the transaction.
162
- * @param msgSender - (Optional) The message sender to use for the simulation.
163
163
  * @param skipTxValidation - (Optional) If false, this function throws if the transaction is unable to be included in a block at the current state.
164
164
  * @param skipFeeEnforcement - (Optional) If false, fees are enforced.
165
+ * @param overrides - (Optional) State overrides for the simulation, such as msgSender, contract instances and artifacts.
165
166
  * @param scopes - (Optional) The accounts whose notes we can access in this call. Currently optional and will default to all.
166
167
  * @returns A simulated transaction result object that includes public and private return values.
167
168
  * @throws If the code for the functions executed in this transaction have not been made available via `addContracts`.
@@ -170,9 +171,9 @@ export interface PXE {
170
171
  simulateTx(
171
172
  txRequest: TxExecutionRequest,
172
173
  simulatePublic: boolean,
173
- msgSender?: AztecAddress,
174
174
  skipTxValidation?: boolean,
175
175
  skipFeeEnforcement?: boolean,
176
+ overrides?: SimulationOverrides,
176
177
  scopes?: AztecAddress[],
177
178
  ): Promise<TxSimulationResult>;
178
179
 
@@ -474,9 +475,9 @@ export const PXESchema: ApiSchemaFor<PXE> = {
474
475
  .args(
475
476
  TxExecutionRequest.schema,
476
477
  z.boolean(),
477
- optional(schemas.AztecAddress),
478
478
  optional(z.boolean()),
479
479
  optional(z.boolean()),
480
+ optional(SimulationOverrides.schema),
480
481
  optional(z.array(schemas.AztecAddress)),
481
482
  )
482
483
  .returns(TxSimulationResult.schema),
@@ -155,6 +155,15 @@ export interface ServerCircuitProver {
155
155
  ): Promise<ProofAndVerificationKey<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED>>;
156
156
  }
157
157
 
158
+ export type IVCProofVerificationResult = {
159
+ // The result of verification
160
+ valid: boolean;
161
+ // The duration of the verification in milliseconds
162
+ durationMs: number;
163
+ // The total duration, including proof serialisation and file-system cleanup
164
+ totalDurationMs: number;
165
+ };
166
+
158
167
  /**
159
168
  * A verifier used by nodes to check tx proofs are valid.
160
169
  */
@@ -164,7 +173,7 @@ export interface ClientProtocolCircuitVerifier {
164
173
  * @param tx - The tx to verify the proof of
165
174
  * @returns True if the proof is valid, false otherwise
166
175
  */
167
- verifyProof(tx: Tx): Promise<boolean>;
176
+ verifyProof(tx: Tx): Promise<IVCProofVerificationResult>;
168
177
 
169
178
  /**
170
179
  * Stop the verifier.
@@ -47,7 +47,6 @@ export interface PrivateKernelExecutionProofOutput<
47
47
  /** The private IVC proof optimized for user devices. It will be consumed by an Aztec prover,
48
48
  * which recursively verifies it through the "tube" circuit.*/
49
49
  clientIvcProof: ClientIvcProof;
50
- vk: Buffer;
51
50
  /**
52
51
  * The trace the clientIvcProof corresponds to.
53
52
  * A trace of app circuits interleaved with private kernel circuits.
@@ -1,5 +1,7 @@
1
1
  import { schemas } from '@aztec/foundation/schemas';
2
+ import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
2
3
 
4
+ import { L2BlockHash } from '../block/block_hash.js';
3
5
  import { type InBlock, inBlockSchemaFor, randomInBlock } from '../block/in_block.js';
4
6
  import { TxEffect } from './tx_effect.js';
5
7
 
@@ -15,3 +17,23 @@ export async function randomIndexedTxEffect(): Promise<IndexedTxEffect> {
15
17
  txIndexInBlock: Math.floor(Math.random() * 1000),
16
18
  };
17
19
  }
20
+
21
+ export function serializeIndexedTxEffect(effect: IndexedTxEffect): Buffer {
22
+ return serializeToBuffer(effect.l2BlockHash, effect.l2BlockNumber, effect.txIndexInBlock, effect.data);
23
+ }
24
+
25
+ export function deserializeIndexedTxEffect(buffer: Buffer): IndexedTxEffect {
26
+ const reader = BufferReader.asReader(buffer);
27
+
28
+ const l2BlockHash = reader.readObject(L2BlockHash);
29
+ const l2BlockNumber = reader.readNumber();
30
+ const txIndexInBlock = reader.readNumber();
31
+ const data = reader.readObject(TxEffect);
32
+
33
+ return {
34
+ l2BlockHash,
35
+ l2BlockNumber,
36
+ txIndexInBlock,
37
+ data,
38
+ };
39
+ }
@@ -3,6 +3,12 @@ import type { FieldsOf } from '@aztec/foundation/types';
3
3
 
4
4
  import { z } from 'zod';
5
5
 
6
+ import { type ContractArtifact, ContractArtifactSchema } from '../abi/abi.js';
7
+ import { AztecAddress } from '../aztec-address/index.js';
8
+ import {
9
+ type ContractInstanceWithAddress,
10
+ ContractInstanceWithAddressSchema,
11
+ } from '../contract/interfaces/contract_instance.js';
6
12
  import { Gas } from '../gas/gas.js';
7
13
  import type { GasUsed } from '../gas/gas_used.js';
8
14
  import { PrivateKernelTailCircuitPublicInputs } from '../kernel/private_kernel_tail_circuit_public_inputs.js';
@@ -16,6 +22,43 @@ import { type SimulationStats, SimulationStatsSchema } from './profiling.js';
16
22
  import { NestedProcessReturnValues, PublicSimulationOutput } from './public_simulation_output.js';
17
23
  import { Tx } from './tx.js';
18
24
 
25
+ /*
26
+ * If passed during the execution of a user circuit, the contract function simulator will replace the instance and class
27
+ * of the contract with the one provided in the overrides for that address. An example use case
28
+ * would be overriding your own account contract so that valid signatures don't have to be provided while simulating.
29
+ */
30
+ export type ContractOverrides = Record<
31
+ string /* AztecAddress as string */,
32
+ { instance: ContractInstanceWithAddress; artifact: ContractArtifact }
33
+ >;
34
+
35
+ /*
36
+ * Optional values that can be overridden during simulation. In order to simulate a transaction with these
37
+ * set, it *must* be run without the kernel circuits, or validations will fail
38
+ */
39
+ export class SimulationOverrides {
40
+ constructor(
41
+ public contracts?: ContractOverrides,
42
+ public msgSender?: AztecAddress,
43
+ ) {}
44
+
45
+ static get schema() {
46
+ return z
47
+ .object({
48
+ contracts: optional(
49
+ z.record(
50
+ z.string(),
51
+ z.object({ instance: ContractInstanceWithAddressSchema, artifact: ContractArtifactSchema }),
52
+ ),
53
+ ),
54
+ msgSender: optional(AztecAddress.schema),
55
+ })
56
+ .transform(({ contracts, msgSender }) => {
57
+ return new SimulationOverrides(contracts, msgSender);
58
+ });
59
+ }
60
+ }
61
+
19
62
  export class PrivateSimulationResult {
20
63
  constructor(
21
64
  public privateExecutionResult: PrivateExecutionResult,