@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.
- package/dest/archiver/archiver.d.ts +186 -0
- package/dest/archiver/archiver.d.ts.map +1 -0
- package/dest/archiver/archiver.js +711 -729
- package/dest/archiver/archiver_store.d.ts +217 -0
- package/dest/archiver/archiver_store.d.ts.map +1 -0
- package/dest/archiver/archiver_store.js +2 -4
- package/dest/archiver/archiver_store_test_suite.d.ts +8 -0
- package/dest/archiver/archiver_store_test_suite.d.ts.map +1 -0
- package/dest/archiver/archiver_store_test_suite.js +224 -385
- package/dest/archiver/config.d.ts +37 -0
- package/dest/archiver/config.d.ts.map +1 -0
- package/dest/archiver/config.js +15 -9
- package/dest/archiver/data_retrieval.d.ts +71 -0
- package/dest/archiver/data_retrieval.d.ts.map +1 -0
- package/dest/archiver/data_retrieval.js +67 -77
- package/dest/archiver/errors.d.ts +4 -0
- package/dest/archiver/errors.d.ts.map +1 -0
- package/dest/archiver/errors.js +2 -1
- package/dest/archiver/index.d.ts +8 -0
- package/dest/archiver/index.d.ts.map +1 -0
- package/dest/archiver/index.js +1 -0
- package/dest/archiver/instrumentation.d.ts +27 -0
- package/dest/archiver/instrumentation.d.ts.map +1 -0
- package/dest/archiver/instrumentation.js +17 -29
- package/dest/archiver/kv_archiver_store/block_store.d.ts +87 -0
- package/dest/archiver/kv_archiver_store/block_store.d.ts.map +1 -0
- package/dest/archiver/kv_archiver_store/block_store.js +127 -118
- package/dest/archiver/kv_archiver_store/contract_class_store.d.ts +17 -0
- package/dest/archiver/kv_archiver_store/contract_class_store.d.ts.map +1 -0
- package/dest/archiver/kv_archiver_store/contract_class_store.js +37 -43
- package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts +13 -0
- package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts.map +1 -0
- package/dest/archiver/kv_archiver_store/contract_instance_store.js +12 -7
- package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts +147 -0
- package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts.map +1 -0
- package/dest/archiver/kv_archiver_store/kv_archiver_store.js +158 -135
- package/dest/archiver/kv_archiver_store/log_store.d.ts +47 -0
- package/dest/archiver/kv_archiver_store/log_store.d.ts.map +1 -0
- package/dest/archiver/kv_archiver_store/log_store.js +256 -271
- package/dest/archiver/kv_archiver_store/message_store.d.ts +33 -0
- package/dest/archiver/kv_archiver_store/message_store.d.ts.map +1 -0
- package/dest/archiver/kv_archiver_store/message_store.js +48 -42
- package/dest/archiver/kv_archiver_store/nullifier_store.d.ts +12 -0
- package/dest/archiver/kv_archiver_store/nullifier_store.d.ts.map +1 -0
- package/dest/archiver/kv_archiver_store/nullifier_store.js +42 -35
- package/dest/archiver/memory_archiver_store/l1_to_l2_message_store.d.ts +23 -0
- package/dest/archiver/memory_archiver_store/l1_to_l2_message_store.d.ts.map +1 -0
- package/dest/archiver/memory_archiver_store/l1_to_l2_message_store.js +24 -15
- package/dest/archiver/memory_archiver_store/memory_archiver_store.d.ts +168 -0
- package/dest/archiver/memory_archiver_store/memory_archiver_store.d.ts.map +1 -0
- package/dest/archiver/memory_archiver_store/memory_archiver_store.js +231 -227
- package/dest/archiver/structs/data_retrieval.d.ts +27 -0
- package/dest/archiver/structs/data_retrieval.d.ts.map +1 -0
- package/dest/archiver/structs/data_retrieval.js +2 -5
- package/dest/archiver/structs/published.d.ts +11 -0
- package/dest/archiver/structs/published.d.ts.map +1 -0
- package/dest/archiver/structs/published.js +2 -1
- package/dest/factory.d.ts +10 -0
- package/dest/factory.d.ts.map +1 -0
- package/dest/factory.js +24 -32
- package/dest/index.d.ts +5 -0
- package/dest/index.d.ts.map +1 -0
- package/dest/index.js +1 -0
- package/dest/rpc/index.d.ts +9 -0
- package/dest/rpc/index.d.ts.map +1 -0
- package/dest/rpc/index.js +8 -7
- package/dest/test/index.d.ts +4 -0
- package/dest/test/index.d.ts.map +1 -0
- package/dest/test/index.js +1 -0
- package/dest/test/mock_archiver.d.ts +22 -0
- package/dest/test/mock_archiver.d.ts.map +1 -0
- package/dest/test/mock_archiver.js +13 -8
- package/dest/test/mock_l1_to_l2_message_source.d.ts +16 -0
- package/dest/test/mock_l1_to_l2_message_source.d.ts.map +1 -0
- package/dest/test/mock_l1_to_l2_message_source.js +4 -4
- package/dest/test/mock_l2_block_source.d.ts +80 -0
- package/dest/test/mock_l2_block_source.d.ts.map +1 -0
- package/dest/test/mock_l2_block_source.js +67 -68
- package/package.json +15 -14
- package/src/archiver/config.ts +7 -1
- package/src/archiver/index.ts +1 -1
- package/src/factory.ts +7 -3
- 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
|
-
*/
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
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
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
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
|
-
|
|
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
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
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
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
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
|
-
|
|
132
|
-
|
|
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
|
-
|
|
158
|
-
|
|
159
|
-
|
|
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
|
-
|
|
164
|
-
|
|
165
|
-
|
|
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.
|
|
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.
|
|
68
|
-
"@aztec/blob-sink": "0.
|
|
69
|
-
"@aztec/circuit-types": "0.
|
|
70
|
-
"@aztec/circuits.js": "0.
|
|
71
|
-
"@aztec/ethereum": "0.
|
|
72
|
-
"@aztec/foundation": "0.
|
|
73
|
-
"@aztec/kv-store": "0.
|
|
74
|
-
"@aztec/l1-artifacts": "0.
|
|
75
|
-
"@aztec/noir-contracts.js": "0.
|
|
76
|
-
"@aztec/protocol-
|
|
77
|
-
"@aztec/
|
|
78
|
-
"@aztec/
|
|
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",
|
package/src/archiver/config.ts
CHANGED
|
@@ -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',
|
package/src/archiver/index.ts
CHANGED
|
@@ -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
|
|
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 {
|
|
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(
|
|
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 {
|
|
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(
|
|
6
|
-
|
|
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) {
|