@aztec/stdlib 0.0.1-commit.6c91f13 → 0.0.1-commit.6d3c34e

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 (240) hide show
  1. package/dest/abi/contract_artifact.d.ts +2 -2
  2. package/dest/abi/contract_artifact.d.ts.map +1 -1
  3. package/dest/abi/contract_artifact.js +1 -1
  4. package/dest/abi/selector.js +3 -1
  5. package/dest/avm/avm_accumulated_data.js +5 -2
  6. package/dest/avm/avm_circuit_public_inputs.js +3 -1
  7. package/dest/avm/public_data_update_request.js +3 -1
  8. package/dest/avm/public_inner_call_request.js +3 -1
  9. package/dest/avm/revert_code.js +3 -1
  10. package/dest/aztec-address/index.js +4 -2
  11. package/dest/block/attestation_info.d.ts +5 -5
  12. package/dest/block/attestation_info.d.ts.map +1 -1
  13. package/dest/block/attestation_info.js +4 -4
  14. package/dest/block/body.js +3 -1
  15. package/dest/block/l2_block.d.ts +6 -3
  16. package/dest/block/l2_block.d.ts.map +1 -1
  17. package/dest/block/l2_block.js +6 -4
  18. package/dest/block/l2_block_code_to_purge.d.ts +2 -3
  19. package/dest/block/l2_block_code_to_purge.d.ts.map +1 -1
  20. package/dest/block/l2_block_code_to_purge.js +2 -8
  21. package/dest/block/l2_block_header.d.ts +8 -12
  22. package/dest/block/l2_block_header.d.ts.map +1 -1
  23. package/dest/block/l2_block_header.js +25 -18
  24. package/dest/block/l2_block_new.d.ts +1 -2
  25. package/dest/block/l2_block_new.d.ts.map +1 -1
  26. package/dest/block/l2_block_new.js +4 -1
  27. package/dest/block/l2_block_source.d.ts +245 -41
  28. package/dest/block/l2_block_source.d.ts.map +1 -1
  29. package/dest/block/l2_block_source.js +23 -5
  30. package/dest/block/l2_block_stream/index.d.ts +2 -1
  31. package/dest/block/l2_block_stream/index.d.ts.map +1 -1
  32. package/dest/block/l2_block_stream/index.js +1 -0
  33. package/dest/block/l2_block_stream/interfaces.d.ts +12 -5
  34. package/dest/block/l2_block_stream/interfaces.d.ts.map +1 -1
  35. package/dest/block/l2_block_stream/l2_block_stream.d.ts +4 -2
  36. package/dest/block/l2_block_stream/l2_block_stream.d.ts.map +1 -1
  37. package/dest/block/l2_block_stream/l2_block_stream.js +102 -30
  38. package/dest/block/l2_block_stream/l2_tips_memory_store.d.ts +24 -16
  39. package/dest/block/l2_block_stream/l2_tips_memory_store.d.ts.map +1 -1
  40. package/dest/block/l2_block_stream/l2_tips_memory_store.js +55 -61
  41. package/dest/block/l2_block_stream/l2_tips_store_base.d.ts +49 -0
  42. package/dest/block/l2_block_stream/l2_tips_store_base.d.ts.map +1 -0
  43. package/dest/block/l2_block_stream/l2_tips_store_base.js +179 -0
  44. package/dest/block/test/l2_tips_store_test_suite.d.ts +1 -1
  45. package/dest/block/test/l2_tips_store_test_suite.d.ts.map +1 -1
  46. package/dest/block/test/l2_tips_store_test_suite.js +483 -38
  47. package/dest/block/validate_block_result.d.ts +24 -24
  48. package/dest/block/validate_block_result.d.ts.map +1 -1
  49. package/dest/block/validate_block_result.js +13 -13
  50. package/dest/checkpoint/checkpoint.d.ts +1 -1
  51. package/dest/checkpoint/checkpoint.d.ts.map +1 -1
  52. package/dest/checkpoint/checkpoint.js +1 -0
  53. package/dest/checkpoint/checkpoint_info.d.ts +32 -3
  54. package/dest/checkpoint/checkpoint_info.d.ts.map +1 -1
  55. package/dest/checkpoint/checkpoint_info.js +34 -1
  56. package/dest/checkpoint/index.d.ts +2 -1
  57. package/dest/checkpoint/index.d.ts.map +1 -1
  58. package/dest/checkpoint/index.js +1 -0
  59. package/dest/database-version/version_manager.js +3 -1
  60. package/dest/gas/gas.js +3 -1
  61. package/dest/gas/gas_fees.js +3 -1
  62. package/dest/interfaces/api_limit.d.ts +2 -1
  63. package/dest/interfaces/api_limit.d.ts.map +1 -1
  64. package/dest/interfaces/api_limit.js +1 -0
  65. package/dest/interfaces/archiver.d.ts +6 -6
  66. package/dest/interfaces/archiver.d.ts.map +1 -1
  67. package/dest/interfaces/archiver.js +6 -4
  68. package/dest/interfaces/aztec-node-admin.d.ts +12 -6
  69. package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
  70. package/dest/interfaces/aztec-node-admin.js +2 -2
  71. package/dest/interfaces/aztec-node.d.ts +11 -10
  72. package/dest/interfaces/aztec-node.d.ts.map +1 -1
  73. package/dest/interfaces/aztec-node.js +10 -5
  74. package/dest/interfaces/configs.d.ts +6 -1
  75. package/dest/interfaces/configs.d.ts.map +1 -1
  76. package/dest/interfaces/configs.js +2 -1
  77. package/dest/interfaces/p2p.d.ts +7 -9
  78. package/dest/interfaces/p2p.d.ts.map +1 -1
  79. package/dest/interfaces/p2p.js +3 -4
  80. package/dest/interfaces/proving-job.d.ts +170 -170
  81. package/dest/interfaces/proving-job.d.ts.map +1 -1
  82. package/dest/interfaces/proving-job.js +1 -7
  83. package/dest/interfaces/server_circuit_prover.d.ts +4 -3
  84. package/dest/interfaces/server_circuit_prover.d.ts.map +1 -1
  85. package/dest/interfaces/validator.d.ts +41 -7
  86. package/dest/interfaces/validator.d.ts.map +1 -1
  87. package/dest/interfaces/validator.js +3 -1
  88. package/dest/kernel/claimed_length_array.js +3 -1
  89. package/dest/kernel/hints/build_note_hash_read_request_hints.d.ts +6 -5
  90. package/dest/kernel/hints/build_note_hash_read_request_hints.d.ts.map +1 -1
  91. package/dest/kernel/hints/build_note_hash_read_request_hints.js +5 -6
  92. package/dest/kernel/hints/transient_data_squashing_hint.js +3 -1
  93. package/dest/kernel/log_hash.js +3 -1
  94. package/dest/kernel/private_log_data.js +5 -2
  95. package/dest/kernel/private_to_avm_accumulated_data.js +5 -2
  96. package/dest/kernel/private_to_public_accumulated_data.js +3 -1
  97. package/dest/kernel/private_to_rollup_accumulated_data.js +3 -1
  98. package/dest/kernel/private_validation_requests.js +3 -1
  99. package/dest/kernel/public_call_request.js +5 -2
  100. package/dest/logs/contract_class_log.js +3 -1
  101. package/dest/logs/private_log.js +3 -1
  102. package/dest/logs/public_log.js +3 -1
  103. package/dest/messaging/in_hash.d.ts +4 -2
  104. package/dest/messaging/in_hash.d.ts.map +1 -1
  105. package/dest/messaging/in_hash.js +3 -1
  106. package/dest/messaging/l2_to_l1_membership.d.ts +88 -6
  107. package/dest/messaging/l2_to_l1_membership.d.ts.map +1 -1
  108. package/dest/messaging/l2_to_l1_membership.js +158 -42
  109. package/dest/messaging/out_hash.d.ts +2 -1
  110. package/dest/messaging/out_hash.d.ts.map +1 -1
  111. package/dest/messaging/out_hash.js +13 -4
  112. package/dest/p2p/attestation_utils.d.ts +3 -3
  113. package/dest/p2p/attestation_utils.d.ts.map +1 -1
  114. package/dest/p2p/attestation_utils.js +1 -1
  115. package/dest/p2p/block_proposal.d.ts +85 -21
  116. package/dest/p2p/block_proposal.d.ts.map +1 -1
  117. package/dest/p2p/block_proposal.js +120 -37
  118. package/dest/p2p/checkpoint_attestation.d.ts +77 -0
  119. package/dest/p2p/checkpoint_attestation.d.ts.map +1 -0
  120. package/dest/p2p/{block_attestation.js → checkpoint_attestation.js} +22 -19
  121. package/dest/p2p/checkpoint_proposal.d.ts +154 -0
  122. package/dest/p2p/checkpoint_proposal.d.ts.map +1 -0
  123. package/dest/p2p/checkpoint_proposal.js +217 -0
  124. package/dest/p2p/consensus_payload.d.ts +6 -7
  125. package/dest/p2p/consensus_payload.d.ts.map +1 -1
  126. package/dest/p2p/consensus_payload.js +3 -2
  127. package/dest/p2p/gossipable.d.ts +4 -3
  128. package/dest/p2p/gossipable.d.ts.map +1 -1
  129. package/dest/p2p/gossipable.js +16 -5
  130. package/dest/p2p/index.d.ts +4 -2
  131. package/dest/p2p/index.d.ts.map +1 -1
  132. package/dest/p2p/index.js +3 -1
  133. package/dest/p2p/signature_utils.d.ts +5 -3
  134. package/dest/p2p/signature_utils.d.ts.map +1 -1
  135. package/dest/p2p/signature_utils.js +3 -1
  136. package/dest/p2p/signed_txs.d.ts +40 -0
  137. package/dest/p2p/signed_txs.d.ts.map +1 -0
  138. package/dest/p2p/signed_txs.js +70 -0
  139. package/dest/p2p/topic_type.d.ts +3 -2
  140. package/dest/p2p/topic_type.d.ts.map +1 -1
  141. package/dest/p2p/topic_type.js +8 -2
  142. package/dest/rollup/block_rollup_public_inputs.d.ts +4 -9
  143. package/dest/rollup/block_rollup_public_inputs.d.ts.map +1 -1
  144. package/dest/rollup/block_rollup_public_inputs.js +6 -10
  145. package/dest/rollup/checkpoint_constant_data.js +3 -1
  146. package/dest/rollup/checkpoint_header.d.ts +15 -12
  147. package/dest/rollup/checkpoint_header.d.ts.map +1 -1
  148. package/dest/rollup/checkpoint_header.js +33 -19
  149. package/dest/rollup/checkpoint_rollup_public_inputs.d.ts +6 -1
  150. package/dest/rollup/checkpoint_rollup_public_inputs.d.ts.map +1 -1
  151. package/dest/rollup/checkpoint_rollup_public_inputs.js +6 -2
  152. package/dest/rollup/root_rollup_public_inputs.d.ts +8 -3
  153. package/dest/rollup/root_rollup_public_inputs.d.ts.map +1 -1
  154. package/dest/rollup/root_rollup_public_inputs.js +6 -3
  155. package/dest/tests/factories.d.ts +15 -7
  156. package/dest/tests/factories.d.ts.map +1 -1
  157. package/dest/tests/factories.js +57 -13
  158. package/dest/tests/mocks.d.ts +59 -10
  159. package/dest/tests/mocks.d.ts.map +1 -1
  160. package/dest/tests/mocks.js +89 -41
  161. package/dest/trees/append_only_tree_snapshot.js +3 -1
  162. package/dest/tx/block_header.js +3 -1
  163. package/dest/tx/call_context.js +3 -1
  164. package/dest/tx/global_variable_builder.d.ts +2 -2
  165. package/dest/tx/global_variable_builder.d.ts.map +1 -1
  166. package/dest/tx/global_variables.js +3 -1
  167. package/dest/tx/index.d.ts +1 -2
  168. package/dest/tx/index.d.ts.map +1 -1
  169. package/dest/tx/index.js +0 -1
  170. package/dest/tx/private_execution_result.d.ts +1 -5
  171. package/dest/tx/private_execution_result.d.ts.map +1 -1
  172. package/dest/tx/private_execution_result.js +3 -20
  173. package/dest/tx/public_call_request_with_calldata.js +3 -1
  174. package/dest/tx/state_reference.js +3 -1
  175. package/dest/tx/tree_snapshots.js +3 -1
  176. package/dest/tx/tx.d.ts +1 -1
  177. package/dest/tx/tx.d.ts.map +1 -1
  178. package/dest/tx/tx.js +3 -1
  179. package/dest/tx/tx_effect.js +3 -1
  180. package/dest/tx/tx_execution_request.d.ts +1 -1
  181. package/dest/tx/tx_execution_request.d.ts.map +1 -1
  182. package/dest/tx/tx_execution_request.js +6 -2
  183. package/package.json +8 -8
  184. package/src/abi/contract_artifact.ts +10 -10
  185. package/src/block/attestation_info.ts +9 -6
  186. package/src/block/l2_block.ts +6 -5
  187. package/src/block/l2_block_code_to_purge.ts +3 -11
  188. package/src/block/l2_block_header.ts +26 -17
  189. package/src/block/l2_block_new.ts +5 -1
  190. package/src/block/l2_block_source.ts +66 -16
  191. package/src/block/l2_block_stream/index.ts +1 -0
  192. package/src/block/l2_block_stream/interfaces.ts +12 -4
  193. package/src/block/l2_block_stream/l2_block_stream.ts +121 -38
  194. package/src/block/l2_block_stream/l2_tips_memory_store.ts +62 -56
  195. package/src/block/l2_block_stream/l2_tips_store_base.ts +226 -0
  196. package/src/block/test/l2_tips_store_test_suite.ts +485 -36
  197. package/src/block/validate_block_result.ts +35 -31
  198. package/src/checkpoint/checkpoint.ts +1 -0
  199. package/src/checkpoint/checkpoint_info.ts +45 -2
  200. package/src/checkpoint/index.ts +1 -0
  201. package/src/interfaces/api_limit.ts +1 -0
  202. package/src/interfaces/archiver.ts +14 -6
  203. package/src/interfaces/aztec-node-admin.ts +5 -2
  204. package/src/interfaces/aztec-node.ts +43 -13
  205. package/src/interfaces/configs.ts +5 -0
  206. package/src/interfaces/p2p.ts +8 -12
  207. package/src/interfaces/proving-job.ts +2 -11
  208. package/src/interfaces/server_circuit_prover.ts +3 -2
  209. package/src/interfaces/validator.ts +57 -7
  210. package/src/kernel/hints/build_note_hash_read_request_hints.ts +5 -8
  211. package/src/messaging/in_hash.ts +3 -1
  212. package/src/messaging/l2_to_l1_membership.ts +176 -52
  213. package/src/messaging/out_hash.ts +17 -7
  214. package/src/p2p/attestation_utils.ts +3 -3
  215. package/src/p2p/block_proposal.ts +185 -41
  216. package/src/p2p/{block_attestation.ts → checkpoint_attestation.ts} +31 -25
  217. package/src/p2p/checkpoint_proposal.ts +337 -0
  218. package/src/p2p/consensus_payload.ts +5 -2
  219. package/src/p2p/gossipable.ts +14 -4
  220. package/src/p2p/index.ts +3 -1
  221. package/src/p2p/signature_utils.ts +3 -1
  222. package/src/p2p/signed_txs.ts +83 -0
  223. package/src/p2p/topic_type.ts +3 -2
  224. package/src/rollup/block_rollup_public_inputs.ts +3 -9
  225. package/src/rollup/checkpoint_header.ts +43 -20
  226. package/src/rollup/checkpoint_rollup_public_inputs.ts +6 -0
  227. package/src/rollup/root_rollup_public_inputs.ts +6 -0
  228. package/src/tests/factories.ts +53 -17
  229. package/src/tests/mocks.ts +166 -64
  230. package/src/tx/global_variable_builder.ts +1 -1
  231. package/src/tx/index.ts +0 -1
  232. package/src/tx/private_execution_result.ts +0 -15
  233. package/src/tx/tx.ts +2 -0
  234. package/src/tx/tx_execution_request.ts +2 -0
  235. package/dest/p2p/block_attestation.d.ts +0 -80
  236. package/dest/p2p/block_attestation.d.ts.map +0 -1
  237. package/dest/tx/content_commitment.d.ts +0 -49
  238. package/dest/tx/content_commitment.d.ts.map +0 -1
  239. package/dest/tx/content_commitment.js +0 -90
  240. package/src/tx/content_commitment.ts +0 -113
