@aztec/archiver 0.75.0-commit.c03ba01a2a4122e43e90d5133ba017e54b90e9d2 → 0.76.0

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 (83) hide show
  1. package/dest/archiver/archiver.d.ts +186 -0
  2. package/dest/archiver/archiver.d.ts.map +1 -0
  3. package/dest/archiver/archiver.js +711 -729
  4. package/dest/archiver/archiver_store.d.ts +217 -0
  5. package/dest/archiver/archiver_store.d.ts.map +1 -0
  6. package/dest/archiver/archiver_store.js +2 -4
  7. package/dest/archiver/archiver_store_test_suite.d.ts +8 -0
  8. package/dest/archiver/archiver_store_test_suite.d.ts.map +1 -0
  9. package/dest/archiver/archiver_store_test_suite.js +224 -385
  10. package/dest/archiver/config.d.ts +37 -0
  11. package/dest/archiver/config.d.ts.map +1 -0
  12. package/dest/archiver/config.js +15 -9
  13. package/dest/archiver/data_retrieval.d.ts +71 -0
  14. package/dest/archiver/data_retrieval.d.ts.map +1 -0
  15. package/dest/archiver/data_retrieval.js +67 -77
  16. package/dest/archiver/errors.d.ts +4 -0
  17. package/dest/archiver/errors.d.ts.map +1 -0
  18. package/dest/archiver/errors.js +2 -1
  19. package/dest/archiver/index.d.ts +8 -0
  20. package/dest/archiver/index.d.ts.map +1 -0
  21. package/dest/archiver/index.js +1 -0
  22. package/dest/archiver/instrumentation.d.ts +27 -0
  23. package/dest/archiver/instrumentation.d.ts.map +1 -0
  24. package/dest/archiver/instrumentation.js +17 -29
  25. package/dest/archiver/kv_archiver_store/block_store.d.ts +87 -0
  26. package/dest/archiver/kv_archiver_store/block_store.d.ts.map +1 -0
  27. package/dest/archiver/kv_archiver_store/block_store.js +127 -118
  28. package/dest/archiver/kv_archiver_store/contract_class_store.d.ts +17 -0
  29. package/dest/archiver/kv_archiver_store/contract_class_store.d.ts.map +1 -0
  30. package/dest/archiver/kv_archiver_store/contract_class_store.js +37 -43
  31. package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts +13 -0
  32. package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts.map +1 -0
  33. package/dest/archiver/kv_archiver_store/contract_instance_store.js +12 -7
  34. package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts +147 -0
  35. package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts.map +1 -0
  36. package/dest/archiver/kv_archiver_store/kv_archiver_store.js +158 -135
  37. package/dest/archiver/kv_archiver_store/log_store.d.ts +47 -0
  38. package/dest/archiver/kv_archiver_store/log_store.d.ts.map +1 -0
  39. package/dest/archiver/kv_archiver_store/log_store.js +256 -271
  40. package/dest/archiver/kv_archiver_store/message_store.d.ts +33 -0
  41. package/dest/archiver/kv_archiver_store/message_store.d.ts.map +1 -0
  42. package/dest/archiver/kv_archiver_store/message_store.js +48 -42
  43. package/dest/archiver/kv_archiver_store/nullifier_store.d.ts +12 -0
  44. package/dest/archiver/kv_archiver_store/nullifier_store.d.ts.map +1 -0
  45. package/dest/archiver/kv_archiver_store/nullifier_store.js +42 -35
  46. package/dest/archiver/memory_archiver_store/l1_to_l2_message_store.d.ts +23 -0
  47. package/dest/archiver/memory_archiver_store/l1_to_l2_message_store.d.ts.map +1 -0
  48. package/dest/archiver/memory_archiver_store/l1_to_l2_message_store.js +24 -15
  49. package/dest/archiver/memory_archiver_store/memory_archiver_store.d.ts +168 -0
  50. package/dest/archiver/memory_archiver_store/memory_archiver_store.d.ts.map +1 -0
  51. package/dest/archiver/memory_archiver_store/memory_archiver_store.js +231 -227
  52. package/dest/archiver/structs/data_retrieval.d.ts +27 -0
  53. package/dest/archiver/structs/data_retrieval.d.ts.map +1 -0
  54. package/dest/archiver/structs/data_retrieval.js +2 -5
  55. package/dest/archiver/structs/published.d.ts +11 -0
  56. package/dest/archiver/structs/published.d.ts.map +1 -0
  57. package/dest/archiver/structs/published.js +2 -1
  58. package/dest/factory.d.ts +10 -0
  59. package/dest/factory.d.ts.map +1 -0
  60. package/dest/factory.js +24 -32
  61. package/dest/index.d.ts +5 -0
  62. package/dest/index.d.ts.map +1 -0
  63. package/dest/index.js +1 -0
  64. package/dest/rpc/index.d.ts +9 -0
  65. package/dest/rpc/index.d.ts.map +1 -0
  66. package/dest/rpc/index.js +8 -7
  67. package/dest/test/index.d.ts +4 -0
  68. package/dest/test/index.d.ts.map +1 -0
  69. package/dest/test/index.js +1 -0
  70. package/dest/test/mock_archiver.d.ts +22 -0
  71. package/dest/test/mock_archiver.d.ts.map +1 -0
  72. package/dest/test/mock_archiver.js +13 -8
  73. package/dest/test/mock_l1_to_l2_message_source.d.ts +16 -0
  74. package/dest/test/mock_l1_to_l2_message_source.d.ts.map +1 -0
  75. package/dest/test/mock_l1_to_l2_message_source.js +4 -4
  76. package/dest/test/mock_l2_block_source.d.ts +80 -0
  77. package/dest/test/mock_l2_block_source.d.ts.map +1 -0
  78. package/dest/test/mock_l2_block_source.js +67 -68
  79. package/package.json +15 -14
  80. package/src/archiver/config.ts +7 -1
  81. package/src/archiver/index.ts +1 -1
  82. package/src/factory.ts +7 -3
  83. package/src/rpc/index.ts +16 -3
