@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,16 +1,19 @@
1
- import { L2Block, L2BlockHash, TxReceipt, TxStatus, getSlotRangeForEpoch } from '@aztec/circuit-types';
1
+ import { L2Block, L2BlockHash, TxReceipt, TxStatus, getSlotRangeForEpoch, } from '@aztec/circuit-types';
2
2
  import { EthAddress } from '@aztec/circuits.js';
3
3
  import { DefaultL1ContractsConfig } from '@aztec/ethereum';
4
4
  import { createLogger } from '@aztec/foundation/log';
5
5
  /**
6
6
  * A mocked implementation of L2BlockSource to be used in tests.
7
- */ export class MockL2BlockSource {
8
- l2Blocks = [];
9
- provenEpochNumber = 0;
10
- provenBlockNumber = 0;
11
- log = createLogger('archiver:mock_l2_block_source');
7
+ */
8
+ export class MockL2BlockSource {
9
+ constructor() {
10
+ this.l2Blocks = [];
11
+ this.provenEpochNumber = 0;
12
+ this.provenBlockNumber = 0;
13
+ this.log = createLogger('archiver:mock_l2_block_source');
14
+ }
12
15
  async createBlocks(numBlocks) {
13
- for(let i = 0; i < numBlocks; i++){
16
+ for (let i = 0; i < numBlocks; i++) {
14
17
  const blockNum = this.l2Blocks.length + 1;
15
18
  const block = await L2Block.random(blockNum);
16
19
  this.l2Blocks.push(block);
@@ -32,21 +35,24 @@ import { createLogger } from '@aztec/foundation/log';
32
35
  this.provenEpochNumber = provenEpochNumber;
33
36
  }
34
37
  /**
35
- * Method to fetch the rollup contract address at the base-layer.
36
- * @returns The rollup address.
37
- */ getRollupAddress() {
38
+ * Method to fetch the rollup contract address at the base-layer.
39
+ * @returns The rollup address.
40
+ */
41
+ getRollupAddress() {
38
42
  return Promise.resolve(EthAddress.random());
39
43
  }
40
44
  /**
41
- * Method to fetch the registry contract address at the base-layer.
42
- * @returns The registry address.
43
- */ getRegistryAddress() {
45
+ * Method to fetch the registry contract address at the base-layer.
46
+ * @returns The registry address.
47
+ */
48
+ getRegistryAddress() {
44
49
  return Promise.resolve(EthAddress.random());
45
50
  }
46
51
  /**
47
- * Gets the number of the latest L2 block processed by the block source implementation.
48
- * @returns In this mock instance, returns the number of L2 blocks that we've mocked.
49
- */ getBlockNumber() {
52
+ * Gets the number of the latest L2 block processed by the block source implementation.
53
+ * @returns In this mock instance, returns the number of L2 blocks that we've mocked.
54
+ */
55
+ getBlockNumber() {
50
56
  return Promise.resolve(this.l2Blocks.length);
51
57
  }
52
58
  getProvenBlockNumber() {
@@ -56,60 +62,59 @@ import { createLogger } from '@aztec/foundation/log';
56
62
  return Promise.resolve(this.provenEpochNumber);
57
63
  }
58
64
  /**
59
- * Gets an l2 block.
60
- * @param number - The block number to return (inclusive).
61
- * @returns The requested L2 block.
62
- */ getBlock(number) {
65
+ * Gets an l2 block.
66
+ * @param number - The block number to return (inclusive).
67
+ * @returns The requested L2 block.
68
+ */
69
+ getBlock(number) {
63
70
  return Promise.resolve(this.l2Blocks[number - 1]);
64
71
  }
65
72
  /**
66
- * Gets up to `limit` amount of L2 blocks starting from `from`.
67
- * @param from - Number of the first block to return (inclusive).
68
- * @param limit - The maximum number of blocks to return.
69
- * @returns The requested mocked L2 blocks.
70
- */ getBlocks(from, limit, proven) {
71
- return Promise.resolve(this.l2Blocks.slice(from - 1, from - 1 + limit).filter((b)=>!proven || this.provenBlockNumber === undefined || b.number <= this.provenBlockNumber));
73
+ * Gets up to `limit` amount of L2 blocks starting from `from`.
74
+ * @param from - Number of the first block to return (inclusive).
75
+ * @param limit - The maximum number of blocks to return.
76
+ * @returns The requested mocked L2 blocks.
77
+ */
78
+ getBlocks(from, limit, proven) {
79
+ return Promise.resolve(this.l2Blocks
80
+ .slice(from - 1, from - 1 + limit)
81
+ .filter(b => !proven || this.provenBlockNumber === undefined || b.number <= this.provenBlockNumber));
72
82
  }
73
83
  getBlockHeader(number) {
74
84
  return Promise.resolve(this.l2Blocks.at(typeof number === 'number' ? number - 1 : -1)?.header);
75
85
  }
76
86
  getBlocksForEpoch(epochNumber) {
77
87
  const epochDuration = DefaultL1ContractsConfig.aztecEpochDuration;
78
- const [start, end] = getSlotRangeForEpoch(epochNumber, {
79
- epochDuration
80
- });
81
- const blocks = this.l2Blocks.filter((b)=>{
88
+ const [start, end] = getSlotRangeForEpoch(epochNumber, { epochDuration });
89
+ const blocks = this.l2Blocks.filter(b => {
82
90
  const slot = b.header.globalVariables.slotNumber.toBigInt();
83
91
  return slot >= start && slot <= end;
84
92
  });
85
93
  return Promise.resolve(blocks);
86
94
  }
87
95
  /**
88
- * Gets a tx effect.
89
- * @param txHash - The hash of a transaction which resulted in the returned tx effect.
90
- * @returns The requested tx effect.
91
- */ async getTxEffect(txHash) {
92
- const match = this.l2Blocks.flatMap((b)=>b.body.txEffects.map((tx)=>[
93
- tx,
94
- b
95
- ])).find(([tx])=>tx.txHash.equals(txHash));
96
+ * Gets a tx effect.
97
+ * @param txHash - The hash of a transaction which resulted in the returned tx effect.
98
+ * @returns The requested tx effect.
99
+ */
100
+ async getTxEffect(txHash) {
101
+ const match = this.l2Blocks
102
+ .flatMap(b => b.body.txEffects.map(tx => [tx, b]))
103
+ .find(([tx]) => tx.txHash.equals(txHash));
96
104
  if (!match) {
97
105
  return Promise.resolve(undefined);
98
106
  }
99
107
  const [txEffect, block] = match;
100
- return {
101
- data: txEffect,
102
- l2BlockNumber: block.number,
103
- l2BlockHash: (await block.hash()).toString()
104
- };
108
+ return { data: txEffect, l2BlockNumber: block.number, l2BlockHash: (await block.hash()).toString() };
105
109
  }
106
110
  /**
107
- * Gets a receipt of a settled tx.
108
- * @param txHash - The hash of a tx we try to get the receipt for.
109
- * @returns The requested tx receipt (or undefined if not found).
110
- */ async getSettledTxReceipt(txHash) {
111
- for (const block of this.l2Blocks){
112
- for (const txEffect of block.body.txEffects){
111
+ * Gets a receipt of a settled tx.
112
+ * @param txHash - The hash of a tx we try to get the receipt for.
113
+ * @returns The requested tx receipt (or undefined if not found).
114
+ */
115
+ async getSettledTxReceipt(txHash) {
116
+ for (const block of this.l2Blocks) {
117
+ for (const txEffect of block.body.txEffects) {
113
118
  if (txEffect.txHash.equals(txHash)) {
114
119
  return new TxReceipt(txHash, TxStatus.SUCCESS, '', txEffect.transactionFee.toBigInt(), L2BlockHash.fromField(await block.hash()), block.number);
115
120
  }
@@ -121,24 +126,15 @@ import { createLogger } from '@aztec/foundation/log';
121
126
  const [latest, proven, finalized] = [
122
127
  await this.getBlockNumber(),
123
128
  await this.getProvenBlockNumber(),
124
- await this.getProvenBlockNumber()
129
+ await this.getProvenBlockNumber(),
125
130
  ];
126
131
  const latestBlock = this.l2Blocks[latest - 1];
127
132
  const provenBlock = this.l2Blocks[proven - 1];
128
133
  const finalizedBlock = this.l2Blocks[finalized - 1];
129
134
  return {
130
- latest: {
131
- number: latest,
132
- hash: (await latestBlock?.hash())?.toString()
133
- },
134
- proven: {
135
- number: proven,
136
- hash: (await provenBlock?.hash())?.toString()
137
- },
138
- finalized: {
139
- number: finalized,
140
- hash: (await finalizedBlock?.hash())?.toString()
141
- }
135
+ latest: { number: latest, hash: (await latestBlock?.hash())?.toString() },
136
+ proven: { number: proven, hash: (await provenBlock?.hash())?.toString() },
137
+ finalized: { number: finalized, hash: (await finalizedBlock?.hash())?.toString() },
142
138
  };
143
139
  }
144
140
  getL2EpochNumber() {
@@ -154,15 +150,18 @@ import { createLogger } from '@aztec/foundation/log';
154
150
  throw new Error('Method not implemented.');
155
151
  }
156
152
  /**
157
- * Starts the block source. In this mock implementation, this is a noop.
158
- * @returns A promise that signals the initialization of the l2 block source on completion.
159
- */ start() {
153
+ * Starts the block source. In this mock implementation, this is a noop.
154
+ * @returns A promise that signals the initialization of the l2 block source on completion.
155
+ */
156
+ start() {
160
157
  return Promise.resolve();
161
158
  }
162
159
  /**
163
- * Stops the block source. In this mock implementation, this is a noop.
164
- * @returns A promise that signals the l2 block source is now stopped.
165
- */ stop() {
160
+ * Stops the block source. In this mock implementation, this is a noop.
161
+ * @returns A promise that signals the l2 block source is now stopped.
162
+ */
163
+ stop() {
166
164
  return Promise.resolve();
167
165
  }
168
166
  }
167
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19sMl9ibG9ja19zb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdC9tb2NrX2wyX2Jsb2NrX3NvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsT0FBTyxFQUNQLFdBQVcsRUFJWCxTQUFTLEVBQ1QsUUFBUSxFQUNSLG9CQUFvQixHQUNyQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBb0IsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXJEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGlCQUFpQjtJQUE5QjtRQUNZLGFBQVEsR0FBYyxFQUFFLENBQUM7UUFFM0Isc0JBQWlCLEdBQVcsQ0FBQyxDQUFDO1FBQzlCLHNCQUFpQixHQUFXLENBQUMsQ0FBQztRQUU5QixRQUFHLEdBQUcsWUFBWSxDQUFDLCtCQUErQixDQUFDLENBQUM7SUEyTDlELENBQUM7SUF6TFEsS0FBSyxDQUFDLFlBQVksQ0FBQyxTQUFpQjtRQUN6QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDbkMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQzFDLE1BQU0sS0FBSyxHQUFHLE1BQU0sT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM3QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixDQUFDO1FBRUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsV0FBVyxTQUFTLHFDQUFxQyxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVN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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/archiver",
3
- "version": "0.75.0-commit.c03ba01a2a4122e43e90d5133ba017e54b90e9d2",
3
+ "version": "0.76.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./dest/index.js",
@@ -22,7 +22,7 @@
22
22
  "clean": "rm -rf ./dest .tsbuildinfo",
23
23
  "formatting": "run -T prettier --check ./src && run -T eslint ./src",
24
24
  "formatting:fix": "run -T eslint --fix ./src && run -T prettier -w ./src",
25
- "test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --passWithNoTests --maxWorkers=${JEST_MAX_WORKERS:-8}",
25
+ "test": "HARDWARE_CONCURRENCY=${HARDWARE_CONCURRENCY:-16} RAYON_NUM_THREADS=${RAYON_NUM_THREADS:-4} NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --passWithNoTests --maxWorkers=${JEST_MAX_WORKERS:-8}",
26
26
  "test:integration": "concurrently -k -s first -c reset,dim -n test,anvil \"yarn test:integration:run\" \"anvil\"",
27
27
  "test:integration:run": "NODE_NO_WARNINGS=1 node --experimental-vm-modules $(yarn bin jest) --no-cache --config jest.integration.config.json"
28
28
  },
@@ -64,18 +64,19 @@
64
64
  ]
65
65
  },
66
66
  "dependencies": {
67
- "@aztec/blob-lib": "0.75.0-commit.c03ba01a2a4122e43e90d5133ba017e54b90e9d2",
68
- "@aztec/blob-sink": "0.75.0-commit.c03ba01a2a4122e43e90d5133ba017e54b90e9d2",
69
- "@aztec/circuit-types": "0.75.0-commit.c03ba01a2a4122e43e90d5133ba017e54b90e9d2",
70
- "@aztec/circuits.js": "0.75.0-commit.c03ba01a2a4122e43e90d5133ba017e54b90e9d2",
71
- "@aztec/ethereum": "0.75.0-commit.c03ba01a2a4122e43e90d5133ba017e54b90e9d2",
72
- "@aztec/foundation": "0.75.0-commit.c03ba01a2a4122e43e90d5133ba017e54b90e9d2",
73
- "@aztec/kv-store": "0.75.0-commit.c03ba01a2a4122e43e90d5133ba017e54b90e9d2",
74
- "@aztec/l1-artifacts": "0.75.0-commit.c03ba01a2a4122e43e90d5133ba017e54b90e9d2",
75
- "@aztec/noir-contracts.js": "0.75.0-commit.c03ba01a2a4122e43e90d5133ba017e54b90e9d2",
76
- "@aztec/protocol-contracts": "0.75.0-commit.c03ba01a2a4122e43e90d5133ba017e54b90e9d2",
77
- "@aztec/telemetry-client": "0.75.0-commit.c03ba01a2a4122e43e90d5133ba017e54b90e9d2",
78
- "@aztec/types": "0.75.0-commit.c03ba01a2a4122e43e90d5133ba017e54b90e9d2",
67
+ "@aztec/blob-lib": "0.76.0",
68
+ "@aztec/blob-sink": "0.76.0",
69
+ "@aztec/circuit-types": "0.76.0",
70
+ "@aztec/circuits.js": "0.76.0",
71
+ "@aztec/ethereum": "0.76.0",
72
+ "@aztec/foundation": "0.76.0",
73
+ "@aztec/kv-store": "0.76.0",
74
+ "@aztec/l1-artifacts": "0.76.0",
75
+ "@aztec/noir-contracts.js": "0.76.0",
76
+ "@aztec/noir-protocol-circuits-types": "0.76.0",
77
+ "@aztec/protocol-contracts": "0.76.0",
78
+ "@aztec/telemetry-client": "0.76.0",
79
+ "@aztec/types": "0.76.0",
79
80
  "debug": "^4.3.4",
80
81
  "lodash.groupby": "^4.6.0",
81
82
  "lodash.omit": "^4.5.0",
@@ -1,3 +1,5 @@
1
+ import { type BlobSinkConfig, blobSinkConfigMapping } from '@aztec/blob-sink/client';
2
+ import { type ChainConfig, chainConfigMappings } from '@aztec/circuit-types/config';
1
3
  import {
2
4
  type L1ContractAddresses,
3
5
  type L1ContractsConfig,
@@ -39,9 +41,12 @@ export type ArchiverConfig = {
39
41
  /** The max number of logs that can be obtained in 1 "getPublicLogs" call. */
40
42
  maxLogs?: number;
41
43
  } & L1ReaderConfig &
42
- L1ContractsConfig;
44
+ L1ContractsConfig &
45
+ BlobSinkConfig &
46
+ ChainConfig;
43
47
 
44
48
  export const archiverConfigMappings: ConfigMappingsType<ArchiverConfig> = {
49
+ ...blobSinkConfigMapping,
45
50
  archiverUrl: {
46
51
  env: 'ARCHIVER_URL',
47
52
  description:
@@ -67,6 +72,7 @@ export const archiverConfigMappings: ConfigMappingsType<ArchiverConfig> = {
67
72
  description: 'The max number of logs that can be obtained in 1 "getPublicLogs" call.',
68
73
  ...numberConfigHelper(1_000),
69
74
  },
75
+ ...chainConfigMappings,
70
76
  ...l1ReaderConfigMappings,
71
77
  viemPollingIntervalMS: {
72
78
  env: 'ARCHIVER_VIEM_POLLING_INTERVAL_MS',
@@ -2,6 +2,6 @@ export * from './archiver.js';
2
2
  export * from './config.js';
3
3
  export { type L1Published, type L1PublishedData } from './structs/published.js';
4
4
  export { MemoryArchiverStore } from './memory_archiver_store/memory_archiver_store.js';
5
- export type { ArchiverDataStore } from './archiver_store.js';
5
+ export { ArchiverDataStore } from './archiver_store.js';
6
6
  export { KVArchiverDataStore } from './kv_archiver_store/kv_archiver_store.js';
7
7
  export { ContractInstanceStore } from './kv_archiver_store/contract_instance_store.js';
package/src/factory.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { type BlobSinkClientInterface } from '@aztec/blob-sink/client';
2
- import { type ArchiverApi, type Service } from '@aztec/circuit-types';
2
+ import { type ArchiverApi, type Service, getComponentsVersionsFromConfig } from '@aztec/circuit-types';
3
3
  import {
4
4
  type ContractClassPublic,
5
5
  computePublicBytecodeCommitment,
@@ -12,7 +12,8 @@ import { type DataStoreConfig } from '@aztec/kv-store/config';
12
12
  import { createStore } from '@aztec/kv-store/lmdb-v2';
13
13
  import { TokenContractArtifact } from '@aztec/noir-contracts.js/Token';
14
14
  import { TokenBridgeContractArtifact } from '@aztec/noir-contracts.js/TokenBridge';
15
- import { protocolContractNames } from '@aztec/protocol-contracts';
15
+ import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vks';
16
+ import { protocolContractNames, protocolContractTreeRoot } from '@aztec/protocol-contracts';
16
17
  import { getCanonicalProtocolContract } from '@aztec/protocol-contracts/bundle';
17
18
  import { type TelemetryClient, getTelemetryClient } from '@aztec/telemetry-client';
18
19
 
@@ -34,7 +35,10 @@ export async function createArchiver(
34
35
  await registerCommonContracts(archiverStore);
35
36
  return Archiver.createAndSync(config, archiverStore, { telemetry, blobSinkClient }, opts.blockUntilSync);
36
37
  } else {
37
- return createArchiverClient(config.archiverUrl);
38
+ return createArchiverClient(
39
+ config.archiverUrl,
40
+ getComponentsVersionsFromConfig(config, protocolContractTreeRoot, getVKTreeRoot()),
41
+ );
38
42
  }
39
43
  }
40
44
 
package/src/rpc/index.ts CHANGED
@@ -1,9 +1,22 @@
1
- import { type ArchiverApi, ArchiverApiSchema } from '@aztec/circuit-types';
1
+ import {
2
+ type ArchiverApi,
3
+ ArchiverApiSchema,
4
+ type ComponentsVersions,
5
+ getVersioningResponseHandler,
6
+ } from '@aztec/circuit-types';
2
7
  import { createSafeJsonRpcClient } from '@aztec/foundation/json-rpc/client';
3
8
  import { createTracedJsonRpcServer, makeTracedFetch } from '@aztec/telemetry-client';
4
9
 
5
- export function createArchiverClient(url: string, fetch = makeTracedFetch([1, 2, 3], true)): ArchiverApi {
6
- return createSafeJsonRpcClient<ArchiverApi>(url, ArchiverApiSchema, false, 'archiver', fetch);
10
+ export function createArchiverClient(
11
+ url: string,
12
+ versions: Partial<ComponentsVersions>,
13
+ fetch = makeTracedFetch([1, 2, 3], true),
14
+ ): ArchiverApi {
15
+ return createSafeJsonRpcClient<ArchiverApi>(url, ArchiverApiSchema, {
16
+ namespaceMethods: 'archiver',
17
+ fetch,
18
+ onResponse: getVersioningResponseHandler(versions),
19
+ });
7
20
  }
8
21
 
9
22
  export function createArchiverRpcServer(handler: ArchiverApi) {