@aztec/archiver 0.0.1-commit.7d4e6cd → 0.0.1-commit.8227e42

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 (199) hide show
  1. package/README.md +156 -22
  2. package/dest/archiver.d.ts +139 -0
  3. package/dest/archiver.d.ts.map +1 -0
  4. package/dest/archiver.js +699 -0
  5. package/dest/{archiver/config.d.ts → config.d.ts} +9 -1
  6. package/dest/config.d.ts.map +1 -0
  7. package/dest/{archiver/config.js → config.js} +9 -0
  8. package/dest/errors.d.ts +41 -0
  9. package/dest/errors.d.ts.map +1 -0
  10. package/dest/{archiver/errors.js → errors.js} +8 -0
  11. package/dest/factory.d.ts +9 -7
  12. package/dest/factory.d.ts.map +1 -1
  13. package/dest/factory.js +91 -11
  14. package/dest/index.d.ts +11 -4
  15. package/dest/index.d.ts.map +1 -1
  16. package/dest/index.js +9 -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/{archiver/l1 → l1}/bin/retrieve-calldata.d.ts +1 -1
  21. package/dest/l1/bin/retrieve-calldata.d.ts.map +1 -0
  22. package/dest/{archiver/l1 → l1}/bin/retrieve-calldata.js +35 -32
  23. package/dest/l1/calldata_retriever.d.ts +135 -0
  24. package/dest/l1/calldata_retriever.d.ts.map +1 -0
  25. package/dest/l1/calldata_retriever.js +402 -0
  26. package/dest/l1/data_retrieval.d.ts +85 -0
  27. package/dest/l1/data_retrieval.d.ts.map +1 -0
  28. package/dest/{archiver/l1 → l1}/data_retrieval.js +43 -66
  29. package/dest/{archiver/l1 → l1}/debug_tx.d.ts +1 -1
  30. package/dest/l1/debug_tx.d.ts.map +1 -0
  31. package/dest/{archiver/l1 → l1}/spire_proposer.d.ts +5 -5
  32. package/dest/l1/spire_proposer.d.ts.map +1 -0
  33. package/dest/{archiver/l1 → l1}/spire_proposer.js +9 -17
  34. package/dest/{archiver/l1 → l1}/trace_tx.d.ts +1 -1
  35. package/dest/l1/trace_tx.d.ts.map +1 -0
  36. package/dest/l1/types.d.ts +12 -0
  37. package/dest/l1/types.d.ts.map +1 -0
  38. package/dest/{archiver/l1 → l1}/validate_trace.d.ts +6 -3
  39. package/dest/l1/validate_trace.d.ts.map +1 -0
  40. package/dest/{archiver/l1 → l1}/validate_trace.js +13 -9
  41. package/dest/modules/data_source_base.d.ts +89 -0
  42. package/dest/modules/data_source_base.d.ts.map +1 -0
  43. package/dest/modules/data_source_base.js +216 -0
  44. package/dest/modules/data_store_updater.d.ts +80 -0
  45. package/dest/modules/data_store_updater.d.ts.map +1 -0
  46. package/dest/modules/data_store_updater.js +323 -0
  47. package/dest/modules/instrumentation.d.ts +50 -0
  48. package/dest/modules/instrumentation.d.ts.map +1 -0
  49. package/dest/{archiver → modules}/instrumentation.js +36 -12
  50. package/dest/modules/l1_synchronizer.d.ts +71 -0
  51. package/dest/modules/l1_synchronizer.d.ts.map +1 -0
  52. package/dest/modules/l1_synchronizer.js +1117 -0
  53. package/dest/{archiver → modules}/validation.d.ts +1 -1
  54. package/dest/modules/validation.d.ts.map +1 -0
  55. package/dest/{archiver → modules}/validation.js +6 -0
  56. package/dest/store/block_store.d.ts +196 -0
  57. package/dest/store/block_store.d.ts.map +1 -0
  58. package/dest/{archiver/kv_archiver_store → store}/block_store.js +207 -60
  59. package/dest/store/contract_class_store.d.ts +18 -0
  60. package/dest/store/contract_class_store.d.ts.map +1 -0
  61. package/dest/{archiver/kv_archiver_store → store}/contract_class_store.js +12 -8
  62. package/dest/store/contract_instance_store.d.ts +24 -0
  63. package/dest/store/contract_instance_store.d.ts.map +1 -0
  64. package/dest/{archiver/kv_archiver_store → store}/contract_instance_store.js +1 -1
  65. package/dest/store/kv_archiver_store.d.ts +354 -0
  66. package/dest/store/kv_archiver_store.d.ts.map +1 -0
  67. package/dest/store/kv_archiver_store.js +464 -0
  68. package/dest/store/l2_tips_cache.d.ts +19 -0
  69. package/dest/store/l2_tips_cache.d.ts.map +1 -0
  70. package/dest/store/l2_tips_cache.js +89 -0
  71. package/dest/store/log_store.d.ts +54 -0
  72. package/dest/store/log_store.d.ts.map +1 -0
  73. package/dest/{archiver/kv_archiver_store → store}/log_store.js +146 -91
  74. package/dest/{archiver/kv_archiver_store → store}/message_store.d.ts +1 -1
  75. package/dest/store/message_store.d.ts.map +1 -0
  76. package/dest/{archiver/structs → structs}/data_retrieval.d.ts +1 -1
  77. package/dest/structs/data_retrieval.d.ts.map +1 -0
  78. package/dest/structs/inbox_message.d.ts +15 -0
  79. package/dest/structs/inbox_message.d.ts.map +1 -0
  80. package/dest/{archiver/structs → structs}/published.d.ts +1 -1
  81. package/dest/structs/published.d.ts.map +1 -0
  82. package/dest/test/fake_l1_state.d.ts +195 -0
  83. package/dest/test/fake_l1_state.d.ts.map +1 -0
  84. package/dest/test/fake_l1_state.js +421 -0
  85. package/dest/test/index.d.ts +2 -1
  86. package/dest/test/index.d.ts.map +1 -1
  87. package/dest/test/index.js +4 -1
  88. package/dest/test/mock_archiver.d.ts +2 -2
  89. package/dest/test/mock_archiver.d.ts.map +1 -1
  90. package/dest/test/mock_archiver.js +3 -3
  91. package/dest/test/mock_l2_block_source.d.ts +35 -17
  92. package/dest/test/mock_l2_block_source.d.ts.map +1 -1
  93. package/dest/test/mock_l2_block_source.js +177 -74
  94. package/dest/test/mock_structs.d.ts +78 -3
  95. package/dest/test/mock_structs.d.ts.map +1 -1
  96. package/dest/test/mock_structs.js +140 -7
  97. package/dest/test/noop_l1_archiver.d.ts +23 -0
  98. package/dest/test/noop_l1_archiver.d.ts.map +1 -0
  99. package/dest/test/noop_l1_archiver.js +68 -0
  100. package/package.json +16 -17
  101. package/src/archiver.ts +443 -0
  102. package/src/{archiver/config.ts → config.ts} +11 -0
  103. package/src/{archiver/errors.ts → errors.ts} +12 -0
  104. package/src/factory.ts +139 -11
  105. package/src/index.ts +11 -3
  106. package/src/interfaces.ts +9 -0
  107. package/src/l1/README.md +55 -0
  108. package/src/{archiver/l1 → l1}/bin/retrieve-calldata.ts +45 -33
  109. package/src/l1/calldata_retriever.ts +511 -0
  110. package/src/{archiver/l1 → l1}/data_retrieval.ts +61 -88
  111. package/src/{archiver/l1 → l1}/spire_proposer.ts +7 -15
  112. package/src/{archiver/l1 → l1}/validate_trace.ts +24 -6
  113. package/src/modules/data_source_base.ts +328 -0
  114. package/src/modules/data_store_updater.ts +448 -0
  115. package/src/{archiver → modules}/instrumentation.ts +46 -14
  116. package/src/modules/l1_synchronizer.ts +933 -0
  117. package/src/{archiver → modules}/validation.ts +5 -0
  118. package/src/{archiver/kv_archiver_store → store}/block_store.ts +258 -93
  119. package/src/{archiver/kv_archiver_store → store}/contract_class_store.ts +12 -8
  120. package/src/{archiver/kv_archiver_store → store}/contract_instance_store.ts +1 -1
  121. package/src/{archiver/kv_archiver_store → store}/kv_archiver_store.ts +267 -38
  122. package/src/store/l2_tips_cache.ts +89 -0
  123. package/src/{archiver/kv_archiver_store → store}/log_store.ts +242 -121
  124. package/src/test/fake_l1_state.ts +657 -0
  125. package/src/test/index.ts +4 -0
  126. package/src/test/mock_archiver.ts +4 -3
  127. package/src/test/mock_l2_block_source.ts +218 -90
  128. package/src/test/mock_structs.ts +269 -8
  129. package/src/test/noop_l1_archiver.ts +109 -0
  130. package/dest/archiver/archiver.d.ts +0 -307
  131. package/dest/archiver/archiver.d.ts.map +0 -1
  132. package/dest/archiver/archiver.js +0 -2102
  133. package/dest/archiver/archiver_store.d.ts +0 -315
  134. package/dest/archiver/archiver_store.d.ts.map +0 -1
  135. package/dest/archiver/archiver_store.js +0 -4
  136. package/dest/archiver/archiver_store_test_suite.d.ts +0 -8
  137. package/dest/archiver/archiver_store_test_suite.d.ts.map +0 -1
  138. package/dest/archiver/archiver_store_test_suite.js +0 -2770
  139. package/dest/archiver/config.d.ts.map +0 -1
  140. package/dest/archiver/errors.d.ts +0 -36
  141. package/dest/archiver/errors.d.ts.map +0 -1
  142. package/dest/archiver/index.d.ts +0 -7
  143. package/dest/archiver/index.d.ts.map +0 -1
  144. package/dest/archiver/index.js +0 -4
  145. package/dest/archiver/instrumentation.d.ts +0 -37
  146. package/dest/archiver/instrumentation.d.ts.map +0 -1
  147. package/dest/archiver/kv_archiver_store/block_store.d.ts +0 -164
  148. package/dest/archiver/kv_archiver_store/block_store.d.ts.map +0 -1
  149. package/dest/archiver/kv_archiver_store/contract_class_store.d.ts +0 -18
  150. package/dest/archiver/kv_archiver_store/contract_class_store.d.ts.map +0 -1
  151. package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts +0 -24
  152. package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts.map +0 -1
  153. package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts +0 -159
  154. package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts.map +0 -1
  155. package/dest/archiver/kv_archiver_store/kv_archiver_store.js +0 -316
  156. package/dest/archiver/kv_archiver_store/log_store.d.ts +0 -45
  157. package/dest/archiver/kv_archiver_store/log_store.d.ts.map +0 -1
  158. package/dest/archiver/kv_archiver_store/message_store.d.ts.map +0 -1
  159. package/dest/archiver/l1/bin/retrieve-calldata.d.ts.map +0 -1
  160. package/dest/archiver/l1/calldata_retriever.d.ts +0 -112
  161. package/dest/archiver/l1/calldata_retriever.d.ts.map +0 -1
  162. package/dest/archiver/l1/calldata_retriever.js +0 -471
  163. package/dest/archiver/l1/data_retrieval.d.ts +0 -90
  164. package/dest/archiver/l1/data_retrieval.d.ts.map +0 -1
  165. package/dest/archiver/l1/debug_tx.d.ts.map +0 -1
  166. package/dest/archiver/l1/spire_proposer.d.ts.map +0 -1
  167. package/dest/archiver/l1/trace_tx.d.ts.map +0 -1
  168. package/dest/archiver/l1/types.d.ts +0 -12
  169. package/dest/archiver/l1/types.d.ts.map +0 -1
  170. package/dest/archiver/l1/validate_trace.d.ts.map +0 -1
  171. package/dest/archiver/structs/data_retrieval.d.ts.map +0 -1
  172. package/dest/archiver/structs/inbox_message.d.ts +0 -15
  173. package/dest/archiver/structs/inbox_message.d.ts.map +0 -1
  174. package/dest/archiver/structs/published.d.ts.map +0 -1
  175. package/dest/archiver/validation.d.ts.map +0 -1
  176. package/dest/rpc/index.d.ts +0 -9
  177. package/dest/rpc/index.d.ts.map +0 -1
  178. package/dest/rpc/index.js +0 -15
  179. package/src/archiver/archiver.ts +0 -2265
  180. package/src/archiver/archiver_store.ts +0 -380
  181. package/src/archiver/archiver_store_test_suite.ts +0 -2842
  182. package/src/archiver/index.ts +0 -6
  183. package/src/archiver/l1/README.md +0 -98
  184. package/src/archiver/l1/calldata_retriever.ts +0 -641
  185. package/src/rpc/index.ts +0 -16
  186. /package/dest/{archiver/l1 → l1}/debug_tx.js +0 -0
  187. /package/dest/{archiver/l1 → l1}/trace_tx.js +0 -0
  188. /package/dest/{archiver/l1 → l1}/types.js +0 -0
  189. /package/dest/{archiver/kv_archiver_store → store}/message_store.js +0 -0
  190. /package/dest/{archiver/structs → structs}/data_retrieval.js +0 -0
  191. /package/dest/{archiver/structs → structs}/inbox_message.js +0 -0
  192. /package/dest/{archiver/structs → structs}/published.js +0 -0
  193. /package/src/{archiver/l1 → l1}/debug_tx.ts +0 -0
  194. /package/src/{archiver/l1 → l1}/trace_tx.ts +0 -0
  195. /package/src/{archiver/l1 → l1}/types.ts +0 -0
  196. /package/src/{archiver/kv_archiver_store → store}/message_store.ts +0 -0
  197. /package/src/{archiver/structs → structs}/data_retrieval.ts +0 -0
  198. /package/src/{archiver/structs → structs}/inbox_message.ts +0 -0
  199. /package/src/{archiver/structs → structs}/published.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"mock_l2_block_source.d.ts","sourceRoot":"","sources":["../../src/test/mock_l2_block_source.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mock_l2_block_source.d.ts","sourceRoot":"","sources":["../../src/test/mock_l2_block_source.ts"],"names":[],"mappings":"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"}