@@ -1,54 +1,43 @@
1
1
  import { createLogger } from '@aztec/foundation/log';
2
- import { Attributes, LmdbMetrics, Metrics, ValueType } from '@aztec/telemetry-client';
2
+ import { Attributes, LmdbMetrics, Metrics, ValueType, } from '@aztec/telemetry-client';
3
3
  export class ArchiverInstrumentation {
4
- telemetry;
5
- tracer;
6
- blockHeight;
7
- txCount;
8
- syncDuration;
9
- l1BlocksSynced;
10
- proofsSubmittedDelay;
11
- proofsSubmittedCount;
12
- dbMetrics;
13
- pruneCount;
14
- log;
15
- constructor(telemetry, lmdbStats){
4
+ constructor(telemetry, lmdbStats) {
16
5
  this.telemetry = telemetry;
17
6
  this.log = createLogger('archiver:instrumentation');
18
7
  this.tracer = telemetry.getTracer('Archiver');
19
8
  const meter = telemetry.getMeter('Archiver');
20
9
  this.blockHeight = meter.createGauge(Metrics.ARCHIVER_BLOCK_HEIGHT, {
21
10
  description: 'The height of the latest block processed by the archiver',
22
- valueType: ValueType.INT
11
+ valueType: ValueType.INT,
23
12
  });
24
13
  this.txCount = meter.createUpDownCounter(Metrics.ARCHIVER_TX_COUNT, {
25
14
  description: 'The total number of transactions',
26
- valueType: ValueType.INT
15
+ valueType: ValueType.INT,
27
16
  });
28
17
  this.syncDuration = meter.createHistogram(Metrics.ARCHIVER_SYNC_DURATION, {
29
18
  unit: 'ms',
30
19
  description: 'Duration to sync a block',
31
- valueType: ValueType.INT
20
+ valueType: ValueType.INT,
32
21
  });
33
22
  this.proofsSubmittedCount = meter.createUpDownCounter(Metrics.ARCHIVER_ROLLUP_PROOF_COUNT, {
34
23
  description: 'Number of proofs submitted',
35
- valueType: ValueType.INT
24
+ valueType: ValueType.INT,
36
25
  });
37
26
  this.proofsSubmittedDelay = meter.createHistogram(Metrics.ARCHIVER_ROLLUP_PROOF_DELAY, {
38
27
  unit: 'ms',
39
28
  description: 'Time after a block is submitted until its proof is published',
40
- valueType: ValueType.INT
29
+ valueType: ValueType.INT,
41
30
  });
42
31
  this.l1BlocksSynced = meter.createUpDownCounter(Metrics.ARCHIVER_L1_BLOCKS_SYNCED, {
43
32
  description: 'Number of blocks synced from L1',
44
- valueType: ValueType.INT
33
+ valueType: ValueType.INT,
45
34
  });
46
35
  this.dbMetrics = new LmdbMetrics(meter, {
47
- [Attributes.DB_DATA_TYPE]: 'archiver'
36
+ [Attributes.DB_DATA_TYPE]: 'archiver',
48
37
  }, lmdbStats);
49
38
  this.pruneCount = meter.createUpDownCounter(Metrics.ARCHIVER_PRUNE_COUNT, {
50
39
  description: 'Number of prunes detected',
51
- valueType: ValueType.INT
40
+ valueType: ValueType.INT,
52
41
  });
53
42
  }
54
43
  static async new(telemetry, lmdbStats) {
@@ -62,9 +51,9 @@ export class ArchiverInstrumentation {
62
51
  }
63
52
  processNewBlocks(syncTimePerBlock, blocks) {
64
53
  this.syncDuration.record(Math.ceil(syncTimePerBlock));
65
- this.blockHeight.record(Math.max(...blocks.map((b)=>b.number)));
54
+ this.blockHeight.record(Math.max(...blocks.map(b => b.number)));
66
55
  this.l1BlocksSynced.add(blocks.length);
67
- for (const block of blocks){
56
+ for (const block of blocks) {
68
57
  this.txCount.add(block.body.txEffects.length);
69
58
  }
70
59
  }
@@ -72,20 +61,19 @@ export class ArchiverInstrumentation {
72
61
  this.pruneCount.add(1);
73
62
  }
74
63
  updateLastProvenBlock(blockNumber) {
75
- this.blockHeight.record(blockNumber, {
76
- [Attributes.STATUS]: 'proven'
77
- });
64
+ this.blockHeight.record(blockNumber, { [Attributes.STATUS]: 'proven' });
78
65
  }
79
66
  processProofsVerified(logs) {
80
- for (const log of logs){
67
+ for (const log of logs) {
81
68
  this.log.debug('Recording proof verified event', log);
82
69
  this.proofsSubmittedCount.add(1, {
83
70
  [Attributes.ROLLUP_PROVER_ID]: log.proverId,
84
- [Attributes.PROOF_TIMED_OUT]: log.delay > 20n * 60n * 1000n
71
+ [Attributes.PROOF_TIMED_OUT]: log.delay > 20n * 60n * 1000n,
85
72
  });
86
73
  this.proofsSubmittedDelay.record(Math.ceil(Number(log.delay)), {
87
- [Attributes.ROLLUP_PROVER_ID]: log.proverId
74
+ [Attributes.ROLLUP_PROVER_ID]: log.proverId,
88
75
  });
89
76
  }
90
77
  }
91
78
  }
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1bWVudGF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FyY2hpdmVyL2luc3RydW1lbnRhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUNMLFVBQVUsRUFHVixXQUFXLEVBRVgsT0FBTyxFQUlQLFNBQVMsR0FDVixNQUFNLHlCQUF5QixDQUFDO0FBRWpDLE1BQU0sT0FBTyx1QkFBdUI7SUFjbEMsWUFBNEIsU0FBMEIsRUFBRSxTQUE2QjtRQUF6RCxjQUFTLEdBQVQsU0FBUyxDQUFpQjtRQUY5QyxRQUFHLEdBQUcsWUFBWSxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFHckQsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRTtZQUNsRSxXQUFXLEVBQUUsMERBQTBEO1lBQ3ZFLFNBQVMsRUFBRSxTQUFTLENBQUMsR0FBRztTQUN6QixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUU7WUFDbEUsV0FBVyxFQUFFLGtDQUFrQztZQUMvQyxTQUFTLEVBQUUsU0FBUyxDQUFDLEdBQUc7U0FDekIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRTtZQUN4RSxJQUFJLEVBQUUsSUFBSTtZQUNWLFdBQVcsRUFBRSwwQkFBMEI7WUFDdkMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxH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
@@ -0,0 +1,87 @@
1
+ import { type InBlock, L2Block, type TxEffect, type TxHash, TxReceipt } from '@aztec/circuit-types';
2
+ import { type AztecAddress, BlockHeader } from '@aztec/circuits.js';
3
+ import type { AztecAsyncKVStore } from '@aztec/kv-store';
4
+ import { type L1Published } from '../structs/published.js';
5
+ /**
6
+ * LMDB implementation of the ArchiverDataStore interface.
7
+ */
8
+ export declare class BlockStore {
9
+ #private;
10
+ private db;
11
+ constructor(db: AztecAsyncKVStore);
12
+ /**
13
+ * Append new blocks to the store's list.
14
+ * @param blocks - The L2 blocks to be added to the store.
15
+ * @returns True if the operation is successful.
16
+ */
17
+ addBlocks(blocks: L1Published<L2Block>[]): Promise<boolean>;
18
+ /**
19
+ * Unwinds blocks from the database
20
+ * @param from - The tip of the chain, passed for verification purposes,
21
+ * ensuring that we don't end up deleting something we did not intend
22
+ * @param blocksToUnwind - The number of blocks we are to unwind
23
+ * @returns True if the operation is successful
24
+ */
25
+ unwindBlocks(from: number, blocksToUnwind: number): Promise<boolean>;
26
+ /**
27
+ * Gets up to `limit` amount of L2 blocks starting from `from`.
28
+ * @param start - Number of the first block to return (inclusive).
29
+ * @param limit - The number of blocks to return.
30
+ * @returns The requested L2 blocks
31
+ */
32
+ getBlocks(start: number, limit: number): AsyncIterableIterator<L1Published<L2Block>>;
33
+ /**
34
+ * Gets an L2 block.
35
+ * @param blockNumber - The number of the block to return.
36
+ * @returns The requested L2 block.
37
+ */
38
+ getBlock(blockNumber: number): Promise<L1Published<L2Block> | undefined>;
39
+ /**
40
+ * Gets the headers for a sequence of L2 blocks.
41
+ * @param start - Number of the first block to return (inclusive).
42
+ * @param limit - The number of blocks to return.
43
+ * @returns The requested L2 block headers
44
+ */
45
+ getBlockHeaders(start: number, limit: number): AsyncIterableIterator<BlockHeader>;
46
+ private getBlockFromBlockStorage;
47
+ /**
48
+ * Gets a tx effect.
49
+ * @param txHash - The txHash of the tx corresponding to the tx effect.
50
+ * @returns The requested tx effect (or undefined if not found).
51
+ */
52
+ getTxEffect(txHash: TxHash): Promise<InBlock<TxEffect> | undefined>;
53
+ /**
54
+ * Gets a receipt of a settled tx.
55
+ * @param txHash - The hash of a tx we try to get the receipt for.
56
+ * @returns The requested tx receipt (or undefined if not found).
57
+ */
58
+ getSettledTxReceipt(txHash: TxHash): Promise<TxReceipt | undefined>;
59
+ /**
60
+ * Looks up which block included the requested tx effect.
61
+ * @param txHash - The txHash of the tx.
62
+ * @returns The block number and index of the tx.
63
+ */
64
+ getTxLocation(txHash: TxHash): Promise<[blockNumber: number, txIndex: number] | undefined>;
65
+ /**
66
+ * Looks up which block deployed a particular contract.
67
+ * @param contractAddress - The address of the contract to look up.
68
+ * @returns The block number and index of the contract.
69
+ */
70
+ getContractLocation(contractAddress: AztecAddress): Promise<[blockNumber: number, index: number] | undefined>;
71
+ /**
72
+ * Gets the number of the latest L2 block processed.
73
+ * @returns The number of the latest L2 block processed.
74
+ */
75
+ getSynchedL2BlockNumber(): Promise<number>;
76
+ /**
77
+ * Gets the most recent L1 block processed.
78
+ * @returns The L1 block that published the latest L2 block
79
+ */
80
+ getSynchedL1BlockNumber(): Promise<bigint | undefined>;
81
+ setSynchedL1BlockNumber(l1BlockNumber: bigint): Promise<boolean>;
82
+ getProvenL2BlockNumber(): Promise<number>;
83
+ setProvenL2BlockNumber(blockNumber: number): Promise<boolean>;
84
+ getProvenL2EpochNumber(): Promise<number | undefined>;
85
+ setProvenL2EpochNumber(epochNumber: number): Promise<boolean>;
86
+ }
87
+ //# sourceMappingURL=block_store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block_store.d.ts","sourceRoot":"","sources":["../../../src/archiver/kv_archiver_store/block_store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,OAAO,EAAE,OAAO,EAAe,KAAK,QAAQ,EAAE,KAAK,MAAM,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACvH,OAAO,EAA0B,KAAK,YAAY,EAAE,WAAW,EAAwB,MAAM,oBAAoB,CAAC;AAGlH,OAAO,KAAK,EAAE,iBAAiB,EAA6C,MAAM,iBAAiB,CAAC;AAEpG,OAAO,EAAE,KAAK,WAAW,EAAwB,MAAM,yBAAyB,CAAC;AAUjF;;GAEG;AACH,qBAAa,UAAU;;IAwBT,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,iBAAiB;IAUzC;;;;OAIG;IACG,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IA0BjE;;;;;;OAMG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM;IAyBvD;;;;;OAKG;IACI,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,qBAAqB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAO3F;;;;OAIG;IACG,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;IAS9E;;;;;OAKG;IACI,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,qBAAqB,CAAC,WAAW,CAAC;YAM1E,wBAAwB;IAgBtC;;;;OAIG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;IAkBzE;;;;OAIG;IACG,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAmBzE;;;;OAIG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAI1F;;;;OAIG;IACH,mBAAmB,CAAC,eAAe,EAAE,YAAY,GAAG,OAAO,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAI7G;;;OAGG;IACG,uBAAuB,IAAI,OAAO,CAAC,MAAM,CAAC;IAKhD;;;OAGG;IACH,uBAAuB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAItD,uBAAuB,CAAC,aAAa,EAAE,MAAM;IAIvC,sBAAsB,IAAI,OAAO,CAAC,MAAM,CAAC;IAI/C,sBAAsB,CAAC,WAAW,EAAE,MAAM;IAI1C,sBAAsB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIrD,sBAAsB,CAAC,WAAW,EAAE,MAAM;CAe3C"}
@@ -1,114 +1,125 @@
1
+ var _BlockStore_instances, _BlockStore_blocks, _BlockStore_blockBodies, _BlockStore_lastSynchedL1Block, _BlockStore_lastProvenL2Block, _BlockStore_lastProvenL2Epoch, _BlockStore_txIndex, _BlockStore_contractIndex, _BlockStore_log, _BlockStore_computeBlockRange;
2
+ import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
1
3
  import { Body, L2Block, L2BlockHash, TxReceipt } from '@aztec/circuit-types';
2
4
  import { AppendOnlyTreeSnapshot, BlockHeader, INITIAL_L2_BLOCK_NUM } from '@aztec/circuits.js';
3
5
  import { toArray } from '@aztec/foundation/iterable';
4
6
  import { createLogger } from '@aztec/foundation/log';
5
7
  /**
6
8
  * LMDB implementation of the ArchiverDataStore interface.
7
- */ export class BlockStore {
8
- db;
9
- /** Map block number to block data */ #blocks;
10
- /** Map block hash to block body */ #blockBodies;
11
- /** Stores L1 block number in which the last processed L2 block was included */ #lastSynchedL1Block;
12
- /** Stores l2 block number of the last proven block */ #lastProvenL2Block;
13
- /** Stores l2 epoch number of the last proven epoch */ #lastProvenL2Epoch;
14
- /** Index mapping transaction hash (as a string) to its location in a block */ #txIndex;
15
- /** Index mapping a contract's address (as a string) to its location in a block */ #contractIndex;
16
- #log;
17
- constructor(db){
9
+ */
10
+ export class BlockStore {
11
+ constructor(db) {
12
+ _BlockStore_instances.add(this);
18
13
  this.db = db;
19
- this.#log = createLogger('archiver:block_store');
20
- this.#blocks = db.openMap('archiver_blocks');
21
- this.#blockBodies = db.openMap('archiver_block_bodies');
22
- this.#txIndex = db.openMap('archiver_tx_index');
23
- this.#contractIndex = db.openMap('archiver_contract_index');
24
- this.#lastSynchedL1Block = db.openSingleton('archiver_last_synched_l1_block');
25
- this.#lastProvenL2Block = db.openSingleton('archiver_last_proven_l2_block');
26
- this.#lastProvenL2Epoch = db.openSingleton('archiver_last_proven_l2_epoch');
14
+ /** Map block number to block data */
15
+ _BlockStore_blocks.set(this, void 0);
16
+ /** Map block hash to block body */
17
+ _BlockStore_blockBodies.set(this, void 0);
18
+ /** Stores L1 block number in which the last processed L2 block was included */
19
+ _BlockStore_lastSynchedL1Block.set(this, void 0);
20
+ /** Stores l2 block number of the last proven block */
21
+ _BlockStore_lastProvenL2Block.set(this, void 0);
22
+ /** Stores l2 epoch number of the last proven epoch */
23
+ _BlockStore_lastProvenL2Epoch.set(this, void 0);
24
+ /** Index mapping transaction hash (as a string) to its location in a block */
25
+ _BlockStore_txIndex.set(this, void 0);
26
+ /** Index mapping a contract's address (as a string) to its location in a block */
27
+ _BlockStore_contractIndex.set(this, void 0);
28
+ _BlockStore_log.set(this, createLogger('archiver:block_store'));
29
+ __classPrivateFieldSet(this, _BlockStore_blocks, db.openMap('archiver_blocks'), "f");
30
+ __classPrivateFieldSet(this, _BlockStore_blockBodies, db.openMap('archiver_block_bodies'), "f");
31
+ __classPrivateFieldSet(this, _BlockStore_txIndex, db.openMap('archiver_tx_index'), "f");
32
+ __classPrivateFieldSet(this, _BlockStore_contractIndex, db.openMap('archiver_contract_index'), "f");
33
+ __classPrivateFieldSet(this, _BlockStore_lastSynchedL1Block, db.openSingleton('archiver_last_synched_l1_block'), "f");
34
+ __classPrivateFieldSet(this, _BlockStore_lastProvenL2Block, db.openSingleton('archiver_last_proven_l2_block'), "f");
35
+ __classPrivateFieldSet(this, _BlockStore_lastProvenL2Epoch, db.openSingleton('archiver_last_proven_l2_epoch'), "f");
27
36
  }
28
37
  /**
29
- * Append new blocks to the store's list.
30
- * @param blocks - The L2 blocks to be added to the store.
31
- * @returns True if the operation is successful.
32
- */ async addBlocks(blocks) {
38
+ * Append new blocks to the store's list.
39
+ * @param blocks - The L2 blocks to be added to the store.
40
+ * @returns True if the operation is successful.
41
+ */
42
+ async addBlocks(blocks) {
33
43
  if (blocks.length === 0) {
34
44
  return true;
35
45
  }
36
- return await this.db.transactionAsync(async ()=>{
37
- for (const block of blocks){
38
- await this.#blocks.set(block.data.number, {
46
+ return await this.db.transactionAsync(async () => {
47
+ for (const block of blocks) {
48
+ await __classPrivateFieldGet(this, _BlockStore_blocks, "f").set(block.data.number, {
39
49
  header: block.data.header.toBuffer(),
40
50
  archive: block.data.archive.toBuffer(),
41
- l1: block.l1
51
+ l1: block.l1,
42
52
  });
43
- for(let i = 0; i < block.data.body.txEffects.length; i++){
53
+ for (let i = 0; i < block.data.body.txEffects.length; i++) {
44
54
  const txEffect = block.data.body.txEffects[i];
45
- await this.#txIndex.set(txEffect.txHash.toString(), [
46
- block.data.number,
47
- i
48
- ]);
55
+ await __classPrivateFieldGet(this, _BlockStore_txIndex, "f").set(txEffect.txHash.toString(), [block.data.number, i]);
49
56
  }
50
- await this.#blockBodies.set((await block.data.hash()).toString(), block.data.body.toBuffer());
57
+ await __classPrivateFieldGet(this, _BlockStore_blockBodies, "f").set((await block.data.hash()).toString(), block.data.body.toBuffer());
51
58
  }
52
- await this.#lastSynchedL1Block.set(blocks[blocks.length - 1].l1.blockNumber);
59
+ await __classPrivateFieldGet(this, _BlockStore_lastSynchedL1Block, "f").set(blocks[blocks.length - 1].l1.blockNumber);
53
60
  return true;
54
61
  });
55
62
  }
56
63
  /**
57
- * Unwinds blocks from the database
58
- * @param from - The tip of the chain, passed for verification purposes,
59
- * ensuring that we don't end up deleting something we did not intend
60
- * @param blocksToUnwind - The number of blocks we are to unwind
61
- * @returns True if the operation is successful
62
- */ async unwindBlocks(from, blocksToUnwind) {
63
- return await this.db.transactionAsync(async ()=>{
64
+ * Unwinds blocks from the database
65
+ * @param from - The tip of the chain, passed for verification purposes,
66
+ * ensuring that we don't end up deleting something we did not intend
67
+ * @param blocksToUnwind - The number of blocks we are to unwind
68
+ * @returns True if the operation is successful
69
+ */
70
+ async unwindBlocks(from, blocksToUnwind) {
71
+ return await this.db.transactionAsync(async () => {
64
72
  const last = await this.getSynchedL2BlockNumber();
65
73
  if (from !== last) {
66
74
  throw new Error(`Can only unwind blocks from the tip (requested ${from} but current tip is ${last})`);
67
75
  }
68
- for(let i = 0; i < blocksToUnwind; i++){
76
+ for (let i = 0; i < blocksToUnwind; i++) {
69
77
  const blockNumber = from - i;
70
78
  const block = await this.getBlock(blockNumber);
71
79
  if (block === undefined) {
72
80
  throw new Error(`Cannot remove block ${blockNumber} from the store, we don't have it`);
73
81
  }
74
- await this.#blocks.delete(block.data.number);
75
- await Promise.all(block.data.body.txEffects.map((tx)=>this.#txIndex.delete(tx.txHash.toString())));
82
+ await __classPrivateFieldGet(this, _BlockStore_blocks, "f").delete(block.data.number);
83
+ await Promise.all(block.data.body.txEffects.map(tx => __classPrivateFieldGet(this, _BlockStore_txIndex, "f").delete(tx.txHash.toString())));
76
84
  const blockHash = (await block.data.hash()).toString();
77
- await this.#blockBodies.delete(blockHash);
78
- this.#log.debug(`Unwound block ${blockNumber} ${blockHash}`);
85
+ await __classPrivateFieldGet(this, _BlockStore_blockBodies, "f").delete(blockHash);
86
+ __classPrivateFieldGet(this, _BlockStore_log, "f").debug(`Unwound block ${blockNumber} ${blockHash}`);
79
87
  }
80
88
  return true;
81
89
  });
82
90
  }
83
91
  /**
84
- * Gets up to `limit` amount of L2 blocks starting from `from`.
85
- * @param start - Number of the first block to return (inclusive).
86
- * @param limit - The number of blocks to return.
87
- * @returns The requested L2 blocks
88
- */ async *getBlocks(start, limit) {
89
- for await (const blockStorage of this.#blocks.valuesAsync(this.#computeBlockRange(start, limit))){
92
+ * Gets up to `limit` amount of L2 blocks starting from `from`.
93
+ * @param start - Number of the first block to return (inclusive).
94
+ * @param limit - The number of blocks to return.
95
+ * @returns The requested L2 blocks
96
+ */
97
+ async *getBlocks(start, limit) {
98
+ for await (const blockStorage of __classPrivateFieldGet(this, _BlockStore_blocks, "f").valuesAsync(__classPrivateFieldGet(this, _BlockStore_instances, "m", _BlockStore_computeBlockRange).call(this, start, limit))) {
90
99
  const block = await this.getBlockFromBlockStorage(blockStorage);
91
100
  yield block;
92
101
  }
93
102
  }
94
103
  /**
95
- * Gets an L2 block.
96
- * @param blockNumber - The number of the block to return.
97
- * @returns The requested L2 block.
98
- */ async getBlock(blockNumber) {
99
- const blockStorage = await this.#blocks.getAsync(blockNumber);
104
+ * Gets an L2 block.
105
+ * @param blockNumber - The number of the block to return.
106
+ * @returns The requested L2 block.
107
+ */
108
+ async getBlock(blockNumber) {
109
+ const blockStorage = await __classPrivateFieldGet(this, _BlockStore_blocks, "f").getAsync(blockNumber);
100
110
  if (!blockStorage || !blockStorage.header) {
101
111
  return Promise.resolve(undefined);
102
112
  }
103
113
  return this.getBlockFromBlockStorage(blockStorage);
104
114
  }
105
115
  /**
106
- * Gets the headers for a sequence of L2 blocks.
107
- * @param start - Number of the first block to return (inclusive).
108
- * @param limit - The number of blocks to return.
109
- * @returns The requested L2 block headers
110
- */ async *getBlockHeaders(start, limit) {
111
- for await (const blockStorage of this.#blocks.valuesAsync(this.#computeBlockRange(start, limit))){
116
+ * Gets the headers for a sequence of L2 blocks.
117
+ * @param start - Number of the first block to return (inclusive).
118
+ * @param limit - The number of blocks to return.
119
+ * @returns The requested L2 block headers
120
+ */
121
+ async *getBlockHeaders(start, limit) {
122
+ for await (const blockStorage of __classPrivateFieldGet(this, _BlockStore_blocks, "f").valuesAsync(__classPrivateFieldGet(this, _BlockStore_instances, "m", _BlockStore_computeBlockRange).call(this, start, limit))) {
112
123
  yield BlockHeader.fromBuffer(blockStorage.header);
113
124
  }
114
125
  }
@@ -116,23 +127,21 @@ import { createLogger } from '@aztec/foundation/log';
116
127
  const header = BlockHeader.fromBuffer(blockStorage.header);
117
128
  const archive = AppendOnlyTreeSnapshot.fromBuffer(blockStorage.archive);
118
129
  const blockHash = (await header.hash()).toString();
119
- const blockBodyBuffer = await this.#blockBodies.getAsync(blockHash);
130
+ const blockBodyBuffer = await __classPrivateFieldGet(this, _BlockStore_blockBodies, "f").getAsync(blockHash);
120
131
  if (blockBodyBuffer === undefined) {
121
132
  throw new Error(`Could not retrieve body for block ${header.globalVariables.blockNumber.toNumber()} ${blockHash}`);
122
133
  }
123
134
  const body = Body.fromBuffer(blockBodyBuffer);
124
135
  const l2Block = new L2Block(archive, header, body);
125
- return {
126
- data: l2Block,
127
- l1: blockStorage.l1
128
- };
136
+ return { data: l2Block, l1: blockStorage.l1 };
129
137
  }
130
138
  /**
131
- * Gets a tx effect.
132
- * @param txHash - The txHash of the tx corresponding to the tx effect.
133
- * @returns The requested tx effect (or undefined if not found).
134
- */ async getTxEffect(txHash) {
135
- const [blockNumber, txIndex] = await this.getTxLocation(txHash) ?? [];
139
+ * Gets a tx effect.
140
+ * @param txHash - The txHash of the tx corresponding to the tx effect.
141
+ * @returns The requested tx effect (or undefined if not found).
142
+ */
143
+ async getTxEffect(txHash) {
144
+ const [blockNumber, txIndex] = (await this.getTxLocation(txHash)) ?? [];
136
145
  if (typeof blockNumber !== 'number' || typeof txIndex !== 'number') {
137
146
  return undefined;
138
147
  }
@@ -143,77 +152,77 @@ import { createLogger } from '@aztec/foundation/log';
143
152
  return {
144
153
  data: block.data.body.txEffects[txIndex],
145
154
  l2BlockNumber: block.data.number,
146
- l2BlockHash: (await block.data.hash()).toString()
155
+ l2BlockHash: (await block.data.hash()).toString(),
147
156
  };
148
157
  }
149
158
  /**
150
- * Gets a receipt of a settled tx.
151
- * @param txHash - The hash of a tx we try to get the receipt for.
152
- * @returns The requested tx receipt (or undefined if not found).
153
- */ async getSettledTxReceipt(txHash) {
154
- const [blockNumber, txIndex] = await this.getTxLocation(txHash) ?? [];
159
+ * Gets a receipt of a settled tx.
160
+ * @param txHash - The hash of a tx we try to get the receipt for.
161
+ * @returns The requested tx receipt (or undefined if not found).
162
+ */
163
+ async getSettledTxReceipt(txHash) {
164
+ const [blockNumber, txIndex] = (await this.getTxLocation(txHash)) ?? [];
155
165
  if (typeof blockNumber !== 'number' || typeof txIndex !== 'number') {
156
166
  return undefined;
157
167
  }
158
- const block = await this.getBlock(blockNumber);
168
+ const block = (await this.getBlock(blockNumber));
159
169
  const tx = block.data.body.txEffects[txIndex];
160
170
  return new TxReceipt(txHash, TxReceipt.statusFromRevertCode(tx.revertCode), '', tx.transactionFee.toBigInt(), L2BlockHash.fromField(await block.data.hash()), block.data.number);
161
171
  }
162
172
  /**
163
- * Looks up which block included the requested tx effect.
164
- * @param txHash - The txHash of the tx.
165
- * @returns The block number and index of the tx.
166
- */ getTxLocation(txHash) {
167
- return this.#txIndex.getAsync(txHash.toString());
173
+ * Looks up which block included the requested tx effect.
174
+ * @param txHash - The txHash of the tx.
175
+ * @returns The block number and index of the tx.
176
+ */
177
+ getTxLocation(txHash) {
178
+ return __classPrivateFieldGet(this, _BlockStore_txIndex, "f").getAsync(txHash.toString());
168
179
  }
169
180
  /**
170
- * Looks up which block deployed a particular contract.
171
- * @param contractAddress - The address of the contract to look up.
172
- * @returns The block number and index of the contract.
173
- */ getContractLocation(contractAddress) {
174
- return this.#contractIndex.getAsync(contractAddress.toString());
181
+ * Looks up which block deployed a particular contract.
182
+ * @param contractAddress - The address of the contract to look up.
183
+ * @returns The block number and index of the contract.
184
+ */
185
+ getContractLocation(contractAddress) {
186
+ return __classPrivateFieldGet(this, _BlockStore_contractIndex, "f").getAsync(contractAddress.toString());
175
187
  }
176
188
  /**
177
- * Gets the number of the latest L2 block processed.
178
- * @returns The number of the latest L2 block processed.
179
- */ async getSynchedL2BlockNumber() {
180
- const [lastBlockNumber] = await toArray(this.#blocks.keysAsync({
181
- reverse: true,
182
- limit: 1
183
- }));
189
+ * Gets the number of the latest L2 block processed.
190
+ * @returns The number of the latest L2 block processed.
191
+ */
192
+ async getSynchedL2BlockNumber() {
193
+ const [lastBlockNumber] = await toArray(__classPrivateFieldGet(this, _BlockStore_blocks, "f").keysAsync({ reverse: true, limit: 1 }));
184
194
  return typeof lastBlockNumber === 'number' ? lastBlockNumber : INITIAL_L2_BLOCK_NUM - 1;
185
195
  }
186
196
  /**
187
- * Gets the most recent L1 block processed.
188
- * @returns The L1 block that published the latest L2 block
189
- */ getSynchedL1BlockNumber() {
190
- return this.#lastSynchedL1Block.getAsync();
197
+ * Gets the most recent L1 block processed.
198
+ * @returns The L1 block that published the latest L2 block
199
+ */
200
+ getSynchedL1BlockNumber() {
201
+ return __classPrivateFieldGet(this, _BlockStore_lastSynchedL1Block, "f").getAsync();
191
202
  }
192
203
  setSynchedL1BlockNumber(l1BlockNumber) {
193
- return this.#lastSynchedL1Block.set(l1BlockNumber);
204
+ return __classPrivateFieldGet(this, _BlockStore_lastSynchedL1Block, "f").set(l1BlockNumber);
194
205
  }
195
206
  async getProvenL2BlockNumber() {
196
- return await this.#lastProvenL2Block.getAsync() ?? 0;
207
+ return (await __classPrivateFieldGet(this, _BlockStore_lastProvenL2Block, "f").getAsync()) ?? 0;
197
208
  }
198
209
  setProvenL2BlockNumber(blockNumber) {
199
- return this.#lastProvenL2Block.set(blockNumber);
210
+ return __classPrivateFieldGet(this, _BlockStore_lastProvenL2Block, "f").set(blockNumber);
200
211
  }
201
212
  getProvenL2EpochNumber() {
202
- return this.#lastProvenL2Epoch.getAsync();
213
+ return __classPrivateFieldGet(this, _BlockStore_lastProvenL2Epoch, "f").getAsync();
203
214
  }
204
215
  setProvenL2EpochNumber(epochNumber) {
205
- return this.#lastProvenL2Epoch.set(epochNumber);
206
- }
207
- #computeBlockRange(start, limit) {
208
- if (limit < 1) {
209
- throw new Error(`Invalid limit: ${limit}`);
210
- }
211
- if (start < INITIAL_L2_BLOCK_NUM) {
212
- throw new Error(`Invalid start: ${start}`);
213
- }
214
- return {
215
- start,
216
- limit
217
- };
216
+ return __classPrivateFieldGet(this, _BlockStore_lastProvenL2Epoch, "f").set(epochNumber);
218
217
  }
219
218
  }
219
+ _BlockStore_blocks = new WeakMap(), _BlockStore_blockBodies = new WeakMap(), _BlockStore_lastSynchedL1Block = new WeakMap(), _BlockStore_lastProvenL2Block = new WeakMap(), _BlockStore_lastProvenL2Epoch = new WeakMap(), _BlockStore_txIndex = new WeakMap(), _BlockStore_contractIndex = new WeakMap(), _BlockStore_log = new WeakMap(), _BlockStore_instances = new WeakSet(), _BlockStore_computeBlockRange = function _BlockStore_computeBlockRange(start, limit) {
220
+ if (limit < 1) {
221
+ throw new Error(`Invalid limit: ${limit}`);
222
+ }
223
+ if (start < INITIAL_L2_BLOCK_NUM) {
224
+ throw new Error(`Invalid start: ${start}`);
225
+ }
226
+ return { start, limit };
227
+ };
228
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tfc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXJjaGl2ZXIva3ZfYXJjaGl2ZXJfc3RvcmUvYmxvY2tfc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFnQixPQUFPLEVBQUUsV0FBVyxFQUE4QixTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2SCxPQUFPLEVBQUUsc0JBQXNCLEVBQXFCLFdBQVcsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xILE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFhckQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sVUFBVTtJQXdCckIsWUFBb0IsRUFBcUI7O1FBQXJCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBdkJ6QyxxQ0FBcUM7UUFDckMscUNBQTZDO1FBRTdDLG1DQUFtQztRQUNuQywwQ0FBNEM7UUFFNUMsK0VBQStFO1FBQy9FLGlEQUFpRDtRQUVqRCxzREFBc0Q7UUFDdEQsZ0RBQWdEO1FBRWhELHNEQUFzRDtRQUN0RCxnREFBZ0Q7UUFFaEQsOEVBQThFO1FBQzlFLHNDQUFpRDtRQUVqRCxrRkFBa0Y7UUFDbEYsNENBQXVEO1FBRXZELDBCQUFPLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQyxFQUFDO1FBRzFDLHVCQUFBLElBQUksc0JBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxNQUFBLENBQUM7UUFDN0MsdUJBQUEsSUFBSSwyQkFBZ0IsRUFBRSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxNQUFBLENBQUM7UUFDeEQsdUJBQUEsSUFBSSx1QkFBWSxFQUFFLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLE1BQUEsQ0FBQztRQUNoRCx1QkFBQSxJQUFJLDZCQUFrQixFQUFF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
@@ -0,0 +1,17 @@
1
+ import { type ContractClassPublic, type ExecutablePrivateFunctionWithMembershipProof, Fr, type UnconstrainedFunctionWithMembershipProof } from '@aztec/circuits.js';
2
+ import type { AztecAsyncKVStore } from '@aztec/kv-store';
3
+ /**
4
+ * LMDB implementation of the ArchiverDataStore interface.
5
+ */
6
+ export declare class ContractClassStore {
7
+ #private;
8
+ private db;
9
+ constructor(db: AztecAsyncKVStore);
10
+ addContractClass(contractClass: ContractClassPublic, bytecodeCommitment: Fr, blockNumber: number): Promise<void>;
11
+ deleteContractClasses(contractClass: ContractClassPublic, blockNumber: number): Promise<void>;
12
+ getContractClass(id: Fr): Promise<ContractClassPublic | undefined>;
13
+ getBytecodeCommitment(id: Fr): Promise<Fr | undefined>;
14
+ getContractClassIds(): Promise<Fr[]>;
15
+ addFunctions(contractClassId: Fr, newPrivateFunctions: ExecutablePrivateFunctionWithMembershipProof[], newUnconstrainedFunctions: UnconstrainedFunctionWithMembershipProof[]): Promise<boolean>;
16
+ }
17
+ //# sourceMappingURL=contract_class_store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract_class_store.d.ts","sourceRoot":"","sources":["../../../src/archiver/kv_archiver_store/contract_class_store.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,mBAAmB,EAExB,KAAK,4CAA4C,EACjD,EAAE,EAEF,KAAK,wCAAwC,EAE9C,MAAM,oBAAoB,CAAC;AAG5B,OAAO,KAAK,EAAE,iBAAiB,EAAiB,MAAM,iBAAiB,CAAC;AAExE;;GAEG;AACH,qBAAa,kBAAkB;;IAIjB,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,iBAAiB;IAKnC,gBAAgB,CACpB,aAAa,EAAE,mBAAmB,EAClC,kBAAkB,EAAE,EAAE,EACtB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IAQV,qBAAqB,CAAC,aAAa,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ7F,gBAAgB,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAKlE,qBAAqB,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAKtD,mBAAmB,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;IAIpC,YAAY,CAChB,eAAe,EAAE,EAAE,EACnB,mBAAmB,EAAE,4CAA4C,EAAE,EACnE,yBAAyB,EAAE,wCAAwC,EAAE,GACpE,OAAO,CAAC,OAAO,CAAC;CA4BpB"}