@@ -6,16 +6,18 @@ import {
6
6
  MAX_NULLIFIERS_PER_TX,
7
7
  MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
8
8
  } from '@aztec/constants';
9
- import { makeTuple } from '@aztec/foundation/array';
9
+ import { type FieldsOf, makeTuple } from '@aztec/foundation/array';
10
10
  import { BlockNumber, CheckpointNumber, SlotNumber } from '@aztec/foundation/branded-types';
11
11
  import { Buffer32 } from '@aztec/foundation/buffer';
12
12
  import { padArrayEnd, times } from '@aztec/foundation/collection';
13
13
  import { randomBytes } from '@aztec/foundation/crypto/random';
14
14
  import { Secp256k1Signer } from '@aztec/foundation/crypto/secp256k1-signer';
15
15
  import { Fr } from '@aztec/foundation/curves/bn254';
16
+ import { Signature } from '@aztec/foundation/eth-signature';
16
17
 
17
18
  import type { ContractArtifact } from '../abi/abi.js';
18
19
  import { PublicTxEffect } from '../avm/avm.js';
20
+ import type { AvmAccumulatedData } from '../avm/avm_accumulated_data.js';
19
21
  import { AvmCircuitPublicInputs } from '../avm/avm_circuit_public_inputs.js';
20
22
  import { PublicDataWrite } from '../avm/public_data_write.js';
