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

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 (205) hide show
  1. package/README.md +156 -22
  2. package/dest/archiver.d.ts +136 -0
  3. package/dest/archiver.d.ts.map +1 -0
  4. package/dest/archiver.js +781 -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 +41 -0
  9. package/dest/errors.d.ts.map +1 -0
  10. package/dest/errors.js +62 -0
  11. package/dest/factory.d.ts +9 -7
  12. package/dest/factory.d.ts.map +1 -1
  13. package/dest/factory.js +89 -11
  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 +32 -0
  42. package/dest/l1/validate_trace.d.ts.map +1 -0
  43. package/dest/l1/validate_trace.js +154 -0
  44. package/dest/modules/data_source_base.d.ts +84 -0
  45. package/dest/modules/data_source_base.d.ts.map +1 -0
  46. package/dest/modules/data_source_base.js +260 -0
  47. package/dest/modules/data_store_updater.d.ts +73 -0
  48. package/dest/modules/data_store_updater.d.ts.map +1 -0
  49. package/dest/modules/data_store_updater.js +302 -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 +30 -60
  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 +1112 -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 +192 -0
  60. package/dest/store/block_store.d.ts.map +1 -0
  61. package/dest/store/block_store.js +721 -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 +13 -9
  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 +340 -0
  69. package/dest/store/kv_archiver_store.d.ts.map +1 -0
  70. package/dest/store/kv_archiver_store.js +446 -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/store/log_store.js +436 -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 +4 -1
  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 +30 -16
  97. package/dest/test/mock_l2_block_source.d.ts.map +1 -1
  98. package/dest/test/mock_l2_block_source.js +175 -68
  99. package/dest/test/mock_structs.d.ts +80 -4
  100. package/dest/test/mock_structs.d.ts.map +1 -1
  101. package/dest/test/mock_structs.js +145 -12
  102. package/dest/test/noop_l1_archiver.d.ts +23 -0
  103. package/dest/test/noop_l1_archiver.d.ts.map +1 -0
  104. package/dest/test/noop_l1_archiver.js +68 -0
  105. package/package.json +18 -18
  106. package/src/archiver.ts +543 -0
  107. package/src/{archiver/config.ts → config.ts} +28 -12
  108. package/src/errors.ts +102 -0
  109. package/src/factory.ts +125 -11
  110. package/src/index.ts +10 -3
  111. package/src/interfaces.ts +9 -0
  112. package/src/l1/README.md +98 -0
  113. package/src/l1/bin/retrieve-calldata.ts +187 -0
  114. package/src/l1/calldata_retriever.ts +641 -0
  115. package/src/{archiver → l1}/data_retrieval.ts +138 -220
  116. package/src/l1/debug_tx.ts +99 -0
  117. package/src/l1/spire_proposer.ts +160 -0
  118. package/src/l1/trace_tx.ts +128 -0
  119. package/src/l1/types.ts +13 -0
  120. package/src/l1/validate_trace.ts +229 -0
  121. package/src/modules/data_source_base.ts +367 -0
  122. package/src/modules/data_store_updater.ts +423 -0
  123. package/src/{archiver → modules}/instrumentation.ts +34 -64
  124. package/src/modules/l1_synchronizer.ts +930 -0
  125. package/src/{archiver → modules}/validation.ts +11 -6
  126. package/src/store/block_store.ts +966 -0
  127. package/src/{archiver/kv_archiver_store → store}/contract_class_store.ts +13 -9
  128. package/src/{archiver/kv_archiver_store → store}/contract_instance_store.ts +2 -2
  129. package/src/store/kv_archiver_store.ts +639 -0
  130. package/src/store/log_store.ts +575 -0
  131. package/src/{archiver/kv_archiver_store → store}/message_store.ts +21 -18
  132. package/src/{archiver/structs → structs}/inbox_message.ts +7 -8
  133. package/src/{archiver/structs → structs}/published.ts +0 -1
  134. package/src/test/fake_l1_state.ts +599 -0
  135. package/src/test/fixtures/debug_traceTransaction-multicall3.json +88 -0
  136. package/src/test/fixtures/debug_traceTransaction-multiplePropose.json +153 -0
  137. package/src/test/fixtures/debug_traceTransaction-proxied.json +122 -0
  138. package/src/test/fixtures/trace_transaction-multicall3.json +65 -0
  139. package/src/test/fixtures/trace_transaction-multiplePropose.json +319 -0
  140. package/src/test/fixtures/trace_transaction-proxied.json +128 -0
  141. package/src/test/fixtures/trace_transaction-randomRevert.json +216 -0
  142. package/src/test/index.ts +4 -0
  143. package/src/test/mock_archiver.ts +8 -13
  144. package/src/test/mock_l1_to_l2_message_source.ts +16 -15
  145. package/src/test/mock_l2_block_source.ts +191 -81
  146. package/src/test/mock_structs.ts +275 -14
  147. package/src/test/noop_l1_archiver.ts +109 -0
  148. package/dest/archiver/archiver.d.ts +0 -290
  149. package/dest/archiver/archiver.d.ts.map +0 -1
  150. package/dest/archiver/archiver.js +0 -1434
  151. package/dest/archiver/archiver_store.d.ts +0 -256
  152. package/dest/archiver/archiver_store.d.ts.map +0 -1
  153. package/dest/archiver/archiver_store.js +0 -4
  154. package/dest/archiver/archiver_store_test_suite.d.ts +0 -8
  155. package/dest/archiver/archiver_store_test_suite.d.ts.map +0 -1
  156. package/dest/archiver/archiver_store_test_suite.js +0 -1289
  157. package/dest/archiver/config.d.ts +0 -21
  158. package/dest/archiver/config.d.ts.map +0 -1
  159. package/dest/archiver/data_retrieval.d.ts +0 -80
  160. package/dest/archiver/data_retrieval.d.ts.map +0 -1
  161. package/dest/archiver/errors.d.ts +0 -12
  162. package/dest/archiver/errors.d.ts.map +0 -1
  163. package/dest/archiver/errors.js +0 -17
  164. package/dest/archiver/index.d.ts +0 -7
  165. package/dest/archiver/index.d.ts.map +0 -1
  166. package/dest/archiver/index.js +0 -4
  167. package/dest/archiver/instrumentation.d.ts +0 -35
  168. package/dest/archiver/instrumentation.d.ts.map +0 -1
  169. package/dest/archiver/kv_archiver_store/block_store.d.ts +0 -125
  170. package/dest/archiver/kv_archiver_store/block_store.d.ts.map +0 -1
  171. package/dest/archiver/kv_archiver_store/block_store.js +0 -371
  172. package/dest/archiver/kv_archiver_store/contract_class_store.d.ts +0 -18
  173. package/dest/archiver/kv_archiver_store/contract_class_store.d.ts.map +0 -1
  174. package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts +0 -24
  175. package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts.map +0 -1
  176. package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts +0 -169
  177. package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts.map +0 -1
  178. package/dest/archiver/kv_archiver_store/kv_archiver_store.js +0 -296
  179. package/dest/archiver/kv_archiver_store/log_store.d.ts +0 -49
  180. package/dest/archiver/kv_archiver_store/log_store.d.ts.map +0 -1
  181. package/dest/archiver/kv_archiver_store/log_store.js +0 -337
  182. package/dest/archiver/kv_archiver_store/message_store.d.ts +0 -39
  183. package/dest/archiver/kv_archiver_store/message_store.d.ts.map +0 -1
  184. package/dest/archiver/structs/data_retrieval.d.ts.map +0 -1
  185. package/dest/archiver/structs/inbox_message.d.ts +0 -15
  186. package/dest/archiver/structs/inbox_message.d.ts.map +0 -1
  187. package/dest/archiver/structs/published.d.ts +0 -3
  188. package/dest/archiver/structs/published.d.ts.map +0 -1
  189. package/dest/archiver/validation.d.ts +0 -17
  190. package/dest/archiver/validation.d.ts.map +0 -1
  191. package/dest/rpc/index.d.ts +0 -9
  192. package/dest/rpc/index.d.ts.map +0 -1
  193. package/dest/rpc/index.js +0 -15
  194. package/src/archiver/archiver.ts +0 -1880
  195. package/src/archiver/archiver_store.ts +0 -310
  196. package/src/archiver/archiver_store_test_suite.ts +0 -1295
  197. package/src/archiver/errors.ts +0 -26
  198. package/src/archiver/index.ts +0 -6
  199. package/src/archiver/kv_archiver_store/block_store.ts +0 -482
  200. package/src/archiver/kv_archiver_store/kv_archiver_store.ts +0 -423
  201. package/src/archiver/kv_archiver_store/log_store.ts +0 -407
  202. package/src/rpc/index.ts +0 -16
  203. /package/dest/{archiver/structs → structs}/data_retrieval.js +0 -0
  204. /package/dest/{archiver/structs → structs}/published.js +0 -0
  205. /package/src/{archiver/structs → structs}/data_retrieval.ts +0 -0
