@aztec/stdlib 4.0.0-devnet.1-patch.0 → 4.0.0-devnet.2-patch.0

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 (193) hide show
  1. package/dest/auth_witness/auth_witness.js +3 -3
  2. package/dest/block/block_data.d.ts +52 -0
  3. package/dest/block/block_data.d.ts.map +1 -0
  4. package/dest/block/block_data.js +12 -0
  5. package/dest/block/index.d.ts +2 -1
  6. package/dest/block/index.d.ts.map +1 -1
  7. package/dest/block/index.js +1 -0
  8. package/dest/block/l2_block_source.d.ts +20 -1
  9. package/dest/block/l2_block_source.d.ts.map +1 -1
  10. package/dest/checkpoint/checkpoint.d.ts +21 -7
  11. package/dest/checkpoint/checkpoint.d.ts.map +1 -1
  12. package/dest/checkpoint/checkpoint.js +24 -13
  13. package/dest/checkpoint/checkpoint_data.d.ts +120 -0
  14. package/dest/checkpoint/checkpoint_data.d.ts.map +1 -0
  15. package/dest/checkpoint/checkpoint_data.js +26 -0
  16. package/dest/checkpoint/index.d.ts +2 -1
  17. package/dest/checkpoint/index.d.ts.map +1 -1
  18. package/dest/checkpoint/index.js +1 -0
  19. package/dest/checkpoint/published_checkpoint.d.ts +17 -2
  20. package/dest/checkpoint/published_checkpoint.d.ts.map +1 -1
  21. package/dest/checkpoint/published_checkpoint.js +1 -2
  22. package/dest/contract/contract_address.js +4 -4
  23. package/dest/contract/contract_class_id.d.ts +1 -1
  24. package/dest/contract/contract_class_id.d.ts.map +1 -1
  25. package/dest/contract/contract_class_id.js +5 -4
  26. package/dest/contract/interfaces/node-info.d.ts +3 -1
  27. package/dest/contract/interfaces/node-info.d.ts.map +1 -1
  28. package/dest/contract/interfaces/node-info.js +2 -1
  29. package/dest/contract/private_function.js +2 -2
  30. package/dest/file-store/local.d.ts +3 -3
  31. package/dest/file-store/local.d.ts.map +1 -1
  32. package/dest/file-store/local.js +13 -4
  33. package/dest/file-store/s3.d.ts +1 -1
  34. package/dest/file-store/s3.d.ts.map +1 -1
  35. package/dest/file-store/s3.js +11 -3
  36. package/dest/hash/hash.d.ts +2 -1
  37. package/dest/hash/hash.d.ts.map +1 -1
  38. package/dest/hash/hash.js +16 -10
  39. package/dest/hash/map_slot.js +2 -2
  40. package/dest/interfaces/archiver.d.ts +1 -1
  41. package/dest/interfaces/archiver.d.ts.map +1 -1
  42. package/dest/interfaces/archiver.js +5 -0
  43. package/dest/interfaces/aztec-node-admin.d.ts +27 -2
  44. package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
  45. package/dest/interfaces/aztec-node-admin.js +9 -3
  46. package/dest/interfaces/aztec-node.d.ts +1 -1
  47. package/dest/interfaces/block-builder.d.ts +2 -2
  48. package/dest/interfaces/block-builder.d.ts.map +1 -1
  49. package/dest/interfaces/configs.d.ts +12 -2
  50. package/dest/interfaces/configs.d.ts.map +1 -1
  51. package/dest/interfaces/configs.js +3 -1
  52. package/dest/interfaces/merkle_tree_operations.d.ts +2 -2
  53. package/dest/interfaces/merkle_tree_operations.d.ts.map +1 -1
  54. package/dest/interfaces/proving-job.d.ts +2 -2
  55. package/dest/interfaces/validator.d.ts +2 -2
  56. package/dest/interfaces/validator.d.ts.map +1 -1
  57. package/dest/kernel/hints/index.d.ts +2 -2
  58. package/dest/kernel/hints/index.js +2 -2
  59. package/dest/kernel/hints/key_validation_request_and_separator.d.ts +24 -0
  60. package/dest/kernel/hints/key_validation_request_and_separator.d.ts.map +1 -0
  61. package/dest/kernel/hints/{key_validation_request_and_generator.js → key_validation_request_and_separator.js} +12 -15
  62. package/dest/kernel/hints/{scoped_key_validation_request_and_generator.d.ts → scoped_key_validation_request_and_separator.d.ts} +8 -8
  63. package/dest/kernel/hints/{scoped_key_validation_request_and_generator.d.ts.map → scoped_key_validation_request_and_separator.d.ts.map} +1 -1
  64. package/dest/kernel/hints/{scoped_key_validation_request_and_generator.js → scoped_key_validation_request_and_separator.js} +6 -6
  65. package/dest/kernel/private_circuit_public_inputs.d.ts +9 -9
  66. package/dest/kernel/private_circuit_public_inputs.d.ts.map +1 -1
  67. package/dest/kernel/private_circuit_public_inputs.js +16 -16
  68. package/dest/kernel/private_kernel_circuit_public_inputs.d.ts +3 -3
  69. package/dest/kernel/private_kernel_circuit_public_inputs.d.ts.map +1 -1
  70. package/dest/kernel/private_kernel_circuit_public_inputs.js +4 -4
  71. package/dest/kernel/private_kernel_tail_circuit_private_inputs.d.ts +3 -3
  72. package/dest/kernel/private_kernel_tail_circuit_private_inputs.d.ts.map +1 -1
  73. package/dest/kernel/private_kernel_tail_circuit_private_inputs.js +4 -4
  74. package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts +3 -3
  75. package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts.map +1 -1
  76. package/dest/kernel/private_kernel_tail_circuit_public_inputs.js +7 -7
  77. package/dest/kernel/private_to_public_kernel_circuit_public_inputs.d.ts +3 -3
  78. package/dest/kernel/private_to_public_kernel_circuit_public_inputs.d.ts.map +1 -1
  79. package/dest/kernel/private_to_public_kernel_circuit_public_inputs.js +7 -7
  80. package/dest/kernel/private_to_rollup_kernel_circuit_public_inputs.d.ts +3 -3
  81. package/dest/kernel/private_to_rollup_kernel_circuit_public_inputs.d.ts.map +1 -1
  82. package/dest/kernel/private_to_rollup_kernel_circuit_public_inputs.js +7 -7
  83. package/dest/kernel/private_validation_requests.d.ts +3 -3
  84. package/dest/kernel/private_validation_requests.js +9 -9
  85. package/dest/keys/derivation.js +8 -8
  86. package/dest/keys/key_types.d.ts +3 -3
  87. package/dest/keys/key_types.d.ts.map +1 -1
  88. package/dest/keys/public_keys.js +2 -2
  89. package/dest/keys/utils.js +5 -5
  90. package/dest/logs/private_log.d.ts +2 -2
  91. package/dest/logs/private_log.d.ts.map +1 -1
  92. package/dest/logs/siloed_tag.d.ts +1 -1
  93. package/dest/logs/siloed_tag.d.ts.map +1 -1
  94. package/dest/logs/siloed_tag.js +2 -6
  95. package/dest/note/index.d.ts +1 -2
  96. package/dest/note/index.d.ts.map +1 -1
  97. package/dest/note/index.js +0 -1
  98. package/dest/p2p/block_proposal.d.ts +1 -1
  99. package/dest/p2p/block_proposal.d.ts.map +1 -1
  100. package/dest/p2p/block_proposal.js +1 -3
  101. package/dest/p2p/checkpoint_attestation.d.ts +2 -1
  102. package/dest/p2p/checkpoint_attestation.d.ts.map +1 -1
  103. package/dest/p2p/checkpoint_attestation.js +1 -1
  104. package/dest/p2p/checkpoint_proposal.d.ts +10 -5
  105. package/dest/p2p/checkpoint_proposal.d.ts.map +1 -1
  106. package/dest/p2p/checkpoint_proposal.js +20 -15
  107. package/dest/p2p/consensus_payload.d.ts +12 -3
  108. package/dest/p2p/consensus_payload.d.ts.map +1 -1
  109. package/dest/p2p/consensus_payload.js +22 -15
  110. package/dest/rollup/checkpoint_header.d.ts +2 -2
  111. package/dest/rollup/checkpoint_header.js +2 -2
  112. package/dest/tests/factories.js +11 -11
  113. package/dest/tests/mocks.d.ts +4 -1
  114. package/dest/tests/mocks.d.ts.map +1 -1
  115. package/dest/tests/mocks.js +14 -9
  116. package/dest/trees/public_data_leaf.d.ts +2 -1
  117. package/dest/trees/public_data_leaf.d.ts.map +1 -1
  118. package/dest/trees/public_data_leaf.js +7 -6
  119. package/dest/tx/block_header.js +2 -2
  120. package/dest/tx/global_variables.d.ts +4 -4
  121. package/dest/tx/global_variables.d.ts.map +1 -1
  122. package/dest/tx/protocol_contracts.d.ts +1 -1
  123. package/dest/tx/protocol_contracts.d.ts.map +1 -1
  124. package/dest/tx/protocol_contracts.js +2 -2
  125. package/dest/tx/tx_request.js +2 -2
  126. package/dest/tx/validator/error_texts.d.ts +1 -1
  127. package/dest/tx/validator/error_texts.js +1 -1
  128. package/dest/validators/schemas.d.ts +30 -30
  129. package/dest/validators/schemas.d.ts.map +1 -1
  130. package/dest/validators/schemas.js +4 -3
  131. package/dest/validators/types.d.ts +3 -3
  132. package/dest/validators/types.d.ts.map +1 -1
  133. package/package.json +9 -9
  134. package/src/auth_witness/auth_witness.ts +3 -3
  135. package/src/block/block_data.ts +26 -0
  136. package/src/block/index.ts +1 -0
  137. package/src/block/l2_block_source.ts +22 -0
  138. package/src/checkpoint/checkpoint.ts +32 -14
  139. package/src/checkpoint/checkpoint_data.ts +51 -0
  140. package/src/checkpoint/index.ts +1 -0
  141. package/src/checkpoint/published_checkpoint.ts +3 -1
  142. package/src/contract/contract_address.ts +4 -4
  143. package/src/contract/contract_class_id.ts +5 -4
  144. package/src/contract/interfaces/node-info.ts +3 -0
  145. package/src/contract/private_function.ts +2 -2
  146. package/src/file-store/local.ts +15 -5
  147. package/src/file-store/s3.ts +12 -3
  148. package/src/hash/hash.ts +14 -10
  149. package/src/hash/map_slot.ts +2 -2
  150. package/src/interfaces/archiver.ts +5 -0
  151. package/src/interfaces/aztec-node-admin.ts +23 -0
  152. package/src/interfaces/aztec-node.ts +1 -1
  153. package/src/interfaces/block-builder.ts +1 -0
  154. package/src/interfaces/configs.ts +8 -1
  155. package/src/interfaces/merkle_tree_operations.ts +1 -1
  156. package/src/interfaces/validator.ts +1 -0
  157. package/src/kernel/hints/index.ts +2 -2
  158. package/src/kernel/hints/{key_validation_request_and_generator.ts → key_validation_request_and_separator.ts} +12 -15
  159. package/src/kernel/hints/{scoped_key_validation_request_and_generator.ts → scoped_key_validation_request_and_separator.ts} +10 -10
  160. package/src/kernel/private_circuit_public_inputs.ts +14 -14
  161. package/src/kernel/private_kernel_circuit_public_inputs.ts +2 -2
  162. package/src/kernel/private_kernel_tail_circuit_private_inputs.ts +2 -2
  163. package/src/kernel/private_kernel_tail_circuit_public_inputs.ts +5 -5
  164. package/src/kernel/private_to_public_kernel_circuit_public_inputs.ts +5 -5
  165. package/src/kernel/private_to_rollup_kernel_circuit_public_inputs.ts +5 -5
  166. package/src/kernel/private_validation_requests.ts +8 -8
  167. package/src/keys/derivation.ts +8 -8
  168. package/src/keys/key_types.ts +6 -2
  169. package/src/keys/public_keys.ts +2 -2
  170. package/src/keys/utils.ts +5 -5
  171. package/src/logs/siloed_tag.ts +2 -3
  172. package/src/note/index.ts +0 -1
  173. package/src/p2p/block_proposal.ts +0 -2
  174. package/src/p2p/checkpoint_attestation.ts +6 -1
  175. package/src/p2p/checkpoint_proposal.ts +35 -13
  176. package/src/p2p/consensus_payload.ts +25 -12
  177. package/src/rollup/checkpoint_header.ts +2 -2
  178. package/src/tests/factories.ts +12 -12
  179. package/src/tests/mocks.ts +21 -10
  180. package/src/trees/public_data_leaf.ts +11 -5
  181. package/src/tx/block_header.ts +2 -2
  182. package/src/tx/global_variables.ts +3 -3
  183. package/src/tx/protocol_contracts.ts +2 -2
  184. package/src/tx/tx_request.ts +2 -2
  185. package/src/tx/validator/error_texts.ts +1 -1
  186. package/src/validators/schemas.ts +8 -1
  187. package/src/validators/types.ts +5 -4
  188. package/dest/kernel/hints/key_validation_request_and_generator.d.ts +0 -30
  189. package/dest/kernel/hints/key_validation_request_and_generator.d.ts.map +0 -1
  190. package/dest/note/notes_filter.d.ts +0 -27
  191. package/dest/note/notes_filter.d.ts.map +0 -1
  192. package/dest/note/notes_filter.js +0 -11
  193. package/src/note/notes_filter.ts +0 -38