21
23
  import { RevertCode } from '../avm/revert_code.js';
@@ -45,12 +47,14 @@ import { PrivateToAvmAccumulatedData } from '../kernel/private_to_avm_accumulate
45
47
  import { PrivateToPublicAccumulatedDataBuilder } from '../kernel/private_to_public_accumulated_data_builder.js';
46
48
  import { PublicCallRequestArrayLengths } from '../kernel/public_call_request.js';
47
49
  import { computeInHashFromL1ToL2Messages } from '../messaging/in_hash.js';
48
- import { BlockAttestation } from '../p2p/block_attestation.js';
49
50
  import { BlockProposal } from '../p2p/block_proposal.js';
51
+ import { CheckpointAttestation } from '../p2p/checkpoint_attestation.js';
52
+ import { CheckpointProposal } from '../p2p/checkpoint_proposal.js';
50
53
  import { ConsensusPayload } from '../p2p/consensus_payload.js';
51
54
  import { SignatureDomainSeparator, getHashedSignaturePayloadEthSignedMessage } from '../p2p/signature_utils.js';
52
55
  import { ChonkProof } from '../proofs/chonk_proof.js';
53
56
  import { ProvingRequestType } from '../proofs/proving_request_type.js';
57
+ import { CheckpointHeader } from '../rollup/checkpoint_header.js';
54
58
  import { AppendOnlyTreeSnapshot } from '../trees/append_only_tree_snapshot.js';