@@ -1,23 +1,18 @@
1
- import { L2Block } from '@aztec/stdlib/block';
2
1
  import { MockL1ToL2MessageSource } from './mock_l1_to_l2_message_source.js';
3
2
  import { MockL2BlockSource } from './mock_l2_block_source.js';
4
3
  /**
5
4
  * A mocked implementation of the archiver that implements L2BlockSource and L1ToL2MessageSource.
6
5
  */ export class MockArchiver extends MockL2BlockSource {
7
6
  messageSource = new MockL1ToL2MessageSource(0);
8
- setL1ToL2Messages(blockNumber, msgs) {
9
- this.messageSource.setL1ToL2Messages(blockNumber, msgs);
7
+ setL1ToL2Messages(checkpointNumber, msgs) {
8
+ this.messageSource.setL1ToL2Messages(checkpointNumber, msgs);
10
9
  }
11
- getL1ToL2Messages(blockNumber) {
12
- return this.messageSource.getL1ToL2Messages(blockNumber);
10
+ getL1ToL2Messages(checkpointNumber) {
11
+ return this.messageSource.getL1ToL2Messages(checkpointNumber);
13
12
  }
14
13
  getL1ToL2MessageIndex(_l1ToL2Message) {
15
14
  return this.messageSource.getL1ToL2MessageIndex(_l1ToL2Message);
16
15
  }
17
- getL1ToL2MessagesForCheckpoint(checkpointNumber) {
18
- // TODO: Implement this properly. This only works when we have one block per checkpoint.
19
- return this.messageSource.getL1ToL2Messages(checkpointNumber);
20
- }
21
16
  }
22
17
  /**
23
18
  * A mocked implementation of the archiver with a set of precomputed blocks and messages.
@@ -33,7 +28,7 @@ import { MockL2BlockSource } from './mock_l2_block_source.js';
33
28
  if (checkpoint.blocks.length !== 1) {
34
29
  throw new Error('Prefilled checkpoint must only have 1 block at the moment.');
35
30
  }
36
- this.setL1ToL2Messages(checkpoint.blocks[0].number, messages);
31
+ this.setL1ToL2Messages(checkpoint.number, messages);
37
32
  }
38
33
  }
39
34
  createBlocks(numBlocks) {
@@ -43,7 +38,7 @@ import { MockL2BlockSource } from './mock_l2_block_source.js';
43
38
  }
44
39
  const fromBlock = this.l2Blocks.length;
45
40
  // TODO: Add L2 blocks and checkpoints separately once archiver has the apis for that.
46
- this.addBlocks(this.prefilled.slice(fromBlock, fromBlock + numBlocks).map((c)=>L2Block.fromCheckpoint(c)));
41
+ this.addProposedBlocks(this.prefilled.slice(fromBlock, fromBlock + numBlocks).flatMap((c)=>c.blocks));
47
42
  return Promise.resolve();
48
43
  }
49
44
  }
@@ -1,5 +1,5 @@
1
- import { BlockNumber, type CheckpointNumber } from '@aztec/foundation/branded-types';
2
- import { Fr } from '@aztec/foundation/fields';
1
+ import { BlockNumber, CheckpointNumber } from '@aztec/foundation/branded-types';
2
+ import { Fr } from '@aztec/foundation/curves/bn254';
3
3
  import type { L2Tips } from '@aztec/stdlib/block';
4
4
  import type { L1ToL2MessageSource } from '@aztec/stdlib/messaging';
5
5
  /**
@@ -7,14 +7,13 @@ import type { L1ToL2MessageSource } from '@aztec/stdlib/messaging';
7
7
  */
8
8
  export declare class MockL1ToL2MessageSource implements L1ToL2MessageSource {
9
9
  private blockNumber;
10
- private messagesPerBlock;
10
+ private messagesPerCheckpoint;
11
11
  constructor(blockNumber: number);
12
- setL1ToL2Messages(blockNumber: number, msgs: Fr[]): void;
12
+ setL1ToL2Messages(checkpointNumber: CheckpointNumber, msgs: Fr[]): void;
13
13
  setBlockNumber(blockNumber: number): void;
14
- getL1ToL2MessagesForCheckpoint(checkpointNumber: CheckpointNumber): Promise<Fr[]>;
15
- getL1ToL2Messages(blockNumber: number): Promise<Fr[]>;
14
+ getL1ToL2Messages(checkpointNumber: CheckpointNumber): Promise<Fr[]>;
16
15
  getL1ToL2MessageIndex(_l1ToL2Message: Fr): Promise<bigint | undefined>;
17
16
  getBlockNumber(): Promise<BlockNumber>;
18
17
  getL2Tips(): Promise<L2Tips>;
19
18
  }
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19sMV90b19sMl9tZXNzYWdlX3NvdXJjZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3QvbW9ja19sMV90b19sMl9tZXNzYWdlX3NvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLEtBQUssZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRixPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUMsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRTs7R0FFRztBQUNILHFCQUFhLHVCQUF3QixZQUFXLG1CQUFtQjtJQUdyRCxPQUFPLENBQUMsV0FBVztJQUYvQixPQUFPLENBQUMsZ0JBQWdCLENBQTJCO0lBRW5ELFlBQW9CLFdBQVcsRUFBRSxNQUFNLEVBQUk7SUFFcEMsaUJBQWlCLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLFFBRXZEO0lBRU0sY0FBYyxDQUFDLFdBQVcsRUFBRSxNQUFNLFFBRXhDO0lBRUQsOEJBQThCLENBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBR2hGO0lBRUQsaUJBQWlCLENBQUMsV0FBVyxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FFcEQ7SUFFRCxxQkFBcUIsQ0FBQyxjQUFjLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLENBRXJFO0lBRUQsY0FBYyx5QkFFYjtJQUVELFNBQVMsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBUTNCO0NBQ0YifQ==
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19sMV90b19sMl9tZXNzYWdlX3NvdXJjZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3QvbW9ja19sMV90b19sMl9tZXNzYWdlX3NvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEYsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFvQyxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRixPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRW5FOztHQUVHO0FBQ0gscUJBQWEsdUJBQXdCLFlBQVcsbUJBQW1CO0lBR3JELE9BQU8sQ0FBQyxXQUFXO0lBRi9CLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBcUM7SUFFbEUsWUFBb0IsV0FBVyxFQUFFLE1BQU0sRUFBSTtJQUVwQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLFFBRXRFO0lBRU0sY0FBYyxDQUFDLFdBQVcsRUFBRSxNQUFNLFFBRXhDO0lBRUQsaUJBQWlCLENBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBRW5FO0lBRUQscUJBQXFCLENBQUMsY0FBYyxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxDQUVyRTtJQUVELGNBQWMseUJBRWI7SUFFRCxTQUFTLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQWMzQjtDQUNGIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"mock_l1_to_l2_message_source.d.ts","sourceRoot":"","sources":["../../src/test/mock_l1_to_l2_message_source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACrF,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE;;GAEG;AACH,qBAAa,uBAAwB,YAAW,mBAAmB;IAGrD,OAAO,CAAC,WAAW;IAF/B,OAAO,CAAC,gBAAgB,CAA2B;IAEnD,YAAoB,WAAW,EAAE,MAAM,EAAI;IAEpC,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,QAEvD;IAEM,cAAc,CAAC,WAAW,EAAE,MAAM,QAExC;IAED,8BAA8B,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC,CAGhF;IAED,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC,CAEpD;IAED,qBAAqB,CAAC,cAAc,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAErE;IAED,cAAc,yBAEb;IAED,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAQ3B;CACF"}
1
+ {"version":3,"file":"mock_l1_to_l2_message_source.d.ts","sourceRoot":"","sources":["../../src/test/mock_l1_to_l2_message_source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,KAAK,EAAoC,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACpF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE;;GAEG;AACH,qBAAa,uBAAwB,YAAW,mBAAmB;IAGrD,OAAO,CAAC,WAAW;IAF/B,OAAO,CAAC,qBAAqB,CAAqC;IAElE,YAAoB,WAAW,EAAE,MAAM,EAAI;IAEpC,iBAAiB,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAAE,EAAE,QAEtE;IAEM,cAAc,CAAC,WAAW,EAAE,MAAM,QAExC;IAED,iBAAiB,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC,CAEnE;IAED,qBAAqB,CAAC,cAAc,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAErE;IAED,cAAc,yBAEb;IAED,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAc3B;CACF"}
@@ -1,26 +1,22 @@
1
- import { BlockNumber } from '@aztec/foundation/branded-types';
2
- import { Fr } from '@aztec/foundation/fields';
1
+ import { BlockNumber, CheckpointNumber } from '@aztec/foundation/branded-types';
2
+ import { Fr } from '@aztec/foundation/curves/bn254';
3
3
  /**
4
4
  * A mocked implementation of L1ToL2MessageSource to be used in tests.
5
5
  */ export class MockL1ToL2MessageSource {
6
6
  blockNumber;
7
- messagesPerBlock;
7
+ messagesPerCheckpoint;
8
8
  constructor(blockNumber){
9
9
  this.blockNumber = blockNumber;
10
- this.messagesPerBlock = new Map();
10
+ this.messagesPerCheckpoint = new Map();
11
11
  }
12
- setL1ToL2Messages(blockNumber, msgs) {
13
- this.messagesPerBlock.set(blockNumber, msgs);
12
+ setL1ToL2Messages(checkpointNumber, msgs) {
13
+ this.messagesPerCheckpoint.set(checkpointNumber, msgs);
14
14
  }
15
15
  setBlockNumber(blockNumber) {
16
16
  this.blockNumber = blockNumber;
17
17
  }
18
- getL1ToL2MessagesForCheckpoint(checkpointNumber) {
19
- // TODO: Implement this properly. This only works when we have one block per checkpoint.
20
- return this.getL1ToL2Messages(checkpointNumber);
21
- }
22
- getL1ToL2Messages(blockNumber) {
23
- return Promise.resolve(this.messagesPerBlock.get(blockNumber) ?? []);
18
+ getL1ToL2Messages(checkpointNumber) {
19
+ return Promise.resolve(this.messagesPerCheckpoint.get(checkpointNumber) ?? []);
24
20
  }
25
21
  getL1ToL2MessageIndex(_l1ToL2Message) {
26
22
  throw new Error('Method not implemented.');
@@ -30,12 +26,21 @@ import { Fr } from '@aztec/foundation/fields';
30
26
  }
31
27
  getL2Tips() {
32
28
  const number = this.blockNumber;
33
- const tip = {
29
+ const blockId = {
34
30
  number: BlockNumber(number),
35
31
  hash: new Fr(number).toString()
36
32
  };
33
+ const checkpointId = {
34
+ number: CheckpointNumber(number),
35
+ hash: new Fr(number + 1).toString()
36
+ };
37
+ const tip = {
38
+ block: blockId,
39
+ checkpoint: checkpointId
40
+ };
37
41
  return Promise.resolve({
38
- latest: tip,
42
+ proposed: blockId,
43
+ checkpointed: tip,
39
44
  proven: tip,
40
45
  finalized: tip
41
46
  });
@@ -1,10 +1,10 @@
1
1
  import { BlockNumber, CheckpointNumber, EpochNumber, SlotNumber } from '@aztec/foundation/branded-types';
2
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
3
  import { EthAddress } from '@aztec/foundation/eth-address';
3
- import { Fr } from '@aztec/foundation/fields';
4
4
  import type { FunctionSelector } from '@aztec/stdlib/abi';
5
5
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
6
- import { L2Block, L2BlockHash, type L2BlockSource, type L2Tips, PublishedL2Block, type ValidateBlockResult } from '@aztec/stdlib/block';
7
- import type { Checkpoint } from '@aztec/stdlib/checkpoint';
6
+ import { BlockHash, CheckpointedL2Block, L2Block, type L2BlockSource, type L2Tips, type ValidateCheckpointResult } from '@aztec/stdlib/block';
7
+ import { Checkpoint, PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
8
8
  import type { ContractClassPublic, ContractDataSource, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
9
9
  import { type L1RollupConstants } from '@aztec/stdlib/epoch-helpers';
10
10
  import { type BlockHeader, TxHash, TxReceipt } from '@aztec/stdlib/tx';
@@ -16,12 +16,14 @@ export declare class MockL2BlockSource implements L2BlockSource, ContractDataSou
16
16
  protected l2Blocks: L2Block[];
17
17
  private provenBlockNumber;
18
18
  private finalizedBlockNumber;
19
+ private checkpointedBlockNumber;
19
20
  private log;
20
21
  createBlocks(numBlocks: number): Promise<void>;
21
- addBlocks(blocks: L2Block[]): void;
22
+ addProposedBlocks(blocks: L2Block[]): void;
22
23
  removeBlocks(numBlocks: number): void;
23
24
  setProvenBlockNumber(provenBlockNumber: number): void;
24
25
  setFinalizedBlockNumber(finalizedBlockNumber: number): void;
26
+ setCheckpointedBlockNumber(checkpointedBlockNumber: number): void;
25
27
  /**
26
28
  * Method to fetch the rollup contract address at the base-layer.
27
29
  * @returns The rollup address.
@@ -38,30 +40,42 @@ export declare class MockL2BlockSource implements L2BlockSource, ContractDataSou
38
40
  */
39
41
  getBlockNumber(): Promise<BlockNumber>;
40
42
  getProvenBlockNumber(): Promise<BlockNumber>;
43
+ getCheckpointedL2BlockNumber(): Promise<BlockNumber>;
44
+ getFinalizedL2BlockNumber(): Promise<BlockNumber>;
45
+ getCheckpointedBlock(number: BlockNumber): Promise<CheckpointedL2Block | undefined>;
46
+ getCheckpointedBlocks(from: BlockNumber, limit: number): Promise<CheckpointedL2Block[]>;
41
47
  /**
42
48
  * Gets an l2 block.
43
49
  * @param number - The block number to return (inclusive).
44
50
  * @returns The requested L2 block.
45
51
  */
46
- getBlock(number: number): Promise<L2Block>;
52
+ getBlock(number: number): Promise<L2Block | undefined>;
53
+ /**
54
+ * Gets an L2 block (new format).
55
+ * @param number - The block number to return.
56
+ * @returns The requested L2 block.
57
+ */
58
+ getL2Block(number: BlockNumber): Promise<L2Block | undefined>;
47
59
  /**
48
60
  * Gets up to `limit` amount of L2 blocks starting from `from`.
49
61
  * @param from - Number of the first block to return (inclusive).
50
62
  * @param limit - The maximum number of blocks to return.
51
63
  * @returns The requested mocked L2 blocks.
52
64
  */
53
- getBlocks(from: number, limit: number, proven?: boolean): Promise<L2Block[]>;
54
- getPublishedCheckpoints(from: CheckpointNumber, limit: number): Promise<import("@aztec/stdlib/checkpoint").PublishedCheckpoint[]>;
65
+ getBlocks(from: number, limit: number): Promise<L2Block[]>;
66
+ getCheckpoints(from: CheckpointNumber, limit: number): Promise<PublishedCheckpoint[]>;
55
67
  getCheckpointByArchive(archive: Fr): Promise<Checkpoint | undefined>;
56
- getPublishedBlocks(from: number, limit: number, proven?: boolean): Promise<PublishedL2Block[]>;
57
- getPublishedBlockByHash(blockHash: Fr): Promise<PublishedL2Block | undefined>;
58
- getPublishedBlockByArchive(archive: Fr): Promise<PublishedL2Block | undefined>;
59
- getBlockHeaderByHash(blockHash: Fr): Promise<BlockHeader | undefined>;
68
+ getCheckpointedBlockByHash(blockHash: BlockHash): Promise<CheckpointedL2Block | undefined>;
69
+ getCheckpointedBlockByArchive(archive: Fr): Promise<CheckpointedL2Block | undefined>;
70
+ getL2BlockByHash(blockHash: BlockHash): Promise<L2Block | undefined>;
71
+ getL2BlockByArchive(archive: Fr): Promise<L2Block | undefined>;
72
+ getBlockHeaderByHash(blockHash: BlockHash): Promise<BlockHeader | undefined>;
60
73
  getBlockHeaderByArchive(archive: Fr): Promise<BlockHeader | undefined>;
61
74
  getBlockHeader(number: number | 'latest'): Promise<BlockHeader | undefined>;
62
75
  getCheckpointsForEpoch(epochNumber: EpochNumber): Promise<Checkpoint[]>;
63
- getBlocksForEpoch(epochNumber: EpochNumber): Promise<L2Block[]>;
64
- getBlockHeadersForEpoch(epochNumber: EpochNumber): Promise<BlockHeader[]>;
76
+ getCheckpointedBlocksForEpoch(epochNumber: EpochNumber): Promise<CheckpointedL2Block[]>;
77
+ getBlocksForSlot(slotNumber: SlotNumber): Promise<L2Block[]>;
78
+ getCheckpointedBlockHeadersForEpoch(epochNumber: EpochNumber): Promise<BlockHeader[]>;
65
79
  /**
66
80
  * Gets a tx effect.
67
81
  * @param txHash - The hash of the tx corresponding to the tx effect.
@@ -70,7 +84,7 @@ export declare class MockL2BlockSource implements L2BlockSource, ContractDataSou
70
84
  getTxEffect(txHash: TxHash): Promise<{
71
85
  data: import("@aztec/stdlib/tx").TxEffect;
72
86
  l2BlockNumber: BlockNumber;
73
- l2BlockHash: L2BlockHash;
87
+ l2BlockHash: BlockHash;
74
88
  txIndexInBlock: number;
75
89
  } | undefined>;
76
90
  /**
@@ -106,6 +120,6 @@ export declare class MockL2BlockSource implements L2BlockSource, ContractDataSou
106
120
  registerContractFunctionSignatures(_signatures: string[]): Promise<void>;
107
121
  syncImmediate(): Promise<void>;
108
122
  isPendingChainInvalid(): Promise<boolean>;
109
- getPendingChainValidationStatus(): Promise<ValidateBlockResult>;
123
+ getPendingChainValidationStatus(): Promise<ValidateCheckpointResult>;
110
124
  }
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19sMl9ibG9ja19zb3VyY2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L21vY2tfbDJfYmxvY2tfc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXpHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFOUMsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRCxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQ0wsT0FBTyxFQUNQLFdBQVcsRUFDWCxLQUFLLGFBQWEsRUFDbEIsS0FBSyxNQUFNLEVBQ1gsZ0JBQWdCLEVBQ2hCLEtBQUssbUJBQW1CLEVBQ3pCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuSCxPQUFPLEVBQTBCLEtBQUssaUJBQWlCLEVBQXdCLE1BQU0sNkJBQTZCLENBQUM7QUFDbkgsT0FBTyxFQUFFLEtBQUssV0FBVyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQVksTUFBTSxrQkFBa0IsQ0FBQztBQUNqRixPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRDs7R0FFRztBQUNILHFCQUFhLGlCQUFrQixZQUFXLGFBQWEsRUFBRSxrQkFBa0I7SUFDekUsU0FBUyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBTTtJQUVu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
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19sMl9ibG9ja19zb3VyY2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L21vY2tfbDJfYmxvY2tfc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXpHLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFM0QsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRCxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQ0wsU0FBUyxFQUNULG1CQUFtQixFQUNuQixPQUFPLEVBQ1AsS0FBSyxhQUFhLEVBQ2xCLEtBQUssTUFBTSxFQUNYLEtBQUssd0JBQXdCLEVBQzlCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLFVBQVUsRUFBbUIsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RixPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25ILE9BQU8sRUFBMEIsS0FBSyxpQkFBaUIsRUFBd0IsTUFBTSw2QkFBNkIsQ0FBQztBQUNuSCxPQUFPLEVBQUUsS0FBSyxXQUFXLEVBQXFCLE1BQU0sRUFBRSxTQUFTLEVBQVksTUFBTSxrQkFBa0IsQ0FBQztBQUNwRyxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRDs7R0FFRztBQUNILHFCQUFhLGlCQUFrQixZQUFXLGFBQWEsRUFBRSxrQkFBa0I7SUFDekUsU0FBUyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUs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
@@ -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,31 +1,35 @@
1
1
  import { GENESIS_ARCHIVE_ROOT } from '@aztec/constants';
2
- import { DefaultL1ContractsConfig } from '@aztec/ethereum';
3
- import { BlockNumber } from '@aztec/foundation/branded-types';
2
+ import { DefaultL1ContractsConfig } from '@aztec/ethereum/config';
3
+ import { BlockNumber, CheckpointNumber, SlotNumber } from '@aztec/foundation/branded-types';
4
4
  import { Buffer32 } from '@aztec/foundation/buffer';
5
+ import { Fr } from '@aztec/foundation/curves/bn254';
5
6
  import { EthAddress } from '@aztec/foundation/eth-address';
6
- import { Fr } from '@aztec/foundation/fields';
7
7
  import { createLogger } from '@aztec/foundation/log';
8
- import { L2Block, L2BlockHash, PublishedL2Block } from '@aztec/stdlib/block';
8
+ import { CheckpointedL2Block, L2Block } from '@aztec/stdlib/block';
9
+ import { Checkpoint, L1PublishedData, PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
9
10
  import { EmptyL1RollupConstants, getSlotRangeForEpoch } from '@aztec/stdlib/epoch-helpers';
10
- import { TxReceipt, TxStatus } from '@aztec/stdlib/tx';
11
+ import { TxExecutionResult, TxReceipt, TxStatus } from '@aztec/stdlib/tx';
11
12
  /**
12
13
  * A mocked implementation of L2BlockSource to be used in tests.
13
14
  */ export class MockL2BlockSource {
14
15
  l2Blocks = [];
15
16
  provenBlockNumber = 0;
16
17
  finalizedBlockNumber = 0;
18
+ checkpointedBlockNumber = 0;
17
19
  log = createLogger('archiver:mock_l2_block_source');
18
20
  async createBlocks(numBlocks) {
19
21
  for(let i = 0; i < numBlocks; i++){
20
22
  const blockNum = this.l2Blocks.length + 1;
21
- const block = await L2Block.random(BlockNumber(blockNum));
23
+ const block = await L2Block.random(BlockNumber(blockNum), {
24
+ slotNumber: SlotNumber(blockNum)
25
+ });
22
26
  this.l2Blocks.push(block);
23
27
  }
24
28
  this.log.verbose(`Created ${numBlocks} blocks in the mock L2 block source`);
25
29
  }
26
- addBlocks(blocks) {
30
+ addProposedBlocks(blocks) {
27
31
  this.l2Blocks.push(...blocks);
28
- this.log.verbose(`Added ${blocks.length} blocks to the mock L2 block source`);
32
+ this.log.verbose(`Added ${blocks.length} proposed blocks to the mock L2 block source`);
29
33
  }
30
34
  removeBlocks(numBlocks) {
31
35
  this.l2Blocks = this.l2Blocks.slice(0, -numBlocks);
@@ -40,6 +44,9 @@ import { TxReceipt, TxStatus } from '@aztec/stdlib/tx';
40
44
  }
41
45
  this.finalizedBlockNumber = finalizedBlockNumber;
42
46
  }
47
+ setCheckpointedBlockNumber(checkpointedBlockNumber) {
48
+ this.checkpointedBlockNumber = checkpointedBlockNumber;
49
+ }
43
50
  /**
44
51
  * Method to fetch the rollup contract address at the base-layer.
45
52
  * @returns The rollup address.
@@ -61,94 +68,167 @@ import { TxReceipt, TxStatus } from '@aztec/stdlib/tx';
61
68
  getProvenBlockNumber() {
62
69
  return Promise.resolve(BlockNumber(this.provenBlockNumber));
63
70
  }
71
+ getCheckpointedL2BlockNumber() {
72
+ return Promise.resolve(BlockNumber(this.checkpointedBlockNumber));
73
+ }
74
+ getFinalizedL2BlockNumber() {
75
+ return Promise.resolve(BlockNumber(this.finalizedBlockNumber));
76
+ }
77
+ getCheckpointedBlock(number) {
78
+ if (number > this.checkpointedBlockNumber) {
79
+ return Promise.resolve(undefined);
80
+ }
81
+ const block = this.l2Blocks[number - 1];
82
+ if (!block) {
83
+ return Promise.resolve(undefined);
84
+ }
85
+ const checkpointedBlock = new CheckpointedL2Block(CheckpointNumber.fromBlockNumber(number), block, new L1PublishedData(BigInt(number), BigInt(number), `0x${number.toString(16).padStart(64, '0')}`), []);
86
+ return Promise.resolve(checkpointedBlock);
87
+ }
88
+ async getCheckpointedBlocks(from, limit) {
89
+ const result = [];
90
+ for(let i = 0; i < limit; i++){
91
+ const blockNum = from + i;
92
+ if (blockNum > this.checkpointedBlockNumber) {
93
+ break;
94
+ }
95
+ const block = await this.getCheckpointedBlock(BlockNumber(blockNum));
96
+ if (block) {
97
+ result.push(block);
98
+ }
99
+ }
100
+ return result;
101
+ }
64
102
  /**
65
103
  * Gets an l2 block.
66
104
  * @param number - The block number to return (inclusive).
67
105
  * @returns The requested L2 block.
68
106
  */ getBlock(number) {
69
- return Promise.resolve(this.l2Blocks[number - 1]);
107
+ const block = this.l2Blocks[number - 1];
108
+ return Promise.resolve(block);
109
+ }
110
+ /**
111
+ * Gets an L2 block (new format).
112
+ * @param number - The block number to return.
113
+ * @returns The requested L2 block.
114
+ */ getL2Block(number) {
115
+ const block = this.l2Blocks[number - 1];
116
+ return Promise.resolve(block);
70
117
  }
71
118
  /**
72
119
  * Gets up to `limit` amount of L2 blocks starting from `from`.
73
120
  * @param from - Number of the first block to return (inclusive).
74
121
  * @param limit - The maximum number of blocks to return.
75
122
  * @returns The requested mocked L2 blocks.
76
- */ getBlocks(from, limit, proven) {
77
- return Promise.resolve(this.l2Blocks.slice(from - 1, from - 1 + limit).filter((b)=>!proven || this.provenBlockNumber === undefined || b.number <= this.provenBlockNumber));
78
- }
79
- async getPublishedCheckpoints(from, limit) {
80
- // TODO: Implement this properly. This only works when we have one block per checkpoint.
81
- return (await this.getPublishedBlocks(from, limit)).map((block)=>block.toPublishedCheckpoint());
123
+ */ getBlocks(from, limit) {
124
+ return Promise.resolve(this.l2Blocks.slice(from - 1, from - 1 + limit));
125
+ }
126
+ getCheckpoints(from, limit) {
127
+ // TODO(mbps): Implement this properly. This only works when we have one block per checkpoint.
128
+ const blocks = this.l2Blocks.slice(from - 1, from - 1 + limit);
129
+ return Promise.all(blocks.map(async (block)=>{
130
+ // Create a checkpoint from the block - manually construct since L2Block doesn't have toCheckpoint()
131
+ const checkpoint = await Checkpoint.random(block.checkpointNumber, {
132
+ numBlocks: 1
133
+ });
134
+ checkpoint.blocks = [
135
+ block
136
+ ];
137
+ return new PublishedCheckpoint(checkpoint, new L1PublishedData(BigInt(block.number), BigInt(block.number), Buffer32.random().toString()), []);
138
+ }));
82
139
  }
83
140
  async getCheckpointByArchive(archive) {
84
- // TODO: Implement this properly. This only works when we have one block per checkpoint.
85
- return (await this.getPublishedBlockByArchive(archive))?.block.toCheckpoint();
86
- }
87
- async getPublishedBlocks(from, limit, proven) {
88
- const blocks = await this.getBlocks(from, limit, proven);
89
- return blocks.map((block)=>PublishedL2Block.fromFields({
90
- block,
91
- l1: {
92
- blockNumber: BigInt(block.number),
93
- blockHash: Buffer32.random().toString(),
94
- timestamp: BigInt(block.number)
95
- },
96
- attestations: []
97
- }));
141
+ // TODO(mbps): Implement this properly. This only works when we have one block per checkpoint.
142
+ const block = this.l2Blocks.find((b)=>b.archive.root.equals(archive));
143
+ if (!block) {
144
+ return undefined;
145
+ }
146
+ // Create a checkpoint from the block - manually construct since L2Block doesn't have toCheckpoint()
147
+ const checkpoint = await Checkpoint.random(block.checkpointNumber, {
148
+ numBlocks: 1
149
+ });
150
+ checkpoint.blocks = [
151
+ block
152
+ ];
153
+ return checkpoint;
98
154
  }
99
- async getPublishedBlockByHash(blockHash) {
155
+ async getCheckpointedBlockByHash(blockHash) {
100
156
  for (const block of this.l2Blocks){
101
157
  const hash = await block.hash();
102
158
  if (hash.equals(blockHash)) {
103
- return PublishedL2Block.fromFields({
159
+ return CheckpointedL2Block.fromFields({
160
+ checkpointNumber: CheckpointNumber.fromBlockNumber(block.number),
104
161
  block,
105
- l1: {
106
- blockNumber: BigInt(block.number),
107
- blockHash: Buffer32.random().toString(),
108
- timestamp: BigInt(block.number)
109
- },
162
+ l1: new L1PublishedData(BigInt(block.number), BigInt(block.number), Buffer32.random().toString()),
110
163
  attestations: []
111
164
  });
112
165
  }
113
166
  }
114
167
  return undefined;
115
168
  }
116
- getPublishedBlockByArchive(archive) {
169
+ getCheckpointedBlockByArchive(archive) {
117
170
  const block = this.l2Blocks.find((b)=>b.archive.root.equals(archive));
118
171
  if (!block) {
119
172
  return Promise.resolve(undefined);
120
173
  }
121
- return Promise.resolve(PublishedL2Block.fromFields({
174
+ return Promise.resolve(CheckpointedL2Block.fromFields({
175
+ checkpointNumber: CheckpointNumber.fromBlockNumber(block.number),
122
176
  block,
123
- l1: {
124
- blockNumber: BigInt(block.number),
125
- blockHash: Buffer32.random().toString(),
126
- timestamp: BigInt(block.number)
127
- },
177
+ l1: new L1PublishedData(BigInt(block.number), BigInt(block.number), Buffer32.random().toString()),
128
178
  attestations: []
129
179
  }));
130
180
  }
181
+ async getL2BlockByHash(blockHash) {
182
+ for (const block of this.l2Blocks){
183
+ const hash = await block.hash();
184
+ if (hash.equals(blockHash)) {
185
+ return block;
186
+ }
187
+ }
188
+ return undefined;
189
+ }
190
+ getL2BlockByArchive(archive) {
191
+ const block = this.l2Blocks.find((b)=>b.archive.root.equals(archive));
192
+ return Promise.resolve(block);
193
+ }
131
194
  async getBlockHeaderByHash(blockHash) {
132
195
  for (const block of this.l2Blocks){
133
196
  const hash = await block.hash();
134
197
  if (hash.equals(blockHash)) {
135
- return block.getBlockHeader();
198
+ return block.header;
136
199
  }
137
200
  }
138
201
  return undefined;
139
202
  }
140
203
  getBlockHeaderByArchive(archive) {
141
204
  const block = this.l2Blocks.find((b)=>b.archive.root.equals(archive));
142
- return Promise.resolve(block?.getBlockHeader());
205
+ return Promise.resolve(block?.header);
143
206
  }
144
207
  getBlockHeader(number) {
145
- return Promise.resolve(this.l2Blocks.at(typeof number === 'number' ? number - 1 : -1)?.getBlockHeader());
208
+ return Promise.resolve(this.l2Blocks.at(typeof number === 'number' ? number - 1 : -1)?.header);
146
209
  }
147
210
  getCheckpointsForEpoch(epochNumber) {
148
- // TODO: Implement this properly. This only works when we have one block per checkpoint.
149
- return this.getBlocksForEpoch(epochNumber).then((blocks)=>blocks.map((b)=>b.toCheckpoint()));
211
+ // TODO(mbps): Implement this properly. This only works when we have one block per checkpoint.
212
+ const epochDuration = DefaultL1ContractsConfig.aztecEpochDuration;
213
+ const [start, end] = getSlotRangeForEpoch(epochNumber, {
214
+ epochDuration
215
+ });
216
+ const blocks = this.l2Blocks.filter((b)=>{
217
+ const slot = b.header.globalVariables.slotNumber;
218
+ return slot >= start && slot <= end;
219
+ });
220
+ // Create checkpoints from blocks - manually construct since L2Block doesn't have toCheckpoint()
221
+ return Promise.all(blocks.map(async (block)=>{
222
+ const checkpoint = await Checkpoint.random(block.checkpointNumber, {
223
+ numBlocks: 1
224
+ });
225
+ checkpoint.blocks = [
226
+ block
227
+ ];
228
+ return checkpoint;
229
+ }));
150
230
  }
151
- getBlocksForEpoch(epochNumber) {
231
+ getCheckpointedBlocksForEpoch(epochNumber) {
152
232
  const epochDuration = DefaultL1ContractsConfig.aztecEpochDuration;
153
233
  const [start, end] = getSlotRangeForEpoch(epochNumber, {
154
234
  epochDuration
@@ -157,11 +237,20 @@ import { TxReceipt, TxStatus } from '@aztec/stdlib/tx';
157
237
  const slot = b.header.globalVariables.slotNumber;
158
238
  return slot >= start && slot <= end;
159
239
  });
240
+ return Promise.resolve(blocks.map((block)=>CheckpointedL2Block.fromFields({
241
+ checkpointNumber: CheckpointNumber.fromBlockNumber(block.number),
242
+ block,
243
+ l1: new L1PublishedData(BigInt(block.number), BigInt(block.number), Buffer32.random().toString()),
244
+ attestations: []
245
+ })));
246
+ }
247
+ getBlocksForSlot(slotNumber) {
248
+ const blocks = this.l2Blocks.filter((b)=>b.header.globalVariables.slotNumber === slotNumber);
160
249
  return Promise.resolve(blocks);
161
250
  }
162
- async getBlockHeadersForEpoch(epochNumber) {
163
- const blocks = await this.getBlocksForEpoch(epochNumber);
164
- return blocks.map((b)=>b.getBlockHeader());
251
+ async getCheckpointedBlockHeadersForEpoch(epochNumber) {
252
+ const checkpointedBlocks = await this.getCheckpointedBlocksForEpoch(epochNumber);
253
+ return checkpointedBlocks.map((b)=>b.block.header);
165
254
  }
166
255
  /**
167
256
  * Gets a tx effect.
@@ -179,7 +268,7 @@ import { TxReceipt, TxStatus } from '@aztec/stdlib/tx';
179
268
  return {
180
269
  data: txEffect,
181
270
  l2BlockNumber: block.number,
182
- l2BlockHash: L2BlockHash.fromField(await block.hash()),
271
+ l2BlockHash: await block.hash(),
183
272
  txIndexInBlock: block.body.txEffects.indexOf(txEffect)
184
273
  };
185
274
  }
@@ -191,34 +280,52 @@ import { TxReceipt, TxStatus } from '@aztec/stdlib/tx';
191
280
  for (const block of this.l2Blocks){
192
281
  for (const txEffect of block.body.txEffects){
193
282
  if (txEffect.txHash.equals(txHash)) {
194
- return new TxReceipt(txHash, TxStatus.SUCCESS, '', txEffect.transactionFee.toBigInt(), L2BlockHash.fromField(await block.hash()), block.number);
283
+ // In mock, assume all txs are checkpointed with successful execution
284
+ return new TxReceipt(txHash, TxStatus.CHECKPOINTED, TxExecutionResult.SUCCESS, undefined, txEffect.transactionFee.toBigInt(), await block.hash(), block.number);
195
285
  }
196
286
  }
197
287
  }
198
288
  return undefined;
199
289
  }
200
290
  async getL2Tips() {
201
- const [latest, proven, finalized] = [
291
+ const [latest, proven, finalized, checkpointed] = [
202
292
  await this.getBlockNumber(),
203
293
  await this.getProvenBlockNumber(),
204
- this.finalizedBlockNumber
294
+ this.finalizedBlockNumber,
295
+ this.checkpointedBlockNumber
205
296
  ];
206
297
  const latestBlock = this.l2Blocks[latest - 1];
207
298
  const provenBlock = this.l2Blocks[proven - 1];
208
299
  const finalizedBlock = this.l2Blocks[finalized - 1];
300
+ const checkpointedBlock = this.l2Blocks[checkpointed - 1];
301
+ const latestBlockId = {
302
+ number: BlockNumber(latest),
303
+ hash: (await latestBlock?.hash())?.toString()
304
+ };
305
+ const provenBlockId = {
306
+ number: BlockNumber(proven),
307
+ hash: (await provenBlock?.hash())?.toString()
308
+ };
309
+ const finalizedBlockId = {
310
+ number: BlockNumber(finalized),
311
+ hash: (await finalizedBlock?.hash())?.toString()
312
+ };
313
+ const checkpointedBlockId = {
314
+ number: BlockNumber(checkpointed),
315
+ hash: (await checkpointedBlock?.hash())?.toString()
316
+ };
317
+ const makeTipId = (blockId)=>({
318
+ block: blockId,
319
+ checkpoint: {
320
+ number: CheckpointNumber.fromBlockNumber(blockId.number),
321
+ hash: blockId.hash
322
+ }
323
+ });
209
324
  return {
210
- latest: {
211
- number: BlockNumber(latest),
212
- hash: (await latestBlock?.hash())?.toString()
213
- },
214
- proven: {
215
- number: BlockNumber(proven),
216
- hash: (await provenBlock?.hash())?.toString()
217
- },
218
- finalized: {
219
- number: BlockNumber(finalized),
220
- hash: (await finalizedBlock?.hash())?.toString()
221
- }
325
+ proposed: latestBlockId,
326
+ checkpointed: makeTipId(checkpointedBlockId),
327
+ proven: makeTipId(provenBlockId),
328
+ finalized: makeTipId(finalizedBlockId)
222
329
  };
223
330
  }
224
331
  getL2EpochNumber() {