@aztec/stdlib 0.0.1-commit.8f9871590 → 0.0.1-commit.934299a21

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 (184) 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 +6 -1
  11. package/dest/checkpoint/checkpoint.d.ts.map +1 -1
  12. package/dest/checkpoint/checkpoint.js +5 -4
  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 +11 -2
  20. package/dest/checkpoint/published_checkpoint.d.ts.map +1 -1
  21. package/dest/checkpoint/published_checkpoint.js +1 -2
  22. package/dest/config/sequencer-config.d.ts +2 -2
  23. package/dest/config/sequencer-config.d.ts.map +1 -1
  24. package/dest/config/sequencer-config.js +6 -0
  25. package/dest/contract/contract_address.js +4 -4
  26. package/dest/contract/contract_class.d.ts +2 -3
  27. package/dest/contract/contract_class.d.ts.map +1 -1
  28. package/dest/contract/contract_class_id.js +3 -3
  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/ha-signing/config.d.ts +101 -0
  37. package/dest/ha-signing/config.d.ts.map +1 -0
  38. package/dest/ha-signing/config.js +92 -0
  39. package/dest/ha-signing/index.d.ts +3 -0
  40. package/dest/ha-signing/index.d.ts.map +1 -0
  41. package/dest/ha-signing/index.js +2 -0
  42. package/dest/ha-signing/types.d.ts +85 -0
  43. package/dest/ha-signing/types.d.ts.map +1 -0
  44. package/dest/ha-signing/types.js +32 -0
  45. package/dest/hash/hash.js +11 -11
  46. package/dest/hash/map_slot.js +2 -2
  47. package/dest/interfaces/archiver.d.ts +1 -1
  48. package/dest/interfaces/archiver.d.ts.map +1 -1
  49. package/dest/interfaces/archiver.js +5 -0
  50. package/dest/interfaces/aztec-node-admin.d.ts +30 -2
  51. package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
  52. package/dest/interfaces/aztec-node-admin.js +9 -3
  53. package/dest/interfaces/configs.d.ts +17 -2
  54. package/dest/interfaces/configs.d.ts.map +1 -1
  55. package/dest/interfaces/configs.js +4 -1
  56. package/dest/interfaces/merkle_tree_operations.d.ts +2 -2
  57. package/dest/interfaces/merkle_tree_operations.d.ts.map +1 -1
  58. package/dest/interfaces/validator.d.ts +2 -2
  59. package/dest/interfaces/validator.d.ts.map +1 -1
  60. package/dest/interfaces/validator.js +1 -1
  61. package/dest/kernel/hints/build_note_hash_read_request_hints.d.ts +3 -3
  62. package/dest/kernel/hints/build_note_hash_read_request_hints.d.ts.map +1 -1
  63. package/dest/kernel/hints/build_note_hash_read_request_hints.js +13 -10
  64. package/dest/kernel/hints/build_nullifier_read_request_hints.d.ts +3 -3
  65. package/dest/kernel/hints/build_nullifier_read_request_hints.d.ts.map +1 -1
  66. package/dest/kernel/hints/build_nullifier_read_request_hints.js +13 -10
  67. package/dest/kernel/hints/build_transient_data_hints.d.ts +5 -2
  68. package/dest/kernel/hints/build_transient_data_hints.d.ts.map +1 -1
  69. package/dest/kernel/hints/build_transient_data_hints.js +9 -3
  70. package/dest/kernel/hints/index.d.ts +2 -2
  71. package/dest/kernel/hints/index.js +2 -2
  72. package/dest/kernel/hints/key_validation_request_and_separator.d.ts +24 -0
  73. package/dest/kernel/hints/key_validation_request_and_separator.d.ts.map +1 -0
  74. package/dest/kernel/hints/{key_validation_request_and_generator.js → key_validation_request_and_separator.js} +12 -15
  75. package/dest/kernel/hints/{scoped_key_validation_request_and_generator.d.ts → scoped_key_validation_request_and_separator.d.ts} +8 -8
  76. package/dest/kernel/hints/{scoped_key_validation_request_and_generator.d.ts.map → scoped_key_validation_request_and_separator.d.ts.map} +1 -1
  77. package/dest/kernel/hints/{scoped_key_validation_request_and_generator.js → scoped_key_validation_request_and_separator.js} +6 -6
  78. package/dest/kernel/private_circuit_public_inputs.d.ts +6 -6
  79. package/dest/kernel/private_circuit_public_inputs.js +11 -11
  80. package/dest/kernel/private_to_public_kernel_circuit_public_inputs.js +2 -2
  81. package/dest/kernel/private_to_rollup_kernel_circuit_public_inputs.js +2 -2
  82. package/dest/kernel/private_validation_requests.d.ts +3 -3
  83. package/dest/kernel/private_validation_requests.js +9 -9
  84. package/dest/keys/derivation.js +8 -8
  85. package/dest/keys/key_types.d.ts +3 -3
  86. package/dest/keys/key_types.d.ts.map +1 -1
  87. package/dest/keys/public_keys.js +2 -2
  88. package/dest/keys/utils.js +5 -5
  89. package/dest/logs/debug_log_store.d.ts +30 -0
  90. package/dest/logs/debug_log_store.d.ts.map +1 -0
  91. package/dest/logs/debug_log_store.js +30 -0
  92. package/dest/logs/index.d.ts +2 -1
  93. package/dest/logs/index.d.ts.map +1 -1
  94. package/dest/logs/index.js +1 -0
  95. package/dest/logs/private_log.d.ts +2 -2
  96. package/dest/logs/private_log.d.ts.map +1 -1
  97. package/dest/p2p/attestation_utils.d.ts +11 -1
  98. package/dest/p2p/attestation_utils.d.ts.map +1 -1
  99. package/dest/p2p/attestation_utils.js +45 -0
  100. package/dest/p2p/block_proposal.d.ts +2 -2
  101. package/dest/p2p/block_proposal.d.ts.map +1 -1
  102. package/dest/p2p/block_proposal.js +2 -4
  103. package/dest/p2p/checkpoint_proposal.d.ts +2 -2
  104. package/dest/p2p/checkpoint_proposal.d.ts.map +1 -1
  105. package/dest/p2p/checkpoint_proposal.js +1 -1
  106. package/dest/rollup/checkpoint_header.d.ts +2 -2
  107. package/dest/rollup/checkpoint_header.js +2 -2
  108. package/dest/tests/factories.js +10 -10
  109. package/dest/tests/mocks.d.ts +2 -2
  110. package/dest/tests/mocks.d.ts.map +1 -1
  111. package/dest/tests/mocks.js +5 -5
  112. package/dest/tx/block_header.js +2 -2
  113. package/dest/tx/global_variables.d.ts +4 -4
  114. package/dest/tx/global_variables.d.ts.map +1 -1
  115. package/dest/tx/profiling.d.ts +4 -4
  116. package/dest/tx/profiling.d.ts.map +1 -1
  117. package/dest/tx/profiling.js +3 -3
  118. package/dest/tx/protocol_contracts.d.ts +1 -1
  119. package/dest/tx/protocol_contracts.d.ts.map +1 -1
  120. package/dest/tx/protocol_contracts.js +2 -2
  121. package/dest/tx/public_simulation_output.d.ts +4 -2
  122. package/dest/tx/public_simulation_output.d.ts.map +1 -1
  123. package/dest/tx/public_simulation_output.js +7 -3
  124. package/dest/tx/tx_receipt.d.ts +16 -2
  125. package/dest/tx/tx_receipt.d.ts.map +1 -1
  126. package/dest/tx/tx_receipt.js +11 -3
  127. package/dest/tx/tx_request.js +2 -2
  128. package/package.json +9 -9
  129. package/src/auth_witness/auth_witness.ts +3 -3
  130. package/src/block/block_data.ts +26 -0
  131. package/src/block/index.ts +1 -0
  132. package/src/block/l2_block_source.ts +22 -0
  133. package/src/checkpoint/checkpoint.ts +5 -3
  134. package/src/checkpoint/checkpoint_data.ts +51 -0
  135. package/src/checkpoint/index.ts +1 -0
  136. package/src/checkpoint/published_checkpoint.ts +3 -1
  137. package/src/config/sequencer-config.ts +11 -1
  138. package/src/contract/contract_address.ts +4 -4
  139. package/src/contract/contract_class.ts +3 -3
  140. package/src/contract/contract_class_id.ts +3 -3
  141. package/src/contract/private_function.ts +2 -2
  142. package/src/file-store/local.ts +15 -5
  143. package/src/file-store/s3.ts +12 -3
  144. package/src/ha-signing/config.ts +149 -0
  145. package/src/ha-signing/index.ts +18 -0
  146. package/src/ha-signing/types.ts +112 -0
  147. package/src/hash/hash.ts +11 -11
  148. package/src/hash/map_slot.ts +2 -2
  149. package/src/interfaces/archiver.ts +5 -0
  150. package/src/interfaces/aztec-node-admin.ts +23 -0
  151. package/src/interfaces/configs.ts +12 -1
  152. package/src/interfaces/merkle_tree_operations.ts +1 -1
  153. package/src/interfaces/validator.ts +1 -1
  154. package/src/kernel/hints/build_note_hash_read_request_hints.ts +14 -18
  155. package/src/kernel/hints/build_nullifier_read_request_hints.ts +15 -18
  156. package/src/kernel/hints/build_transient_data_hints.ts +17 -2
  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 +10 -10
  161. package/src/kernel/private_to_public_kernel_circuit_public_inputs.ts +2 -2
  162. package/src/kernel/private_to_rollup_kernel_circuit_public_inputs.ts +2 -2
  163. package/src/kernel/private_validation_requests.ts +8 -8
  164. package/src/keys/derivation.ts +8 -8
  165. package/src/keys/key_types.ts +6 -2
  166. package/src/keys/public_keys.ts +2 -2
  167. package/src/keys/utils.ts +5 -5
  168. package/src/logs/debug_log_store.ts +54 -0
  169. package/src/logs/index.ts +1 -0
  170. package/src/p2p/attestation_utils.ts +56 -0
  171. package/src/p2p/block_proposal.ts +1 -3
  172. package/src/p2p/checkpoint_proposal.ts +1 -1
  173. package/src/rollup/checkpoint_header.ts +2 -2
  174. package/src/tests/factories.ts +11 -11
  175. package/src/tests/mocks.ts +7 -3
  176. package/src/tx/block_header.ts +2 -2
  177. package/src/tx/global_variables.ts +3 -3
  178. package/src/tx/profiling.ts +5 -5
  179. package/src/tx/protocol_contracts.ts +2 -2
  180. package/src/tx/public_simulation_output.ts +4 -0
  181. package/src/tx/tx_receipt.ts +10 -0
  182. package/src/tx/tx_request.ts +2 -2
  183. package/dest/kernel/hints/key_validation_request_and_generator.d.ts +0 -30
  184. package/dest/kernel/hints/key_validation_request_and_generator.d.ts.map +0 -1
