@aztec/archiver 0.0.1-commit.d3ec352c → 0.0.1-commit.f295ac2

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 (201) hide show
  1. package/README.md +147 -22
  2. package/dest/archiver.d.ts +135 -0
  3. package/dest/archiver.d.ts.map +1 -0
  4. package/dest/archiver.js +769 -0
  5. package/dest/config.d.ts +30 -0
  6. package/dest/config.d.ts.map +1 -0
  7. package/dest/{archiver/config.js → config.js} +21 -5
  8. package/dest/errors.d.ts +36 -0
  9. package/dest/errors.d.ts.map +1 -0
  10. package/dest/errors.js +54 -0
  11. package/dest/factory.d.ts +5 -6
  12. package/dest/factory.d.ts.map +1 -1
  13. package/dest/factory.js +82 -5
  14. package/dest/index.d.ts +10 -4
  15. package/dest/index.d.ts.map +1 -1
  16. package/dest/index.js +8 -3
  17. package/dest/interfaces.d.ts +9 -0
  18. package/dest/interfaces.d.ts.map +1 -0
  19. package/dest/interfaces.js +3 -0
  20. package/dest/l1/bin/retrieve-calldata.d.ts +3 -0
  21. package/dest/l1/bin/retrieve-calldata.d.ts.map +1 -0
  22. package/dest/l1/bin/retrieve-calldata.js +149 -0
  23. package/dest/l1/calldata_retriever.d.ts +112 -0
  24. package/dest/l1/calldata_retriever.d.ts.map +1 -0
  25. package/dest/l1/calldata_retriever.js +471 -0
  26. package/dest/l1/data_retrieval.d.ts +88 -0
  27. package/dest/l1/data_retrieval.d.ts.map +1 -0
  28. package/dest/{archiver → l1}/data_retrieval.js +75 -150
  29. package/dest/l1/debug_tx.d.ts +19 -0
  30. package/dest/l1/debug_tx.d.ts.map +1 -0
  31. package/dest/l1/debug_tx.js +73 -0
  32. package/dest/l1/spire_proposer.d.ts +70 -0
  33. package/dest/l1/spire_proposer.d.ts.map +1 -0
  34. package/dest/l1/spire_proposer.js +157 -0
  35. package/dest/l1/trace_tx.d.ts +97 -0
  36. package/dest/l1/trace_tx.d.ts.map +1 -0
  37. package/dest/l1/trace_tx.js +91 -0
  38. package/dest/l1/types.d.ts +12 -0
  39. package/dest/l1/types.d.ts.map +1 -0
  40. package/dest/l1/types.js +3 -0
  41. package/dest/l1/validate_trace.d.ts +29 -0
  42. package/dest/l1/validate_trace.d.ts.map +1 -0
  43. package/dest/l1/validate_trace.js +150 -0
  44. package/dest/modules/data_source_base.d.ts +85 -0
  45. package/dest/modules/data_source_base.d.ts.map +1 -0
  46. package/dest/modules/data_source_base.js +291 -0
  47. package/dest/modules/data_store_updater.d.ts +69 -0
  48. package/dest/modules/data_store_updater.d.ts.map +1 -0
  49. package/dest/modules/data_store_updater.js +304 -0
  50. package/dest/modules/instrumentation.d.ts +37 -0
  51. package/dest/modules/instrumentation.d.ts.map +1 -0
  52. package/dest/{archiver → modules}/instrumentation.js +22 -59
  53. package/dest/modules/l1_synchronizer.d.ts +75 -0
  54. package/dest/modules/l1_synchronizer.d.ts.map +1 -0
  55. package/dest/modules/l1_synchronizer.js +1113 -0
  56. package/dest/modules/validation.d.ts +17 -0
  57. package/dest/modules/validation.d.ts.map +1 -0
  58. package/dest/{archiver → modules}/validation.js +7 -1
  59. package/dest/store/block_store.d.ts +178 -0
  60. package/dest/store/block_store.d.ts.map +1 -0
  61. package/dest/store/block_store.js +680 -0
  62. package/dest/store/contract_class_store.d.ts +18 -0
  63. package/dest/store/contract_class_store.d.ts.map +1 -0
  64. package/dest/{archiver/kv_archiver_store → store}/contract_class_store.js +2 -2
  65. package/dest/store/contract_instance_store.d.ts +24 -0
  66. package/dest/store/contract_instance_store.d.ts.map +1 -0
  67. package/dest/{archiver/kv_archiver_store → store}/contract_instance_store.js +1 -1
  68. package/dest/store/kv_archiver_store.d.ts +331 -0
  69. package/dest/store/kv_archiver_store.d.ts.map +1 -0
  70. package/dest/store/kv_archiver_store.js +438 -0
  71. package/dest/store/log_store.d.ts +45 -0
  72. package/dest/store/log_store.d.ts.map +1 -0
  73. package/dest/store/log_store.js +422 -0
  74. package/dest/store/message_store.d.ts +40 -0
  75. package/dest/store/message_store.d.ts.map +1 -0
  76. package/dest/{archiver/kv_archiver_store → store}/message_store.js +15 -14
  77. package/dest/{archiver/structs → structs}/data_retrieval.d.ts +1 -1
  78. package/dest/structs/data_retrieval.d.ts.map +1 -0
  79. package/dest/structs/inbox_message.d.ts +15 -0
  80. package/dest/structs/inbox_message.d.ts.map +1 -0
  81. package/dest/{archiver/structs → structs}/inbox_message.js +6 -6
  82. package/dest/structs/published.d.ts +2 -0
  83. package/dest/structs/published.d.ts.map +1 -0
  84. package/dest/test/fake_l1_state.d.ts +190 -0
  85. package/dest/test/fake_l1_state.d.ts.map +1 -0
  86. package/dest/test/fake_l1_state.js +383 -0
  87. package/dest/test/index.d.ts +2 -1
  88. package/dest/test/index.d.ts.map +1 -1
  89. package/dest/test/index.js +1 -0
  90. package/dest/test/mock_archiver.d.ts +5 -6
  91. package/dest/test/mock_archiver.d.ts.map +1 -1
  92. package/dest/test/mock_archiver.js +6 -11
  93. package/dest/test/mock_l1_to_l2_message_source.d.ts +6 -7
  94. package/dest/test/mock_l1_to_l2_message_source.d.ts.map +1 -1
  95. package/dest/test/mock_l1_to_l2_message_source.js +19 -14
  96. package/dest/test/mock_l2_block_source.d.ts +28 -14
  97. package/dest/test/mock_l2_block_source.d.ts.map +1 -1
  98. package/dest/test/mock_l2_block_source.js +160 -52
  99. package/dest/test/mock_structs.d.ts +78 -3
  100. package/dest/test/mock_structs.d.ts.map +1 -1
  101. package/dest/test/mock_structs.js +141 -10
  102. package/package.json +17 -18
  103. package/src/archiver.ts +525 -0
  104. package/src/{archiver/config.ts → config.ts} +28 -12
  105. package/src/errors.ts +90 -0
  106. package/src/factory.ts +118 -6
  107. package/src/index.ts +10 -3
  108. package/src/interfaces.ts +9 -0
  109. package/src/l1/README.md +98 -0
  110. package/src/l1/bin/retrieve-calldata.ts +182 -0
  111. package/src/l1/calldata_retriever.ts +641 -0
  112. package/src/{archiver → l1}/data_retrieval.ts +136 -218
  113. package/src/l1/debug_tx.ts +99 -0
  114. package/src/l1/spire_proposer.ts +160 -0
  115. package/src/l1/trace_tx.ts +128 -0
  116. package/src/l1/types.ts +13 -0
  117. package/src/l1/validate_trace.ts +211 -0
  118. package/src/modules/data_source_base.ts +414 -0
  119. package/src/modules/data_store_updater.ts +419 -0
  120. package/src/{archiver → modules}/instrumentation.ts +24 -59
  121. package/src/modules/l1_synchronizer.ts +931 -0
  122. package/src/{archiver → modules}/validation.ts +11 -6
  123. package/src/store/block_store.ts +919 -0
  124. package/src/{archiver/kv_archiver_store → store}/contract_class_store.ts +2 -2
  125. package/src/{archiver/kv_archiver_store → store}/contract_instance_store.ts +2 -2
  126. package/src/store/kv_archiver_store.ts +622 -0
  127. package/src/store/log_store.ts +552 -0
  128. package/src/{archiver/kv_archiver_store → store}/message_store.ts +21 -18
  129. package/src/{archiver/structs → structs}/inbox_message.ts +7 -8
  130. package/src/{archiver/structs → structs}/published.ts +0 -1
  131. package/src/test/fake_l1_state.ts +599 -0
  132. package/src/test/fixtures/debug_traceTransaction-multicall3.json +88 -0
  133. package/src/test/fixtures/debug_traceTransaction-multiplePropose.json +153 -0
  134. package/src/test/fixtures/debug_traceTransaction-proxied.json +122 -0
  135. package/src/test/fixtures/trace_transaction-multicall3.json +65 -0
  136. package/src/test/fixtures/trace_transaction-multiplePropose.json +319 -0
  137. package/src/test/fixtures/trace_transaction-proxied.json +128 -0
  138. package/src/test/fixtures/trace_transaction-randomRevert.json +216 -0
  139. package/src/test/index.ts +1 -0
  140. package/src/test/mock_archiver.ts +8 -13
  141. package/src/test/mock_l1_to_l2_message_source.ts +16 -15
  142. package/src/test/mock_l2_block_source.ts +184 -64
  143. package/src/test/mock_structs.ts +256 -11
  144. package/dest/archiver/archiver.d.ts +0 -290
  145. package/dest/archiver/archiver.d.ts.map +0 -1
  146. package/dest/archiver/archiver.js +0 -1434
  147. package/dest/archiver/archiver_store.d.ts +0 -256
  148. package/dest/archiver/archiver_store.d.ts.map +0 -1
  149. package/dest/archiver/archiver_store.js +0 -4
  150. package/dest/archiver/archiver_store_test_suite.d.ts +0 -8
  151. package/dest/archiver/archiver_store_test_suite.d.ts.map +0 -1
  152. package/dest/archiver/archiver_store_test_suite.js +0 -1289
  153. package/dest/archiver/config.d.ts +0 -21
  154. package/dest/archiver/config.d.ts.map +0 -1
  155. package/dest/archiver/data_retrieval.d.ts +0 -80
  156. package/dest/archiver/data_retrieval.d.ts.map +0 -1
  157. package/dest/archiver/errors.d.ts +0 -12
  158. package/dest/archiver/errors.d.ts.map +0 -1
  159. package/dest/archiver/errors.js +0 -17
  160. package/dest/archiver/index.d.ts +0 -7
  161. package/dest/archiver/index.d.ts.map +0 -1
  162. package/dest/archiver/index.js +0 -4
  163. package/dest/archiver/instrumentation.d.ts +0 -35
  164. package/dest/archiver/instrumentation.d.ts.map +0 -1
  165. package/dest/archiver/kv_archiver_store/block_store.d.ts +0 -125
  166. package/dest/archiver/kv_archiver_store/block_store.d.ts.map +0 -1
  167. package/dest/archiver/kv_archiver_store/block_store.js +0 -371
  168. package/dest/archiver/kv_archiver_store/contract_class_store.d.ts +0 -18
  169. package/dest/archiver/kv_archiver_store/contract_class_store.d.ts.map +0 -1
  170. package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts +0 -24
  171. package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts.map +0 -1
  172. package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts +0 -169
  173. package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts.map +0 -1
  174. package/dest/archiver/kv_archiver_store/kv_archiver_store.js +0 -296
  175. package/dest/archiver/kv_archiver_store/log_store.d.ts +0 -49
  176. package/dest/archiver/kv_archiver_store/log_store.d.ts.map +0 -1
  177. package/dest/archiver/kv_archiver_store/log_store.js +0 -337
  178. package/dest/archiver/kv_archiver_store/message_store.d.ts +0 -39
  179. package/dest/archiver/kv_archiver_store/message_store.d.ts.map +0 -1
  180. package/dest/archiver/structs/data_retrieval.d.ts.map +0 -1
  181. package/dest/archiver/structs/inbox_message.d.ts +0 -15
  182. package/dest/archiver/structs/inbox_message.d.ts.map +0 -1
  183. package/dest/archiver/structs/published.d.ts +0 -3
  184. package/dest/archiver/structs/published.d.ts.map +0 -1
  185. package/dest/archiver/validation.d.ts +0 -17
  186. package/dest/archiver/validation.d.ts.map +0 -1
  187. package/dest/rpc/index.d.ts +0 -9
  188. package/dest/rpc/index.d.ts.map +0 -1
  189. package/dest/rpc/index.js +0 -15
  190. package/src/archiver/archiver.ts +0 -1880
  191. package/src/archiver/archiver_store.ts +0 -310
  192. package/src/archiver/archiver_store_test_suite.ts +0 -1295
  193. package/src/archiver/errors.ts +0 -26
  194. package/src/archiver/index.ts +0 -6
  195. package/src/archiver/kv_archiver_store/block_store.ts +0 -482
  196. package/src/archiver/kv_archiver_store/kv_archiver_store.ts +0 -423
  197. package/src/archiver/kv_archiver_store/log_store.ts +0 -407
  198. package/src/rpc/index.ts +0 -16
  199. /package/dest/{archiver/structs → structs}/data_retrieval.js +0 -0
  200. /package/dest/{archiver/structs → structs}/published.js +0 -0
  201. /package/src/{archiver/structs → structs}/data_retrieval.ts +0 -0
