@aztec/stdlib 3.0.0-nightly.20251114 → 3.0.0-nightly.20251118

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 (86) hide show
  1. package/dest/avm/avm.d.ts +139 -45
  2. package/dest/avm/avm.d.ts.map +1 -1
  3. package/dest/avm/avm.js +58 -19
  4. package/dest/avm/avm_proving_request.d.ts +21 -21
  5. package/dest/avm/public_data_write.d.ts +1 -1
  6. package/dest/avm/public_data_write.d.ts.map +1 -1
  7. package/dest/avm/revert_code.d.ts +2 -1
  8. package/dest/avm/revert_code.d.ts.map +1 -1
  9. package/dest/avm/revert_code.js +8 -8
  10. package/dest/block/body.d.ts +3 -6
  11. package/dest/block/body.d.ts.map +1 -1
  12. package/dest/block/body.js +6 -25
  13. package/dest/block/index.d.ts +1 -0
  14. package/dest/block/index.d.ts.map +1 -1
  15. package/dest/block/index.js +1 -0
  16. package/dest/block/l2_block.d.ts +5 -0
  17. package/dest/block/l2_block.d.ts.map +1 -1
  18. package/dest/block/l2_block.js +34 -4
  19. package/dest/block/l2_block_new.d.ts +97 -0
  20. package/dest/block/l2_block_new.d.ts.map +1 -0
  21. package/dest/block/l2_block_new.js +113 -0
  22. package/dest/checkpoint/checkpoint.d.ts +108 -0
  23. package/dest/checkpoint/checkpoint.d.ts.map +1 -0
  24. package/dest/checkpoint/checkpoint.js +39 -0
  25. package/dest/checkpoint/index.d.ts +1 -1
  26. package/dest/checkpoint/index.d.ts.map +1 -1
  27. package/dest/checkpoint/index.js +1 -1
  28. package/dest/interfaces/proving-job.d.ts +21 -21
  29. package/dest/logs/private_log.d.ts +1 -1
  30. package/dest/logs/private_log.d.ts.map +1 -1
  31. package/dest/logs/private_log.js +2 -5
  32. package/dest/messaging/in_hash.d.ts +4 -0
  33. package/dest/messaging/in_hash.d.ts.map +1 -0
  34. package/dest/messaging/in_hash.js +15 -0
  35. package/dest/messaging/index.d.ts +2 -0
  36. package/dest/messaging/index.d.ts.map +1 -1
  37. package/dest/messaging/index.js +2 -0
  38. package/dest/messaging/out_hash.d.ts +5 -0
  39. package/dest/messaging/out_hash.d.ts.map +1 -0
  40. package/dest/messaging/out_hash.js +28 -0
  41. package/dest/rollup/checkpoint_constant_data.d.ts +16 -0
  42. package/dest/rollup/checkpoint_constant_data.d.ts.map +1 -1
  43. package/dest/rollup/checkpoint_constant_data.js +17 -0
  44. package/dest/tests/factories.d.ts +21 -25
  45. package/dest/tests/factories.d.ts.map +1 -1
  46. package/dest/tests/factories.js +24 -121
  47. package/dest/tests/mocks.d.ts +17 -1
  48. package/dest/tests/mocks.d.ts.map +1 -1
  49. package/dest/tests/mocks.js +108 -4
  50. package/dest/tx/partial_state_reference.d.ts +3 -0
  51. package/dest/tx/partial_state_reference.d.ts.map +1 -1
  52. package/dest/tx/partial_state_reference.js +10 -0
  53. package/dest/tx/state_reference.d.ts +3 -0
  54. package/dest/tx/state_reference.d.ts.map +1 -1
  55. package/dest/tx/state_reference.js +9 -0
  56. package/dest/tx/tx_effect.d.ts +9 -6
  57. package/dest/tx/tx_effect.d.ts.map +1 -1
  58. package/dest/tx/tx_effect.js +53 -57
  59. package/dest/vks/verification_key.d.ts +9 -0
  60. package/dest/vks/verification_key.d.ts.map +1 -1
  61. package/dest/vks/verification_key.js +20 -0
  62. package/package.json +8 -8
  63. package/src/avm/avm.ts +66 -28
  64. package/src/avm/public_data_write.ts +1 -1
  65. package/src/avm/revert_code.ts +9 -8
  66. package/src/block/body.ts +7 -32
  67. package/src/block/index.ts +1 -0
  68. package/src/block/l2_block.ts +33 -2
  69. package/src/block/l2_block_new.ts +143 -0
  70. package/src/checkpoint/checkpoint.ts +46 -0
  71. package/src/checkpoint/index.ts +1 -1
  72. package/src/logs/private_log.ts +2 -3
  73. package/src/messaging/in_hash.ts +15 -0
  74. package/src/messaging/index.ts +2 -0
  75. package/src/messaging/out_hash.ts +36 -0
  76. package/src/rollup/checkpoint_constant_data.ts +20 -0
  77. package/src/tests/factories.ts +109 -211
  78. package/src/tests/mocks.ts +196 -4
  79. package/src/tx/partial_state_reference.ts +9 -0
  80. package/src/tx/state_reference.ts +9 -0
  81. package/src/tx/tx_effect.ts +61 -67
  82. package/src/vks/verification_key.ts +25 -0
  83. package/dest/checkpoint/checkpoint_body.d.ts +0 -4
  84. package/dest/checkpoint/checkpoint_body.d.ts.map +0 -1
  85. package/dest/checkpoint/checkpoint_body.js +0 -9
  86. package/src/checkpoint/checkpoint_body.ts +0 -10