@@ -33,3 +33,59 @@ export function orderAttestations(
33
33
 
34
34
  return orderedAttestations;
35
35
  }
36
+
37
+ /**
38
+ * Trims attestations to the minimum required number to save L1 calldata gas.
39
+ * Each signature costs 65 bytes of calldata vs 20 bytes for just an address.
40
+ *
41
+ * Priority order for keeping attestations:
42
+ * 1. The proposer's attestation (required by L1 contract - MissingProposerSignature revert)
43
+ * 2. Attestations from the local node's validator keys
44
+ * 3. Remaining attestations filled to reach the required count
45
+ */
46
+ export function trimAttestations(
47
+ attestations: CheckpointAttestation[],
48
+ required: number,
49
+ proposerAddress: EthAddress,
50
+ localAddresses: EthAddress[],
51
+ ): CheckpointAttestation[] {
52
+ if (attestations.length <= required) {
53
+ return attestations;
54
+ }
55
+
56
+ const proposerAttestation: CheckpointAttestation[] = [];
57
+ const localAttestations: CheckpointAttestation[] = [];
58
+ const otherAttestations: CheckpointAttestation[] = [];
59
+
60
+ for (const attestation of attestations) {
61
+ const sender = attestation.getSender();
62
+ if (!sender) {
63
+ continue;
64
+ }
65
+ if (sender.equals(proposerAddress)) {
66
+ proposerAttestation.push(attestation);
67
+ } else if (localAddresses.some(addr => addr.equals(sender))) {
68
+ localAttestations.push(attestation);
69
+ } else {
70
+ otherAttestations.push(attestation);
71
+ }
72
+ }
73
+
74
+ const result: CheckpointAttestation[] = [...proposerAttestation];
75
+
76
+ for (const att of localAttestations) {
77
+ if (result.length >= required) {
78
+ break;
79
+ }
80
+ result.push(att);
81
+ }
82
+
83
+ for (const att of otherAttestations) {
84
+ if (result.length >= required) {
85
+ break;
86
+ }
87
+ result.push(att);
88
+ }
89
+
90
+ return result;
91
+ }
@@ -6,11 +6,11 @@ import { Fr } from '@aztec/foundation/curves/bn254';
6
6
  import type { EthAddress } from '@aztec/foundation/eth-address';