@@ -8,7 +8,7 @@ import {
8
8
  } from '@aztec/foundation/branded-types';
9
9
  import { sum } from '@aztec/foundation/collection';
10
10
  import { Fr } from '@aztec/foundation/curves/bn254';
11
- import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
11
+ import { BufferReader, serializeSignedBigInt, serializeToBuffer } from '@aztec/foundation/serialize';
12
12
  import type { FieldsOf } from '@aztec/foundation/types';
13
13
 
14
14
  import { z } from 'zod';
@@ -17,6 +17,7 @@ import { L2Block } from '../block/l2_block.js';
17
17
  import { MAX_BLOCKS_PER_CHECKPOINT } from '../deserialization/index.js';
18
18
  import { computeCheckpointOutHash } from '../messaging/out_hash.js';
19
19
  import { CheckpointHeader } from '../rollup/checkpoint_header.js';
20
+ import { schemas } from '../schemas/schemas.js';
20
21
  import { AppendOnlyTreeSnapshot } from '../trees/append_only_tree_snapshot.js';
21
22
  import type { CheckpointInfo } from './checkpoint_info.js';
22
23
 
@@ -32,6 +33,8 @@ export class Checkpoint {
32
33
  public blocks: L2Block[],
33
34
  /** Number of the checkpoint. */
34
35
  public number: CheckpointNumber,
36
+ /** Fee asset price modifier in basis points (from oracle). Defaults to 0 (no change). */
37
+ public feeAssetPriceModifier: bigint = 0n,
35
38
  ) {}