@@ -5,8 +5,6 @@ import {
5
5
  AZTEC_MAX_EPOCH_DURATION,
6
6
  CHONK_PROOF_LENGTH,
7
7
  CONTRACT_CLASS_LOG_SIZE_IN_FIELDS,
8
- FIXED_DA_GAS,
9
- FIXED_L2_GAS,
10
8
  GeneratorIndex,
11
9
  L1_TO_L2_MSG_SUBTREE_ROOT_SIBLING_PATH_LENGTH,
12
10
  MAX_CONTRACT_CLASS_LOGS_PER_TX,
@@ -39,8 +37,8 @@ import {
39
37
  RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
40
38
  VK_TREE_HEIGHT,
41
39
  } from '@aztec/constants';
42
- import { type FieldsOf, makeHalfFullTuple, makeTuple } from '@aztec/foundation/array';
43
- import { compact, padArrayEnd } from '@aztec/foundation/collection';
40
+ import { type FieldsOf, makeTuple } from '@aztec/foundation/array';
41
+ import { compact } from '@aztec/foundation/collection';
44
42
  import { Grumpkin, SchnorrSignature, poseidon2HashWithSeparator, sha256 } from '@aztec/foundation/crypto';
45
43
  import { EthAddress } from '@aztec/foundation/eth-address';
46
44
  import { Fq, Fr, GrumpkinScalar, Point } from '@aztec/foundation/fields';
@@ -59,9 +57,9 @@ import {
59
57
  AvmCircuitPublicInputs,
60
58
  AvmCommitCheckpointHint,
61
59
  AvmContractClassHint,
62
- AvmContractDBCommitCheckpointHint,
63
- AvmContractDBCreateCheckpointHint,
64
- AvmContractDBRevertCheckpointHint,
60
+ AvmContractDbCommitCheckpointHint,
61
+ AvmContractDbCreateCheckpointHint,
62
+ AvmContractDbRevertCheckpointHint,
65
63
  AvmContractInstanceHint,
66
64
  AvmCreateCheckpointHint,
67
65
  AvmDebugFunctionNameHint,
@@ -75,7 +73,6 @@ import {
75
73
  AvmSequentialInsertHintNullifierTree,
76
74
  AvmSequentialInsertHintPublicDataTree,
77
75
  AvmTxHint,
78
- RevertCode,
79
76
  } from '../avm/index.js';
80
77
  import { PublicDataRead } from '../avm/public_data_read.js';
81
78
  import { PublicDataWrite } from '../avm/public_data_write.js';
@@ -92,10 +89,8 @@ import {
92
89
  computeContractClassId,
93
90
  computePublicBytecodeCommitment,
94
91
  } from '../contract/index.js';
95
- import { computeEffectiveGasFees } from '../fees/transaction_fee.js';
96
- import { Gas, GasFees, GasSettings, type GasUsed } from '../gas/index.js';
92
+ import { Gas, GasFees, GasSettings } from '../gas/index.js';
97
93
  import { computeCalldataHash } from '../hash/hash.js';
98
- import type { MerkleTreeReadOperations } from '../interfaces/merkle_tree_operations.js';
99
94
  import { KeyValidationRequest } from '../kernel/hints/key_validation_request.js';
100
95
  import { KeyValidationRequestAndGenerator } from '../kernel/hints/key_validation_request_and_generator.js';
101
96
  import { ReadRequest } from '../kernel/hints/read_request.js';
@@ -132,7 +127,6 @@ import { ParityPublicInputs } from '../parity/parity_public_inputs.js';
132
127
  import { ParityRootPrivateInputs } from '../parity/parity_root_private_inputs.js';
133
128
  import { ProofData } from '../proofs/index.js';
134
129
  import { Proof } from '../proofs/proof.js';
135
- import { ProvingRequestType } from '../proofs/proving_request_type.js';
136
130
  import { makeRecursiveProof } from '../proofs/recursive_proof.js';
137
131
  import { PrivateBaseRollupHints, PublicBaseRollupHints } from '../rollup/base_rollup_hints.js';
138
132
  import { BlockConstantData } from '../rollup/block_constant_data.js';
@@ -163,7 +157,6 @@ import { ContentCommitment } from '../tx/content_commitment.js';
163
157
  import { FunctionData } from '../tx/function_data.js';
164
158
  import { GlobalVariables } from '../tx/global_variables.js';
165
159
  import { PartialStateReference } from '../tx/partial_state_reference.js';
166
- import { makeProcessedTxFromPrivateOnlyTx, makeProcessedTxFromTxWithPublicCalls } from '../tx/processed_tx.js';
167
160
  import { ProtocolContracts } from '../tx/protocol_contracts.js';
168
161
  import { PublicCallRequestWithCalldata } from '../tx/public_call_request_with_calldata.js';
169
162
  import { StateReference } from '../tx/state_reference.js';
@@ -174,7 +167,6 @@ import { TxRequest } from '../tx/tx_request.js';
174
167
  import { Vector } from '../types/index.js';
175
168
  import { VkData } from '../vks/index.js';
176
169
  import { VerificationKey, VerificationKeyAsFields, VerificationKeyData } from '../vks/verification_key.js';
177
- import { mockTx } from './mocks.js';
178
170
 
179
171
  /**
180
172
  * Creates an arbitrary side effect object with the given seed.
@@ -264,7 +256,7 @@ function makeKeyValidationRequestAndGenerators(seed: number): KeyValidationReque
264
256
  return new KeyValidationRequestAndGenerator(makeKeyValidationRequests(seed), fr(seed + 4));
265
257
  }
266
258
 
267
- function makePublicDataWrite(seed = 1) {
259
+ export function makePublicDataWrite(seed = 1) {
268
260
  return new PublicDataWrite(fr(seed), fr(seed + 1));
269
261
  }
270
262
 
@@ -307,31 +299,101 @@ function makeTxConstantData(seed = 1) {
307
299
  return new TxConstantData(makeHeader(seed), makeTxContext(seed + 0x100), new Fr(seed + 0x200), new Fr(seed + 0x201));
308
300
  }
309
301
 
302
+ function makePaddedTuple<T, N extends number>(
303
+ length: N,
304
+ fn: (i: number) => T,
305
+ nonPaddedLength = 0,
306
+ makePadding: () => T,
307
+ offset = 0,
308
+ ) {
309
+ return makeTuple(length, i => (i < nonPaddedLength ? fn(i + offset) : makePadding()));
310
+ }
311
+
310
312
  /**
311
313
  * Creates arbitrary accumulated data.
312
314
  * @param seed - The seed to use for generating the accumulated data.
313
315
  * @returns An accumulated data.
314
316
  */
315
- export function makePrivateToRollupAccumulatedData(seed = 1, full = false): PrivateToRollupAccumulatedData {
316
- const tupleGenerator = full ? makeTuple : makeHalfFullTuple;
317
-
317
+ export function makePrivateToRollupAccumulatedData(
318
+ seed = 1,
319
+ {
320
+ numNoteHashes = MAX_NOTE_HASHES_PER_TX,
321
+ numNullifiers = MAX_NULLIFIERS_PER_TX,
322
+ numL2ToL1Messages = MAX_L2_TO_L1_MSGS_PER_TX,
323
+ numPrivateLogs = MAX_PRIVATE_LOGS_PER_TX,
324
+ numContractClassLogs = MAX_CONTRACT_CLASS_LOGS_PER_TX,
325
+ }: {
326
+ numNoteHashes?: number;
327
+ numNullifiers?: number;
328
+ numL2ToL1Messages?: number;
329
+ numPrivateLogs?: number;
330
+ numContractClassLogs?: number;
331
+ } = {},
332
+ ): PrivateToRollupAccumulatedData {
318
333
  return new PrivateToRollupAccumulatedData(
319
- tupleGenerator(MAX_NOTE_HASHES_PER_TX, fr, seed + 0x120, Fr.zero),
320
- tupleGenerator(MAX_NULLIFIERS_PER_TX, fr, seed + 0x200, Fr.zero),
321
- tupleGenerator(MAX_L2_TO_L1_MSGS_PER_TX, makeScopedL2ToL1Message, seed + 0x600, ScopedL2ToL1Message.empty),
322
- tupleGenerator(MAX_PRIVATE_LOGS_PER_TX, makePrivateLog, seed + 0x700, PrivateLog.empty),
323
- tupleGenerator(MAX_CONTRACT_CLASS_LOGS_PER_TX, makeScopedLogHash, seed + 0xa00, ScopedLogHash.empty), // contract class logs
334
+ makePaddedTuple(MAX_NOTE_HASHES_PER_TX, fr, numNoteHashes, Fr.zero, seed + 0x100),
335
+ makePaddedTuple(MAX_NULLIFIERS_PER_TX, fr, numNullifiers, Fr.zero, seed + 0x200),
336
+ makePaddedTuple(
337
+ MAX_L2_TO_L1_MSGS_PER_TX,
338
+ makeScopedL2ToL1Message,
339
+ numL2ToL1Messages,
340
+ ScopedL2ToL1Message.empty,
341
+ seed + 0x300,
342
+ ),
343
+ makePaddedTuple(MAX_PRIVATE_LOGS_PER_TX, makePrivateLog, numPrivateLogs, PrivateLog.empty, seed + 0x400),
344
+ makePaddedTuple(
345
+ MAX_CONTRACT_CLASS_LOGS_PER_TX,
346
+ makeScopedLogHash,
347
+ numContractClassLogs,
348
+ ScopedLogHash.empty,
349
+ seed + 0x500,
350
+ ),
324
351
  );
325
352
  }
326
353
 
327
- export function makePrivateToPublicAccumulatedData(seed = 1) {
354
+ export function makePrivateToPublicAccumulatedData(
355
+ seed = 1,
356
+ {
357
+ numNoteHashes = MAX_NOTE_HASHES_PER_TX,
358
+ numNullifiers = MAX_NULLIFIERS_PER_TX,
359
+ numL2ToL1Messages = MAX_L2_TO_L1_MSGS_PER_TX,
360
+ numPrivateLogs = MAX_PRIVATE_LOGS_PER_TX,
361
+ numContractClassLogs = MAX_CONTRACT_CLASS_LOGS_PER_TX,
362
+ numEnqueuedCalls = MAX_ENQUEUED_CALLS_PER_TX,
363
+ }: {
364
+ numNoteHashes?: number;
365
+ numNullifiers?: number;
366
+ numL2ToL1Messages?: number;
367
+ numPrivateLogs?: number;
368
+ numContractClassLogs?: number;
369
+ numEnqueuedCalls?: number;
370
+ } = {},
371
+ ) {
328
372
  return new PrivateToPublicAccumulatedData(
329
- makeTuple(MAX_NOTE_HASHES_PER_TX, fr, seed),
330
- makeTuple(MAX_NULLIFIERS_PER_TX, fr, seed + 0x100),
331
- makeTuple(MAX_L2_TO_L1_MSGS_PER_TX, makeScopedL2ToL1Message, seed + 0x200),
332
- makeTuple(MAX_PRIVATE_LOGS_PER_TX, makePrivateLog, seed + 0x700),
333
- makeTuple(MAX_CONTRACT_CLASS_LOGS_PER_TX, makeScopedLogHash, seed + 0x900),
334
- makeTuple(MAX_ENQUEUED_CALLS_PER_TX, makePublicCallRequest, seed + 0x500),
373
+ makePaddedTuple(MAX_NOTE_HASHES_PER_TX, fr, numNoteHashes, Fr.zero, seed),
374
+ makePaddedTuple(MAX_NULLIFIERS_PER_TX, fr, numNullifiers, Fr.zero, seed + 0x100),
375
+ makePaddedTuple(
376
+ MAX_L2_TO_L1_MSGS_PER_TX,
377
+ makeScopedL2ToL1Message,
378
+ numL2ToL1Messages,
379
+ ScopedL2ToL1Message.empty,
380
+ seed + 0x200,
381
+ ),
382
+ makePaddedTuple(MAX_PRIVATE_LOGS_PER_TX, makePrivateLog, numPrivateLogs, PrivateLog.empty, seed + 0x300),
383
+ makePaddedTuple(
384
+ MAX_CONTRACT_CLASS_LOGS_PER_TX,
385
+ makeScopedLogHash,
386
+ numContractClassLogs,
387
+ ScopedLogHash.empty,
388
+ seed + 0x400,
389
+ ),
390
+ makePaddedTuple(
391
+ MAX_ENQUEUED_CALLS_PER_TX,
392
+ makePublicCallRequest,
393
+ numEnqueuedCalls,
394
+ PublicCallRequest.empty,
395
+ seed + 0x500,
396
+ ),
335
397
  );
336
398
  }
337
399
 
@@ -434,13 +496,10 @@ export function makeProtocolContracts(seed = 1) {
434
496
  * @param seed - The seed to use for generating the kernel circuit public inputs.
435
497
  * @returns Public kernel circuit public inputs.
436
498
  */
437
- export function makePrivateToRollupKernelCircuitPublicInputs(
438
- seed = 1,
439
- fullAccumulatedData = true,
440
- ): PrivateToRollupKernelCircuitPublicInputs {
499
+ export function makePrivateToRollupKernelCircuitPublicInputs(seed = 1): PrivateToRollupKernelCircuitPublicInputs {
441
500
  return new PrivateToRollupKernelCircuitPublicInputs(
442
501
  makeTxConstantData(seed + 0x100),
443
- makePrivateToRollupAccumulatedData(seed, fullAccumulatedData),
502
+ makePrivateToRollupAccumulatedData(seed),
444
503
  makeGas(seed + 0x600),
445
504
  makeAztecAddress(seed + 0x700),
446
505
  BigInt(seed + 0x800),
@@ -1367,24 +1426,24 @@ export function makeAvmCheckpointActionRevertCheckpointHint(seed = 0): AvmRevert
1367
1426
  );
1368
1427
  }
1369
1428
 
1370
- export function makeAvmContractDBCheckpointActionCreateCheckpointHint(seed = 0): AvmContractDBCreateCheckpointHint {
1371
- return new AvmContractDBCreateCheckpointHint(
1429
+ export function makeAvmContractDbCheckpointActionCreateCheckpointHint(seed = 0): AvmContractDbCreateCheckpointHint {
1430
+ return new AvmContractDbCreateCheckpointHint(
1372
1431
  /*actionCounter=*/ seed,
1373
1432
  /*oldCheckpointId=*/ seed + 1,
1374
1433
  /*newCheckpointId=*/ seed + 2,
1375
1434
  );
1376
1435
  }
1377
1436
 
1378
- export function makeAvmContractDBCheckpointActionCommitCheckpointHint(seed = 0): AvmContractDBCommitCheckpointHint {
1379
- return new AvmContractDBCommitCheckpointHint(
1437
+ export function makeAvmContractDbCheckpointActionCommitCheckpointHint(seed = 0): AvmContractDbCommitCheckpointHint {
1438
+ return new AvmContractDbCommitCheckpointHint(
1380
1439
  /*actionCounter=*/ seed,
1381
1440
  /*oldCheckpointId=*/ seed + 1,
1382
1441
  /*newCheckpointId=*/ seed + 2,
1383
1442
  );
1384
1443
  }
1385
1444
 
1386
- export function makeAvmContractDBCheckpointActionRevertCheckpointHint(seed = 0): AvmContractDBRevertCheckpointHint {
1387
- return new AvmContractDBRevertCheckpointHint(
1445
+ export function makeAvmContractDbCheckpointActionRevertCheckpointHint(seed = 0): AvmContractDbRevertCheckpointHint {
1446
+ return new AvmContractDbRevertCheckpointHint(
1388
1447
  /*actionCounter=*/ seed,
1389
1448
  /*oldCheckpointId=*/ seed + 1,
1390
1449
  /*newCheckpointId=*/ seed + 2,
@@ -1506,19 +1565,19 @@ export async function makeAvmExecutionHints(
1506
1565
  contractClasses: makeArray(baseLength + 5, makeAvmContractClassHint, seed + 0x4900),
1507
1566
  bytecodeCommitments: await makeArrayAsync(baseLength + 5, makeAvmBytecodeCommitmentHint, seed + 0x4900),
1508
1567
  debugFunctionNames: makeArray(baseLength + 5, makeAvmDebugFunctionNameHint, seed + 0x4a00),
1509
- contractDBCreateCheckpointHints: makeArray(
1568
+ contractDbCreateCheckpointHints: makeArray(
1510
1569
  baseLength + 5,
1511
- makeAvmContractDBCheckpointActionCreateCheckpointHint,
1570
+ makeAvmContractDbCheckpointActionCreateCheckpointHint,
1512
1571
  seed + 0x5900,
1513
1572
  ),
1514
- contractDBCommitCheckpointHints: makeArray(
1573
+ contractDbCommitCheckpointHints: makeArray(
1515
1574
  baseLength + 5,
1516
- makeAvmContractDBCheckpointActionCommitCheckpointHint,
1575
+ makeAvmContractDbCheckpointActionCommitCheckpointHint,
1517
1576
  seed + 0x5b00,
1518
1577
  ),
1519
- contractDBRevertCheckpointHints: makeArray(
1578
+ contractDbRevertCheckpointHints: makeArray(
1520
1579
  baseLength + 5,
1521
- makeAvmContractDBCheckpointActionRevertCheckpointHint,
1580
+ makeAvmContractDbCheckpointActionRevertCheckpointHint,
1522
1581
  seed + 0x5d00,
1523
1582
  ),
1524
1583
  startingTreeRoots: makeTreeSnapshots(seed + 0x4900),
@@ -1556,9 +1615,9 @@ export async function makeAvmExecutionHints(
1556
1615
  fields.contractClasses,
1557
1616
  fields.bytecodeCommitments,
1558
1617
  fields.debugFunctionNames,
1559
- fields.contractDBCreateCheckpointHints,
1560
- fields.contractDBCommitCheckpointHints,
1561
- fields.contractDBRevertCheckpointHints,
1618
+ fields.contractDbCreateCheckpointHints,
1619
+ fields.contractDbCommitCheckpointHints,
1620
+ fields.contractDbRevertCheckpointHints,
1562
1621
  fields.startingTreeRoots,
1563
1622
  fields.getSiblingPathHints,
1564
1623
  fields.getPreviousValueIndexHints,
@@ -1601,164 +1660,3 @@ export async function makeAvmCircuitInputs(
1601
1660
  export function fr(n: number): Fr {
1602
1661
  return new Fr(BigInt(n));
1603
1662
  }
1604
-
1605
- /** Makes a bloated processed tx for testing purposes. */
1606
- export async function makeBloatedProcessedTx({
1607
- seed = 1,
1608
- header,
1609
- db,
1610
- chainId = Fr.ZERO,
1611
- version = Fr.ZERO,
1612
- gasSettings = GasSettings.default({ maxFeesPerGas: new GasFees(10, 10) }),
1613
- vkTreeRoot = Fr.ZERO,
1614
- protocolContracts = makeProtocolContracts(seed + 0x100),
1615
- globalVariables = GlobalVariables.empty(),
1616
- newL1ToL2Snapshot = AppendOnlyTreeSnapshot.empty(),
1617
- feePayer,
1618
- feePaymentPublicDataWrite,
1619
- // The default gasUsed is the tx overhead.
1620
- gasUsed = Gas.from({ daGas: FIXED_DA_GAS, l2Gas: FIXED_L2_GAS }),
1621
- privateOnly = false,
1622
- }: {
1623
- seed?: number;
1624
- header?: BlockHeader;
1625
- db?: MerkleTreeReadOperations;
1626
- chainId?: Fr;
1627
- version?: Fr;
1628
- gasSettings?: GasSettings;
1629
- vkTreeRoot?: Fr;
1630
- globalVariables?: GlobalVariables;
1631
- newL1ToL2Snapshot?: AppendOnlyTreeSnapshot;
1632
- protocolContracts?: ProtocolContracts;
1633
- feePayer?: AztecAddress;
1634
- feePaymentPublicDataWrite?: PublicDataWrite;
1635
- gasUsed?: Gas;
1636
- privateOnly?: boolean;
1637
- } = {}) {
1638
- seed *= 0x1000; // Avoid clashing with the previous mock values if seed only increases by 1.
1639
- header ??= db?.getInitialHeader() ?? makeHeader(seed);
1640
- feePayer ??= await AztecAddress.random();
1641
-
1642
- const txConstantData = TxConstantData.empty();
1643
- txConstantData.anchorBlockHeader = header!;
1644
- txConstantData.txContext.chainId = chainId;
1645
- txConstantData.txContext.version = version;
1646
- txConstantData.txContext.gasSettings = gasSettings;
1647
- txConstantData.vkTreeRoot = vkTreeRoot;
1648
- txConstantData.protocolContractsHash = await protocolContracts.hash();
1649
-
1650
- const tx = !privateOnly
1651
- ? await mockTx(seed, { feePayer, gasUsed })
1652
- : await mockTx(seed, {
1653
- numberOfNonRevertiblePublicCallRequests: 0,
1654
- numberOfRevertiblePublicCallRequests: 0,
1655
- feePayer,
1656
- gasUsed,
1657
- });
1658
- tx.data.constants = txConstantData;
1659
-
1660
- const transactionFee = tx.data.gasUsed.computeFee(globalVariables.gasFees);
1661
-
1662
- if (privateOnly) {
1663
- const data = makePrivateToRollupAccumulatedData(seed + 0x1000);
1664
- clearContractClassLogs(data);
1665
-
1666
- feePaymentPublicDataWrite ??= new PublicDataWrite(Fr.random(), Fr.random());
1667
-
1668
- tx.data.forRollup!.end = data;
1669
-
1670
- await tx.recomputeHash();
1671
- return makeProcessedTxFromPrivateOnlyTx(tx, transactionFee, feePaymentPublicDataWrite, globalVariables);
1672
- } else {
1673
- const dataFromPrivate = tx.data.forPublic!;
1674
-
1675
- const nonRevertibleData = dataFromPrivate.nonRevertibleAccumulatedData;
1676
-
1677
- // Create revertible data.
1678
- const revertibleData = makePrivateToPublicAccumulatedData(seed + 0x1000);
1679
- clearContractClassLogs(revertibleData);
1680
- revertibleData.nullifiers[MAX_NULLIFIERS_PER_TX - 1] = Fr.ZERO; // Leave one space for the tx hash nullifier in nonRevertibleAccumulatedData.
1681
- dataFromPrivate.revertibleAccumulatedData = revertibleData;
1682
-
1683
- // Create avm output.
1684
- const avmOutput = AvmCircuitPublicInputs.empty();
1685
- // Assign data from hints.
1686
- avmOutput.protocolContracts = protocolContracts;
1687
- avmOutput.startTreeSnapshots.l1ToL2MessageTree = newL1ToL2Snapshot;
1688
- avmOutput.endTreeSnapshots.l1ToL2MessageTree = newL1ToL2Snapshot;
1689
- avmOutput.effectiveGasFees = computeEffectiveGasFees(globalVariables.gasFees, gasSettings);
1690
- // Assign data from private.
1691
- avmOutput.globalVariables = globalVariables;
1692
- avmOutput.startGasUsed = tx.data.gasUsed;
1693
- avmOutput.gasSettings = gasSettings;
1694
- avmOutput.feePayer = feePayer;
1695
- avmOutput.publicCallRequestArrayLengths = new PublicCallRequestArrayLengths(
1696
- tx.data.numberOfNonRevertiblePublicCallRequests(),
1697
- tx.data.numberOfRevertiblePublicCallRequests(),
1698
- tx.data.hasTeardownPublicCallRequest(),
1699
- );
1700
- avmOutput.publicSetupCallRequests = dataFromPrivate.nonRevertibleAccumulatedData.publicCallRequests;
1701
- avmOutput.publicAppLogicCallRequests = dataFromPrivate.revertibleAccumulatedData.publicCallRequests;
1702
- avmOutput.publicTeardownCallRequest = dataFromPrivate.publicTeardownCallRequest;
1703
- avmOutput.previousNonRevertibleAccumulatedData = new PrivateToAvmAccumulatedData(
1704
- dataFromPrivate.nonRevertibleAccumulatedData.noteHashes,
1705
- dataFromPrivate.nonRevertibleAccumulatedData.nullifiers,
1706
- dataFromPrivate.nonRevertibleAccumulatedData.l2ToL1Msgs,
1707
- );
1708
- avmOutput.previousNonRevertibleAccumulatedDataArrayLengths =
1709
- avmOutput.previousNonRevertibleAccumulatedData.getArrayLengths();
1710
- avmOutput.previousRevertibleAccumulatedData = new PrivateToAvmAccumulatedData(
1711
- dataFromPrivate.revertibleAccumulatedData.noteHashes,
1712
- dataFromPrivate.revertibleAccumulatedData.nullifiers,
1713
- dataFromPrivate.revertibleAccumulatedData.l2ToL1Msgs,
1714
- );
1715
- avmOutput.previousRevertibleAccumulatedDataArrayLengths =
1716
- avmOutput.previousRevertibleAccumulatedData.getArrayLengths();
1717
- // Assign final data emitted from avm.
1718
- avmOutput.accumulatedData.noteHashes = revertibleData.noteHashes;
1719
- avmOutput.accumulatedData.nullifiers = padArrayEnd(
1720
- nonRevertibleData.nullifiers.concat(revertibleData.nullifiers).filter(n => !n.isEmpty()),
1721
- Fr.ZERO,
1722
- MAX_NULLIFIERS_PER_TX,
1723
- );
1724
- avmOutput.accumulatedData.l2ToL1Msgs = revertibleData.l2ToL1Msgs;
1725
- avmOutput.accumulatedData.publicDataWrites = makeTuple(
1726
- MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
1727
- i => new PublicDataWrite(new Fr(i), new Fr(i + 10)),
1728
- seed + 0x2000,
1729
- );
1730
- avmOutput.accumulatedDataArrayLengths = avmOutput.accumulatedData.getArrayLengths();
1731
- avmOutput.gasSettings = gasSettings;
1732
- // Note: The fee is computed from the tx's gas used, which only includes the gas used in private. But this shouldn't
1733
- // be a problem for the tests.
1734
- avmOutput.transactionFee = transactionFee;
1735
-
1736
- const avmCircuitInputs = await makeAvmCircuitInputs(seed + 0x3000, { publicInputs: avmOutput });
1737
- avmCircuitInputs.hints.startingTreeRoots.l1ToL2MessageTree = newL1ToL2Snapshot;
1738
-
1739
- const gasUsed = {
1740
- totalGas: Gas.empty(),
1741
- teardownGas: Gas.empty(),
1742
- publicGas: Gas.empty(),
1743
- billedGas: Gas.empty(),
1744
- } satisfies GasUsed;
1745
-
1746
- await tx.recomputeHash();
1747
- return makeProcessedTxFromTxWithPublicCalls(
1748
- tx,
1749
- {
1750
- type: ProvingRequestType.PUBLIC_VM,
1751
- inputs: avmCircuitInputs,
1752
- },
1753
- gasUsed,
1754
- RevertCode.OK,
1755
- undefined /* revertReason */,
1756
- );
1757
- }
1758
- }
1759
-
1760
- // Remove all contract class log hashes from the data as they are not required for the current tests.
1761
- // If they are needed one day, change this to create the random fields first and update the data with real hashes of those fields.
1762
- function clearContractClassLogs(data: { contractClassLogsHashes: ScopedLogHash[] }) {
1763
- data.contractClassLogsHashes.forEach((_, i) => (data.contractClassLogsHashes[i] = ScopedLogHash.empty()));
1764
- }