7
7
  import { Signature } from '@aztec/foundation/eth-signature';
8
8
  import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
9
- import { DutyType, type SigningContext } from '@aztec/validator-ha-signer/types';
10
9
 
11
10
  import type { L2Block } from '../block/l2_block.js';
12
11
  import type { L2BlockInfo } from '../block/l2_block_info.js';
13
12
  import { MAX_TXS_PER_BLOCK } from '../deserialization/index.js';
13
+ import { DutyType, type SigningContext } from '../ha-signing/index.js';
14
14
  import { BlockHeader } from '../tx/block_header.js';
15
15
  import { TxHash } from '../tx/index.js';
16
16
  import type { Tx } from '../tx/tx.js';
@@ -56,8 +56,6 @@ export class BlockProposal extends Gossipable {
56
56
  /** The per-block header containing block state and global variables */
57
57
  public readonly blockHeader: BlockHeader,
58
58
 
59
- // TODO(palla/mbps): Is this really needed? Can we just derive it from the indexWithinCheckpoint of the parent block and the slot number?
60
- // See the block-proposal-handler, we have a lot of extra validations to check this is correct, so maybe we can avoid storing it here.
61
59
  /** Index of this block within the checkpoint (0-indexed) */
62
60
  public readonly indexWithinCheckpoint: IndexWithinCheckpoint,
63
61
 
@@ -6,10 +6,10 @@ import { Fr } from '@aztec/foundation/curves/bn254';
6
6
  import type { EthAddress } from '@aztec/foundation/eth-address';
7
7
  import { Signature } from '@aztec/foundation/eth-signature';
8
8
  import { BufferReader, serializeSignedBigInt, serializeToBuffer } from '@aztec/foundation/serialize';
9
- import { DutyType, type SigningContext } from '@aztec/validator-ha-signer/types';
10
9
 
11
10
  import type { L2BlockInfo } from '../block/l2_block_info.js';
12
11
  import { MAX_TXS_PER_BLOCK } from '../deserialization/index.js';
12
+ import { DutyType, type SigningContext } from '../ha-signing/index.js';
13
13
  import { CheckpointHeader } from '../rollup/checkpoint_header.js';
14
14
  import { BlockHeader } from '../tx/block_header.js';
15
15
  import { TxHash } from '../tx/index.js';
@@ -19,8 +19,8 @@ import type { UInt64 } from '../types/shared.js';
19
19
 
20
20
  /**
21
21
  * Header of a checkpoint. A checkpoint is a collection of blocks submitted to L1 all within the same slot.
22
- * TODO(palla/mbps): Should this include chainId and version as well? Is this used just in circuits?
23
- * TODO(palla/mbps): What about CheckpointNumber?
22
+ * This header is verified as-is in the rollup circuits, posted to the L1 rollup contract, stored in the archiver,
23
+ * and exposed via the Aztec Node API. See `CheckpointData` for a struct that includes the header plus extra metadata.
24
24
  */
25
25
  export class CheckpointHeader {
26
26
  constructor(
@@ -9,7 +9,7 @@ import {
9
9
  AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED,
10
10
  CHONK_PROOF_LENGTH,
11
11
  CONTRACT_CLASS_LOG_SIZE_IN_FIELDS,
12
- GeneratorIndex,
12
+ DomainSeparator,
13
13
  L1_TO_L2_MSG_SUBTREE_ROOT_SIBLING_PATH_LENGTH,
14
14
  MAX_CHECKPOINTS_PER_EPOCH,
15
15
  MAX_CONTRACT_CLASS_LOGS_PER_TX,
@@ -102,7 +102,7 @@ import {
102
102
  import { Gas, GasFees, GasSettings } from '../gas/index.js';
103
103
  import { computeCalldataHash } from '../hash/hash.js';
104
104
  import { KeyValidationRequest } from '../kernel/hints/key_validation_request.js';
105
- import { KeyValidationRequestAndGenerator } from '../kernel/hints/key_validation_request_and_generator.js';
105
+ import { KeyValidationRequestAndSeparator } from '../kernel/hints/key_validation_request_and_separator.js';
106
106
  import { ReadRequest, ScopedReadRequest } from '../kernel/hints/read_request.js';
107
107
  import {
108
108
  ClaimedLengthArray,
@@ -259,12 +259,12 @@ function makeKeyValidationRequests(seed: number): KeyValidationRequest {
259
259
  }
260
260
 
261
261
  /**
262
- * Creates arbitrary KeyValidationRequestAndGenerator from the given seed.
263
- * @param seed - The seed to use for generating the KeyValidationRequestAndGenerator.
264
- * @returns A KeyValidationRequestAndGenerator.
262
+ * Creates arbitrary KeyValidationRequestAndSeparator from the given seed.
263
+ * @param seed - The seed to use for generating the KeyValidationRequestAndSeparator.
264
+ * @returns A KeyValidationRequestAndSeparator.
265
265
  */
266
- function makeKeyValidationRequestAndGenerators(seed: number): KeyValidationRequestAndGenerator {
267
- return new KeyValidationRequestAndGenerator(makeKeyValidationRequests(seed), fr(seed + 4));
266
+ function makeKeyValidationRequestAndSeparators(seed: number): KeyValidationRequestAndSeparator {
267
+ return new KeyValidationRequestAndSeparator(makeKeyValidationRequests(seed), fr(seed + 4));
268
268
  }
269
269
 
270
270
  export function makePublicDataWrite(seed = 1) {
@@ -671,9 +671,9 @@ export function makePrivateCircuitPublicInputs(seed = 0): PrivateCircuitPublicIn
671
671
  makeScopedReadRequest,
672
672
  seed + 0x310,
673
673
  ),
674
- keyValidationRequestsAndGenerators: makeClaimedLengthArray(
674
+ keyValidationRequestsAndSeparators: makeClaimedLengthArray(
675
675
  MAX_KEY_VALIDATION_REQUESTS_PER_CALL,
676
- makeKeyValidationRequestAndGenerators,
676
+ makeKeyValidationRequestAndSeparators,
677
677
  seed + 0x320,
678
678
  ),
679
679
  noteHashes: makeClaimedLengthArray(MAX_NOTE_HASHES_PER_CALL, makeNoteHash, seed + 0x400),
@@ -1287,11 +1287,11 @@ export async function makeContractInstanceFromClassId(
1287
1287
 
1288
1288
  const saltedInitializationHash = await poseidon2HashWithSeparator(
1289
1289
  [salt, initializationHash, deployer],
1290
- GeneratorIndex.PARTIAL_ADDRESS,
1290
+ DomainSeparator.PARTIAL_ADDRESS,
1291
1291
  );
1292
1292
  const partialAddress = await poseidon2HashWithSeparator(
1293
1293
  [classId, saltedInitializationHash],
1294
- GeneratorIndex.PARTIAL_ADDRESS,
1294
+ DomainSeparator.PARTIAL_ADDRESS,
1295
1295
  );
1296
1296
  const address = await computeAddress(publicKeys, partialAddress);
1297
1297
  return new SerializableContractInstance({
@@ -1,10 +1,11 @@
1
1
  import {
2
- FIXED_DA_GAS,
3
- FIXED_L2_GAS,
4
2
  MAX_ENQUEUED_CALLS_PER_TX,
5
3
  MAX_NULLIFIERS_PER_TX,
6
4
  MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
7
5
  MAX_TX_LIFETIME,
6
+ PRIVATE_TX_L2_GAS_OVERHEAD,
7
+ PUBLIC_TX_L2_GAS_OVERHEAD,
8
+ TX_DA_GAS_OVERHEAD,
8
9
  } from '@aztec/constants';
9
10
  import { type FieldsOf, makeTuple } from '@aztec/foundation/array';
10
11
  import { BlockNumber, CheckpointNumber, IndexWithinCheckpoint, SlotNumber } from '@aztec/foundation/branded-types';
@@ -205,8 +206,11 @@ export async function mockProcessedTx({
205
206
  feePayer,
206
207
  feePaymentPublicDataWrite,
207
208
  // The default gasUsed is the tx overhead.
208
- gasUsed = Gas.from({ daGas: FIXED_DA_GAS, l2Gas: FIXED_L2_GAS }),
209
209
  privateOnly = false,
210
+ gasUsed = Gas.from({
211
+ daGas: TX_DA_GAS_OVERHEAD,
212
+ l2Gas: privateOnly ? PRIVATE_TX_L2_GAS_OVERHEAD : PUBLIC_TX_L2_GAS_OVERHEAD,
213
+ }),
210
214
  avmAccumulatedData,
211
215
  ...mockTxOpts
212
216
  }: {
@@ -1,4 +1,4 @@
1
- import { BLOCK_HEADER_LENGTH, GeneratorIndex } from '@aztec/constants';
1
+ import { BLOCK_HEADER_LENGTH, DomainSeparator } from '@aztec/constants';
2
2
  import { BlockNumber, SlotNumber } from '@aztec/foundation/branded-types';
3
3
  import { poseidon2HashWithSeparator } from '@aztec/foundation/crypto/poseidon';
4
4
  import { randomInt } from '@aztec/foundation/crypto/random';
@@ -164,7 +164,7 @@ export class BlockHeader {
164
164
 
165
165
  hash(): Promise<BlockHash> {
166
166
  if (!this._cachedHash) {
167
- this._cachedHash = poseidon2HashWithSeparator(this.toFields(), GeneratorIndex.BLOCK_HEADER_HASH).then(
167
+ this._cachedHash = poseidon2HashWithSeparator(this.toFields(), DomainSeparator.BLOCK_HEADER_HASH).then(
168
168
  fr => new BlockHash(fr),
169
169
  );
170
170
  }
@@ -22,10 +22,10 @@ import { schemas } from '../schemas/index.js';
22
22
  import type { UInt64 } from '../types/index.js';
23
23
 
24
24
  /**
25
- * Global variables that are constant across the entire slot.
26
- * TODO(palla/mbps): Should timestamp be included here as well?
25
+ * Global variables that are constant across the entire checkpoint (slot).
26
+ * Excludes blockNumber since that varies per block within a checkpoint.
27
27
  */
28
- export type CheckpointGlobalVariables = Omit<FieldsOf<GlobalVariables>, 'blockNumber' | 'timestamp'>;
28
+ export type CheckpointGlobalVariables = Omit<FieldsOf<GlobalVariables>, 'blockNumber'>;
29
29
 
30
30
  /**
31
31
  * Global variables of the L2 block.
@@ -157,23 +157,23 @@ export class TxProfileResult {
157
157
  }
158
158
  }
159
159
 
160
- export class UtilitySimulationResult {
160
+ export class UtilityExecutionResult {
161
161
  constructor(
162
162
  public result: Fr[],
163
163
  public stats?: SimulationStats,
164
164
  ) {}
165
165
 
166
- static get schema(): ZodFor<UtilitySimulationResult> {
166
+ static get schema(): ZodFor<UtilityExecutionResult> {
167
167
  return z
168
168
  .object({
169
169
  result: z.array(schemas.Fr),
170
170
  stats: optional(SimulationStatsSchema),
171
171
  })
172
- .transform(({ result, stats }) => new UtilitySimulationResult(result, stats));
172
+ .transform(({ result, stats }) => new UtilityExecutionResult(result, stats));
173
173
  }
174
174
 
175
- static random(): UtilitySimulationResult {
176
- return new UtilitySimulationResult([Fr.random()], {
175
+ static random(): UtilityExecutionResult {
176
+ return new UtilityExecutionResult([Fr.random()], {
177
177
  nodeRPCCalls: {
178
178
  perMethod: { getBlockHeader: { times: [1] } },
179
179
  roundTrips: {
@@ -1,4 +1,4 @@
1
- import { GeneratorIndex, MAX_PROTOCOL_CONTRACTS } from '@aztec/constants';
1
+ import { DomainSeparator, MAX_PROTOCOL_CONTRACTS } from '@aztec/constants';
2
2
  import { makeTuple } from '@aztec/foundation/array';
3
3
  import { arraySerializedSizeOfNonEmpty } from '@aztec/foundation/collection';
4
4
  import { poseidon2HashWithSeparator } from '@aztec/foundation/crypto/poseidon';
@@ -71,7 +71,7 @@ export class ProtocolContracts {
71
71
  }
72
72
 
73
73
  hash() {
74
- return poseidon2HashWithSeparator(this.derivedAddresses, GeneratorIndex.PROTOCOL_CONTRACTS);
74
+ return poseidon2HashWithSeparator(this.derivedAddresses, DomainSeparator.PROTOCOL_CONTRACTS);
75
75
  }
76
76
 
77
77
  static get schema() {
@@ -7,6 +7,7 @@ import { z } from 'zod';
7
7
  import { SimulationError } from '../errors/simulation_error.js';
8
8
  import { Gas } from '../gas/gas.js';
9
9
  import type { GasUsed } from '../gas/gas_used.js';
10
+ import { DebugLog } from '../logs/debug_log.js';
10
11
  import { NullishToUndefined } from '../schemas/schemas.js';
11
12
  import { TxEffect } from '../tx/tx_effect.js';
12
13
  import { GlobalVariables } from './global_variables.js';
@@ -71,6 +72,7 @@ export class PublicSimulationOutput {
71
72
  public txEffect: TxEffect,
72
73
  public publicReturnValues: NestedProcessReturnValues[],
73
74
  public gasUsed: GasUsed,
75
+ public debugLogs: DebugLog[] = [],
74
76
  ) {}
75
77
 
76
78
  static get schema(): ZodFor<PublicSimulationOutput> {
@@ -86,6 +88,7 @@ export class PublicSimulationOutput {
86
88
  publicGas: Gas.schema,
87
89
  billedGas: Gas.schema,
88
90
  }),
91
+ debugLogs: z.array(DebugLog.schema).default([]),
89
92
  })
90
93
  .transform(
91
94
  fields =>
@@ -95,6 +98,7 @@ export class PublicSimulationOutput {
95
98
  fields.txEffect,
96
99
  fields.publicReturnValues,
97
100
  fields.gasUsed,
101
+ fields.debugLogs,
98
102
  ),
99
103
  );
100
104
  }
@@ -4,6 +4,7 @@ import { z } from 'zod';
4
4
 
5
5
  import { RevertCode } from '../avm/revert_code.js';
6
6
  import { BlockHash } from '../block/block_hash.js';
7
+ import { DebugLog } from '../logs/debug_log.js';
7
8
  import { type ZodFor, schemas } from '../schemas/schemas.js';
8
9
  import { TxHash } from './tx_hash.js';
9
10
 
@@ -57,6 +58,12 @@ export class TxReceipt {
57
58
  public blockHash?: BlockHash,
58
59
  /** The block number in which the transaction was included. */
59
60
  public blockNumber?: BlockNumber,
61
+ /**
62
+ * Debug logs collected during public function execution. Served only when the node is in test mode and placed on
63
+ * the receipt only because it's a convenient place for it (the logs are printed out by the wallet when a mined
64
+ * tx receipt is obtained).
65
+ */
66
+ public debugLogs?: DebugLog[],
60
67
  ) {}
61
68
 
62
69
  /** Returns true if the transaction was executed successfully. */
@@ -103,6 +110,7 @@ export class TxReceipt {
103
110
  blockHash: BlockHash.schema.optional(),
104
111
  blockNumber: BlockNumberSchema.optional(),
105
112
  transactionFee: schemas.BigInt.optional(),
113
+ debugLogs: z.array(DebugLog.schema).optional(),
106
114
  })
107
115
  .transform(fields => TxReceipt.from(fields));
108
116
  }
@@ -115,6 +123,7 @@ export class TxReceipt {
115
123
  transactionFee?: bigint;
116
124
  blockHash?: BlockHash;
117
125
  blockNumber?: BlockNumber;
126
+ debugLogs?: DebugLog[];
118
127
  }) {
119
128
  return new TxReceipt(
120
129
  fields.txHash,
@@ -124,6 +133,7 @@ export class TxReceipt {
124
133
  fields.transactionFee,
125
134
  fields.blockHash,
126
135
  fields.blockNumber,
136
+ fields.debugLogs,
127
137
  );
128
138
  }
129
139
 
@@ -1,4 +1,4 @@
1
- import { GeneratorIndex, TX_REQUEST_LENGTH } from '@aztec/constants';
1
+ import { DomainSeparator, TX_REQUEST_LENGTH } from '@aztec/constants';
2
2
  import { poseidon2HashWithSeparator } from '@aztec/foundation/crypto/poseidon';
3
3
  import { Fr } from '@aztec/foundation/curves/bn254';
4
4
  import { BufferReader, serializeToBuffer, serializeToFields } from '@aztec/foundation/serialize';
@@ -68,7 +68,7 @@ export class TxRequest {
68
68
  }
69
69
 
70
70
  hash() {
71
- return poseidon2HashWithSeparator(this.toFields(), GeneratorIndex.TX_REQUEST);
71
+ return poseidon2HashWithSeparator(this.toFields(), DomainSeparator.TX_REQUEST);
72
72
  }
73
73
 
74
74
  static empty() {
@@ -1,30 +0,0 @@
1
- import { Fr } from '@aztec/foundation/curves/bn254';
2
- import { BufferReader, FieldReader } from '@aztec/foundation/serialize';
3
- import { KeyValidationRequest } from './key_validation_request.js';
4
- /**
5
- * Request for validating keys used in the app and a generator.
6
- */
7
- export declare class KeyValidationRequestAndGenerator {
8
- /** The key validation request. */
9
- readonly request: KeyValidationRequest;
10
- /**
11
- * The generator index which can be used along with sk_m to derive the sk_app stored in the request.
12
- * Note: This generator constrains that a correct key type gets validated in the kernel.
13
- */
14
- readonly skAppGenerator: Fr;
15
- constructor(
16
- /** The key validation request. */
17
- request: KeyValidationRequest,
18
- /**
19
- * The generator index which can be used along with sk_m to derive the sk_app stored in the request.
20
- * Note: This generator constrains that a correct key type gets validated in the kernel.
21
- */
22
- skAppGenerator: Fr);
23
- toBuffer(): Buffer<ArrayBufferLike>;
24
- static fromBuffer(buffer: Buffer | BufferReader): KeyValidationRequestAndGenerator;
25
- toFields(): Fr[];
26
- static fromFields(fields: Fr[] | FieldReader): KeyValidationRequestAndGenerator;
27
- isEmpty(): boolean;
28
- static empty(): KeyValidationRequestAndGenerator;
29
- }
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5X3ZhbGlkYXRpb25fcmVxdWVzdF9hbmRfZ2VuZXJhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMva2VybmVsL2hpbnRzL2tleV92YWxpZGF0aW9uX3JlcXVlc3RfYW5kX2dlbmVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQXFCLE1BQU0sNkJBQTZCLENBQUM7QUFFM0YsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFbkU7O0dBRUc7QUFDSCxxQkFBYSxnQ0FBZ0M7SUFFekMsa0NBQWtDO2FBQ2xCLE9BQU8sRUFBRSxvQkFBb0I7SUFDN0M7OztPQUdHO2FBQ2EsY0FBYyxFQUFFLEVBQUU7SUFQcEM7SUFDRSxrQ0FBa0M7SUFDbEIsT0FBTyxFQUFFLG9CQUFvQjtJQUM3Qzs7O09BR0c7SUFDYSxjQUFjLEVBQUUsRUFBRSxFQUNoQztJQUVKLFFBQVEsNEJBRVA7SUFFRCxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsWUFBWSxvQ0FHOUM7SUFFRCxRQUFRLElBQUksRUFBRSxFQUFFLENBUWY7SUFFRCxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxXQUFXLEdBQUcsZ0NBQWdDLENBRzlFO0lBRUQsT0FBTyxZQUVOO0lBRUQsTUFBTSxDQUFDLEtBQUsscUNBRVg7Q0FDRiJ9
@@ -1 +0,0 @@
1
- {"version":3,"file":"key_validation_request_and_generator.d.ts","sourceRoot":"","sources":["../../../src/kernel/hints/key_validation_request_and_generator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAqB,MAAM,6BAA6B,CAAC;AAE3F,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE;;GAEG;AACH,qBAAa,gCAAgC;IAEzC,kCAAkC;aAClB,OAAO,EAAE,oBAAoB;IAC7C;;;OAGG;aACa,cAAc,EAAE,EAAE;IAPpC;IACE,kCAAkC;IAClB,OAAO,EAAE,oBAAoB;IAC7C;;;OAGG;IACa,cAAc,EAAE,EAAE,EAChC;IAEJ,QAAQ,4BAEP;IAED,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,oCAG9C;IAED,QAAQ,IAAI,EAAE,EAAE,CAQf;IAED,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,GAAG,gCAAgC,CAG9E;IAED,OAAO,YAEN;IAED,MAAM,CAAC,KAAK,qCAEX;CACF"}