@@ -1,36 +1,60 @@
1
1
  import { GENESIS_ARCHIVE_ROOT } from '@aztec/constants';
2
2
  import { DefaultL1ContractsConfig } from '@aztec/ethereum/config';
3
- import { BlockNumber, CheckpointNumber } from '@aztec/foundation/branded-types';
3
+ import { BlockNumber, CheckpointNumber, SlotNumber } from '@aztec/foundation/branded-types';
4
4
  import { Buffer32 } from '@aztec/foundation/buffer';
5
5
  import { Fr } from '@aztec/foundation/curves/bn254';
6
6
  import { EthAddress } from '@aztec/foundation/eth-address';
7
7
  import { createLogger } from '@aztec/foundation/log';
8
- import { CheckpointedL2Block, L2Block, L2BlockHash, PublishedL2Block } from '@aztec/stdlib/block';
9
- import { L1PublishedData } from '@aztec/stdlib/checkpoint';
8
+ import { CheckpointedL2Block } from '@aztec/stdlib/block';
9
+ import { Checkpoint, L1PublishedData, PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
10
10
  import { EmptyL1RollupConstants, getSlotRangeForEpoch } from '@aztec/stdlib/epoch-helpers';
11
- import { TxReceipt, TxStatus } from '@aztec/stdlib/tx';
11
+ import { computeCheckpointOutHash } from '@aztec/stdlib/messaging';
12
+ import { CheckpointHeader } from '@aztec/stdlib/rollup';
13
+ import { TxExecutionResult, TxReceipt, TxStatus } from '@aztec/stdlib/tx';
12
14
  /**
13
15
  * A mocked implementation of L2BlockSource to be used in tests.
14
16
  */ export class MockL2BlockSource {
15
17
  l2Blocks = [];
18
+ checkpointList = [];
16
19
  provenBlockNumber = 0;
17
20
  finalizedBlockNumber = 0;
18
21
  checkpointedBlockNumber = 0;
19
22
  log = createLogger('archiver:mock_l2_block_source');
20
- async createBlocks(numBlocks) {
21
- for(let i = 0; i < numBlocks; i++){
22
- const blockNum = this.l2Blocks.length + 1;
23
- const block = await L2Block.random(BlockNumber(blockNum));
24
- this.l2Blocks.push(block);
23
+ /** Creates blocks grouped into single-block checkpoints. */ async createBlocks(numBlocks) {
24
+ await this.createCheckpoints(numBlocks, 1);
25
+ }
26
+ /** Creates checkpoints, each containing `blocksPerCheckpoint` blocks. */ async createCheckpoints(numCheckpoints, blocksPerCheckpoint = 1) {
27
+ for(let c = 0; c < numCheckpoints; c++){
28
+ const checkpointNum = CheckpointNumber(this.checkpointList.length + 1);
29
+ const startBlockNum = this.l2Blocks.length + 1;
30
+ const slotNumber = SlotNumber(Number(checkpointNum));
31
+ const checkpoint = await Checkpoint.random(checkpointNum, {
32
+ numBlocks: blocksPerCheckpoint,
33
+ startBlockNumber: startBlockNum,
34
+ slotNumber,
35
+ checkpointNumber: checkpointNum
36
+ });
37
+ this.checkpointList.push(checkpoint);
38
+ this.l2Blocks.push(...checkpoint.blocks);
25
39
  }
26
- this.log.verbose(`Created ${numBlocks} blocks in the mock L2 block source`);
40
+ this.log.verbose(`Created ${numCheckpoints} checkpoints with ${blocksPerCheckpoint} blocks each in the mock L2 block source`);
27
41
  }
28
- addBlocks(blocks) {
42
+ addProposedBlocks(blocks) {
29
43
  this.l2Blocks.push(...blocks);
30
- this.log.verbose(`Added ${blocks.length} blocks to the mock L2 block source`);
44
+ this.log.verbose(`Added ${blocks.length} proposed blocks to the mock L2 block source`);
31
45
  }
32
46
  removeBlocks(numBlocks) {
33
47
  this.l2Blocks = this.l2Blocks.slice(0, -numBlocks);
48
+ const maxBlockNum = this.l2Blocks.length;
49
+ // Remove any checkpoint whose last block is beyond the remaining blocks.
50
+ this.checkpointList = this.checkpointList.filter((c)=>{
51
+ const lastBlockNum = c.blocks[0].number + c.blocks.length - 1;
52
+ return lastBlockNum <= maxBlockNum;
53
+ });
54
+ // Keep tip numbers consistent with remaining blocks.
55
+ this.checkpointedBlockNumber = Math.min(this.checkpointedBlockNumber, maxBlockNum);
56
+ this.provenBlockNumber = Math.min(this.provenBlockNumber, maxBlockNum);
57
+ this.finalizedBlockNumber = Math.min(this.finalizedBlockNumber, maxBlockNum);
34
58
  this.log.verbose(`Removed ${numBlocks} blocks from the mock L2 block source`);
35
59
  }
36
60
  setProvenBlockNumber(provenBlockNumber) {
@@ -43,7 +67,32 @@ import { TxReceipt, TxStatus } from '@aztec/stdlib/tx';
43
67
  this.finalizedBlockNumber = finalizedBlockNumber;
44
68
  }
45
69
  setCheckpointedBlockNumber(checkpointedBlockNumber) {
70
+ const prevCheckpointed = this.checkpointedBlockNumber;
46
71
  this.checkpointedBlockNumber = checkpointedBlockNumber;
72
+ // Auto-create single-block checkpoints for newly checkpointed blocks that don't have one yet.
73
+ // This handles blocks added via addProposedBlocks that are now being marked as checkpointed.
74
+ const newCheckpoints = [];
75
+ for(let blockNum = prevCheckpointed + 1; blockNum <= checkpointedBlockNumber; blockNum++){
76
+ const block = this.l2Blocks[blockNum - 1];
77
+ if (!block) {
78
+ continue;
79
+ }
80
+ if (this.checkpointList.some((c)=>c.blocks.some((b)=>b.number === block.number))) {
81
+ continue;
82
+ }
83
+ const checkpointNum = CheckpointNumber(this.checkpointList.length + newCheckpoints.length + 1);
84
+ const checkpoint = new Checkpoint(block.archive, CheckpointHeader.random({
85
+ slotNumber: block.header.globalVariables.slotNumber
86
+ }), [
87
+ block
88
+ ], checkpointNum);
89
+ newCheckpoints.push(checkpoint);
90
+ }
91
+ // Insert new checkpoints in order by number.
92
+ if (newCheckpoints.length > 0) {
93
+ this.checkpointList.push(...newCheckpoints);
94
+ this.checkpointList.sort((a, b)=>a.number - b.number);
95
+ }
47
96
  }
48
97
  /**
49
98
  * Method to fetch the rollup contract address at the base-layer.
@@ -66,6 +115,12 @@ import { TxReceipt, TxStatus } from '@aztec/stdlib/tx';
66
115
  getProvenBlockNumber() {
67
116
  return Promise.resolve(BlockNumber(this.provenBlockNumber));
68
117
  }
118
+ getCheckpointedL2BlockNumber() {
119
+ return Promise.resolve(BlockNumber(this.checkpointedBlockNumber));
120
+ }
121
+ getFinalizedL2BlockNumber() {
122
+ return Promise.resolve(BlockNumber(this.finalizedBlockNumber));
123
+ }
69
124
  getCheckpointedBlock(number) {
70
125
  if (number > this.checkpointedBlockNumber) {
71
126
  return Promise.resolve(undefined);
@@ -74,10 +129,9 @@ import { TxReceipt, TxStatus } from '@aztec/stdlib/tx';
74
129
  if (!block) {
75
130
  return Promise.resolve(undefined);
76
131
  }
77
- const checkpointedBlock = new CheckpointedL2Block(CheckpointNumber(number), block.toL2Block(), new L1PublishedData(BigInt(number), BigInt(number), `0x${number.toString(16).padStart(64, '0')}`), []);
78
- return Promise.resolve(checkpointedBlock);
132
+ return Promise.resolve(this.toCheckpointedBlock(block));
79
133
  }
80
- async getCheckpointedBlocks(from, limit, _proven) {
134
+ async getCheckpointedBlocks(from, limit) {
81
135
  const result = [];
82
136
  for(let i = 0; i < limit; i++){
83
137
  const blockNum = from + i;
@@ -96,102 +150,131 @@ import { TxReceipt, TxStatus } from '@aztec/stdlib/tx';
96
150
  * @param number - The block number to return (inclusive).
97
151
  * @returns The requested L2 block.
98
152
  */ getBlock(number) {
99
- return Promise.resolve(this.l2Blocks[number - 1]);
153
+ const block = this.l2Blocks[number - 1];
154
+ return Promise.resolve(block);
100
155
  }
101
156
  /**
102
157
  * Gets an L2 block (new format).
103
158
  * @param number - The block number to return.
104
159
  * @returns The requested L2 block.
105
- */ getL2BlockNew(number) {
160
+ */ getL2Block(number) {
106
161
  const block = this.l2Blocks[number - 1];
107
- return Promise.resolve(block?.toL2Block());
162
+ return Promise.resolve(block);
108
163
  }
109
164
  /**
110
165
  * Gets up to `limit` amount of L2 blocks starting from `from`.
111
166
  * @param from - Number of the first block to return (inclusive).
112
167
  * @param limit - The maximum number of blocks to return.
113
168
  * @returns The requested mocked L2 blocks.
114
- */ getBlocks(from, limit, proven) {
115
- return Promise.resolve(this.l2Blocks.slice(from - 1, from - 1 + limit).filter((b)=>!proven || this.provenBlockNumber === undefined || b.number <= this.provenBlockNumber));
116
- }
117
- async getPublishedCheckpoints(from, limit) {
118
- // TODO: Implement this properly. This only works when we have one block per checkpoint.
119
- return (await this.getPublishedBlocks(from, limit)).map((block)=>block.toPublishedCheckpoint());
120
- }
121
- async getCheckpointByArchive(archive) {
122
- // TODO: Implement this properly. This only works when we have one block per checkpoint.
123
- return (await this.getPublishedBlockByArchive(archive))?.block.toCheckpoint();
124
- }
125
- async getPublishedBlocks(from, limit, proven) {
126
- const blocks = await this.getBlocks(from, limit, proven);
127
- return blocks.map((block)=>PublishedL2Block.fromFields({
128
- block,
129
- l1: new L1PublishedData(BigInt(block.number), BigInt(block.number), Buffer32.random().toString()),
130
- attestations: []
131
- }));
132
- }
133
- async getL2BlocksNew(from, limit, proven) {
134
- const blocks = await this.getBlocks(from, limit, proven);
135
- return blocks.map((x)=>x.toL2Block());
136
- }
137
- async getPublishedBlockByHash(blockHash) {
169
+ */ getBlocks(from, limit) {
170
+ return Promise.resolve(this.l2Blocks.slice(from - 1, from - 1 + limit));
171
+ }
172
+ getCheckpoints(from, limit) {
173
+ const checkpoints = this.checkpointList.slice(from - 1, from - 1 + limit);
174
+ return Promise.resolve(checkpoints.map((checkpoint)=>new PublishedCheckpoint(checkpoint, this.mockL1DataForCheckpoint(checkpoint), [])));
175
+ }
176
+ getCheckpointByArchive(archive) {
177
+ const checkpoint = this.checkpointList.find((c)=>c.archive.root.equals(archive));
178
+ return Promise.resolve(checkpoint);
179
+ }
180
+ async getCheckpointedBlockByHash(blockHash) {
138
181
  for (const block of this.l2Blocks){
139
182
  const hash = await block.hash();
140
183
  if (hash.equals(blockHash)) {
141
- return PublishedL2Block.fromFields({
142
- block,
143
- l1: new L1PublishedData(BigInt(block.number), BigInt(block.number), Buffer32.random().toString()),
144
- attestations: []
145
- });
184
+ return this.toCheckpointedBlock(block);
146
185
  }
147
186
  }
148
187
  return undefined;
149
188
  }
150
- getPublishedBlockByArchive(archive) {
189
+ getCheckpointedBlockByArchive(archive) {
151
190
  const block = this.l2Blocks.find((b)=>b.archive.root.equals(archive));
152
191
  if (!block) {
153
192
  return Promise.resolve(undefined);
154
193
  }
155
- return Promise.resolve(PublishedL2Block.fromFields({
156
- block,
157
- l1: new L1PublishedData(BigInt(block.number), BigInt(block.number), Buffer32.random().toString()),
158
- attestations: []
159
- }));
194
+ return Promise.resolve(this.toCheckpointedBlock(block));
195
+ }
196
+ async getL2BlockByHash(blockHash) {
197
+ for (const block of this.l2Blocks){
198
+ const hash = await block.hash();
199
+ if (hash.equals(blockHash)) {
200
+ return block;
201
+ }
202
+ }
203
+ return undefined;
204
+ }
205
+ getL2BlockByArchive(archive) {
206
+ const block = this.l2Blocks.find((b)=>b.archive.root.equals(archive));
207
+ return Promise.resolve(block);
160
208
  }
161
209
  async getBlockHeaderByHash(blockHash) {
162
210
  for (const block of this.l2Blocks){
163
211
  const hash = await block.hash();
164
212
  if (hash.equals(blockHash)) {
165
- return block.getBlockHeader();
213
+ return block.header;
166
214
  }
167
215
  }
168
216
  return undefined;
169
217
  }
170
218
  getBlockHeaderByArchive(archive) {
171
219
  const block = this.l2Blocks.find((b)=>b.archive.root.equals(archive));
172
- return Promise.resolve(block?.getBlockHeader());
220
+ return Promise.resolve(block?.header);
221
+ }
222
+ async getBlockData(number) {
223
+ const block = this.l2Blocks[number - 1];
224
+ if (!block) {
225
+ return undefined;
226
+ }
227
+ return {
228
+ header: block.header,
229
+ archive: block.archive,
230
+ blockHash: await block.hash(),
231
+ checkpointNumber: block.checkpointNumber,
232
+ indexWithinCheckpoint: block.indexWithinCheckpoint
233
+ };
234
+ }
235
+ async getBlockDataByArchive(archive) {
236
+ const block = this.l2Blocks.find((b)=>b.archive.root.equals(archive));
237
+ if (!block) {
238
+ return undefined;
239
+ }
240
+ return {
241
+ header: block.header,
242
+ archive: block.archive,
243
+ blockHash: await block.hash(),
244
+ checkpointNumber: block.checkpointNumber,
245
+ indexWithinCheckpoint: block.indexWithinCheckpoint
246
+ };
173
247
  }
174
248
  getBlockHeader(number) {
175
- return Promise.resolve(this.l2Blocks.at(typeof number === 'number' ? number - 1 : -1)?.getBlockHeader());
249
+ return Promise.resolve(this.l2Blocks.at(typeof number === 'number' ? number - 1 : -1)?.header);
176
250
  }
177
251
  getCheckpointsForEpoch(epochNumber) {
178
- // TODO: Implement this properly. This only works when we have one block per checkpoint.
179
- return this.getBlocksForEpoch(epochNumber).then((blocks)=>blocks.map((b)=>b.toCheckpoint()));
180
- }
181
- getBlocksForEpoch(epochNumber) {
182
- const epochDuration = DefaultL1ContractsConfig.aztecEpochDuration;
183
- const [start, end] = getSlotRangeForEpoch(epochNumber, {
184
- epochDuration
185
- });
186
- const blocks = this.l2Blocks.filter((b)=>{
187
- const slot = b.header.globalVariables.slotNumber;
188
- return slot >= start && slot <= end;
189
- });
252
+ return Promise.resolve(this.getCheckpointsInEpoch(epochNumber));
253
+ }
254
+ getCheckpointsDataForEpoch(epochNumber) {
255
+ const checkpoints = this.getCheckpointsInEpoch(epochNumber);
256
+ return Promise.resolve(checkpoints.map((checkpoint)=>({
257
+ checkpointNumber: checkpoint.number,
258
+ header: checkpoint.header,
259
+ archive: checkpoint.archive,
260
+ checkpointOutHash: computeCheckpointOutHash(checkpoint.blocks.map((b)=>b.body.txEffects.map((tx)=>tx.l2ToL1Msgs))),
261
+ startBlock: checkpoint.blocks[0].number,
262
+ blockCount: checkpoint.blocks.length,
263
+ attestations: [],
264
+ l1: this.mockL1DataForCheckpoint(checkpoint)
265
+ })));
266
+ }
267
+ getCheckpointedBlocksForEpoch(epochNumber) {
268
+ const checkpoints = this.getCheckpointsInEpoch(epochNumber);
269
+ return Promise.resolve(checkpoints.flatMap((checkpoint)=>checkpoint.blocks.map((block)=>this.toCheckpointedBlock(block))));
270
+ }
271
+ getBlocksForSlot(slotNumber) {
272
+ const blocks = this.l2Blocks.filter((b)=>b.header.globalVariables.slotNumber === slotNumber);
190
273
  return Promise.resolve(blocks);
191
274
  }
192
- async getBlockHeadersForEpoch(epochNumber) {
193
- const blocks = await this.getBlocksForEpoch(epochNumber);
194
- return blocks.map((b)=>b.getBlockHeader());
275
+ async getCheckpointedBlockHeadersForEpoch(epochNumber) {
276
+ const checkpointedBlocks = await this.getCheckpointedBlocksForEpoch(epochNumber);
277
+ return checkpointedBlocks.map((b)=>b.block.header);
195
278
  }
196
279
  /**
197
280
  * Gets a tx effect.
@@ -209,7 +292,7 @@ import { TxReceipt, TxStatus } from '@aztec/stdlib/tx';
209
292
  return {
210
293
  data: txEffect,
211
294
  l2BlockNumber: block.number,
212
- l2BlockHash: L2BlockHash.fromField(await block.hash()),
295
+ l2BlockHash: await block.hash(),
213
296
  txIndexInBlock: block.body.txEffects.indexOf(txEffect)
214
297
  };
215
298
  }
@@ -221,7 +304,8 @@ import { TxReceipt, TxStatus } from '@aztec/stdlib/tx';
221
304
  for (const block of this.l2Blocks){
222
305
  for (const txEffect of block.body.txEffects){
223
306
  if (txEffect.txHash.equals(txHash)) {
224
- return new TxReceipt(txHash, TxStatus.SUCCESS, '', txEffect.transactionFee.toBigInt(), L2BlockHash.fromField(await block.hash()), block.number);
307
+ // In mock, assume all txs are checkpointed with successful execution
308
+ return new TxReceipt(txHash, TxStatus.CHECKPOINTED, TxExecutionResult.SUCCESS, undefined, txEffect.transactionFee.toBigInt(), await block.hash(), block.number);
225
309
  }
226
310
  }
227
311
  }
@@ -257,7 +341,7 @@ import { TxReceipt, TxStatus } from '@aztec/stdlib/tx';
257
341
  const makeTipId = (blockId)=>({
258
342
  block: blockId,
259
343
  checkpoint: {
260
- number: CheckpointNumber(blockId.number),
344
+ number: this.findCheckpointNumberForBlock(blockId.number) ?? CheckpointNumber(0),
261
345
  hash: blockId.hash
262
346
  }
263
347
  });
@@ -331,4 +415,23 @@ import { TxReceipt, TxStatus } from '@aztec/stdlib/tx';
331
415
  valid: true
332
416
  });
333
417
  }
418
+ /** Returns checkpoints whose slot falls within the given epoch. */ getCheckpointsInEpoch(epochNumber) {
419
+ const epochDuration = DefaultL1ContractsConfig.aztecEpochDuration;
420
+ const [start, end] = getSlotRangeForEpoch(epochNumber, {
421
+ epochDuration
422
+ });
423
+ return this.checkpointList.filter((c)=>c.header.slotNumber >= start && c.header.slotNumber <= end);
424
+ }
425
+ /** Creates a mock L1PublishedData for a checkpoint. */ mockL1DataForCheckpoint(checkpoint) {
426
+ return new L1PublishedData(BigInt(checkpoint.number), BigInt(checkpoint.number), Buffer32.random().toString());
427
+ }
428
+ /** Creates a CheckpointedL2Block from a block using stored checkpoint info. */ toCheckpointedBlock(block) {
429
+ const checkpoint = this.checkpointList.find((c)=>c.blocks.some((b)=>b.number === block.number));
430
+ const checkpointNumber = checkpoint?.number ?? block.checkpointNumber;
431
+ return new CheckpointedL2Block(checkpointNumber, block, new L1PublishedData(BigInt(block.number), BigInt(block.number), `0x${block.number.toString(16).padStart(64, '0')}`), []);
432
+ }
433
+ /** Finds the checkpoint number for a block, or undefined if the block is not in any checkpoint. */ findCheckpointNumberForBlock(blockNumber) {
434
+ const checkpoint = this.checkpointList.find((c)=>c.blocks.some((b)=>b.number === blockNumber));
435
+ return checkpoint?.number;
436
+ }
334
437
  }
@@ -1,10 +1,85 @@
1
1
  import { CheckpointNumber } from '@aztec/foundation/branded-types';
2
2
  import { Buffer16 } from '@aztec/foundation/buffer';
3
- 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';
4
11
  export declare function makeInboxMessage(previousRollingHash?: Buffer16, overrides?: Partial<InboxMessage>): InboxMessage;
5
- export declare function makeInboxMessages(count: number, opts?: {
12
+ export declare function makeInboxMessages(totalCount: number, opts?: {
6
13
  initialHash?: Buffer16;
7
14
  initialCheckpointNumber?: CheckpointNumber;
15
+ messagesPerCheckpoint?: number;
8
16
  overrideFn?: (msg: InboxMessage, index: number) => InboxMessage;
9
17
  }): InboxMessage[];
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19zdHJ1Y3RzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdC9tb2NrX3N0cnVjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFFLFFBQVEsRUFBWSxNQUFNLDBCQUEwQixDQUFDO0FBSzlELE9BQU8sRUFBRSxLQUFLLFlBQVksRUFBcUIsTUFBTSxzQ0FBc0MsQ0FBQztBQUU1Rix3QkFBZ0IsZ0JBQWdCLENBQzlCLG1CQUFtQixXQUFnQixFQUNuQyxTQUFTLEdBQUUsT0FBTyxDQUFDLFlBQVksQ0FBTSxHQUNwQyxZQUFZLENBZ0JkO0FBRUQsd0JBQWdCLGlCQUFpQixDQUMvQixLQUFLLEVBQUUsTUFBTSxFQUNiLElBQUksR0FBRTtJQUNKLFdBQVcsQ0FBQyxFQUFFLFFBQVEsQ0FBQztJQUN2Qix1QkFBdUIsQ0FBQyxFQUFFLGdCQUFnQixDQUFDO0lBQzNDLFVBQVUsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxLQUFLLFlBQVksQ0FBQztDQUM1RCxHQUNMLFlBQVksRUFBRSxDQWFoQiJ9
18
+ /** Creates inbox messages distributed across multiple blocks with proper checkpoint numbering. */
19
+ export declare function makeInboxMessagesWithFullBlocks(blockCount: number, opts?: {
20
+ initialCheckpointNumber?: CheckpointNumber;
21
+ }): InboxMessage[];
22
+ /** Creates a deterministic block hash from a block number. */
23
+ export declare function makeBlockHash(blockNumber: number): `0x${string}`;
24
+ /**
25
+ * Creates a StateReference with properly calculated noteHashTree.nextAvailableLeafIndex.
26
+ * This ensures LogStore's dataStartIndexForBlock calculation doesn't produce negative values.
27
+ */
28
+ export declare function makeStateForBlock(blockNumber: number, txsPerBlock: number): StateReference;
29
+ /** Creates L1PublishedData with deterministic values based on l1BlockNumber. */
30
+ export declare function makeL1PublishedData(l1BlockNumber: number): L1PublishedData;
31
+ /** Wraps a Checkpoint with L1 published data and random attestations. */
32
+ export declare function makePublishedCheckpoint(checkpoint: Checkpoint, l1BlockNumber: number, attestationCount?: number): PublishedCheckpoint;
33
+ export interface MakeChainedCheckpointsOptions {
34
+ /** Number of L2 blocks per checkpoint. Default: 1 */
35
+ blocksPerCheckpoint?: number;
36
+ /** Number of transactions per block. Default: 4 */
37
+ txsPerBlock?: number;
38
+ /** Starting checkpoint number. Default: CheckpointNumber(1) */
39
+ startCheckpointNumber?: CheckpointNumber;
40
+ /** Starting block number. Default: 1 */
41
+ startBlockNumber?: number;
42
+ /** Starting L1 block number. Default: 10 */
43
+ startL1BlockNumber?: number;
44
+ /** Previous archive to chain from. Default: undefined */
45
+ previousArchive?: AppendOnlyTreeSnapshot;
46
+ /** Optional function to provide per-checkpoint overrides */
47
+ makeCheckpointOptions?: (cpNumber: CheckpointNumber) => Partial<Parameters<typeof Checkpoint.random>[1]>;
48
+ }
49
+ /**
50
+ * Creates multiple checkpoints with properly chained archives.
51
+ * Each checkpoint's blocks have their lastArchive set to the previous block's archive,
52
+ * ensuring archive chain continuity for testing.
53
+ */
54
+ export declare function makeChainedCheckpoints(count: number, options?: MakeChainedCheckpointsOptions): Promise<PublishedCheckpoint[]>;
55
+ /**
56
+ * Creates a PublishedCheckpoint with attestations signed by the provided signers.
57
+ * Useful for testing attestation validation.
58
+ */
59
+ export declare function makeSignedPublishedCheckpoint(checkpoint: Checkpoint, signers: Secp256k1Signer[], committee: EthAddress[], l1BlockNumber?: number): PublishedCheckpoint;
60
+ /** Creates a deterministic SiloedTag for private log testing. */
61
+ export declare function makePrivateLogTag(blockNumber: number, txIndex: number, logIndex: number): SiloedTag;
62
+ /** Creates a PrivateLog with fields derived from the tag. */
63
+ export declare function makePrivateLog(tag: SiloedTag): PrivateLog;
64
+ /** Creates multiple private logs for a transaction. */
65
+ export declare function mockPrivateLogs(blockNumber: number, txIndex: number, numLogsPerTx: number): PrivateLog[];
66
+ /** Creates a deterministic Tag for public log testing. */
67
+ export declare function makePublicLogTag(blockNumber: number, txIndex: number, logIndex: number): Tag;
68
+ /** Creates a PublicLog with fields derived from the tag. */
69
+ export declare function makePublicLog(tag: Tag, contractAddress?: AztecAddress): PublicLog;
70
+ /** Creates multiple public logs for a transaction. */
71
+ export declare function makePublicLogs(blockNumber: number, txIndex: number, numLogsPerTx: number, contractAddress?: AztecAddress): PublicLog[];
72
+ export interface MockCheckpointWithLogsOptions {
73
+ previousArchive?: AppendOnlyTreeSnapshot;
74
+ numTxsPerBlock?: number;
75
+ privateLogs?: {
76
+ numLogsPerTx: number;
77
+ };
78
+ publicLogs?: {
79
+ numLogsPerTx: number;
80
+ contractAddress?: AztecAddress;
81
+ };
82
+ }
83
+ /** Creates a checkpoint with specified logs on each tx effect. */
84
+ export declare function makeCheckpointWithLogs(blockNumber: number, options?: MockCheckpointWithLogsOptions): Promise<PublishedCheckpoint>;
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19zdHJ1Y3RzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdC9tb2NrX3N0cnVjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsT0FBTyxFQUFlLGdCQUFnQixFQUF5QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxRQUFRLEVBQVksTUFBTSwwQkFBMEIsQ0FBQztBQUc5RCxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUVqRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTNELE9BQU8sRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUYsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSzNFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzdELE9BQU8sRUFBeUIsY0FBYyxFQUFZLE1BQU0sa0JBQWtCLENBQUM7QUFFbkYsT0FBTyxFQUFFLEtBQUssWUFBWSxFQUFxQixNQUFNLDZCQUE2QixDQUFDO0FBRW5GLHdCQUFnQixnQkFBZ0IsQ0FDOUIsbUJBQW1CLFdBQWdCLEVBQ25DLFNBQVMsR0FBRSxPQUFPLENBQUMsWUFBWSxDQUFNLEdBQ3BDLFlBQVksQ0FnQmQ7QUFFRCx3QkFBZ0IsaUJBQWlCLENBQy9CLFVBQVUsRUFBRSxNQUFNLEVBQ2xCLElBQUksR0FBRTtJQUNKLFdBQVcsQ0FBQyxFQUFFLFFBQVEsQ0FBQztJQUN2Qix1QkFBdUIsQ0FBQyxFQUFFLGdCQUFnQixDQUFDO0lBQzNDLHFCQUFxQixDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQy9CLFVBQVUsQ0FBQyxFQUFFLENBQUMsR0FBRyxF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
@@ -1 +1 @@
1
- {"version":3,"file":"mock_structs.d.ts","sourceRoot":"","sources":["../../src/test/mock_structs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,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,uBAAuB,CAAC,EAAE,gBAAgB,CAAC;IAC3C,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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"}