55
59
  import {
56
60
  BlockHeader,
@@ -202,6 +206,7 @@ export async function mockProcessedTx({
202
206
  // The default gasUsed is the tx overhead.
203
207
  gasUsed = Gas.from({ daGas: FIXED_DA_GAS, l2Gas: FIXED_L2_GAS }),
204
208
  privateOnly = false,
209
+ avmAccumulatedData,
205
210
  ...mockTxOpts
206
211
  }: {
207
212
  seed?: number;
@@ -213,6 +218,7 @@ export async function mockProcessedTx({
213
218
  protocolContracts?: ProtocolContracts;
214
219
  feePaymentPublicDataWrite?: PublicDataWrite;
215
220
  privateOnly?: boolean;
221
+ avmAccumulatedData?: Partial<FieldsOf<AvmAccumulatedData>>;
216
222
  } & Parameters<typeof mockTx>[1] = {}) {
217
223
  seed *= 0x1000; // Avoid clashing with the previous mock values if seed only increases by 1.
218
224
  anchorBlockHeader ??= db?.getInitialHeader() ?? makeBlockHeader(seed);
@@ -292,19 +298,22 @@ export async function mockProcessedTx({
292
298
  avmOutput.previousRevertibleAccumulatedDataArrayLengths =
293
299
  avmOutput.previousRevertibleAccumulatedData.getArrayLengths();
294
300
  // Assign final data emitted from avm.
295
- avmOutput.accumulatedData.noteHashes = revertibleData.noteHashes;
296
- avmOutput.accumulatedData.nullifiers = padArrayEnd(
297
- nonRevertibleData.nullifiers.concat(revertibleData.nullifiers).filter(n => !n.isEmpty()),
298
- Fr.ZERO,
299
- MAX_NULLIFIERS_PER_TX,
300
- );
301
- avmOutput.accumulatedData.l2ToL1Msgs = revertibleData.l2ToL1Msgs;
302
- avmOutput.accumulatedData.publicDataWrites = makeTuple(
303
- MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
304
- i => new PublicDataWrite(new Fr(i), new Fr(i + 10)),
305
- seed + 0x2000,
306
- );
307
- avmOutput.accumulatedData.publicDataWrites[0] = feePaymentPublicDataWrite;
301
+ avmOutput.accumulatedData.noteHashes = avmAccumulatedData?.noteHashes ?? revertibleData.noteHashes;
302
+ avmOutput.accumulatedData.nullifiers =
303
+ avmAccumulatedData?.nullifiers ??
304
+ padArrayEnd(
305
+ nonRevertibleData.nullifiers.concat(revertibleData.nullifiers).filter(n => !n.isEmpty()),
306
+ Fr.ZERO,
307
+ MAX_NULLIFIERS_PER_TX,
308
+ );
309
+ avmOutput.accumulatedData.l2ToL1Msgs = avmAccumulatedData?.l2ToL1Msgs ?? revertibleData.l2ToL1Msgs;
310
+ avmOutput.accumulatedData.publicDataWrites =
311
+ avmAccumulatedData?.publicDataWrites ??
312
+ makeTuple(
313
+ MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
314
+ i => (i === 0 ? feePaymentPublicDataWrite : new PublicDataWrite(new Fr(i), new Fr(i + 10))),
315
+ seed + 0x2000,
316
+ );
308
317
  avmOutput.accumulatedDataArrayLengths = avmOutput.accumulatedData.getArrayLengths();
309
318
  avmOutput.gasSettings = gasSettings;
310
319
  // Note: The fee is computed from the tx's gas used, which only includes the gas used in private. But this shouldn't
@@ -353,7 +362,6 @@ const emptyPrivateCallExecutionResult = () =>
353
362
  Buffer.from(''),
354
363
  new Map(),
355
364
  PrivateCircuitPublicInputs.empty(),
356
- new Map(),
357
365
  [],
358
366
  new Map(),
359
367
  [],
@@ -487,6 +495,30 @@ export interface MakeConsensusPayloadOptions {
487
495
  txs?: Tx[];
488
496
  }
489
497
 
498
+ export interface MakeBlockProposalOptions {
499
+ signer?: Secp256k1Signer;
500
+ blockHeader?: L2BlockHeader;
501
+ indexWithinCheckpoint?: number;
502
+ inHash?: Fr;
503
+ archiveRoot?: Fr;
504
+ txHashes?: TxHash[];
505
+ txs?: Tx[];
506
+ }
507
+
508
+ export interface MakeCheckpointProposalOptions {
509
+ signer?: Secp256k1Signer;
510
+ checkpointHeader?: CheckpointHeader;
511
+ archiveRoot?: Fr;
512
+ /** Options for the lastBlock - if undefined, no lastBlock is included */
513
+ lastBlock?: {
514
+ blockHeader?: L2BlockHeader;
515
+ indexWithinCheckpoint?: number;
516
+ txHashes?: TxHash[];
517
+ txs?: Tx[];
518
+ };
519
+ }
520
+
521
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
490
522
  const makeAndSignConsensusPayload = (
491
523
  domainSeparator: SignatureDomainSeparator,
492
524
  options?: MakeConsensusPayloadOptions,
@@ -516,73 +548,137 @@ export const makeAndSignCommitteeAttestationsAndSigners = (
516
548
  return signer.sign(hash);
517
549
  };
518
550
 
519
- export const makeBlockProposal = (options?: MakeConsensusPayloadOptions): BlockProposal => {
520
- const { payload, signature } = makeAndSignConsensusPayload(SignatureDomainSeparator.blockProposal, options);
551
+ export const makeBlockProposal = (options?: MakeBlockProposalOptions): Promise<BlockProposal> => {
552
+ const l2BlockHeader = options?.blockHeader ?? makeL2BlockHeader(1);
553
+ const blockHeader = l2BlockHeader.toBlockHeader();
554
+ const indexWithinCheckpoint = options?.indexWithinCheckpoint ?? 0;
555
+ const inHash = options?.inHash ?? Fr.random();
556
+ const archiveRoot = options?.archiveRoot ?? Fr.random();
521
557
  const txHashes = options?.txHashes ?? [0, 1, 2, 3, 4, 5].map(() => TxHash.random());
522
- return new BlockProposal(payload, signature, txHashes, options?.txs ?? []);
558
+ const txs = options?.txs;
559
+ const signer = options?.signer ?? Secp256k1Signer.random();
560
+
561
+ return BlockProposal.createProposalFromSigner(
562
+ blockHeader,
563
+ indexWithinCheckpoint,
564
+ inHash,
565
+ archiveRoot,
566
+ txHashes,
567
+ txs,
568
+ payload => Promise.resolve(signer.signMessage(payload)),
569
+ );
523
570
  };
524
571
 
525
- // TODO(https://github.com/AztecProtocol/aztec-packages/issues/8028)
526
- export const makeBlockAttestation = (options: MakeConsensusPayloadOptions = {}): BlockAttestation => {
527
- const header = options.header ?? makeL2BlockHeader(1);
528
- const { signer, attesterSigner = signer, proposerSigner = signer, archive = Fr.random() } = options;
572
+ export const makeCheckpointProposal = (options?: MakeCheckpointProposalOptions): Promise<CheckpointProposal> => {
573
+ const l2BlockHeader = options?.lastBlock?.blockHeader ?? makeL2BlockHeader(1);
574
+ const checkpointHeader = options?.checkpointHeader ?? l2BlockHeader.toCheckpointHeader();
575
+ const archiveRoot = options?.archiveRoot ?? Fr.random();
576
+ const signer = options?.signer ?? Secp256k1Signer.random();
577
+
578
+ // Build lastBlock info if provided
579
+ const lastBlockInfo = options?.lastBlock
580
+ ? {
581
+ blockHeader: l2BlockHeader.toBlockHeader(),
582
+ indexWithinCheckpoint: options.lastBlock.indexWithinCheckpoint ?? 4, // Last block in a 5-block checkpoint
583
+ txHashes: options.lastBlock.txHashes ?? [0, 1, 2, 3, 4, 5].map(() => TxHash.random()),
584
+ txs: options.lastBlock.txs,
585
+ }
586
+ : undefined;
587
+
588
+ return CheckpointProposal.createProposalFromSigner(checkpointHeader, archiveRoot, lastBlockInfo, payload =>
589
+ Promise.resolve(signer.signMessage(payload)),
590
+ );
591
+ };
529
592
 
530
- const payload = ConsensusPayload.fromFields({
531
- header: header.toCheckpointHeader(),
532
- archive,
533
- });
593
+ /**
594
+ * Options for creating a checkpoint attestation
595
+ */
596
+ export type MakeCheckpointAttestationOptions = {
597
+ header?: CheckpointHeader;
598
+ archive?: Fr;
599
+ attesterSigner?: Secp256k1Signer;
600
+ proposerSigner?: Secp256k1Signer;
601
+ signer?: Secp256k1Signer;
602
+ };
603
+
604
+ /**
605
+ * Create a checkpoint attestation for testing
606
+ */
607
+ export const makeCheckpointAttestation = (options: MakeCheckpointAttestationOptions = {}): CheckpointAttestation => {
608
+ const header = options.header ?? makeL2BlockHeader(1).toCheckpointHeader();
609
+ const archive = options.archive ?? Fr.random();
610
+ const { signer, attesterSigner = signer, proposerSigner = signer } = options;
611
+
612
+ const payload = new ConsensusPayload(header, archive);
613
+
614
+ // Sign as attester
615
+ const attestationHash = getHashedSignaturePayloadEthSignedMessage(
616
+ payload,
617
+ SignatureDomainSeparator.checkpointAttestation,
618
+ );
619
+ const attestationSigner = attesterSigner ?? Secp256k1Signer.random();
620
+ const attestationSignature = attestationSigner.sign(attestationHash);
621
+
622
+ // Sign as proposer - use CheckpointProposal's payload format (serializeToBuffer)
623
+ // This is different from ConsensusPayload's format (ABI encoding)
624
+ const proposalSignerToUse = proposerSigner ?? Secp256k1Signer.random();
625
+ const tempProposal = new CheckpointProposal(header, archive, Signature.empty());
626
+ const proposalHash = getHashedSignaturePayloadEthSignedMessage(
627
+ tempProposal,
628
+ SignatureDomainSeparator.checkpointProposal,
629
+ );
630
+ const proposerSignature = proposalSignerToUse.sign(proposalHash);
534
631
 
535
- return makeBlockAttestationFromPayload(payload, attesterSigner, proposerSigner);
632
+ return new CheckpointAttestation(payload, attestationSignature, proposerSignature);
536
633
  };
537
634
 
538
- export const makeAttestationFromCheckpoint = (
539
- checkpoint: Checkpoint,
635
+ /**
636
+ * Create a checkpoint attestation from a checkpoint proposal
637
+ */
638
+ export const makeCheckpointAttestationFromProposal = (
639
+ proposal: CheckpointProposal,
540
640
  attesterSigner?: Secp256k1Signer,
541
- proposerSigner?: Secp256k1Signer,
542
- ): BlockAttestation => {
543
- const header = checkpoint.header;
544
- const archive = checkpoint.archive.root;
641
+ ): CheckpointAttestation => {
642
+ const payload = new ConsensusPayload(proposal.checkpointHeader, proposal.archive);
545
643
 
546
- const payload = ConsensusPayload.fromFields({
547
- header,
548
- archive,
549
- });
644
+ // Sign as attester
645
+ const attestationHash = getHashedSignaturePayloadEthSignedMessage(
646
+ payload,
647
+ SignatureDomainSeparator.checkpointAttestation,
648
+ );
649
+ const attestationSigner = attesterSigner ?? Secp256k1Signer.random();
650
+ const attestationSignature = attestationSigner.sign(attestationHash);
550
651
 
551
- return makeBlockAttestationFromPayload(payload, attesterSigner, proposerSigner);
652
+ // Use the proposal's signature as the proposer signature
653
+ return new CheckpointAttestation(payload, attestationSignature, proposal.signature);
552
654
  };
553
655
 
554
- export const makeBlockAttestationFromBlock = (
555
- block: L2Block,
656
+ /**
657
+ * Create a checkpoint attestation from a checkpoint
658
+ */
659
+ export const makeCheckpointAttestationFromCheckpoint = (
660
+ checkpoint: Checkpoint,
556
661
  attesterSigner?: Secp256k1Signer,
557
662
  proposerSigner?: Secp256k1Signer,
558
- ): BlockAttestation => {
559
- const header = block.header;
560
- const archive = block.archive.root;
561
-
562
- const payload = ConsensusPayload.fromFields({
563
- header: header.toCheckpointHeader(),
564
- archive,
565
- });
663
+ ): CheckpointAttestation => {
664
+ const header = checkpoint.header;
665
+ const archive = checkpoint.archive.root;
566
666
 
567
- return makeBlockAttestationFromPayload(payload, attesterSigner, proposerSigner);
667
+ return makeCheckpointAttestation({ header, archive, attesterSigner, proposerSigner });
568
668
  };
569
669
 
570
- export const makeBlockAttestationFromPayload = (
571
- payload: ConsensusPayload,
670
+ /**
671
+ * Create a checkpoint attestation from an L2Block
672
+ */
673
+ export const makeCheckpointAttestationFromBlock = (
674
+ block: L2Block,
572
675
  attesterSigner?: Secp256k1Signer,
573
676
  proposerSigner?: Secp256k1Signer,
574
- ): BlockAttestation => {
575
- // Sign as attester
576
- const attestationHash = getHashedSignaturePayloadEthSignedMessage(payload, SignatureDomainSeparator.blockAttestation);
577
- const attestationSigner = attesterSigner ?? Secp256k1Signer.random();
578
- const attestationSignature = attestationSigner.sign(attestationHash);
579
-
580
- // Sign as proposer
581
- const proposalHash = getHashedSignaturePayloadEthSignedMessage(payload, SignatureDomainSeparator.blockProposal);
582
- const proposalSignerToUse = proposerSigner ?? Secp256k1Signer.random();
583
- const proposerSignature = proposalSignerToUse.sign(proposalHash);
677
+ ): CheckpointAttestation => {
678
+ const header = block.header.toCheckpointHeader();
679
+ const archive = block.archive.root;
584
680
 
585
- return new BlockAttestation(payload, attestationSignature, proposerSignature);
681
+ return makeCheckpointAttestation({ header, archive, attesterSigner, proposerSigner });
586
682
  };
587
683
 
588
684
  export async function randomPublishedL2Block(
@@ -597,7 +693,13 @@ export async function randomPublishedL2Block(
597
693
  });
598
694
 
599
695
  const signers = opts.signers ?? times(3, () => Secp256k1Signer.random());
600
- const atts = await Promise.all(signers.map(signer => makeBlockAttestationFromBlock(block, signer)));
696
+ const atts = signers.map(signer =>
697
+ makeCheckpointAttestation({
698
+ signer,
699
+ archive: block.archive.root,
700
+ header: block.header.toCheckpointHeader(),
701
+ }),
702
+ );
601
703
  const attestations = atts.map(
602
704
  (attestation, i) => new CommitteeAttestation(signers[i].address, attestation.signature),
603
705
  );
@@ -10,7 +10,7 @@ import type { CheckpointGlobalVariables, GlobalVariables } from './global_variab
10
10
  * Interface for building global variables for Aztec blocks.
11
11
  */
12
12
  export interface GlobalVariableBuilder {
13
- getCurrentBaseFees(): Promise<GasFees>;
13
+ getCurrentMinFees(): Promise<GasFees>;
14
14
 
15
15
  /**
16
16
  * Builds global variables for a given block.
package/src/tx/index.ts CHANGED
@@ -1,7 +1,6 @@
1
1
  export * from './block_header.js';
2
2
  export * from './call_context.js';
3
3
  export * from './global_variables.js';
4
- export * from './content_commitment.js';
5
4
  export * from './state_reference.js';
6
5
  export * from './partial_state_reference.js';
7
6
  export * from './function_data.js';
@@ -129,8 +129,6 @@ export class PrivateCallExecutionResult {
129
129
  // Needed for the verifier (kernel)
130
130
  /** The call stack item. */
131
131
  public publicInputs: PrivateCircuitPublicInputs,
132
- /** Mapping of note hash to its index in the note hash tree. Used for building hints for note hash read requests. */
133
- public noteHashLeafIndexMap: Map<bigint, bigint>,
134
132
  /** The notes created in the executed function. */
135
133
  public newNotes: NoteAndSlot[],
136
134
  /** Mapping of note hash counter to the counter of its nullifier. */
@@ -159,7 +157,6 @@ export class PrivateCallExecutionResult {
159
157
  vk: schemas.Buffer,
160
158
  partialWitness: mapSchema(z.coerce.number(), z.string()),
161
159
  publicInputs: PrivateCircuitPublicInputs.schema,
162
- noteHashLeafIndexMap: mapSchema(schemas.BigInt, schemas.BigInt),
163
160
  newNotes: z.array(NoteAndSlot.schema),
164
161
  noteHashNullifierCounterMap: mapSchema(z.coerce.number(), z.number()),
165
162
  returnValues: z.array(schemas.Fr),
@@ -177,7 +174,6 @@ export class PrivateCallExecutionResult {
177
174
  fields.vk,
178
175
  fields.partialWitness,
179
176
  fields.publicInputs,
180
- fields.noteHashLeafIndexMap,
181
177
  fields.newNotes,
182
178
  fields.noteHashNullifierCounterMap,
183
179
  fields.returnValues,
@@ -194,7 +190,6 @@ export class PrivateCallExecutionResult {
194
190
  randomBytes(4),
195
191
  new Map([[1, 'one']]),
196
192
  PrivateCircuitPublicInputs.empty(),
197
- new Map([[1n, 1n]]),
198
193
  [NoteAndSlot.random()],
199
194
  new Map([[0, 0]]),
200
195
  [Fr.random()],
@@ -210,16 +205,6 @@ export class PrivateCallExecutionResult {
210
205
  }
211
206
  }
212
207
 
213
- export function collectNoteHashLeafIndexMap(execResult: PrivateExecutionResult) {
214
- const accum: Map<bigint, bigint> = new Map();
215
- const collectNoteHashLeafIndexMapRecursive = (callResult: PrivateCallExecutionResult, accum: Map<bigint, bigint>) => {
216
- callResult.noteHashLeafIndexMap.forEach((value, key) => accum.set(key, value));
217
- callResult.nestedExecutionResults.forEach(nested => collectNoteHashLeafIndexMapRecursive(nested, accum));
218
- };
219
- collectNoteHashLeafIndexMapRecursive(execResult.entrypoint, accum);
220
- return accum;
221
- }
222
-
223
208
  export function collectNoteHashNullifierCounterMap(execResult: PrivateExecutionResult) {
224
209
  const accum: Map<number, number> = new Map();
225
210
  const collectNoteHashNullifierCounterMapRecursive = (
package/src/tx/tx.ts CHANGED
@@ -24,6 +24,7 @@ import { TxHash } from './tx_hash.js';
24
24
  /**
25
25
  * The interface of an L2 transaction.
26
26
  */
27
+ // docs:start:tx_class
27
28
  export class Tx extends Gossipable {
28
29
  static override p2pTopic = TopicType.tx;
29
30
 
@@ -60,6 +61,7 @@ export class Tx extends Gossipable {
60
61
  ) {
61
62
  super();
62
63
  }
64
+ // docs:end:tx_class
63
65
 
64
66
  // Gossipable method
65
67
  override generateP2PMessageIdentifier(): Promise<Buffer32> {
@@ -20,6 +20,7 @@ import { TxRequest } from './tx_request.js';
20
20
  /**
21
21
  * Request to execute a transaction. Similar to TxRequest, but has the full args.
22
22
  */
23
+ // docs:start:tx_execution_request_class
23
24
  export class TxExecutionRequest {
24
25
  constructor(
25
26
  /**
@@ -60,6 +61,7 @@ export class TxExecutionRequest {
60
61
  */
61
62
  public salt = Fr.random(),
62
63
  ) {}
64
+ // docs:end:tx_execution_request_class
63
65
 
64
66
  static get schema(): ZodFor<TxExecutionRequest> {
65
67
  return z
@@ -1,80 +0,0 @@
1
- import { SlotNumber } from '@aztec/foundation/branded-types';
2
- import { Buffer32 } from '@aztec/foundation/buffer';
3
- import { Fr } from '@aztec/foundation/curves/bn254';
4
- import type { EthAddress } from '@aztec/foundation/eth-address';
5
- import { Signature } from '@aztec/foundation/eth-signature';
6
- import { BufferReader } from '@aztec/foundation/serialize';
7
- import type { ZodFor } from '../schemas/index.js';
8
- import { ConsensusPayload } from './consensus_payload.js';
9
- import { Gossipable } from './gossipable.js';
10
- import { TopicType } from './topic_type.js';
11
- export declare class BlockAttestationHash extends Buffer32 {
12
- constructor(hash: Buffer);
13
- }
14
- /**
15
- * BlockAttestation
16
- *
17
- * A validator that has attested to seeing the contents of a block
18
- * will produce a block attestation over the header of the block
19
- */
20
- export declare class BlockAttestation extends Gossipable {
21
- readonly payload: ConsensusPayload;
22
- readonly signature: Signature;
23
- readonly proposerSignature: Signature;
24
- static p2pTopic: TopicType;
25
- private sender;
26
- private proposer;
27
- constructor(
28
- /** The payload of the message, and what the signature is over */
29
- payload: ConsensusPayload,
30
- /** The signature of the block attester */
31
- signature: Signature,
32
- /** The signature from the block proposer */
33
- proposerSignature: Signature);
34
- static get schema(): ZodFor<BlockAttestation>;
35
- generateP2PMessageIdentifier(): Promise<Buffer32>;
36
- get archive(): Fr;
37
- get slotNumber(): SlotNumber;
38
- /**
39
- * Lazily evaluate and cache the signer of the attestation
40
- * @returns The signer of the attestation, or undefined if signature recovery fails
41
- */
42
- getSender(): EthAddress | undefined;
43
- /**
44
- * Lazily evaluate and cache the proposer of the block
45
- * @returns The proposer of the block
46
- */
47
- getProposer(): EthAddress | undefined;
48
- getPayload(): Buffer;
49
- toBuffer(): Buffer;
50
- static fromBuffer(buf: Buffer | BufferReader): BlockAttestation;
51
- static empty(): BlockAttestation;
52
- static random(): BlockAttestation;
53
- getSize(): number;
54
- toInspect(): {
55
- payload: {
56
- header: {
57
- lastArchive: `0x${string}`;
58
- blockHeadersHash: `0x${string}`;
59
- contentCommitment: {
60
- blobsHash: `0x${string}`;
61
- inHash: `0x${string}`;
62
- outHash: `0x${string}`;
63
- };
64
- slotNumber: SlotNumber;
65
- timestamp: bigint;
66
- coinbase: `0x${string}`;
67
- feeRecipient: `0x${string}`;
68
- gasFees: {
69
- feePerDaGas: bigint;
70
- feePerL2Gas: bigint;
71
- };
72
- totalManaUsed: bigint;
73
- };
74
- archive: `0x${string}`;
75
- };
76
- signature: `0x${string}`;
77
- proposerSignature: `0x${string}`;
78
- };
79
- }
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tfYXR0ZXN0YXRpb24uZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wMnAvYmxvY2tfYXR0ZXN0YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUdwRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEQsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQXFCLE1BQU0sNkJBQTZCLENBQUM7QUFJOUUsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU1QyxxQkFBYSxvQkFBcUIsU0FBUSxRQUFRO0lBQ2hELFlBQVksSUFBSSxFQUFFLE1BQU0sRUFFdkI7Q0FDRjtBQUVEOzs7OztHQUtHO0FBQ0gscUJBQWEsZ0JBQWlCLFNBQVEsVUFBVTthQVE1QixPQUFPLEVBQUUsZ0JBQWdCO2FBR3pCLFNBQVMsRUFBRSxTQUFTO2FBR3BCLGlCQUFpQixFQUFFLFNBQVM7SUFiOUMsT0FBZ0IsUUFBUSxZQUErQjtJQUV2RCxPQUFPLENBQUMsTUFBTSxDQUF5QjtJQUN2QyxPQUFPLENBQUMsUUFBUSxDQUF5QjtJQUV6QztJQUNFLGlFQUFpRTtJQUNqRCxPQUFPLEVBQUUsZ0JBQWdCO0lBRXpDLDBDQUEwQztJQUMxQixTQUFTLEVBQUUsU0FBUztJQUVwQyw0Q0FBNEM7SUFDNUIsaUJBQWlCLEVBQUUsU0FBUyxFQUc3QztJQUVELE1BQU0sS0FBSyxNQUFNLElBQUksTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBUTVDO0lBRVEsNEJBQTRCLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUV6RDtJQUVELElBQUksT0FBTyxJQUFJLEVBQUUsQ0FFaEI7SUFFRCxJQUFJLFVBQVUsSUFBSSxVQUFVLENBRTNCO0lBRUQ7OztPQUdHO0lBQ0gsU0FBUyxJQUFJLFVBQVUsR0FBRyxTQUFTLENBU2xDO0lBRUQ7OztPQUdHO0lBQ0gsV0FBVyxJQUFJLFVBQVUsR0FBRyxTQUFTLENBU3BDO0lBRUQsVUFBVSxJQUFJLE1BQU0sQ0FFbkI7SUFFRCxRQUFRLElBQUksTUFBTSxDQUVqQjtJQUVELE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLE1BQU0sR0FBRyxZQUFZLEdBQUcsZ0JBQWdCLENBTzlEO0lBRUQsTUFBTSxDQUFDLEtBQUssSUFBSSxnQkFBZ0IsQ0FFL0I7SUFFRCxNQUFNLENBQUMsTUFBTSxJQUFJLGdCQUFnQixDQUVoQztJQUVELE9BQU8sSUFBSSxNQUFNLENBRWhCO0lBRUQsU0FBUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BTVI7Q0FDRiJ9
@@ -1 +0,0 @@
1
- {"version":3,"file":"block_attestation.d.ts","sourceRoot":"","sources":["../../src/p2p/block_attestation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGpD,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAI9E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,qBAAa,oBAAqB,SAAQ,QAAQ;IAChD,YAAY,IAAI,EAAE,MAAM,EAEvB;CACF;AAED;;;;;GAKG;AACH,qBAAa,gBAAiB,SAAQ,UAAU;aAQ5B,OAAO,EAAE,gBAAgB;aAGzB,SAAS,EAAE,SAAS;aAGpB,iBAAiB,EAAE,SAAS;IAb9C,OAAgB,QAAQ,YAA+B;IAEvD,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,QAAQ,CAAyB;IAEzC;IACE,iEAAiE;IACjD,OAAO,EAAE,gBAAgB;IAEzC,0CAA0C;IAC1B,SAAS,EAAE,SAAS;IAEpC,4CAA4C;IAC5B,iBAAiB,EAAE,SAAS,EAG7C;IAED,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAQ5C;IAEQ,4BAA4B,IAAI,OAAO,CAAC,QAAQ,CAAC,CAEzD;IAED,IAAI,OAAO,IAAI,EAAE,CAEhB;IAED,IAAI,UAAU,IAAI,UAAU,CAE3B;IAED;;;OAGG;IACH,SAAS,IAAI,UAAU,GAAG,SAAS,CASlC;IAED;;;OAGG;IACH,WAAW,IAAI,UAAU,GAAG,SAAS,CASpC;IAED,UAAU,IAAI,MAAM,CAEnB;IAED,QAAQ,IAAI,MAAM,CAEjB;IAED,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,gBAAgB,CAO9D;IAED,MAAM,CAAC,KAAK,IAAI,gBAAgB,CAE/B;IAED,MAAM,CAAC,MAAM,IAAI,gBAAgB,CAEhC;IAED,OAAO,IAAI,MAAM,CAEhB;IAED,SAAS;;;;;;;;;;;;;;;;;;;;;;;;MAMR;CACF"}
@@ -1,49 +0,0 @@
1
- import type { ViemContentCommitment } from '@aztec/ethereum/contracts';
2
- import { Fr } from '@aztec/foundation/curves/bn254';
3
- import { BufferReader, FieldReader } from '@aztec/foundation/serialize';
4
- import type { FieldsOf } from '@aztec/foundation/types';
5
- import { z } from 'zod';
6
- export declare class ContentCommitment {
7
- blobsHash: Fr;
8
- inHash: Fr;
9
- outHash: Fr;
10
- constructor(blobsHash: Fr, inHash: Fr, outHash: Fr);
11
- static get schema(): z.ZodEffects<z.ZodObject<{
12
- blobsHash: z.ZodType<Fr, any, string>;
13
- inHash: z.ZodType<Fr, any, string>;
14
- outHash: z.ZodType<Fr, any, string>;
15
- }, "strip", z.ZodTypeAny, {
16
- blobsHash: Fr;
17
- inHash: Fr;
18
- outHash: Fr;
19
- }, {
20
- blobsHash: string;
21
- inHash: string;
22
- outHash: string;
23
- }>, ContentCommitment, {
24
- blobsHash: string;
25
- inHash: string;
26
- outHash: string;
27
- }>;
28
- static getFields(fields: FieldsOf<ContentCommitment>): readonly [Fr, Fr, Fr];
29
- static from(fields: FieldsOf<ContentCommitment>): ContentCommitment;
30
- getSize(): number;
31
- toBuffer(): Buffer<ArrayBufferLike>;
32
- static fromBuffer(buffer: Buffer | BufferReader): ContentCommitment;
33
- toInspect(): {
34
- blobsHash: `0x${string}`;
35
- inHash: `0x${string}`;
36
- outHash: `0x${string}`;
37
- };
38
- toViem(): ViemContentCommitment;
39
- static fromViem(contentCommitment: ViemContentCommitment): ContentCommitment;
40
- toFields(): Fr[];
41
- static fromFields(fields: Fr[] | FieldReader): ContentCommitment;
42
- static random(overrides?: Partial<FieldsOf<ContentCommitment>>): ContentCommitment;
43
- static empty(): ContentCommitment;
44
- isEmpty(): boolean;
45
- toString(): string;
46
- static fromString(str: string): ContentCommitment;
47
- equals(other: this): boolean;
48
- }
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudF9jb21taXRtZW50LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHgvY29udGVudF9jb21taXRtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXBELE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUF3QyxNQUFNLDZCQUE2QixDQUFDO0FBRTlHLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXhELE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFeEIscUJBQWEsaUJBQWlCO0lBRW5CLFNBQVMsRUFBRSxFQUFFO0lBQ2IsTUFBTSxFQUFFLEVBQUU7SUFDVixPQUFPLEVBQUUsRUFBRTtJQUhwQixZQUNTLFNBQVMsRUFBRSxFQUFFLEVBQ2IsTUFBTSxFQUFFLEVBQUUsRUFDVixPQUFPLEVBQUUsRUFBRSxFQUNoQjtJQUVKLE1BQU0sS0FBSyxNQUFNOzs7Ozs7Ozs7Ozs7Ozs7O09BUWhCO0lBRUQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLGlCQUFpQixDQUFDLHlCQUVuRDtJQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxxQkFFOUM7SUFFRCxPQUFPLFdBRU47SUFFRCxRQUFRLDRCQUVQO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLFlBQVksR0FBRyxpQkFBaUIsQ0FJbEU7SUFFRCxTQUFTOzs7O01BTVI7SUFFRCxNQUFNLElBQUkscUJBQXFCLENBTTlCO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxxQkFBcUIscUJBTXZEO0lBRUQsUUFBUSxJQUFJLEVBQUUsRUFBRSxDQUVmO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsV0FBVyxHQUFHLGlCQUFpQixDQUcvRDtJQUVELE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxHQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBTSxHQUFHLGlCQUFpQixDQU9yRjtJQUVELE1BQU0sQ0FBQyxLQUFLLElBQUksaUJBQWlCLENBRWhDO0lBRUQsT0FBTyxJQUFJLE9BQU8sQ0FFakI7SUFFTSxRQUFRLElBQUksTUFBTSxDQUV4QjtJQUVELE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLE1BQU0sR0FBRyxpQkFBaUIsQ0FHaEQ7SUFFTSxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksR0FBRyxPQUFPLENBSWxDO0NBQ0YifQ==
@@ -1 +0,0 @@
1
- {"version":3,"file":"content_commitment.d.ts","sourceRoot":"","sources":["../../src/tx/content_commitment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAwC,MAAM,6BAA6B,CAAC;AAE9G,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,qBAAa,iBAAiB;IAEnB,SAAS,EAAE,EAAE;IACb,MAAM,EAAE,EAAE;IACV,OAAO,EAAE,EAAE;IAHpB,YACS,SAAS,EAAE,EAAE,EACb,MAAM,EAAE,EAAE,EACV,OAAO,EAAE,EAAE,EAChB;IAEJ,MAAM,KAAK,MAAM;;;;;;;;;;;;;;;;OAQhB;IAED,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,iBAAiB,CAAC,yBAEnD;IAED,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,iBAAiB,CAAC,qBAE9C;IAED,OAAO,WAEN;IAED,QAAQ,4BAEP;IAED,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,iBAAiB,CAIlE;IAED,SAAS;;;;MAMR;IAED,MAAM,IAAI,qBAAqB,CAM9B;IAED,MAAM,CAAC,QAAQ,CAAC,iBAAiB,EAAE,qBAAqB,qBAMvD;IAED,QAAQ,IAAI,EAAE,EAAE,CAEf;IAED,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,GAAG,iBAAiB,CAG/D;IAED,MAAM,CAAC,MAAM,CAAC,SAAS,GAAE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAM,GAAG,iBAAiB,CAOrF;IAED,MAAM,CAAC,KAAK,IAAI,iBAAiB,CAEhC;IAED,OAAO,IAAI,OAAO,CAEjB;IAEM,QAAQ,IAAI,MAAM,CAExB;IAED,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAGhD;IAEM,MAAM,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO,CAIlC;CACF"}
@@ -1,90 +0,0 @@
1
- import { Fr } from '@aztec/foundation/curves/bn254';
2
- import { schemas } from '@aztec/foundation/schemas';
3
- import { BufferReader, FieldReader, serializeToBuffer, serializeToFields } from '@aztec/foundation/serialize';
4
- import { bufferToHex } from '@aztec/foundation/string';
5
- import { z } from 'zod';
6
- export class ContentCommitment {
7
- blobsHash;
8
- inHash;
9
- outHash;
10
- constructor(blobsHash, inHash, outHash){
11
- this.blobsHash = blobsHash;
12
- this.inHash = inHash;
13
- this.outHash = outHash;
14
- }
15
- static get schema() {
16
- return z.object({
17
- blobsHash: schemas.Fr,
18
- inHash: schemas.Fr,
19
- outHash: schemas.Fr
20
- }).transform(({ blobsHash, inHash, outHash })=>new ContentCommitment(blobsHash, inHash, outHash));
21
- }
22
- static getFields(fields) {
23
- return [
24
- fields.blobsHash,
25
- fields.inHash,
26
- fields.outHash
27
- ];
28
- }
29
- static from(fields) {
30
- return new ContentCommitment(...ContentCommitment.getFields(fields));
31
- }
32
- getSize() {
33
- return this.toBuffer().length;
34
- }
35
- toBuffer() {
36
- return serializeToBuffer(...ContentCommitment.getFields(this));
37
- }
38
- static fromBuffer(buffer) {
39
- const reader = BufferReader.asReader(buffer);
40
- return new ContentCommitment(reader.readObject(Fr), reader.readObject(Fr), reader.readObject(Fr));
41
- }
42
- toInspect() {
43
- return {
44
- blobsHash: this.blobsHash.toString(),
45
- inHash: this.inHash.toString(),
46
- outHash: this.outHash.toString()
47
- };
48
- }
49
- toViem() {
50
- return {
51
- blobsHash: this.blobsHash.toString(),
52
- inHash: this.inHash.toString(),
53
- outHash: this.outHash.toString()
54
- };
55
- }
56
- static fromViem(contentCommitment) {
57
- return new ContentCommitment(Fr.fromString(contentCommitment.blobsHash), Fr.fromString(contentCommitment.inHash), Fr.fromString(contentCommitment.outHash));
58
- }
59
- toFields() {
60
- return serializeToFields(...ContentCommitment.getFields(this));
61
- }
62
- static fromFields(fields) {
63
- const reader = FieldReader.asReader(fields);
64
- return new ContentCommitment(reader.readField(), reader.readField(), reader.readField());
65
- }
66
- static random(overrides = {}) {
67
- return ContentCommitment.from({
68
- blobsHash: Fr.random(),
69
- inHash: Fr.random(),
70
- outHash: Fr.random(),
71
- ...overrides
72
- });
73
- }
74
- static empty() {
75
- return new ContentCommitment(Fr.zero(), Fr.zero(), Fr.zero());
76
- }
77
- isEmpty() {
78
- return this.blobsHash.isZero() && this.inHash.isZero() && this.outHash.isZero();
79
- }
80
- toString() {
81
- return bufferToHex(this.toBuffer());
82
- }
83
- static fromString(str) {
84
- const buffer = Buffer.from(str.replace(/^0x/i, ''), 'hex');
85
- return ContentCommitment.fromBuffer(buffer);
86
- }
87
- equals(other) {
88
- return this.blobsHash.equals(other.blobsHash) && this.inHash.equals(other.inHash) && this.outHash.equals(other.outHash);
89
- }
90
- }