@aztec/archiver 0.73.0 → 0.75.0-commit.c03ba01a2a4122e43e90d5133ba017e54b90e9d2
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.js +729 -711
- package/dest/archiver/archiver_store.js +4 -2
- package/dest/archiver/archiver_store_test_suite.js +385 -224
- package/dest/archiver/config.js +9 -11
- package/dest/archiver/data_retrieval.js +89 -65
- package/dest/archiver/errors.js +1 -2
- package/dest/archiver/index.js +0 -1
- package/dest/archiver/instrumentation.js +29 -17
- package/dest/archiver/kv_archiver_store/block_store.js +118 -127
- package/dest/archiver/kv_archiver_store/contract_class_store.js +43 -37
- package/dest/archiver/kv_archiver_store/contract_instance_store.js +7 -12
- package/dest/archiver/kv_archiver_store/kv_archiver_store.js +135 -158
- package/dest/archiver/kv_archiver_store/log_store.js +271 -256
- package/dest/archiver/kv_archiver_store/message_store.js +42 -48
- package/dest/archiver/kv_archiver_store/nullifier_store.js +35 -42
- package/dest/archiver/memory_archiver_store/l1_to_l2_message_store.js +15 -24
- package/dest/archiver/memory_archiver_store/memory_archiver_store.js +227 -231
- package/dest/archiver/structs/data_retrieval.js +5 -2
- package/dest/archiver/structs/published.js +1 -2
- package/dest/factory.js +30 -20
- package/dest/index.js +0 -1
- package/dest/rpc/index.js +5 -2
- package/dest/test/index.js +0 -1
- package/dest/test/mock_archiver.js +8 -13
- package/dest/test/mock_l1_to_l2_message_source.js +4 -4
- package/dest/test/mock_l2_block_source.js +68 -67
- package/package.json +14 -13
- package/src/archiver/archiver.ts +1 -1
- package/src/archiver/data_retrieval.ts +17 -3
- package/src/archiver/index.ts +1 -1
- package/dest/archiver/archiver.d.ts +0 -186
- package/dest/archiver/archiver.d.ts.map +0 -1
- package/dest/archiver/archiver_store.d.ts +0 -217
- package/dest/archiver/archiver_store.d.ts.map +0 -1
- package/dest/archiver/archiver_store_test_suite.d.ts +0 -8
- package/dest/archiver/archiver_store_test_suite.d.ts.map +0 -1
- package/dest/archiver/config.d.ts +0 -35
- package/dest/archiver/config.d.ts.map +0 -1
- package/dest/archiver/data_retrieval.d.ts +0 -71
- package/dest/archiver/data_retrieval.d.ts.map +0 -1
- package/dest/archiver/errors.d.ts +0 -4
- package/dest/archiver/errors.d.ts.map +0 -1
- package/dest/archiver/index.d.ts +0 -8
- package/dest/archiver/index.d.ts.map +0 -1
- package/dest/archiver/instrumentation.d.ts +0 -27
- package/dest/archiver/instrumentation.d.ts.map +0 -1
- package/dest/archiver/kv_archiver_store/block_store.d.ts +0 -87
- package/dest/archiver/kv_archiver_store/block_store.d.ts.map +0 -1
- package/dest/archiver/kv_archiver_store/contract_class_store.d.ts +0 -17
- package/dest/archiver/kv_archiver_store/contract_class_store.d.ts.map +0 -1
- package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts +0 -13
- package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts.map +0 -1
- package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts +0 -147
- package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts.map +0 -1
- package/dest/archiver/kv_archiver_store/log_store.d.ts +0 -47
- package/dest/archiver/kv_archiver_store/log_store.d.ts.map +0 -1
- package/dest/archiver/kv_archiver_store/message_store.d.ts +0 -33
- package/dest/archiver/kv_archiver_store/message_store.d.ts.map +0 -1
- package/dest/archiver/kv_archiver_store/nullifier_store.d.ts +0 -12
- package/dest/archiver/kv_archiver_store/nullifier_store.d.ts.map +0 -1
- package/dest/archiver/memory_archiver_store/l1_to_l2_message_store.d.ts +0 -23
- package/dest/archiver/memory_archiver_store/l1_to_l2_message_store.d.ts.map +0 -1
- package/dest/archiver/memory_archiver_store/memory_archiver_store.d.ts +0 -168
- package/dest/archiver/memory_archiver_store/memory_archiver_store.d.ts.map +0 -1
- package/dest/archiver/structs/data_retrieval.d.ts +0 -27
- package/dest/archiver/structs/data_retrieval.d.ts.map +0 -1
- package/dest/archiver/structs/published.d.ts +0 -11
- package/dest/archiver/structs/published.d.ts.map +0 -1
- package/dest/factory.d.ts +0 -10
- package/dest/factory.d.ts.map +0 -1
- package/dest/index.d.ts +0 -5
- package/dest/index.d.ts.map +0 -1
- package/dest/rpc/index.d.ts +0 -4
- package/dest/rpc/index.d.ts.map +0 -1
- package/dest/test/index.d.ts +0 -4
- package/dest/test/index.d.ts.map +0 -1
- package/dest/test/mock_archiver.d.ts +0 -22
- package/dest/test/mock_archiver.d.ts.map +0 -1
- package/dest/test/mock_l1_to_l2_message_source.d.ts +0 -16
- package/dest/test/mock_l1_to_l2_message_source.d.ts.map +0 -1
- package/dest/test/mock_l2_block_source.d.ts +0 -80
- package/dest/test/mock_l2_block_source.d.ts.map +0 -1
|
@@ -1,2 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Data retrieved from logs
|
|
3
|
+
*/ /**
|
|
4
|
+
* Data retrieved from logs
|
|
5
|
+
*/ export { };
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGlzaGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FyY2hpdmVyL3N0cnVjdHMvcHVibGlzaGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
|
|
1
|
+
/** Extends a type with L1 published info (block number, hash, and timestamp) */ export { };
|
package/dest/factory.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { computePublicBytecodeCommitment, getContractClassFromArtifact
|
|
1
|
+
import { computePublicBytecodeCommitment, getContractClassFromArtifact } from '@aztec/circuits.js';
|
|
2
2
|
import { FunctionType, decodeFunctionSignature } from '@aztec/foundation/abi';
|
|
3
3
|
import { createLogger } from '@aztec/foundation/log';
|
|
4
4
|
import { createStore } from '@aztec/kv-store/lmdb-v2';
|
|
@@ -10,34 +10,42 @@ import { getTelemetryClient } from '@aztec/telemetry-client';
|
|
|
10
10
|
import { Archiver } from './archiver/archiver.js';
|
|
11
11
|
import { KVArchiverDataStore } from './archiver/index.js';
|
|
12
12
|
import { createArchiverClient } from './rpc/index.js';
|
|
13
|
-
export async function createArchiver(config, blobSinkClient, opts = {
|
|
13
|
+
export async function createArchiver(config, blobSinkClient, opts = {
|
|
14
|
+
blockUntilSync: true
|
|
15
|
+
}, telemetry = getTelemetryClient()) {
|
|
14
16
|
if (!config.archiverUrl) {
|
|
15
17
|
const store = await createStore('archiver', config, createLogger('archiver:lmdb'));
|
|
16
18
|
const archiverStore = new KVArchiverDataStore(store, config.maxLogs);
|
|
17
19
|
await registerProtocolContracts(archiverStore);
|
|
18
20
|
await registerCommonContracts(archiverStore);
|
|
19
|
-
return Archiver.createAndSync(config, archiverStore, {
|
|
20
|
-
|
|
21
|
-
|
|
21
|
+
return Archiver.createAndSync(config, archiverStore, {
|
|
22
|
+
telemetry,
|
|
23
|
+
blobSinkClient
|
|
24
|
+
}, opts.blockUntilSync);
|
|
25
|
+
} else {
|
|
22
26
|
return createArchiverClient(config.archiverUrl);
|
|
23
27
|
}
|
|
24
28
|
}
|
|
25
29
|
async function registerProtocolContracts(store) {
|
|
26
30
|
const blockNumber = 0;
|
|
27
|
-
for (const name of protocolContractNames)
|
|
31
|
+
for (const name of protocolContractNames){
|
|
28
32
|
const contract = await getCanonicalProtocolContract(name);
|
|
29
33
|
const contractClassPublic = {
|
|
30
34
|
...contract.contractClass,
|
|
31
35
|
privateFunctions: [],
|
|
32
|
-
unconstrainedFunctions: []
|
|
36
|
+
unconstrainedFunctions: []
|
|
33
37
|
};
|
|
34
|
-
const publicFunctionSignatures = contract.artifact.functions
|
|
35
|
-
.filter(fn => fn.functionType === FunctionType.PUBLIC)
|
|
36
|
-
.map(fn => decodeFunctionSignature(fn.name, fn.parameters));
|
|
38
|
+
const publicFunctionSignatures = contract.artifact.functions.filter((fn)=>fn.functionType === FunctionType.PUBLIC).map((fn)=>decodeFunctionSignature(fn.name, fn.parameters));
|
|
37
39
|
await store.registerContractFunctionSignatures(contract.address, publicFunctionSignatures);
|
|
38
40
|
const bytecodeCommitment = await computePublicBytecodeCommitment(contractClassPublic.packedBytecode);
|
|
39
|
-
await store.addContractClasses([
|
|
40
|
-
|
|
41
|
+
await store.addContractClasses([
|
|
42
|
+
contractClassPublic
|
|
43
|
+
], [
|
|
44
|
+
bytecodeCommitment
|
|
45
|
+
], blockNumber);
|
|
46
|
+
await store.addContractInstances([
|
|
47
|
+
contract.instance
|
|
48
|
+
], blockNumber);
|
|
41
49
|
}
|
|
42
50
|
}
|
|
43
51
|
// TODO(#10007): Remove this method. We are explicitly registering these contracts
|
|
@@ -47,13 +55,15 @@ async function registerProtocolContracts(store) {
|
|
|
47
55
|
// TODO(#10007): Remove the dependency on noir-contracts.js from this package once we remove this.
|
|
48
56
|
async function registerCommonContracts(store) {
|
|
49
57
|
const blockNumber = 0;
|
|
50
|
-
const artifacts = [
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
58
|
+
const artifacts = [
|
|
59
|
+
TokenBridgeContractArtifact,
|
|
60
|
+
TokenContractArtifact
|
|
61
|
+
];
|
|
62
|
+
const classes = await Promise.all(artifacts.map(async (artifact)=>({
|
|
63
|
+
...await getContractClassFromArtifact(artifact),
|
|
64
|
+
privateFunctions: [],
|
|
65
|
+
unconstrainedFunctions: []
|
|
66
|
+
})));
|
|
67
|
+
const bytecodeCommitments = await Promise.all(classes.map((x)=>computePublicBytecodeCommitment(x.packedBytecode)));
|
|
57
68
|
await store.addContractClasses(classes, bytecodeCommitments, blockNumber);
|
|
58
69
|
}
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFFTCwrQkFBK0IsRUFDL0IsNEJBQTRCLEdBQzdCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLFlBQVksRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUdyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDbkYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDaEYsT0FBTyxFQUF3QixrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRW5GLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVsRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0RCxNQUFNLENBQUMsS0FBSyxVQUFVLGNBQWMsQ0FDbEMsTUFBd0MsRUFDeEMsY0FBdUMsRUFDdkMsT0FBb0MsRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLEVBQzVELFlBQTZCLGtCQUFrQixFQUFFO0lBRWpELElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDeEIsTUFBTSxLQUFLLEdBQUcsTUFBTSxXQUFXLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxZQUFZLENBQUMsZUFBZSxDQUFDLENBQUMs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
|
package/dest/index.js
CHANGED
|
@@ -2,4 +2,3 @@ export * from './archiver/index.js';
|
|
|
2
2
|
export * from './factory.js';
|
|
3
3
|
export * from './rpc/index.js';
|
|
4
4
|
export { retrieveBlocksFromRollup, retrieveL2ProofVerifiedEvents } from './archiver/data_retrieval.js';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGdCQUFnQixDQUFDO0FBRS9CLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDhCQUE4QixDQUFDIn0=
|
package/dest/rpc/index.js
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { ArchiverApiSchema } from '@aztec/circuit-types';
|
|
2
2
|
import { createSafeJsonRpcClient } from '@aztec/foundation/json-rpc/client';
|
|
3
3
|
import { createTracedJsonRpcServer, makeTracedFetch } from '@aztec/telemetry-client';
|
|
4
|
-
export function createArchiverClient(url, fetch = makeTracedFetch([
|
|
4
|
+
export function createArchiverClient(url, fetch = makeTracedFetch([
|
|
5
|
+
1,
|
|
6
|
+
2,
|
|
7
|
+
3
|
|
8
|
+
], true)) {
|
|
5
9
|
return createSafeJsonRpcClient(url, ArchiverApiSchema, false, 'archiver', fetch);
|
|
6
10
|
}
|
|
7
11
|
export function createArchiverRpcServer(handler) {
|
|
8
12
|
return createTracedJsonRpcServer(handler, ArchiverApiSchema);
|
|
9
13
|
}
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcnBjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0IsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFckYsTUFBTSxVQUFVLG9CQUFvQixDQUFDLEdBQVcsRUFBRSxLQUFLLEdBQUcsZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUM7SUFDeEYsT0FBTyx1QkFBdUIsQ0FBYyxHQUFHLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNoRyxDQUFDO0FBRUQsTUFBTSxVQUFVLHVCQUF1QixDQUFDLE9BQW9CO0lBQzFELE9BQU8seUJBQXlCLENBQUMsT0FBTyxFQUFFLGlCQUFpQixDQUFDLENBQUM7QUFDL0QsQ0FBQyJ9
|
package/dest/test/index.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
export * from './mock_l2_block_source.js';
|
|
2
2
|
export * from './mock_l1_to_l2_message_source.js';
|
|
3
3
|
export * from './mock_archiver.js';
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxvQkFBb0IsQ0FBQyJ9
|
|
@@ -2,12 +2,8 @@ import { MockL1ToL2MessageSource } from './mock_l1_to_l2_message_source.js';
|
|
|
2
2
|
import { MockL2BlockSource } from './mock_l2_block_source.js';
|
|
3
3
|
/**
|
|
4
4
|
* A mocked implementation of the archiver that implements L2BlockSource and L1ToL2MessageSource.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
constructor() {
|
|
8
|
-
super(...arguments);
|
|
9
|
-
this.messageSource = new MockL1ToL2MessageSource(0);
|
|
10
|
-
}
|
|
5
|
+
*/ export class MockArchiver extends MockL2BlockSource {
|
|
6
|
+
messageSource = new MockL1ToL2MessageSource(0);
|
|
11
7
|
setL1ToL2Messages(blockNumber, msgs) {
|
|
12
8
|
this.messageSource.setL1ToL2Messages(blockNumber, msgs);
|
|
13
9
|
}
|
|
@@ -20,18 +16,18 @@ export class MockArchiver extends MockL2BlockSource {
|
|
|
20
16
|
}
|
|
21
17
|
/**
|
|
22
18
|
* A mocked implementation of the archiver with a set of precomputed blocks and messages.
|
|
23
|
-
*/
|
|
24
|
-
|
|
25
|
-
constructor(precomputed, messages)
|
|
19
|
+
*/ export class MockPrefilledArchiver extends MockArchiver {
|
|
20
|
+
precomputed;
|
|
21
|
+
constructor(precomputed, messages){
|
|
26
22
|
super();
|
|
27
23
|
this.precomputed = precomputed.slice();
|
|
28
|
-
messages.forEach((msgs, i)
|
|
24
|
+
messages.forEach((msgs, i)=>this.setL1ToL2Messages(i + 1, msgs));
|
|
29
25
|
}
|
|
30
26
|
setPrefilledBlocks(blocks, messages) {
|
|
31
|
-
for (const block of blocks)
|
|
27
|
+
for (const block of blocks){
|
|
32
28
|
this.precomputed[block.number - 1] = block;
|
|
33
29
|
}
|
|
34
|
-
messages.forEach((msgs, i)
|
|
30
|
+
messages.forEach((msgs, i)=>this.setL1ToL2Messages(blocks[i].number, msgs));
|
|
35
31
|
}
|
|
36
32
|
createBlocks(numBlocks) {
|
|
37
33
|
if (this.l2Blocks.length + numBlocks > this.precomputed.length) {
|
|
@@ -42,4 +38,3 @@ export class MockPrefilledArchiver extends MockArchiver {
|
|
|
42
38
|
return Promise.resolve();
|
|
43
39
|
}
|
|
44
40
|
}
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19hcmNoaXZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L21vY2tfYXJjaGl2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDNUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFOUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sWUFBYSxTQUFRLGlCQUFpQjtJQUFuRDs7UUFDVSxrQkFBYSxHQUFHLElBQUksdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFhekQsQ0FBQztJQVhRLGlCQUFpQixDQUFDLFdBQW1CLEVBQUUsSUFBVTtRQUN0RCxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsV0FBbUI7UUFDbkMsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxjQUFrQjtRQUN0QyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMscUJBQXFCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDbEUsQ0FBQztDQUNGO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsWUFBWTtJQUdyRCxZQUFZLFdBQXNCLEVBQUUsUUFBZ0I7UUFDbEQsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN2QyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRU0sa0JBQWtCLENBQUMsTUFBaUIsRUFBRSxRQUFnQjtRQUMzRCxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDN0MsQ0FBQztRQUNELFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFFZSxZQUFZLENBQUMsU0FBaUI7UUFDNUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMvRCxNQUFNLElBQUksS0FBSyxDQUNiLDJDQUEyQyxTQUFTLDRCQUE0QixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUN4RyxDQUFDO1FBQ0osQ0FBQztRQUVELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLFNBQVMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ3pFLE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzNCLENBQUM7Q0FDRiJ9
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* A mocked implementation of L1ToL2MessageSource to be used in tests.
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
*/ export class MockL1ToL2MessageSource {
|
|
4
|
+
blockNumber;
|
|
5
|
+
messagesPerBlock;
|
|
6
|
+
constructor(blockNumber){
|
|
6
7
|
this.blockNumber = blockNumber;
|
|
7
8
|
this.messagesPerBlock = new Map();
|
|
8
9
|
}
|
|
@@ -22,4 +23,3 @@ export class MockL1ToL2MessageSource {
|
|
|
22
23
|
return Promise.resolve(this.blockNumber);
|
|
23
24
|
}
|
|
24
25
|
}
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19sMV90b19sMl9tZXNzYWdlX3NvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L21vY2tfbDFfdG9fbDJfbWVzc2FnZV9zb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0E7O0dBRUc7QUFDSCxNQUFNLE9BQU8sdUJBQXVCO0lBR2xDLFlBQW9CLFdBQW1CO1FBQW5CLGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBRi9CLHFCQUFnQixHQUFHLElBQUksR0FBRyxFQUFnQixDQUFDO0lBRVQsQ0FBQztJQUVwQyxpQkFBaUIsQ0FBQyxXQUFtQixFQUFFLElBQVU7UUFDdEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVNLGNBQWMsQ0FBQyxXQUFtQjtRQUN2QyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztJQUNqQyxDQUFDO0lBRUQsaUJBQWlCLENBQUMsV0FBbUI7UUFDbkMsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVELHFCQUFxQixDQUFDLGNBQWtCO1FBQ3RDLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDM0MsQ0FBQztDQUNGIn0=
|
|
@@ -1,19 +1,16 @@
|
|
|
1
|
-
import { L2Block, L2BlockHash, TxReceipt, TxStatus, getSlotRangeForEpoch
|
|
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
|
-
|
|
12
|
-
this.provenBlockNumber = 0;
|
|
13
|
-
this.log = createLogger('archiver:mock_l2_block_source');
|
|
14
|
-
}
|
|
7
|
+
*/ export class MockL2BlockSource {
|
|
8
|
+
l2Blocks = [];
|
|
9
|
+
provenEpochNumber = 0;
|
|
10
|
+
provenBlockNumber = 0;
|
|
11
|
+
log = createLogger('archiver:mock_l2_block_source');
|
|
15
12
|
async createBlocks(numBlocks) {
|
|
16
|
-
for
|
|
13
|
+
for(let i = 0; i < numBlocks; i++){
|
|
17
14
|
const blockNum = this.l2Blocks.length + 1;
|
|
18
15
|
const block = await L2Block.random(blockNum);
|
|
19
16
|
this.l2Blocks.push(block);
|
|
@@ -35,24 +32,21 @@ export class MockL2BlockSource {
|
|
|
35
32
|
this.provenEpochNumber = provenEpochNumber;
|
|
36
33
|
}
|
|
37
34
|
/**
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
getRollupAddress() {
|
|
35
|
+
* Method to fetch the rollup contract address at the base-layer.
|
|
36
|
+
* @returns The rollup address.
|
|
37
|
+
*/ getRollupAddress() {
|
|
42
38
|
return Promise.resolve(EthAddress.random());
|
|
43
39
|
}
|
|
44
40
|
/**
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
getRegistryAddress() {
|
|
41
|
+
* Method to fetch the registry contract address at the base-layer.
|
|
42
|
+
* @returns The registry address.
|
|
43
|
+
*/ getRegistryAddress() {
|
|
49
44
|
return Promise.resolve(EthAddress.random());
|
|
50
45
|
}
|
|
51
46
|
/**
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
getBlockNumber() {
|
|
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() {
|
|
56
50
|
return Promise.resolve(this.l2Blocks.length);
|
|
57
51
|
}
|
|
58
52
|
getProvenBlockNumber() {
|
|
@@ -62,59 +56,60 @@ export class MockL2BlockSource {
|
|
|
62
56
|
return Promise.resolve(this.provenEpochNumber);
|
|
63
57
|
}
|
|
64
58
|
/**
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
getBlock(number) {
|
|
59
|
+
* Gets an l2 block.
|
|
60
|
+
* @param number - The block number to return (inclusive).
|
|
61
|
+
* @returns The requested L2 block.
|
|
62
|
+
*/ getBlock(number) {
|
|
70
63
|
return Promise.resolve(this.l2Blocks[number - 1]);
|
|
71
64
|
}
|
|
72
65
|
/**
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
return Promise.resolve(this.l2Blocks
|
|
80
|
-
.slice(from - 1, from - 1 + limit)
|
|
81
|
-
.filter(b => !proven || this.provenBlockNumber === undefined || b.number <= this.provenBlockNumber));
|
|
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));
|
|
82
72
|
}
|
|
83
73
|
getBlockHeader(number) {
|
|
84
74
|
return Promise.resolve(this.l2Blocks.at(typeof number === 'number' ? number - 1 : -1)?.header);
|
|
85
75
|
}
|
|
86
76
|
getBlocksForEpoch(epochNumber) {
|
|
87
77
|
const epochDuration = DefaultL1ContractsConfig.aztecEpochDuration;
|
|
88
|
-
const [start, end] = getSlotRangeForEpoch(epochNumber, {
|
|
89
|
-
|
|
78
|
+
const [start, end] = getSlotRangeForEpoch(epochNumber, {
|
|
79
|
+
epochDuration
|
|
80
|
+
});
|
|
81
|
+
const blocks = this.l2Blocks.filter((b)=>{
|
|
90
82
|
const slot = b.header.globalVariables.slotNumber.toBigInt();
|
|
91
83
|
return slot >= start && slot <= end;
|
|
92
84
|
});
|
|
93
85
|
return Promise.resolve(blocks);
|
|
94
86
|
}
|
|
95
87
|
/**
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
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));
|
|
104
96
|
if (!match) {
|
|
105
97
|
return Promise.resolve(undefined);
|
|
106
98
|
}
|
|
107
99
|
const [txEffect, block] = match;
|
|
108
|
-
return {
|
|
100
|
+
return {
|
|
101
|
+
data: txEffect,
|
|
102
|
+
l2BlockNumber: block.number,
|
|
103
|
+
l2BlockHash: (await block.hash()).toString()
|
|
104
|
+
};
|
|
109
105
|
}
|
|
110
106
|
/**
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
for (const txEffect of block.body.txEffects) {
|
|
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){
|
|
118
113
|
if (txEffect.txHash.equals(txHash)) {
|
|
119
114
|
return new TxReceipt(txHash, TxStatus.SUCCESS, '', txEffect.transactionFee.toBigInt(), L2BlockHash.fromField(await block.hash()), block.number);
|
|
120
115
|
}
|
|
@@ -126,15 +121,24 @@ export class MockL2BlockSource {
|
|
|
126
121
|
const [latest, proven, finalized] = [
|
|
127
122
|
await this.getBlockNumber(),
|
|
128
123
|
await this.getProvenBlockNumber(),
|
|
129
|
-
await this.getProvenBlockNumber()
|
|
124
|
+
await this.getProvenBlockNumber()
|
|
130
125
|
];
|
|
131
126
|
const latestBlock = this.l2Blocks[latest - 1];
|
|
132
127
|
const provenBlock = this.l2Blocks[proven - 1];
|
|
133
128
|
const finalizedBlock = this.l2Blocks[finalized - 1];
|
|
134
129
|
return {
|
|
135
|
-
latest: {
|
|
136
|
-
|
|
137
|
-
|
|
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
|
+
}
|
|
138
142
|
};
|
|
139
143
|
}
|
|
140
144
|
getL2EpochNumber() {
|
|
@@ -150,18 +154,15 @@ export class MockL2BlockSource {
|
|
|
150
154
|
throw new Error('Method not implemented.');
|
|
151
155
|
}
|
|
152
156
|
/**
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
start() {
|
|
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() {
|
|
157
160
|
return Promise.resolve();
|
|
158
161
|
}
|
|
159
162
|
/**
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
stop() {
|
|
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() {
|
|
164
166
|
return Promise.resolve();
|
|
165
167
|
}
|
|
166
168
|
}
|
|
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.75.0-commit.c03ba01a2a4122e43e90d5133ba017e54b90e9d2",
|
|
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": "
|
|
25
|
+
"test": "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,17 +64,18 @@
|
|
|
64
64
|
]
|
|
65
65
|
},
|
|
66
66
|
"dependencies": {
|
|
67
|
-
"@aztec/blob-
|
|
68
|
-
"@aztec/
|
|
69
|
-
"@aztec/
|
|
70
|
-
"@aztec/
|
|
71
|
-
"@aztec/
|
|
72
|
-
"@aztec/
|
|
73
|
-
"@aztec/
|
|
74
|
-
"@aztec/
|
|
75
|
-
"@aztec/
|
|
76
|
-
"@aztec/
|
|
77
|
-
"@aztec/
|
|
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",
|
|
78
79
|
"debug": "^4.3.4",
|
|
79
80
|
"lodash.groupby": "^4.6.0",
|
|
80
81
|
"lodash.omit": "^4.5.0",
|
package/src/archiver/archiver.ts
CHANGED
|
@@ -167,7 +167,7 @@ export class Archiver implements ArchiveSource, Traceable {
|
|
|
167
167
|
|
|
168
168
|
const [l1StartBlock, l1GenesisTime] = await Promise.all([
|
|
169
169
|
rollup.read.L1_BLOCK_AT_GENESIS(),
|
|
170
|
-
rollup.read.
|
|
170
|
+
rollup.read.getGenesisTime(),
|
|
171
171
|
] as const);
|
|
172
172
|
|
|
173
173
|
const { aztecEpochDuration: epochDuration, aztecSlotDuration: slotDuration, ethereumSlotDuration } = config;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
import { Blob, BlobDeserializationError } from '@aztec/blob-lib';
|
|
1
2
|
import { type BlobSinkClientInterface } from '@aztec/blob-sink/client';
|
|
2
3
|
import { Body, InboxLeaf, L2Block } from '@aztec/circuit-types';
|
|
3
4
|
import { AppendOnlyTreeSnapshot, BlockHeader, Fr, Proof } from '@aztec/circuits.js';
|
|
4
5
|
import { asyncPool } from '@aztec/foundation/async-pool';
|
|
5
|
-
import { Blob } from '@aztec/foundation/blob';
|
|
6
6
|
import { type EthAddress } from '@aztec/foundation/eth-address';
|
|
7
7
|
import { type ViemSignature } from '@aztec/foundation/eth-signature';
|
|
8
8
|
import { type Logger, createLogger } from '@aztec/foundation/log';
|
|
@@ -109,6 +109,7 @@ export async function processL2BlockProposedLogs(
|
|
|
109
109
|
blobHashes,
|
|
110
110
|
l2BlockNumber,
|
|
111
111
|
rollup.address,
|
|
112
|
+
logger,
|
|
112
113
|
);
|
|
113
114
|
|
|
114
115
|
const l1: L1PublishedData = {
|
|
@@ -201,6 +202,7 @@ async function getBlockFromRollupTx(
|
|
|
201
202
|
blobHashes: Buffer[], // WORKTODO(md): buffer32?
|
|
202
203
|
l2BlockNum: bigint,
|
|
203
204
|
rollupAddress: Hex,
|
|
205
|
+
logger: Logger,
|
|
204
206
|
): Promise<L2Block> {
|
|
205
207
|
const { input: forwarderData, blockHash } = await publicClient.getTransaction({ hash: txHash });
|
|
206
208
|
|
|
@@ -232,13 +234,25 @@ async function getBlockFromRollupTx(
|
|
|
232
234
|
];
|
|
233
235
|
|
|
234
236
|
const header = BlockHeader.fromBuffer(Buffer.from(hexToBytes(decodedArgs.header)));
|
|
235
|
-
|
|
236
237
|
const blobBodies = await blobSinkClient.getBlobSidecar(blockHash, blobHashes);
|
|
237
238
|
if (blobBodies.length === 0) {
|
|
238
239
|
throw new NoBlobBodiesFoundError(Number(l2BlockNum));
|
|
239
240
|
}
|
|
240
241
|
|
|
241
|
-
|
|
242
|
+
// TODO(#9101): Once calldata is removed, we can remove this field encoding and update
|
|
243
|
+
// Body.fromBlobFields to accept blob buffers directly
|
|
244
|
+
let blockFields: Fr[];
|
|
245
|
+
try {
|
|
246
|
+
blockFields = blobBodies.flatMap(b => b.toEncodedFields());
|
|
247
|
+
} catch (err: any) {
|
|
248
|
+
if (err instanceof BlobDeserializationError) {
|
|
249
|
+
logger.fatal(err.message);
|
|
250
|
+
} else {
|
|
251
|
+
logger.fatal('Unable to sync: failed to decode fetched blob, this blob was likely not created by us');
|
|
252
|
+
}
|
|
253
|
+
throw err;
|
|
254
|
+
}
|
|
255
|
+
|
|
242
256
|
// TODO(#9101): Retreiving the block body from calldata is a temporary soln before we have
|
|
243
257
|
// either a beacon chain client or link to some blob store. Web2 is ok because we will
|
|
244
258
|
// verify the block body vs the blob as below.
|
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 { ArchiverDataStore } from './archiver_store.js';
|
|
5
|
+
export type { 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';
|