36
39
 
37
40
  get slot(): SlotNumber {
@@ -45,8 +48,12 @@ export class Checkpoint {
45
48
  header: CheckpointHeader.schema,
46
49
  blocks: z.array(L2Block.schema),
47
50
  number: CheckpointNumberSchema,
51
+ feeAssetPriceModifier: schemas.BigInt,
48
52
  })
49
- .transform(({ archive, header, blocks, number }) => new Checkpoint(archive, header, blocks, number));
53
+ .transform(
54
+ ({ archive, header, blocks, number, feeAssetPriceModifier }) =>
55
+ new Checkpoint(archive, header, blocks, number, feeAssetPriceModifier),
56
+ );
50
57
  }
51
58
 
52
59
  static from(fields: FieldsOfCheckpoint) {
@@ -54,21 +61,28 @@ export class Checkpoint {
54
61
  }
55
62
 
56
63
  static getFields(fields: FieldsOfCheckpoint) {
57
- return [fields.archive, fields.header, fields.blocks, fields.number] as const;
64
+ return [fields.archive, fields.header, fields.blocks, fields.number, fields.feeAssetPriceModifier] as const;
58
65
  }
59
66
 
60
67
  static fromBuffer(buf: Buffer | BufferReader) {
61
68
  const reader = BufferReader.asReader(buf);
62
- return new Checkpoint(
63
- reader.readObject(AppendOnlyTreeSnapshot),
64
- reader.readObject(CheckpointHeader),
65
- reader.readVector(L2Block, MAX_BLOCKS_PER_CHECKPOINT),
66
- CheckpointNumber(reader.readNumber()),
67
- );
69
+ const archive = reader.readObject(AppendOnlyTreeSnapshot);
70
+ const header = reader.readObject(CheckpointHeader);
71
+ const blocks = reader.readVector(L2Block, MAX_BLOCKS_PER_CHECKPOINT);
72
+ const number = CheckpointNumber(reader.readNumber());
73
+ const feeAssetPriceModifier = reader.readInt256();
74
+ return new Checkpoint(archive, header, blocks, number, feeAssetPriceModifier);
68
75
  }
69
76
 
70
77
  public toBuffer() {
71
- return serializeToBuffer(this.archive, this.header, this.blocks.length, this.blocks, this.number);
78
+ return serializeToBuffer(
79
+ this.archive,
80
+ this.header,
81
+ this.blocks.length,
82
+ this.blocks,
83
+ this.number,
84
+ serializeSignedBigInt(this.feeAssetPriceModifier),
85
+ );
72
86
  }
73
87
 
74
88
  public toBlobFields(): Fr[] {
@@ -80,9 +94,11 @@ export class Checkpoint {
80
94
  return this.header.hash();
81
95
  }
82
96
 
83
- // Returns the out hash computed from all l2-to-l1 messages in this checkpoint.
84
- // Note: This value is different from the out hash in the header, which is the **accumulated** out hash over all
85
- // checkpoints up to and including this one in the epoch.
97
+ /**
98
+ * Returns the out hash computed from all l2-to-l1 messages in this checkpoint.
99
+ * Note: This value is different from the out hash in the header, which is the **accumulated** out hash over all
100
+ * checkpoints up to and including this one in the epoch.
101
+ */
86
102
  public getCheckpointOutHash(): Fr {
87
103
  const msgs = this.blocks.map(block => block.body.txEffects.map(txEffect => txEffect.l2ToL1Msgs));
88
104
  return computeCheckpointOutHash(msgs);
@@ -129,11 +145,13 @@ export class Checkpoint {
129
145
  numBlocks = 1,
130
146
  startBlockNumber = 1,
131
147
  previousArchive,
148
+ feeAssetPriceModifier = 0n,
132
149
  ...options
133
150
  }: {
134
151
  numBlocks?: number;
135
152
  startBlockNumber?: number;
136
153
  previousArchive?: AppendOnlyTreeSnapshot;
154
+ feeAssetPriceModifier?: bigint;
137
155
  } & Partial<Parameters<typeof CheckpointHeader.random>[0]> &
138
156
  Partial<Parameters<typeof L2Block.random>[1]> = {},
139
157
  ) {
@@ -153,6 +171,6 @@ export class Checkpoint {
153
171
  blocks.push(block);
154
172
  }
155
173
 
156
- return new Checkpoint(AppendOnlyTreeSnapshot.random(), header, blocks, checkpointNumber);
174
+ return new Checkpoint(AppendOnlyTreeSnapshot.random(), header, blocks, checkpointNumber, feeAssetPriceModifier);
157
175
  }
158
176
  }
@@ -0,0 +1,51 @@
1
+ import {
2
+ BlockNumber,
3
+ BlockNumberSchema,
4
+ CheckpointNumber,
5
+ CheckpointNumberSchema,
6
+ } from '@aztec/foundation/branded-types';
7
+ import { Fr } from '@aztec/foundation/curves/bn254';
8
+ import { schemas } from '@aztec/foundation/schemas';
9
+
10
+ import { z } from 'zod';
11
+
12
+ import { CommitteeAttestation } from '../block/proposal/committee_attestation.js';
13
+ import { CheckpointHeader } from '../rollup/checkpoint_header.js';
14
+ import { AppendOnlyTreeSnapshot } from '../trees/append_only_tree_snapshot.js';
15
+ import { L1PublishedData } from './published_checkpoint.js';
16
+
17
+ /** Lightweight checkpoint metadata without full block data. */
18
+ export type CheckpointData = {
19
+ checkpointNumber: CheckpointNumber;
20
+ header: CheckpointHeader;
21
+ archive: AppendOnlyTreeSnapshot;
22
+ checkpointOutHash: Fr;
23
+ startBlock: BlockNumber;
24
+ blockCount: number;
25
+ attestations: CommitteeAttestation[];
26
+ l1: L1PublishedData;
27
+ };
28
+
29
+ export const CheckpointDataSchema = z
30
+ .object({
31
+ checkpointNumber: CheckpointNumberSchema,
32
+ header: CheckpointHeader.schema,
33
+ archive: AppendOnlyTreeSnapshot.schema,
34
+ checkpointOutHash: schemas.Fr,
35
+ startBlock: BlockNumberSchema,
36
+ blockCount: schemas.Integer,
37
+ attestations: z.array(CommitteeAttestation.schema),
38
+ l1: L1PublishedData.schema,
39
+ })
40
+ .transform(
41
+ (obj): CheckpointData => ({
42
+ checkpointNumber: obj.checkpointNumber,
43
+ header: obj.header,
44
+ archive: obj.archive,
45
+ checkpointOutHash: obj.checkpointOutHash,
46
+ startBlock: obj.startBlock,
47
+ blockCount: obj.blockCount,
48
+ attestations: obj.attestations,
49
+ l1: obj.l1,
50
+ }),
51
+ );
@@ -1,3 +1,4 @@
1
1
  export * from './checkpoint.js';
2
+ export * from './checkpoint_data.js';
2
3
  export * from './checkpoint_info.js';
3
4
  export * from './published_checkpoint.js';
@@ -55,9 +55,11 @@ export class L1PublishedData {
55
55
 
56
56
  export class PublishedCheckpoint {
57
57
  constructor(
58
+ /** The checkpoint itself. */
58
59
  public checkpoint: Checkpoint,
60
+ /** Info on when this checkpoint was published on L1. */
59
61
  public l1: L1PublishedData,
60
- // The attestations for the last block in the checkpoint.
62
+ /** The attestations for the last block in the checkpoint. */
61
63
  public attestations: CommitteeAttestation[],
62
64
  ) {}
63
65
 
@@ -1,4 +1,4 @@
1
- import { GeneratorIndex } from '@aztec/constants';
1
+ import { DomainSeparator } from '@aztec/constants';
2
2
  import { poseidon2HashWithSeparator } from '@aztec/foundation/crypto/poseidon';
3
3
  import { Fr } from '@aztec/foundation/curves/bn254';
4
4
 
@@ -44,7 +44,7 @@ export async function computePartialAddress(
44
44
 
45
45
  return poseidon2HashWithSeparator(
46
46
  [instance.originalContractClassId, saltedInitializationHash],
47
- GeneratorIndex.PARTIAL_ADDRESS,
47
+ DomainSeparator.PARTIAL_ADDRESS,
48
48
  );
49
49
  }
50
50
 
@@ -57,7 +57,7 @@ export function computeSaltedInitializationHash(
57
57
  ): Promise<Fr> {
58
58
  return poseidon2HashWithSeparator(
59
59
  [instance.salt, instance.initializationHash, instance.deployer],
60
- GeneratorIndex.PARTIAL_ADDRESS,
60
+ DomainSeparator.PARTIAL_ADDRESS,
61
61
  );
62
62
  }
63
63
 
@@ -87,5 +87,5 @@ export async function computeInitializationHashFromEncodedArgs(
87
87
  encodedArgs: Fr[],
88
88
  ): Promise<Fr> {
89
89
  const argsHash = await computeVarArgsHash(encodedArgs);
90
- return poseidon2HashWithSeparator([initFn, argsHash], GeneratorIndex.INITIALIZER);
90
+ return poseidon2HashWithSeparator([initFn, argsHash], DomainSeparator.INITIALIZER);
91
91
  }
@@ -1,4 +1,4 @@
1
- import { GeneratorIndex, MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS } from '@aztec/constants';
1
+ import { DomainSeparator, MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS } from '@aztec/constants';
2
2
  import { poseidon2HashWithSeparator } from '@aztec/foundation/crypto/poseidon';
3
3
  import { Fr } from '@aztec/foundation/curves/bn254';
4
4
 
@@ -40,7 +40,7 @@ export async function computeContractClassIdWithPreimage(
40
40
  : await computePublicBytecodeCommitment(contractClass.packedBytecode);
41
41
  const id = await poseidon2HashWithSeparator(
42
42
  [artifactHash, privateFunctionsRoot, publicBytecodeCommitment],
43
- GeneratorIndex.CONTRACT_CLASS_ID,
43
+ DomainSeparator.CONTRACT_CLASS_ID,
44
44
  );
45
45
  return { id, artifactHash, privateFunctionsRoot, publicBytecodeCommitment };
46
46
  }
@@ -60,7 +60,7 @@ export type ContractClassIdPreimage = {
60
60
  };
61
61
 
62
62
  export async function computePublicBytecodeCommitment(packedBytecode: Buffer) {
63
- // Encode the buffer into field elements (chunked into 32 bytes each)
63
+ // Encode the buffer into field elements (chunked into 31 bytes each)
64
64
  // The first element is the length of the bytecode (in bytes)
65
65
  const [bytecodeLengthAsField, ...bytecodeAsFields] = bufferAsFields(
66
66
  packedBytecode,
@@ -72,5 +72,6 @@ export async function computePublicBytecodeCommitment(packedBytecode: Buffer) {
72
72
 
73
73
  // NOTE: hash the bytecode here only up to the actual length of the bytecode.
74
74
  // We do not hash the entire max bytecode length!
75
- return await poseidon2HashWithSeparator(bytecodeAsFields.slice(0, bytecodeLength), GeneratorIndex.PUBLIC_BYTECODE);
75
+ const sep = BigInt(DomainSeparator.PUBLIC_BYTECODE) + (bytecodeLengthAsField.toBigInt() << 32n);
76
+ return await poseidon2HashWithSeparator(bytecodeAsFields.slice(0, bytecodeLength), new Fr(sep).toNumber());
76
77
  }
@@ -19,6 +19,8 @@ export interface NodeInfo {
19
19
  l1ContractAddresses: L1ContractAddresses;
20
20
  /** Protocol contract addresses */
21
21
  protocolContractAddresses: ProtocolContractAddresses;
22
+ /** Whether the node requires real proofs for transaction submission. */
23
+ realProofs: boolean;
22
24
  }
23
25
 
24
26
  export const NodeInfoSchema: ZodFor<NodeInfo> = z
@@ -29,5 +31,6 @@ export const NodeInfoSchema: ZodFor<NodeInfo> = z
29
31
  enr: z.string().optional(),
30
32
  l1ContractAddresses: L1ContractAddressesSchema,
31
33
  protocolContractAddresses: ProtocolContractAddressesSchema,
34
+ realProofs: z.boolean(),
32
35
  })
33
36
  .transform(obj => ({ enr: undefined, ...obj }));
@@ -1,4 +1,4 @@
1
- import { FUNCTION_TREE_HEIGHT, GeneratorIndex } from '@aztec/constants';
1
+ import { DomainSeparator, FUNCTION_TREE_HEIGHT } from '@aztec/constants';
2
2
  import { poseidon2Hash, poseidon2HashWithSeparator } from '@aztec/foundation/crypto/poseidon';
3
3
  import { Fr } from '@aztec/foundation/curves/bn254';
4
4
  import { type MerkleTree, MerkleTreeCalculator } from '@aztec/foundation/trees';
@@ -31,7 +31,7 @@ function computePrivateFunctionLeaves(fns: PrivateFunction[]): Promise<Buffer[]>
31
31
 
32
32
  /** Returns the leaf for a given private function. */
33
33
  export async function computePrivateFunctionLeaf(fn: PrivateFunction): Promise<Buffer> {
34
- return (await poseidon2HashWithSeparator([fn.selector, fn.vkHash], GeneratorIndex.PRIVATE_FUNCTION_LEAF)).toBuffer();
34
+ return (await poseidon2HashWithSeparator([fn.selector, fn.vkHash], DomainSeparator.PRIVATE_FUNCTION_LEAF)).toBuffer();
35
35
  }
36
36
 
37
37
  async function getPrivateFunctionTreeCalculator(): Promise<MerkleTreeCalculator> {
@@ -1,15 +1,21 @@
1
1
  import { access, mkdir, readFile, writeFile } from 'fs/promises';
2
2
  import { dirname, resolve } from 'path';
3
+ import { promisify } from 'util';
4
+ import { gunzip as gunzipCb, gzip as gzipCb } from 'zlib';
3
5
 
4
- import type { FileStore } from './interface.js';
6
+ import type { FileStore, FileStoreSaveOptions } from './interface.js';
7
+
8
+ const gzip = promisify(gzipCb);
9
+ const gunzip = promisify(gunzipCb);
5
10
 
6
11
  export class LocalFileStore implements FileStore {
7
12
  constructor(private readonly basePath: string) {}
8
13
 
9
- public async save(path: string, data: Buffer): Promise<string> {
14
+ public async save(path: string, data: Buffer, opts?: FileStoreSaveOptions): Promise<string> {
10
15
  const fullPath = this.getFullPath(path);
11
16
  await mkdir(dirname(fullPath), { recursive: true });
12
- await writeFile(fullPath, data);
17
+ const toWrite = opts?.compress ? await gzip(data) : data;
18
+ await writeFile(fullPath, toWrite);
13
19
  return `file://${fullPath}`;
14
20
  }
15
21
 
@@ -18,9 +24,13 @@ export class LocalFileStore implements FileStore {
18
24
  return this.save(destPath, data);
19
25
  }
20
26
 
21
- public read(pathOrUrlStr: string): Promise<Buffer> {
27
+ public async read(pathOrUrlStr: string): Promise<Buffer> {
22
28
  const fullPath = this.getFullPath(pathOrUrlStr);
23
- return readFile(fullPath);
29
+ const data = await readFile(fullPath);
30
+ if (data.length >= 2 && data[0] === 0x1f && data[1] === 0x8b) {
31
+ return await gunzip(data);
32
+ }
33
+ return data;
24
34
  }
25
35
 
26
36
  public async download(pathOrUrlStr: string, destPath: string): Promise<void> {
@@ -13,10 +13,14 @@ import { tmpdir } from 'os';
13
13
  import { basename, dirname, join } from 'path';
14
14
  import { Readable } from 'stream';
15
15
  import { pipeline } from 'stream/promises';
16
- import { createGzip } from 'zlib';
16
+ import { promisify } from 'util';
17
+ import { createGzip, gunzip as gunzipCb, gzip as gzipCb } from 'zlib';
17
18
 
18
19
  import type { FileStore, FileStoreSaveOptions } from './interface.js';
19
20
 
21
+ const gzip = promisify(gzipCb);
22
+ const gunzip = promisify(gunzipCb);
23
+
20
24
  function normalizeBasePath(path: string): string {
21
25
  return path?.replace(/^\/+|\/+$/g, '') ?? '';
22
26
  }
@@ -52,7 +56,7 @@ export class S3FileStore implements FileStore {
52
56
  const key = this.getFullPath(path);
53
57
  const shouldCompress = !!opts.compress;
54
58
 
55
- const body = shouldCompress ? (await import('zlib')).gzipSync(data) : data;
59
+ const body = shouldCompress ? await gzip(data) : data;
56
60
  const contentLength = body.length;
57
61
  const contentType = this.detectContentType(key, shouldCompress);
58
62
  const put = new PutObjectCommand({
@@ -60,6 +64,7 @@ export class S3FileStore implements FileStore {
60
64
  Key: key,
61
65
  Body: body,
62
66
  ContentType: contentType,
67
+ ContentEncoding: shouldCompress ? 'gzip' : undefined,
63
68
  CacheControl: opts.metadata?.['Cache-control'],
64
69
  Metadata: this.extractUserMetadata(opts.metadata),
65
70
  ContentLength: contentLength,
@@ -134,7 +139,11 @@ export class S3FileStore implements FileStore {
134
139
  for await (const chunk of stream) {
135
140
  chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
136
141
  }
137
- return Buffer.concat(chunks);
142
+ const buffer = Buffer.concat(chunks);
143
+ if (out.ContentEncoding === 'gzip') {
144
+ return await gunzip(buffer);
145
+ }
146
+ return buffer;
138
147
  }
139
148
 
140
149
  public async download(pathOrUrlStr: string, destPath: string): Promise<void> {
package/src/hash/hash.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { GeneratorIndex, NULL_MSG_SENDER_CONTRACT_ADDRESS } from '@aztec/constants';
1
+ import { DomainSeparator, NULL_MSG_SENDER_CONTRACT_ADDRESS } from '@aztec/constants';
2
2
  import { poseidon2Hash, poseidon2HashWithSeparator } from '@aztec/foundation/crypto/poseidon';
3
3
  import { sha256ToField } from '@aztec/foundation/crypto/sha256';
4
4
  import { Fr } from '@aztec/foundation/curves/bn254';
@@ -23,7 +23,7 @@ export async function hashVK(keyAsFields: Fr[]): Promise<Fr> {
23
23
  * @returns A note hash nonce.
24
24
  */
25
25
  export function computeNoteHashNonce(nullifierZero: Fr, noteHashIndex: number): Promise<Fr> {
26
- return poseidon2HashWithSeparator([nullifierZero, noteHashIndex], GeneratorIndex.NOTE_HASH_NONCE);
26
+ return poseidon2HashWithSeparator([nullifierZero, noteHashIndex], DomainSeparator.NOTE_HASH_NONCE);
27
27
  }
28
28
 
29
29
  /**
@@ -34,7 +34,7 @@ export function computeNoteHashNonce(nullifierZero: Fr, noteHashIndex: number):
34
34
  * @returns A siloed note hash.
35
35
  */
36
36
  export function siloNoteHash(contract: AztecAddress, noteHash: Fr): Promise<Fr> {
37
- return poseidon2HashWithSeparator([contract, noteHash], GeneratorIndex.SILOED_NOTE_HASH);
37
+ return poseidon2HashWithSeparator([contract, noteHash], DomainSeparator.SILOED_NOTE_HASH);
38
38
  }
39
39
 
40
40
  /**
@@ -44,7 +44,7 @@ export function siloNoteHash(contract: AztecAddress, noteHash: Fr): Promise<Fr>
44
44
  * @returns A unique note hash.
45
45
  */
46
46
  export function computeUniqueNoteHash(noteNonce: Fr, siloedNoteHash: Fr): Promise<Fr> {
47
- return poseidon2HashWithSeparator([noteNonce, siloedNoteHash], GeneratorIndex.UNIQUE_NOTE_HASH);
47
+ return poseidon2HashWithSeparator([noteNonce, siloedNoteHash], DomainSeparator.UNIQUE_NOTE_HASH);
48
48
  }
49
49
 
50
50
  /**
@@ -55,7 +55,7 @@ export function computeUniqueNoteHash(noteNonce: Fr, siloedNoteHash: Fr): Promis
55
55
  * @returns A siloed nullifier.
56
56
  */
57
57
  export function siloNullifier(contract: AztecAddress, innerNullifier: Fr): Promise<Fr> {
58
- return poseidon2HashWithSeparator([contract, innerNullifier], GeneratorIndex.SILOED_NULLIFIER);
58
+ return poseidon2HashWithSeparator([contract, innerNullifier], DomainSeparator.SILOED_NULLIFIER);
59
59
  }
60
60
 
61
61
  /**
@@ -69,6 +69,10 @@ export function computeProtocolNullifier(txRequestHash: Fr): Promise<Fr> {
69
69
  return siloNullifier(AztecAddress.fromBigInt(NULL_MSG_SENDER_CONTRACT_ADDRESS), txRequestHash);
70
70
  }
71
71
 
72
+ export function computeSiloedPrivateLogFirstField(contract: AztecAddress, field: Fr): Promise<Fr> {
73
+ return poseidon2HashWithSeparator([contract, field], DomainSeparator.PRIVATE_LOG_FIRST_FIELD);
74
+ }
75
+
72
76
  /**
73
77
  * Computes a public data tree value ready for insertion.
74
78
  * @param value - Raw public data tree value to hash into a tree-insertion-ready value.
@@ -87,7 +91,7 @@ export function computePublicDataTreeValue(value: Fr): Fr {
87
91
 
88
92
  */
89
93
  export function computePublicDataTreeLeafSlot(contractAddress: AztecAddress, storageSlot: Fr): Promise<Fr> {
90
- return poseidon2HashWithSeparator([contractAddress, storageSlot], GeneratorIndex.PUBLIC_LEAF_SLOT);
94
+ return poseidon2HashWithSeparator([contractAddress, storageSlot], DomainSeparator.PUBLIC_LEAF_SLOT);
91
95
  }
92
96
 
93
97
  /**
@@ -101,7 +105,7 @@ export function computeVarArgsHash(args: Fr[]): Promise<Fr> {
101
105
  return Promise.resolve(Fr.ZERO);
102
106
  }
103
107
 
104
- return poseidon2HashWithSeparator(args, GeneratorIndex.FUNCTION_ARGS);
108
+ return poseidon2HashWithSeparator(args, DomainSeparator.FUNCTION_ARGS);
105
109
  }
106
110
 
107
111
  /**
@@ -110,7 +114,7 @@ export function computeVarArgsHash(args: Fr[]): Promise<Fr> {
110
114
  * @returns Hash of the calldata.
111
115
  */
112
116
  export function computeCalldataHash(calldata: Fr[]): Promise<Fr> {
113
- return poseidon2HashWithSeparator(calldata, GeneratorIndex.PUBLIC_CALLDATA);
117
+ return poseidon2HashWithSeparator(calldata, DomainSeparator.PUBLIC_CALLDATA);
114
118
  }
115
119
 
116
120
  /**
@@ -120,13 +124,13 @@ export function computeCalldataHash(calldata: Fr[]): Promise<Fr> {
120
124
  * @returns The hash
121
125
  */
122
126
  export function computeSecretHash(secret: Fr): Promise<Fr> {
123
- return poseidon2HashWithSeparator([secret], GeneratorIndex.SECRET_HASH);
127
+ return poseidon2HashWithSeparator([secret], DomainSeparator.SECRET_HASH);
124
128
  }
125
129
 
126
130
  export async function computeL1ToL2MessageNullifier(contract: AztecAddress, messageHash: Fr, secret: Fr) {
127
131
  const innerMessageNullifier = await poseidon2HashWithSeparator(
128
132
  [messageHash, secret],
129
- GeneratorIndex.MESSAGE_NULLIFIER,
133
+ DomainSeparator.MESSAGE_NULLIFIER,
130
134
  );
131
135
  return siloNullifier(contract, innerMessageNullifier);
132
136
  }
@@ -1,4 +1,4 @@
1
- import { GeneratorIndex } from '@aztec/constants';
1
+ import { DomainSeparator } from '@aztec/constants';
2
2
  import { poseidon2HashWithSeparator } from '@aztec/foundation/crypto/poseidon';
3
3
  import type { Fr } from '@aztec/foundation/curves/bn254';
4
4
 
@@ -15,5 +15,5 @@ export function deriveStorageSlotInMap(
15
15
  toField: () => Fr;
16
16
  },
17
17
  ): Promise<Fr> {
18
- return poseidon2HashWithSeparator([mapSlot, key.toField()], GeneratorIndex.PUBLIC_STORAGE_MAP_SLOT);
18
+ return poseidon2HashWithSeparator([mapSlot, key.toField()], DomainSeparator.PUBLIC_STORAGE_MAP_SLOT);
19
19
  }
@@ -4,12 +4,14 @@ import type { ApiSchemaFor } from '@aztec/foundation/schemas';
4
4
 
5
5
  import { z } from 'zod';
6
6
 
7
+ import { BlockDataSchema } from '../block/block_data.js';
7
8
  import { BlockHash } from '../block/block_hash.js';
8
9
  import { CheckpointedL2Block } from '../block/checkpointed_l2_block.js';
9
10
  import { L2Block } from '../block/l2_block.js';
10
11
  import { type L2BlockSource, L2TipsSchema } from '../block/l2_block_source.js';
11
12
  import { ValidateCheckpointResultSchema } from '../block/validate_block_result.js';
12
13
  import { Checkpoint } from '../checkpoint/checkpoint.js';
14
+ import { CheckpointDataSchema } from '../checkpoint/checkpoint_data.js';
13
15
  import { PublishedCheckpoint } from '../checkpoint/published_checkpoint.js';
14
16
  import {
15
17
  ContractClassPublicSchema,
@@ -104,6 +106,8 @@ export const ArchiverApiSchema: ApiSchemaFor<ArchiverApi> = {
104
106
  getCheckpointedBlockByArchive: z.function().args(schemas.Fr).returns(CheckpointedL2Block.schema.optional()),
105
107
  getBlockHeaderByHash: z.function().args(BlockHash.schema).returns(BlockHeader.schema.optional()),
106
108
  getBlockHeaderByArchive: z.function().args(schemas.Fr).returns(BlockHeader.schema.optional()),
109
+ getBlockData: z.function().args(BlockNumberSchema).returns(BlockDataSchema.optional()),
110
+ getBlockDataByArchive: z.function().args(schemas.Fr).returns(BlockDataSchema.optional()),
107
111
  getL2Block: z.function().args(BlockNumberSchema).returns(L2Block.schema.optional()),
108
112
  getL2BlockByHash: z.function().args(BlockHash.schema).returns(L2Block.schema.optional()),
109
113
  getL2BlockByArchive: z.function().args(schemas.Fr).returns(L2Block.schema.optional()),
@@ -112,6 +116,7 @@ export const ArchiverApiSchema: ApiSchemaFor<ArchiverApi> = {
112
116
  getL2SlotNumber: z.function().args().returns(schemas.SlotNumber.optional()),
113
117
  getL2EpochNumber: z.function().args().returns(EpochNumberSchema.optional()),
114
118
  getCheckpointsForEpoch: z.function().args(EpochNumberSchema).returns(z.array(Checkpoint.schema)),
119
+ getCheckpointsDataForEpoch: z.function().args(EpochNumberSchema).returns(z.array(CheckpointDataSchema)),
115
120
  getCheckpointedBlocksForEpoch: z.function().args(EpochNumberSchema).returns(z.array(CheckpointedL2Block.schema)),
116
121
  getBlocksForSlot: z.function().args(schemas.SlotNumber).returns(z.array(L2Block.schema)),
117
122
  getCheckpointedBlockHeadersForEpoch: z.function().args(EpochNumberSchema).returns(z.array(BlockHeader.schema)),
@@ -50,6 +50,26 @@ export interface AztecNodeAdmin {
50
50
 
51
51
  /** Returns all offenses applicable for the given round. */
52
52
  getSlashOffenses(round: bigint | 'all' | 'current'): Promise<Offense[]>;
53
+
54
+ /**
55
+ * Reloads keystore configuration from disk.
56
+ *
57
+ * What is updated:
58
+ * - Validator attester keys
59
+ * - Coinbase address per validator
60
+ * - Fee recipient address per validator
61
+ *
62
+ * What is NOT updated (requires node restart):
63
+ * - L1 publisher signers (the funded accounts that send L1 transactions)
64
+ * - Prover keys
65
+ * - HA signer PostgreSQL connections
66
+ *
67
+ * Notes:
68
+ * - New validators must use a publisher key that was already configured at node
69
+ * startup (or omit the publisher field to fall back to the attester key).
70
+ * A validator with an unknown publisher key will cause the reload to be rejected.
71
+ */
72
+ reloadKeystore(): Promise<void>;
53
73
  }
54
74
 
55
75
  // L1 contracts are not mutable via admin updates.
@@ -88,16 +108,19 @@ export const AztecNodeAdminApiSchema: ApiSchemaFor<AztecNodeAdmin> = {
88
108
  .function()
89
109
  .args(z.union([z.bigint(), z.literal('all'), z.literal('current')]))
90
110
  .returns(z.array(OffenseSchema)),
111
+ reloadKeystore: z.function().returns(z.void()),
91
112
  };
92
113
 
93
114
  export function createAztecNodeAdminClient(
94
115
  url: string,
95
116
  versions: Partial<ComponentsVersions> = {},
96
117
  fetch = defaultFetch,
118
+ apiKey?: string,
97
119
  ): AztecNodeAdmin {
98
120
  return createSafeJsonRpcClient<AztecNodeAdmin>(url, AztecNodeAdminApiSchema, {
99
121
  namespaceMethods: 'nodeAdmin',
100
122
  fetch,
101
123
  onResponse: getVersioningResponseHandler(versions),
124
+ ...(apiKey ? { extraHeaders: { 'x-api-key': apiKey } } : {}),
102
125
  });
103
126
  }
@@ -443,7 +443,7 @@ export interface AztecNode
443
443
  /**
444
444
  * Returns true if the transaction is valid for inclusion at the current state. Valid transactions can be
445
445
  * made invalid by *other* transactions if e.g. they emit the same nullifiers, or come become invalid
446
- * due to e.g. the include_by_timestamp property.
446
+ * due to e.g. the expiration_timestamp property.
447
447
  * @param tx - The transaction to validate for correctness.
448
448
  * @param isSimulation - True if the transaction is a simulated one without generated proofs. (Optional)
449
449
  * @param skipFeeEnforcement - True if the validation of the fee should be skipped. Useful when the simulation is for estimating fee (Optional)
@@ -98,6 +98,7 @@ export interface ICheckpointsBuilder {
98
98
  startCheckpoint(
99
99
  checkpointNumber: CheckpointNumber,
100
100
  constants: CheckpointGlobalVariables,
101
+ feeAssetPriceModifier: bigint,
101
102
  l1ToL2Messages: Fr[],
102
103
  previousCheckpointOutHashes: Fr[],
103
104
  fork: MerkleTreeWriteOperations,
@@ -69,6 +69,10 @@ export interface SequencerConfig {
69
69
  buildCheckpointIfEmpty?: boolean;
70
70
  /** Skip pushing proposed blocks to archiver (default: false) */
71
71
  skipPushProposedBlocksToArchiver?: boolean;
72
+ /** Minimum number of blocks required for a checkpoint proposal (test only, defaults to undefined = no minimum) */
73
+ minBlocksForCheckpoint?: number;
74
+ /** Skip publishing checkpoint proposals probability (for testing checkpoint prunes only) */
75
+ skipPublishingCheckpointsPercent?: number;
72
76
  }
73
77
 
74
78
  export const SequencerConfigSchema = zodFor<SequencerConfig>()(
@@ -103,6 +107,8 @@ export const SequencerConfigSchema = zodFor<SequencerConfig>()(
103
107
  blockDurationMs: z.number().positive().optional(),
104
108
  buildCheckpointIfEmpty: z.boolean().optional(),
105
109
  skipPushProposedBlocksToArchiver: z.boolean().optional(),
110
+ minBlocksForCheckpoint: z.number().positive().optional(),
111
+ skipPublishingCheckpointsPercent: z.number().gte(0).lte(100).optional(),
106
112
  }),
107
113
  );
108
114
 
@@ -117,7 +123,8 @@ type SequencerConfigOptionalKeys =
117
123
  | 'fakeThrowAfterProcessingTxCount'
118
124
  | 'l1PublishingTime'
119
125
  | 'txPublicSetupAllowList'
120
- | 'minValidTxsPerBlock';
126
+ | 'minValidTxsPerBlock'
127
+ | 'minBlocksForCheckpoint';
121
128
 
122
129
  export type ResolvedSequencerConfig = Prettify<
123
130
  Required<Omit<SequencerConfig, SequencerConfigOptionalKeys>> & Pick<SequencerConfig, SequencerConfigOptionalKeys>
@@ -254,7 +254,7 @@ export interface MerkleTreeCheckpointOperations {
254
254
  export interface MerkleTreeWriteOperations
255
255
  extends MerkleTreeReadOperations,
256
256
  MerkleTreeCheckpointOperations,
257
- Disposable {
257
+ AsyncDisposable {
258
258
  /**
259
259
  * Appends leaves to a given tree.
260
260
  * @param treeId - The tree to be updated.
@@ -121,6 +121,7 @@ export interface Validator {
121
121
  createCheckpointProposal(
122
122
  checkpointHeader: CheckpointHeader,
123
123
  archive: Fr,
124
+ feeAssetPriceModifier: bigint,
124
125
  lastBlockInfo: CreateCheckpointProposalLastBlockData | undefined,
125
126
  proposerAddress: EthAddress | undefined,
126
127
  options: CheckpointProposalOptions,
@@ -6,10 +6,10 @@ export * from './note_hash_read_request_hints.js';
6
6
  export * from './nullifier_read_request_hints.js';
7
7
  export * from './read_request_hints.js';
8
8
  export * from './key_validation_hint.js';
9
- export * from './key_validation_request_and_generator.js';
9
+ export * from './key_validation_request_and_separator.js';
10
10
  export * from './read_request.js';
11
11
  export * from './key_validation_request.js';
12
- export * from './scoped_key_validation_request_and_generator.js';
12
+ export * from './scoped_key_validation_request_and_separator.js';
13
13
  export * from './transient_data_squashing_hint.js';
14
14
  export * from './private_kernel_reset_hints.js';
15
15
  export * from './tree_leaf_read_request.js';