@@ -1,9 +1,84 @@
1
+ import { CheckpointNumber } from '@aztec/foundation/branded-types';
1
2
  import { Buffer16 } from '@aztec/foundation/buffer';
2
- import { type InboxMessage } from '../archiver/structs/inbox_message.js';
3
+ import type { Secp256k1Signer } from '@aztec/foundation/crypto/secp256k1-signer';
4
+ import { EthAddress } from '@aztec/foundation/eth-address';
5
+ import { AztecAddress } from '@aztec/stdlib/aztec-address';
6
+ import { Checkpoint, L1PublishedData, PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
7
+ import { PrivateLog, PublicLog, SiloedTag, Tag } from '@aztec/stdlib/logs';
8
+ import { AppendOnlyTreeSnapshot } from '@aztec/stdlib/trees';
9
+ import { StateReference } from '@aztec/stdlib/tx';
10
+ import { type InboxMessage } from '../structs/inbox_message.js';
3
11
  export declare function makeInboxMessage(previousRollingHash?: Buffer16, overrides?: Partial<InboxMessage>): InboxMessage;
4
12
  export declare function makeInboxMessages(count: number, opts?: {
5
13
  initialHash?: Buffer16;
6
- initialL2BlockNumber?: number;
14
+ initialCheckpointNumber?: CheckpointNumber;
7
15
  overrideFn?: (msg: InboxMessage, index: number) => InboxMessage;
8
16
  }): InboxMessage[];
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19zdHJ1Y3RzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdC9tb2NrX3N0cnVjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFFBQVEsRUFBWSxNQUFNLDBCQUEwQixDQUFDO0FBSzlELE9BQU8sRUFBRSxLQUFLLFlBQVksRUFBcUIsTUFBTSxzQ0FBc0MsQ0FBQztBQUU1Rix3QkFBZ0IsZ0JBQWdCLENBQzlCLG1CQUFtQixXQUFnQixFQUNuQyxTQUFTLEdBQUUsT0FBTyxDQUFDLFlBQVksQ0FBTSxHQUNwQyxZQUFZLENBZ0JkO0FBRUQsd0JBQWdCLGlCQUFpQixDQUMvQixLQUFLLEVBQUUsTUFBTSxFQUNiLElBQUksR0FBRTtJQUNKLFdBQVcsQ0FBQyxFQUFFLFFBQVEsQ0FBQztJQUN2QixvQkFBb0IsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUM5QixVQUFVLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sS0FBSyxZQUFZLENBQUM7Q0FDNUQsR0FDTCxZQUFZLEVBQUUsQ0FhaEIifQ==
17
+ /** Creates inbox messages distributed across multiple blocks with proper checkpoint numbering. */
18
+ export declare function makeInboxMessagesWithFullBlocks(blockCount: number, opts?: {
19
+ initialCheckpointNumber?: CheckpointNumber;
20
+ }): InboxMessage[];
21
+ /** Creates a deterministic block hash from a block number. */
22
+ export declare function makeBlockHash(blockNumber: number): `0x${string}`;
23
+ /**
24
+ * Creates a StateReference with properly calculated noteHashTree.nextAvailableLeafIndex.
25
+ * This ensures LogStore's dataStartIndexForBlock calculation doesn't produce negative values.
26
+ */
27
+ export declare function makeStateForBlock(blockNumber: number, txsPerBlock: number): StateReference;
28
+ /** Creates L1PublishedData with deterministic values based on l1BlockNumber. */
29
+ export declare function makeL1PublishedData(l1BlockNumber: number): L1PublishedData;
30
+ /** Wraps a Checkpoint with L1 published data and random attestations. */
31
+ export declare function makePublishedCheckpoint(checkpoint: Checkpoint, l1BlockNumber: number, attestationCount?: number): PublishedCheckpoint;
32
+ export interface MakeChainedCheckpointsOptions {
33
+ /** Number of L2 blocks per checkpoint. Default: 1 */
34
+ blocksPerCheckpoint?: number;
35
+ /** Number of transactions per block. Default: 4 */
36
+ txsPerBlock?: number;
37
+ /** Starting checkpoint number. Default: CheckpointNumber(1) */
38
+ startCheckpointNumber?: CheckpointNumber;
39
+ /** Starting block number. Default: 1 */
40
+ startBlockNumber?: number;
41
+ /** Starting L1 block number. Default: 10 */
42
+ startL1BlockNumber?: number;
43
+ /** Previous archive to chain from. Default: undefined */
44
+ previousArchive?: AppendOnlyTreeSnapshot;
45
+ /** Optional function to provide per-checkpoint overrides */
46
+ makeCheckpointOptions?: (cpNumber: CheckpointNumber) => Partial<Parameters<typeof Checkpoint.random>[1]>;
47
+ }
48
+ /**
49
+ * Creates multiple checkpoints with properly chained archives.
50
+ * Each checkpoint's blocks have their lastArchive set to the previous block's archive,
51
+ * ensuring archive chain continuity for testing.
52
+ */
53
+ export declare function makeChainedCheckpoints(count: number, options?: MakeChainedCheckpointsOptions): Promise<PublishedCheckpoint[]>;
54
+ /**
55
+ * Creates a PublishedCheckpoint with attestations signed by the provided signers.
56
+ * Useful for testing attestation validation.
57
+ */
58
+ export declare function makeSignedPublishedCheckpoint(checkpoint: Checkpoint, signers: Secp256k1Signer[], committee: EthAddress[], l1BlockNumber?: number): PublishedCheckpoint;
59
+ /** Creates a deterministic SiloedTag for private log testing. */
60
+ export declare function makePrivateLogTag(blockNumber: number, txIndex: number, logIndex: number): SiloedTag;
61
+ /** Creates a PrivateLog with fields derived from the tag. */
62
+ export declare function makePrivateLog(tag: SiloedTag): PrivateLog;
63
+ /** Creates multiple private logs for a transaction. */
64
+ export declare function mockPrivateLogs(blockNumber: number, txIndex: number, numLogsPerTx: number): PrivateLog[];
65
+ /** Creates a deterministic Tag for public log testing. */
66
+ export declare function makePublicLogTag(blockNumber: number, txIndex: number, logIndex: number): Tag;
67
+ /** Creates a PublicLog with fields derived from the tag. */
68
+ export declare function makePublicLog(tag: Tag, contractAddress?: AztecAddress): PublicLog;
69
+ /** Creates multiple public logs for a transaction. */
70
+ export declare function makePublicLogs(blockNumber: number, txIndex: number, numLogsPerTx: number, contractAddress?: AztecAddress): PublicLog[];
71
+ export interface MockCheckpointWithLogsOptions {
72
+ previousArchive?: AppendOnlyTreeSnapshot;
73
+ numTxsPerBlock?: number;
74
+ privateLogs?: {
75
+ numLogsPerTx: number;
76
+ };
77
+ publicLogs?: {
78
+ numLogsPerTx: number;
79
+ contractAddress?: AztecAddress;
80
+ };
81
+ }
82
+ /** Creates a checkpoint with specified logs on each tx effect. */
83
+ export declare function makeCheckpointWithLogs(blockNumber: number, options?: MockCheckpointWithLogsOptions): Promise<PublishedCheckpoint>;
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19zdHJ1Y3RzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdC9tb2NrX3N0cnVjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsT0FBTyxFQUFlLGdCQUFnQixFQUF5QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxRQUFRLEVBQVksTUFBTSwwQkFBMEIsQ0FBQztBQUc5RCxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUVqRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTNELE9BQU8sRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUYsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSzNFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzdELE9BQU8sRUFBeUIsY0FBYyxFQUFZLE1BQU0sa0JBQWtCLENBQUM7QUFFbkYsT0FBTyxFQUFFLEtBQUssWUFBWSxFQUFxQixNQUFNLDZCQUE2QixDQUFDO0FBRW5GLHdCQUFnQixnQkFBZ0IsQ0FDOUIsbUJBQW1CLFdBQWdCLEVBQ25DLFNBQVMsR0FBRSxPQUFPLENBQUMsWUFBWSxDQUFNLEdBQ3BDLFlBQVksQ0FnQmQ7QUFFRCx3QkFBZ0IsaUJBQWlCLENBQy9CLEtBQUssRUFBRSxNQUFNLEVBQ2IsSUFBSSxHQUFFO0lBQ0osV0FBVyxDQUFDLEVBQUUsUUFBUSxDQUFDO0lBQ3ZCLHVCQUF1QixDQUFDLEVBQUUsZ0JBQWdCLENBQUM7SUFDM0MsVUFBVSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEtBQUss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
@@ -1 +1 @@
1
- {"version":3,"file":"mock_structs.d.ts","sourceRoot":"","sources":["../../src/test/mock_structs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAY,MAAM,0BAA0B,CAAC;AAK9D,OAAO,EAAE,KAAK,YAAY,EAAqB,MAAM,sCAAsC,CAAC;AAE5F,wBAAgB,gBAAgB,CAC9B,mBAAmB,WAAgB,EACnC,SAAS,GAAE,OAAO,CAAC,YAAY,CAAM,GACpC,YAAY,CAgBd;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,EACb,IAAI,GAAE;IACJ,WAAW,CAAC,EAAE,QAAQ,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,KAAK,YAAY,CAAC;CAC5D,GACL,YAAY,EAAE,CAahB"}
1
+ {"version":3,"file":"mock_structs.d.ts","sourceRoot":"","sources":["../../src/test/mock_structs.ts"],"names":[],"mappings":"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"}
@@ -1,38 +1,169 @@
1
- import { BlockNumber } from '@aztec/foundation/branded-types';
1
+ import { MAX_NOTE_HASHES_PER_TX, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, PRIVATE_LOG_SIZE_IN_FIELDS } from '@aztec/constants';
2
+ import { makeTuple } from '@aztec/foundation/array';
3
+ import { BlockNumber, CheckpointNumber, IndexWithinCheckpoint } from '@aztec/foundation/branded-types';
2
4
  import { Buffer16, Buffer32 } from '@aztec/foundation/buffer';
3
- import { randomBigInt, randomInt } from '@aztec/foundation/crypto';
4
- import { Fr } from '@aztec/foundation/fields';
5
+ import { times, timesParallel } from '@aztec/foundation/collection';
6
+ import { randomBigInt, randomInt } from '@aztec/foundation/crypto/random';
7
+ import { Fr } from '@aztec/foundation/curves/bn254';
8
+ import { AztecAddress } from '@aztec/stdlib/aztec-address';
9
+ import { CommitteeAttestation, L2BlockNew } from '@aztec/stdlib/block';
10
+ import { Checkpoint, L1PublishedData, PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
11
+ import { PrivateLog, PublicLog, SiloedTag, Tag } from '@aztec/stdlib/logs';
5
12
  import { InboxLeaf } from '@aztec/stdlib/messaging';
6
- import { updateRollingHash } from '../archiver/structs/inbox_message.js';
13
+ import { orderAttestations } from '@aztec/stdlib/p2p';
14
+ import { CheckpointHeader } from '@aztec/stdlib/rollup';
15
+ import { makeCheckpointAttestationFromCheckpoint } from '@aztec/stdlib/testing';
16
+ import { AppendOnlyTreeSnapshot } from '@aztec/stdlib/trees';
17
+ import { PartialStateReference, StateReference, TxEffect } from '@aztec/stdlib/tx';
18
+ import { updateRollingHash } from '../structs/inbox_message.js';
7
19
  export function makeInboxMessage(previousRollingHash = Buffer16.ZERO, overrides = {}) {
8
- const { l2BlockNumber = randomInt(100) + 1 } = overrides;
20
+ const { checkpointNumber = CheckpointNumber(randomInt(100) + 1) } = overrides;
9
21
  const { l1BlockNumber = randomBigInt(100n) + 1n } = overrides;
10
22
  const { l1BlockHash = Buffer32.random() } = overrides;
11
23
  const { leaf = Fr.random() } = overrides;
12
24
  const { rollingHash = updateRollingHash(previousRollingHash, leaf) } = overrides;
13
- const { index = InboxLeaf.smallestIndexFromL2Block(l2BlockNumber) } = overrides;
25
+ const { index = InboxLeaf.smallestIndexForCheckpoint(checkpointNumber) } = overrides;
14
26
  return {
15
27
  index,
16
28
  leaf,
17
- l2BlockNumber: BlockNumber(l2BlockNumber),
29
+ checkpointNumber,
18
30
  l1BlockNumber,
19
31
  l1BlockHash,
20
32
  rollingHash
21
33
  };
22
34
  }
23
35
  export function makeInboxMessages(count, opts = {}) {
24
- const { initialHash = Buffer16.ZERO, overrideFn = (msg)=>msg, initialL2BlockNumber = 1 } = opts;
36
+ const { initialHash = Buffer16.ZERO, overrideFn = (msg)=>msg, initialCheckpointNumber = 1 } = opts;
25
37
  const messages = [];
26
38
  let rollingHash = initialHash;
27
39
  for(let i = 0; i < count; i++){
28
40
  const leaf = Fr.random();
29
- const l2BlockNumber = BlockNumber(i + initialL2BlockNumber);
41
+ const checkpointNumber = CheckpointNumber(i + initialCheckpointNumber);
30
42
  const message = overrideFn(makeInboxMessage(rollingHash, {
31
43
  leaf,
32
- l2BlockNumber
44
+ checkpointNumber
33
45
  }), i);
34
46
  rollingHash = message.rollingHash;
35
47
  messages.push(message);
36
48
  }
37
49
  return messages;
38
50
  }
51
+ /** Creates inbox messages distributed across multiple blocks with proper checkpoint numbering. */ export function makeInboxMessagesWithFullBlocks(blockCount, opts = {}) {
52
+ const { initialCheckpointNumber = CheckpointNumber(13) } = opts;
53
+ return makeInboxMessages(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP * blockCount, {
54
+ overrideFn: (msg, i)=>{
55
+ const checkpointNumber = CheckpointNumber(initialCheckpointNumber + Math.floor(i / NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP));
56
+ const index = InboxLeaf.smallestIndexForCheckpoint(checkpointNumber) + BigInt(i % NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP);
57
+ return {
58
+ ...msg,
59
+ checkpointNumber,
60
+ index
61
+ };
62
+ }
63
+ });
64
+ }
65
+ /** Creates a deterministic block hash from a block number. */ export function makeBlockHash(blockNumber) {
66
+ return `0x${blockNumber.toString(16).padStart(64, '0')}`;
67
+ }
68
+ /**
69
+ * Creates a StateReference with properly calculated noteHashTree.nextAvailableLeafIndex.
70
+ * This ensures LogStore's dataStartIndexForBlock calculation doesn't produce negative values.
71
+ */ export function makeStateForBlock(blockNumber, txsPerBlock) {
72
+ const noteHashIndex = blockNumber * txsPerBlock * MAX_NOTE_HASHES_PER_TX;
73
+ return new StateReference(AppendOnlyTreeSnapshot.random(), new PartialStateReference(new AppendOnlyTreeSnapshot(Fr.random(), noteHashIndex), AppendOnlyTreeSnapshot.random(), AppendOnlyTreeSnapshot.random()));
74
+ }
75
+ /** Creates L1PublishedData with deterministic values based on l1BlockNumber. */ export function makeL1PublishedData(l1BlockNumber) {
76
+ return new L1PublishedData(BigInt(l1BlockNumber), BigInt(l1BlockNumber * 1000), makeBlockHash(l1BlockNumber));
77
+ }
78
+ /** Wraps a Checkpoint with L1 published data and random attestations. */ export function makePublishedCheckpoint(checkpoint, l1BlockNumber, attestationCount = 3) {
79
+ return new PublishedCheckpoint(checkpoint, makeL1PublishedData(l1BlockNumber), times(attestationCount, CommitteeAttestation.random));
80
+ }
81
+ /**
82
+ * Creates multiple checkpoints with properly chained archives.
83
+ * Each checkpoint's blocks have their lastArchive set to the previous block's archive,
84
+ * ensuring archive chain continuity for testing.
85
+ */ export async function makeChainedCheckpoints(count, options = {}) {
86
+ const { blocksPerCheckpoint = 1, txsPerBlock = 4, startCheckpointNumber = CheckpointNumber(1), startBlockNumber = 1, startL1BlockNumber = 10, makeCheckpointOptions } = options;
87
+ let previousArchive = options.previousArchive;
88
+ const checkpoints = [];
89
+ for(let i = 0; i < count; i++){
90
+ const cpNumber = CheckpointNumber(startCheckpointNumber + i);
91
+ const blockStart = startBlockNumber + i * blocksPerCheckpoint;
92
+ const customOptions = makeCheckpointOptions?.(cpNumber) ?? {};
93
+ const checkpoint = await Checkpoint.random(cpNumber, {
94
+ numBlocks: blocksPerCheckpoint,
95
+ startBlockNumber: blockStart,
96
+ previousArchive,
97
+ txsPerBlock,
98
+ state: makeStateForBlock(blockStart, txsPerBlock),
99
+ txOptions: {
100
+ numPublicCallsPerTx: 2,
101
+ numPublicLogsPerCall: 2
102
+ },
103
+ ...customOptions
104
+ });
105
+ previousArchive = checkpoint.blocks.at(-1).archive;
106
+ checkpoints.push(makePublishedCheckpoint(checkpoint, startL1BlockNumber + i * 10));
107
+ }
108
+ return checkpoints;
109
+ }
110
+ /**
111
+ * Creates a PublishedCheckpoint with attestations signed by the provided signers.
112
+ * Useful for testing attestation validation.
113
+ */ export function makeSignedPublishedCheckpoint(checkpoint, signers, committee, l1BlockNumber = 1) {
114
+ const attestations = signers.map((signer)=>makeCheckpointAttestationFromCheckpoint(checkpoint, signer));
115
+ const committeeAttestations = orderAttestations(attestations, committee);
116
+ return new PublishedCheckpoint(checkpoint, makeL1PublishedData(l1BlockNumber), committeeAttestations);
117
+ }
118
+ /** Creates a deterministic SiloedTag for private log testing. */ export function makePrivateLogTag(blockNumber, txIndex, logIndex) {
119
+ return new SiloedTag(blockNumber === 1 && txIndex === 0 && logIndex === 0 ? Fr.ZERO : new Fr(blockNumber * 100 + txIndex * 10 + logIndex));
120
+ }
121
+ /** Creates a PrivateLog with fields derived from the tag. */ export function makePrivateLog(tag) {
122
+ return PrivateLog.from({
123
+ fields: makeTuple(PRIVATE_LOG_SIZE_IN_FIELDS, (i)=>!i ? tag.value : new Fr(tag.value.toBigInt() + BigInt(i))),
124
+ emittedLength: PRIVATE_LOG_SIZE_IN_FIELDS
125
+ });
126
+ }
127
+ /** Creates multiple private logs for a transaction. */ export function mockPrivateLogs(blockNumber, txIndex, numLogsPerTx) {
128
+ return times(numLogsPerTx, (logIndex)=>{
129
+ const tag = makePrivateLogTag(blockNumber, txIndex, logIndex);
130
+ return makePrivateLog(tag);
131
+ });
132
+ }
133
+ /** Creates a deterministic Tag for public log testing. */ export function makePublicLogTag(blockNumber, txIndex, logIndex) {
134
+ return new Tag(blockNumber === 1 && txIndex === 0 && logIndex === 0 ? Fr.ZERO : new Fr((blockNumber * 100 + txIndex * 10 + logIndex) * 123));
135
+ }
136
+ /** Creates a PublicLog with fields derived from the tag. */ export function makePublicLog(tag, contractAddress = AztecAddress.fromNumber(543254)) {
137
+ return PublicLog.from({
138
+ contractAddress,
139
+ fields: new Array(10).fill(null).map((_, i)=>!i ? tag.value : new Fr(tag.value.toBigInt() + BigInt(i)))
140
+ });
141
+ }
142
+ /** Creates multiple public logs for a transaction. */ export function makePublicLogs(blockNumber, txIndex, numLogsPerTx, contractAddress = AztecAddress.fromNumber(543254)) {
143
+ return times(numLogsPerTx, (logIndex)=>{
144
+ const tag = makePublicLogTag(blockNumber, txIndex, logIndex);
145
+ return makePublicLog(tag, contractAddress);
146
+ });
147
+ }
148
+ /** Creates a checkpoint with specified logs on each tx effect. */ export async function makeCheckpointWithLogs(blockNumber, options = {}) {
149
+ const { previousArchive, numTxsPerBlock = 4, privateLogs, publicLogs } = options;
150
+ const block = await L2BlockNew.random(BlockNumber(blockNumber), {
151
+ checkpointNumber: CheckpointNumber(blockNumber),
152
+ indexWithinCheckpoint: IndexWithinCheckpoint(0),
153
+ state: makeStateForBlock(blockNumber, numTxsPerBlock),
154
+ ...previousArchive ? {
155
+ lastArchive: previousArchive
156
+ } : {}
157
+ });
158
+ block.header.globalVariables.blockNumber = BlockNumber(blockNumber);
159
+ block.body.txEffects = await timesParallel(numTxsPerBlock, async (txIndex)=>{
160
+ const txEffect = await TxEffect.random();
161
+ txEffect.privateLogs = privateLogs ? mockPrivateLogs(blockNumber, txIndex, privateLogs.numLogsPerTx) : [];
162
+ txEffect.publicLogs = publicLogs ? makePublicLogs(blockNumber, txIndex, publicLogs.numLogsPerTx, publicLogs.contractAddress) : [];
163
+ return txEffect;
164
+ });
165
+ const checkpoint = new Checkpoint(AppendOnlyTreeSnapshot.random(), CheckpointHeader.random(), [
166
+ block
167
+ ], CheckpointNumber(blockNumber));
168
+ return makePublishedCheckpoint(checkpoint, blockNumber);
169
+ }
package/package.json CHANGED
@@ -1,13 +1,11 @@
1
1
  {
2
2
  "name": "@aztec/archiver",
3
- "version": "0.0.1-commit.d3ec352c",
3
+ "version": "0.0.1-commit.f295ac2",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./dest/index.js",
7
- "./data-retrieval": "./dest/archiver/data_retrieval.js",
8
- "./epoch": "./dest/archiver/epoch_helpers.js",
9
7
  "./test": "./dest/test/index.js",
10
- "./config": "./dest/archiver/config.js"
8
+ "./config": "./dest/config.js"
11
9
  },
12
10
  "typedocOptions": {
13
11
  "entryPoints": [
@@ -66,22 +64,23 @@
66
64
  ]
67
65
  },
68
66
  "dependencies": {
69
- "@aztec/blob-lib": "0.0.1-commit.d3ec352c",
70
- "@aztec/blob-sink": "0.0.1-commit.d3ec352c",
71
- "@aztec/constants": "0.0.1-commit.d3ec352c",
72
- "@aztec/epoch-cache": "0.0.1-commit.d3ec352c",
73
- "@aztec/ethereum": "0.0.1-commit.d3ec352c",
74
- "@aztec/foundation": "0.0.1-commit.d3ec352c",
75
- "@aztec/kv-store": "0.0.1-commit.d3ec352c",
76
- "@aztec/l1-artifacts": "0.0.1-commit.d3ec352c",
77
- "@aztec/noir-protocol-circuits-types": "0.0.1-commit.d3ec352c",
78
- "@aztec/protocol-contracts": "0.0.1-commit.d3ec352c",
79
- "@aztec/stdlib": "0.0.1-commit.d3ec352c",
80
- "@aztec/telemetry-client": "0.0.1-commit.d3ec352c",
67
+ "@aztec/blob-client": "0.0.1-commit.f295ac2",
68
+ "@aztec/blob-lib": "0.0.1-commit.f295ac2",
69
+ "@aztec/constants": "0.0.1-commit.f295ac2",
70
+ "@aztec/epoch-cache": "0.0.1-commit.f295ac2",
71
+ "@aztec/ethereum": "0.0.1-commit.f295ac2",
72
+ "@aztec/foundation": "0.0.1-commit.f295ac2",
73
+ "@aztec/kv-store": "0.0.1-commit.f295ac2",
74
+ "@aztec/l1-artifacts": "0.0.1-commit.f295ac2",
75
+ "@aztec/noir-protocol-circuits-types": "0.0.1-commit.f295ac2",
76
+ "@aztec/protocol-contracts": "0.0.1-commit.f295ac2",
77
+ "@aztec/stdlib": "0.0.1-commit.f295ac2",
78
+ "@aztec/telemetry-client": "0.0.1-commit.f295ac2",
81
79
  "lodash.groupby": "^4.6.0",
82
80
  "lodash.omit": "^4.5.0",
83
81
  "tslib": "^2.5.0",
84
- "viem": "npm:@aztec/viem@2.38.2"
82
+ "viem": "npm:@aztec/viem@2.38.2",
83
+ "zod": "^3.23.8"
85
84
  },
86
85
  "devDependencies": {
87
86
  "@jest/globals": "^30.0.0",
@@ -89,7 +88,7 @@
89
88
  "@types/lodash.groupby": "^4.6.9",
90
89
  "@types/lodash.omit": "^4.5.7",
91
90
  "@types/node": "^22.15.17",
92
- "@typescript/native-preview": "7.0.0-dev.20251126.1",
91
+ "@typescript/native-preview": "7.0.0-dev.20260113.1",
93
92
  "concurrently": "^8.0.1",
94
93
  "jest": "^30.0.0",
95
94
  "jest-mock-extended": "^4.0.0",