@aztec/archiver 0.69.0-devnet → 0.69.1-devnet
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 +9 -4
- package/dest/archiver/archiver.d.ts.map +1 -1
- package/dest/archiver/archiver.js +10 -9
- package/dest/archiver/archiver_store.d.ts +1 -1
- package/dest/archiver/archiver_store.d.ts.map +1 -1
- package/dest/archiver/archiver_store_test_suite.js +5 -5
- package/dest/archiver/instrumentation.d.ts +1 -1
- package/dest/archiver/instrumentation.d.ts.map +1 -1
- package/dest/archiver/instrumentation.js +4 -4
- package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts +2 -2
- package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/kv_archiver_store.js +11 -4
- package/dest/archiver/kv_archiver_store/log_store.js +3 -3
- package/dest/archiver/kv_archiver_store/nullifier_store.js +2 -2
- package/dest/archiver/memory_archiver_store/memory_archiver_store.d.ts +2 -2
- package/dest/archiver/memory_archiver_store/memory_archiver_store.d.ts.map +1 -1
- package/dest/archiver/memory_archiver_store/memory_archiver_store.js +14 -7
- package/dest/factory.d.ts +2 -1
- package/dest/factory.d.ts.map +1 -1
- package/dest/factory.js +8 -11
- package/dest/test/mock_l2_block_source.d.ts +2 -1
- package/dest/test/mock_l2_block_source.d.ts.map +1 -1
- package/dest/test/mock_l2_block_source.js +5 -3
- package/package.json +12 -11
- package/src/archiver/archiver.ts +11 -8
- package/src/archiver/archiver_store.ts +1 -1
- package/src/archiver/archiver_store_test_suite.ts +4 -4
- package/src/archiver/instrumentation.ts +4 -4
- package/src/archiver/kv_archiver_store/kv_archiver_store.ts +9 -4
- package/src/archiver/kv_archiver_store/log_store.ts +2 -2
- package/src/archiver/kv_archiver_store/nullifier_store.ts +1 -1
- package/src/archiver/memory_archiver_store/memory_archiver_store.ts +12 -7
- package/src/factory.ts +8 -9
- package/src/test/mock_l2_block_source.ts +6 -1
package/dest/factory.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { computePublicBytecodeCommitment, getContractClassFromArtifact, } from '@aztec/circuits.js';
|
|
2
|
-
import {
|
|
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';
|
|
5
5
|
import { TokenContractArtifact } from '@aztec/noir-contracts.js/Token';
|
|
@@ -10,13 +10,13 @@ import { NoopTelemetryClient } from '@aztec/telemetry-client/noop';
|
|
|
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, telemetry = new NoopTelemetryClient(), opts = { blockUntilSync: true }) {
|
|
13
|
+
export async function createArchiver(config, blobSinkClient, telemetry = new NoopTelemetryClient(), opts = { blockUntilSync: true }) {
|
|
14
14
|
if (!config.archiverUrl) {
|
|
15
15
|
const store = await createStore('archiver', config, createLogger('archiver:lmdb'));
|
|
16
16
|
const archiverStore = new KVArchiverDataStore(store, config.maxLogs);
|
|
17
17
|
await registerProtocolContracts(archiverStore);
|
|
18
18
|
await registerCommonContracts(archiverStore);
|
|
19
|
-
return Archiver.createAndSync(config, archiverStore, telemetry, opts.blockUntilSync);
|
|
19
|
+
return Archiver.createAndSync(config, archiverStore, { telemetry, blobSinkClient }, opts.blockUntilSync);
|
|
20
20
|
}
|
|
21
21
|
else {
|
|
22
22
|
return createArchiverClient(config.archiverUrl);
|
|
@@ -31,13 +31,10 @@ async function registerProtocolContracts(store) {
|
|
|
31
31
|
privateFunctions: [],
|
|
32
32
|
unconstrainedFunctions: [],
|
|
33
33
|
};
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
await store.registerContractFunctionName(contract.address, functionNames);
|
|
34
|
+
const publicFunctionSignatures = contract.artifact.functions
|
|
35
|
+
.filter(fn => fn.functionType === FunctionType.PUBLIC)
|
|
36
|
+
.map(fn => decodeFunctionSignature(fn.name, fn.parameters));
|
|
37
|
+
await store.registerContractFunctionSignatures(contract.address, publicFunctionSignatures);
|
|
41
38
|
const bytecodeCommitment = computePublicBytecodeCommitment(contractClassPublic.packedBytecode);
|
|
42
39
|
await store.addContractClasses([contractClassPublic], [bytecodeCommitment], blockNumber);
|
|
43
40
|
await store.addContractInstances([contract.instance], blockNumber);
|
|
@@ -59,4 +56,4 @@ async function registerCommonContracts(store) {
|
|
|
59
56
|
const bytecodeCommitments = classes.map(x => computePublicBytecodeCommitment(x.packedBytecode));
|
|
60
57
|
await store.addContractClasses(classes, bytecodeCommitments, blockNumber);
|
|
61
58
|
}
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFFTCwrQkFBK0IsRUFDL0IsNEJBQTRCLEdBQzdCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLFlBQVksRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUdyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDbkYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFaEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFbkUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWxELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRELE1BQU0sQ0FBQyxLQUFLLFVBQVUsY0FBYyxDQUNsQyxNQUF3QyxFQUN4QyxjQUF1QyxFQUN2QyxZQUE2QixJQUFJLG1CQUFtQixFQUFFLEVBQ3RELE9BQW9DLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRTtJQUU1RCxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sS0FBSyxHQUFHLE1BQU0sV0FBVyxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsWUFBWSxDQUFDLGVBQWUsQ0FBQyxD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
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { L2Block, type L2BlockSource, type L2Tips, type TxHash, TxReceipt } from '@aztec/circuit-types';
|
|
1
|
+
import { type L1RollupConstants, L2Block, type L2BlockSource, type L2Tips, type TxHash, TxReceipt } from '@aztec/circuit-types';
|
|
2
2
|
import { type BlockHeader, EthAddress } from '@aztec/circuits.js';
|
|
3
3
|
/**
|
|
4
4
|
* A mocked implementation of L2BlockSource to be used in tests.
|
|
@@ -65,6 +65,7 @@ export declare class MockL2BlockSource implements L2BlockSource {
|
|
|
65
65
|
getL2EpochNumber(): Promise<bigint>;
|
|
66
66
|
getL2SlotNumber(): Promise<bigint>;
|
|
67
67
|
isEpochComplete(_epochNumber: bigint): Promise<boolean>;
|
|
68
|
+
getL1Constants(): Promise<L1RollupConstants>;
|
|
68
69
|
/**
|
|
69
70
|
* Starts the block source. In this mock implementation, this is a noop.
|
|
70
71
|
* @returns A promise that signals the initialization of the l2 block source on completion.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock_l2_block_source.d.ts","sourceRoot":"","sources":["../../src/test/mock_l2_block_source.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EAEP,KAAK,aAAa,EAClB,KAAK,MAAM,EACX,KAAK,MAAM,EACX,SAAS,
|
|
1
|
+
{"version":3,"file":"mock_l2_block_source.d.ts","sourceRoot":"","sources":["../../src/test/mock_l2_block_source.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EACtB,OAAO,EAEP,KAAK,aAAa,EAClB,KAAK,MAAM,EACX,KAAK,MAAM,EACX,SAAS,EAGV,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,WAAW,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAIlE;;GAEG;AACH,qBAAa,iBAAkB,YAAW,aAAa;IACrD,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAM;IAEnC,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,iBAAiB,CAAa;IAEtC,OAAO,CAAC,GAAG,CAAiD;IAErD,YAAY,CAAC,SAAS,EAAE,MAAM;IAU9B,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE;IAK3B,YAAY,CAAC,SAAS,EAAE,MAAM;IAK9B,oBAAoB,CAAC,iBAAiB,EAAE,MAAM;IAI9C,oBAAoB,CAAC,iBAAiB,EAAE,MAAM;IAIrD;;;OAGG;IACH,gBAAgB,IAAI,OAAO,CAAC,UAAU,CAAC;IAIvC;;;OAGG;IACH,kBAAkB,IAAI,OAAO,CAAC,UAAU,CAAC;IAIzC;;;OAGG;IACI,cAAc;IAId,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC;IAIvC,sBAAsB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAI5D;;;;OAIG;IACI,QAAQ,CAAC,MAAM,EAAE,MAAM;IAI9B;;;;;OAKG;IACI,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO;IAQ9D,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAI3E,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAU1D;;;;OAIG;IACI,WAAW,CAAC,MAAM,EAAE,MAAM;;;;;IAWjC;;;;OAIG;IACI,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAoBpE,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAclC,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;IAInC,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IAIlC,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIvD,cAAc,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAI5C;;;OAGG;IACI,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7B;;;OAGG;IACI,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { L2Block, L2BlockHash, TxReceipt, TxStatus, } from '@aztec/circuit-types';
|
|
2
|
-
import { getSlotRangeForEpoch } from '@aztec/circuit-types';
|
|
1
|
+
import { L2Block, L2BlockHash, TxReceipt, TxStatus, getSlotRangeForEpoch, } from '@aztec/circuit-types';
|
|
3
2
|
import { EthAddress } from '@aztec/circuits.js';
|
|
4
3
|
import { DefaultL1ContractsConfig } from '@aztec/ethereum';
|
|
5
4
|
import { createLogger } from '@aztec/foundation/log';
|
|
@@ -144,6 +143,9 @@ export class MockL2BlockSource {
|
|
|
144
143
|
isEpochComplete(_epochNumber) {
|
|
145
144
|
throw new Error('Method not implemented.');
|
|
146
145
|
}
|
|
146
|
+
getL1Constants() {
|
|
147
|
+
throw new Error('Method not implemented.');
|
|
148
|
+
}
|
|
147
149
|
/**
|
|
148
150
|
* Starts the block source. In this mock implementation, this is a noop.
|
|
149
151
|
* @returns A promise that signals the initialization of the l2 block source on completion.
|
|
@@ -159,4 +161,4 @@ export class MockL2BlockSource {
|
|
|
159
161
|
return Promise.resolve();
|
|
160
162
|
}
|
|
161
163
|
}
|
|
162
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
164
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19sMl9ibG9ja19zb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdC9tb2NrX2wyX2Jsb2NrX3NvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsT0FBTyxFQUNQLFdBQVcsRUFJWCxTQUFTLEVBQ1QsUUFBUSxFQUNSLG9CQUFvQixHQUNyQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBb0IsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXJEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGlCQUFpQjtJQUE5QjtRQUNZLGFBQVEsR0FBYyxFQUFFLENBQUM7UUFFM0Isc0JBQWlCLEdBQVcsQ0FBQyxDQUFDO1FBQzlCLHNCQUFpQixHQUFXLENBQUMsQ0FBQztRQUU5QixRQUFHLEdBQUcsWUFBWSxDQUFDLCtCQUErQixDQUFDLENBQUM7SUF5TDlELENBQUM7SUF2TFEsWUFBWSxDQUFDLFNBQWlCO1FBQ25DLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNuQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDMUMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixDQUFDO1FBRUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsV0FBVyxTQUFTLHFDQUFxQyxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVNLFNBQVMsQ0FBQyxNQUFp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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/archiver",
|
|
3
|
-
"version": "0.69.
|
|
3
|
+
"version": "0.69.1-devnet",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -64,16 +64,17 @@
|
|
|
64
64
|
]
|
|
65
65
|
},
|
|
66
66
|
"dependencies": {
|
|
67
|
-
"@aztec/
|
|
68
|
-
"@aztec/
|
|
69
|
-
"@aztec/
|
|
70
|
-
"@aztec/
|
|
71
|
-
"@aztec/
|
|
72
|
-
"@aztec/
|
|
73
|
-
"@aztec/
|
|
74
|
-
"@aztec/
|
|
75
|
-
"@aztec/
|
|
76
|
-
"@aztec/
|
|
67
|
+
"@aztec/blob-sink": "0.69.1-devnet",
|
|
68
|
+
"@aztec/circuit-types": "0.69.1-devnet",
|
|
69
|
+
"@aztec/circuits.js": "0.69.1-devnet",
|
|
70
|
+
"@aztec/ethereum": "0.69.1-devnet",
|
|
71
|
+
"@aztec/foundation": "0.69.1-devnet",
|
|
72
|
+
"@aztec/kv-store": "0.69.1-devnet",
|
|
73
|
+
"@aztec/l1-artifacts": "0.69.1-devnet",
|
|
74
|
+
"@aztec/noir-contracts.js": "0.69.1-devnet",
|
|
75
|
+
"@aztec/protocol-contracts": "0.69.1-devnet",
|
|
76
|
+
"@aztec/telemetry-client": "0.69.1-devnet",
|
|
77
|
+
"@aztec/types": "0.69.1-devnet",
|
|
77
78
|
"debug": "^4.3.4",
|
|
78
79
|
"lodash.groupby": "^4.6.0",
|
|
79
80
|
"lodash.omit": "^4.5.0",
|
package/src/archiver/archiver.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type BlobSinkClientInterface } from '@aztec/blob-sink/client';
|
|
1
2
|
import {
|
|
2
3
|
type GetUnencryptedLogsResponse,
|
|
3
4
|
type InBlock,
|
|
@@ -115,6 +116,7 @@ export class Archiver implements ArchiveSource, Traceable {
|
|
|
115
116
|
private readonly l1Addresses: { rollupAddress: EthAddress; inboxAddress: EthAddress; registryAddress: EthAddress },
|
|
116
117
|
readonly dataStore: ArchiverDataStore,
|
|
117
118
|
private readonly config: { pollingIntervalMs: number; batchSize: number },
|
|
119
|
+
private readonly _blobSinkClient: BlobSinkClientInterface,
|
|
118
120
|
private readonly instrumentation: ArchiverInstrumentation,
|
|
119
121
|
private readonly l1constants: L1RollupConstants,
|
|
120
122
|
private readonly log: Logger = createLogger('archiver'),
|
|
@@ -145,7 +147,7 @@ export class Archiver implements ArchiveSource, Traceable {
|
|
|
145
147
|
public static async createAndSync(
|
|
146
148
|
config: ArchiverConfig,
|
|
147
149
|
archiverStore: ArchiverDataStore,
|
|
148
|
-
telemetry: TelemetryClient,
|
|
150
|
+
deps: { telemetry: TelemetryClient; blobSinkClient: BlobSinkClientInterface },
|
|
149
151
|
blockUntilSynced = true,
|
|
150
152
|
): Promise<Archiver> {
|
|
151
153
|
const chain = createEthereumChain(config.l1RpcUrl, config.l1ChainId);
|
|
@@ -176,7 +178,8 @@ export class Archiver implements ArchiveSource, Traceable {
|
|
|
176
178
|
pollingIntervalMs: config.archiverPollingIntervalMS ?? 10_000,
|
|
177
179
|
batchSize: config.archiverBatchSize ?? 100,
|
|
178
180
|
},
|
|
179
|
-
|
|
181
|
+
deps.blobSinkClient,
|
|
182
|
+
await ArchiverInstrumentation.new(deps.telemetry, () => archiverStore.estimateSize()),
|
|
180
183
|
{ l1StartBlock, l1GenesisTime, epochDuration, slotDuration, ethereumSlotDuration },
|
|
181
184
|
);
|
|
182
185
|
await archiver.start(blockUntilSynced);
|
|
@@ -508,8 +511,8 @@ export class Archiver implements ArchiveSource, Traceable {
|
|
|
508
511
|
return Promise.resolve();
|
|
509
512
|
}
|
|
510
513
|
|
|
511
|
-
public getL1Constants(): L1RollupConstants {
|
|
512
|
-
return this.l1constants;
|
|
514
|
+
public getL1Constants(): Promise<L1RollupConstants> {
|
|
515
|
+
return Promise.resolve(this.l1constants);
|
|
513
516
|
}
|
|
514
517
|
|
|
515
518
|
public getRollupAddress(): Promise<EthAddress> {
|
|
@@ -775,8 +778,8 @@ export class Archiver implements ArchiveSource, Traceable {
|
|
|
775
778
|
return;
|
|
776
779
|
}
|
|
777
780
|
|
|
778
|
-
|
|
779
|
-
return this.store.
|
|
781
|
+
registerContractFunctionSignatures(address: AztecAddress, signatures: string[]): Promise<void> {
|
|
782
|
+
return this.store.registerContractFunctionSignatures(address, signatures);
|
|
780
783
|
}
|
|
781
784
|
|
|
782
785
|
getContractFunctionName(address: AztecAddress, selector: FunctionSelector): Promise<string | undefined> {
|
|
@@ -1083,8 +1086,8 @@ class ArchiverStoreHelper
|
|
|
1083
1086
|
getContractClassIds(): Promise<Fr[]> {
|
|
1084
1087
|
return this.store.getContractClassIds();
|
|
1085
1088
|
}
|
|
1086
|
-
|
|
1087
|
-
return this.store.
|
|
1089
|
+
registerContractFunctionSignatures(address: AztecAddress, signatures: string[]): Promise<void> {
|
|
1090
|
+
return this.store.registerContractFunctionSignatures(address, signatures);
|
|
1088
1091
|
}
|
|
1089
1092
|
getContractFunctionName(address: AztecAddress, selector: FunctionSelector): Promise<string | undefined> {
|
|
1090
1093
|
return this.store.getContractFunctionName(address, selector);
|
|
@@ -264,7 +264,7 @@ export interface ArchiverDataStore {
|
|
|
264
264
|
// TODO: These function names are in memory only as they are for development/debugging. They require the full contract
|
|
265
265
|
// artifact supplied to the node out of band. This should be reviewed and potentially removed as part of
|
|
266
266
|
// the node api cleanup process.
|
|
267
|
-
|
|
267
|
+
registerContractFunctionSignatures(address: AztecAddress, signatures: string[]): Promise<void>;
|
|
268
268
|
getContractFunctionName(address: AztecAddress, selector: FunctionSelector): Promise<string | undefined>;
|
|
269
269
|
|
|
270
270
|
/**
|
|
@@ -29,7 +29,7 @@ import {
|
|
|
29
29
|
makeUnconstrainedFunctionWithMembershipProof,
|
|
30
30
|
} from '@aztec/circuits.js/testing';
|
|
31
31
|
import { times } from '@aztec/foundation/collection';
|
|
32
|
-
import {
|
|
32
|
+
import { randomInt } from '@aztec/foundation/crypto';
|
|
33
33
|
|
|
34
34
|
import { type ArchiverDataStore, type ArchiverL1SynchPoint } from './archiver_store.js';
|
|
35
35
|
import { type L1Published } from './structs/published.js';
|
|
@@ -223,7 +223,7 @@ export function describeArchiverDataStore(testName: string, getStore: () => Arch
|
|
|
223
223
|
});
|
|
224
224
|
|
|
225
225
|
it('returns undefined if tx is not found', async () => {
|
|
226
|
-
await expect(store.getTxEffect(
|
|
226
|
+
await expect(store.getTxEffect(TxHash.random())).resolves.toBeUndefined();
|
|
227
227
|
});
|
|
228
228
|
|
|
229
229
|
it.each([
|
|
@@ -241,7 +241,7 @@ export function describeArchiverDataStore(testName: string, getStore: () => Arch
|
|
|
241
241
|
});
|
|
242
242
|
|
|
243
243
|
it('returns undefined if tx is not found', async () => {
|
|
244
|
-
await expect(store.getTxEffect(
|
|
244
|
+
await expect(store.getTxEffect(TxHash.random())).resolves.toBeUndefined();
|
|
245
245
|
});
|
|
246
246
|
});
|
|
247
247
|
|
|
@@ -645,7 +645,7 @@ export function describeArchiverDataStore(testName: string, getStore: () => Arch
|
|
|
645
645
|
|
|
646
646
|
it('"txHash" filter param is ignored when "afterLog" is set', async () => {
|
|
647
647
|
// Get random txHash
|
|
648
|
-
const txHash =
|
|
648
|
+
const txHash = TxHash.random();
|
|
649
649
|
const afterLog = new LogId(1, 0, 0);
|
|
650
650
|
|
|
651
651
|
const response = await store.getUnencryptedLogs({ txHash, afterLog });
|
|
@@ -17,7 +17,7 @@ export class ArchiverInstrumentation {
|
|
|
17
17
|
public readonly tracer: Tracer;
|
|
18
18
|
|
|
19
19
|
private blockHeight: Gauge;
|
|
20
|
-
private
|
|
20
|
+
private txCount: UpDownCounter;
|
|
21
21
|
private syncDuration: Histogram;
|
|
22
22
|
private l1BlocksSynced: UpDownCounter;
|
|
23
23
|
private proofsSubmittedDelay: Histogram;
|
|
@@ -35,8 +35,8 @@ export class ArchiverInstrumentation {
|
|
|
35
35
|
valueType: ValueType.INT,
|
|
36
36
|
});
|
|
37
37
|
|
|
38
|
-
this.
|
|
39
|
-
description: 'The number of transactions
|
|
38
|
+
this.txCount = meter.createUpDownCounter(Metrics.ARCHIVER_TX_COUNT, {
|
|
39
|
+
description: 'The total number of transactions',
|
|
40
40
|
valueType: ValueType.INT,
|
|
41
41
|
});
|
|
42
42
|
|
|
@@ -95,7 +95,7 @@ export class ArchiverInstrumentation {
|
|
|
95
95
|
this.blockHeight.record(Math.max(...blocks.map(b => b.number)));
|
|
96
96
|
this.l1BlocksSynced.add(blocks.length);
|
|
97
97
|
for (const block of blocks) {
|
|
98
|
-
this.
|
|
98
|
+
this.txCount.add(block.body.txEffects.length);
|
|
99
99
|
}
|
|
100
100
|
}
|
|
101
101
|
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
type PrivateLog,
|
|
18
18
|
type UnconstrainedFunctionWithMembershipProof,
|
|
19
19
|
} from '@aztec/circuits.js';
|
|
20
|
-
import {
|
|
20
|
+
import { FunctionSelector } from '@aztec/foundation/abi';
|
|
21
21
|
import { type AztecAddress } from '@aztec/foundation/aztec-address';
|
|
22
22
|
import { createLogger } from '@aztec/foundation/log';
|
|
23
23
|
import { type AztecKVStore } from '@aztec/kv-store';
|
|
@@ -62,9 +62,14 @@ export class KVArchiverDataStore implements ArchiverDataStore {
|
|
|
62
62
|
return Promise.resolve(this.functionNames.get(selector.toString()));
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
-
|
|
66
|
-
for (const
|
|
67
|
-
|
|
65
|
+
registerContractFunctionSignatures(_address: AztecAddress, signatures: string[]): Promise<void> {
|
|
66
|
+
for (const sig of signatures) {
|
|
67
|
+
try {
|
|
68
|
+
const selector = FunctionSelector.fromSignature(sig);
|
|
69
|
+
this.functionNames.set(selector.toString(), sig.slice(0, sig.indexOf('(')));
|
|
70
|
+
} catch {
|
|
71
|
+
this.#log.warn(`Failed to parse signature: ${sig}. Ignoring`);
|
|
72
|
+
}
|
|
68
73
|
}
|
|
69
74
|
|
|
70
75
|
return Promise.resolve();
|
|
@@ -43,7 +43,7 @@ export class LogStore {
|
|
|
43
43
|
const taggedLogs = new Map<string, Buffer[]>();
|
|
44
44
|
const dataStartIndexForBlock =
|
|
45
45
|
block.header.state.partial.noteHashTree.nextAvailableLeafIndex -
|
|
46
|
-
block.body.
|
|
46
|
+
block.body.txEffects.length * MAX_NOTE_HASHES_PER_TX;
|
|
47
47
|
block.body.txEffects.forEach((txEffect, txIndex) => {
|
|
48
48
|
const txHash = txEffect.txHash;
|
|
49
49
|
const dataStartIndexForTx = dataStartIndexForBlock + txIndex * MAX_NOTE_HASHES_PER_TX;
|
|
@@ -69,7 +69,7 @@ export class LogStore {
|
|
|
69
69
|
const taggedLogs = new Map<string, Buffer[]>();
|
|
70
70
|
const dataStartIndexForBlock =
|
|
71
71
|
block.header.state.partial.noteHashTree.nextAvailableLeafIndex -
|
|
72
|
-
block.body.
|
|
72
|
+
block.body.txEffects.length * MAX_NOTE_HASHES_PER_TX;
|
|
73
73
|
block.body.unencryptedLogs.txLogs.forEach((txLogs, txIndex) => {
|
|
74
74
|
const txHash = block.body.txEffects[txIndex].txHash;
|
|
75
75
|
const dataStartIndexForTx = dataStartIndexForBlock + txIndex * MAX_NOTE_HASHES_PER_TX;
|
|
@@ -20,7 +20,7 @@ export class NullifierStore {
|
|
|
20
20
|
blocks.forEach(block => {
|
|
21
21
|
const dataStartIndexForBlock =
|
|
22
22
|
block.header.state.partial.nullifierTree.nextAvailableLeafIndex -
|
|
23
|
-
block.body.
|
|
23
|
+
block.body.txEffects.length * MAX_NULLIFIERS_PER_TX;
|
|
24
24
|
block.body.txEffects.forEach((txEffects, txIndex) => {
|
|
25
25
|
const dataStartIndexForTx = dataStartIndexForBlock + txIndex * MAX_NULLIFIERS_PER_TX;
|
|
26
26
|
txEffects.nullifiers.forEach((nullifier, nullifierIndex) => {
|
|
@@ -28,7 +28,7 @@ import {
|
|
|
28
28
|
type PrivateLog,
|
|
29
29
|
type UnconstrainedFunctionWithMembershipProof,
|
|
30
30
|
} from '@aztec/circuits.js';
|
|
31
|
-
import {
|
|
31
|
+
import { FunctionSelector } from '@aztec/foundation/abi';
|
|
32
32
|
import { type AztecAddress } from '@aztec/foundation/aztec-address';
|
|
33
33
|
import { createLogger } from '@aztec/foundation/log';
|
|
34
34
|
|
|
@@ -228,7 +228,7 @@ export class MemoryArchiverStore implements ArchiverDataStore {
|
|
|
228
228
|
#storeTaggedLogsFromPrivate(block: L2Block): void {
|
|
229
229
|
const dataStartIndexForBlock =
|
|
230
230
|
block.header.state.partial.noteHashTree.nextAvailableLeafIndex -
|
|
231
|
-
block.body.
|
|
231
|
+
block.body.txEffects.length * MAX_NOTE_HASHES_PER_TX;
|
|
232
232
|
block.body.txEffects.forEach((txEffect, txIndex) => {
|
|
233
233
|
const txHash = txEffect.txHash;
|
|
234
234
|
const dataStartIndexForTx = dataStartIndexForBlock + txIndex * MAX_NOTE_HASHES_PER_TX;
|
|
@@ -248,7 +248,7 @@ export class MemoryArchiverStore implements ArchiverDataStore {
|
|
|
248
248
|
#storeTaggedLogsFromPublic(block: L2Block): void {
|
|
249
249
|
const dataStartIndexForBlock =
|
|
250
250
|
block.header.state.partial.noteHashTree.nextAvailableLeafIndex -
|
|
251
|
-
block.body.
|
|
251
|
+
block.body.txEffects.length * MAX_NOTE_HASHES_PER_TX;
|
|
252
252
|
block.body.unencryptedLogs.txLogs.forEach((txLogs, txIndex) => {
|
|
253
253
|
const txHash = block.body.txEffects[txIndex].txHash;
|
|
254
254
|
const dataStartIndexForTx = dataStartIndexForBlock + txIndex * MAX_NOTE_HASHES_PER_TX;
|
|
@@ -328,7 +328,7 @@ export class MemoryArchiverStore implements ArchiverDataStore {
|
|
|
328
328
|
blocks.forEach(block => {
|
|
329
329
|
const dataStartIndexForBlock =
|
|
330
330
|
block.header.state.partial.nullifierTree.nextAvailableLeafIndex -
|
|
331
|
-
block.body.
|
|
331
|
+
block.body.txEffects.length * MAX_NULLIFIERS_PER_TX;
|
|
332
332
|
block.body.txEffects.forEach((txEffects, txIndex) => {
|
|
333
333
|
const dataStartIndexForTx = dataStartIndexForBlock + txIndex * MAX_NULLIFIERS_PER_TX;
|
|
334
334
|
txEffects.nullifiers.forEach((nullifier, nullifierIndex) => {
|
|
@@ -734,9 +734,14 @@ export class MemoryArchiverStore implements ArchiverDataStore {
|
|
|
734
734
|
return Promise.resolve(this.functionNames.get(selector.toString()));
|
|
735
735
|
}
|
|
736
736
|
|
|
737
|
-
public
|
|
738
|
-
for (const
|
|
739
|
-
|
|
737
|
+
public registerContractFunctionSignatures(_address: AztecAddress, signatures: string[]): Promise<void> {
|
|
738
|
+
for (const sig of signatures) {
|
|
739
|
+
try {
|
|
740
|
+
const selector = FunctionSelector.fromSignature(sig);
|
|
741
|
+
this.functionNames.set(selector.toString(), sig.slice(0, sig.indexOf('(')));
|
|
742
|
+
} catch {
|
|
743
|
+
this.#log.warn(`Failed to parse signature: ${sig}. Ignoring`);
|
|
744
|
+
}
|
|
740
745
|
}
|
|
741
746
|
|
|
742
747
|
return Promise.resolve();
|
package/src/factory.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
import { type BlobSinkClientInterface } from '@aztec/blob-sink/client';
|
|
1
2
|
import { type ArchiverApi, type Service } from '@aztec/circuit-types';
|
|
2
3
|
import {
|
|
3
4
|
type ContractClassPublic,
|
|
4
5
|
computePublicBytecodeCommitment,
|
|
5
6
|
getContractClassFromArtifact,
|
|
6
7
|
} from '@aztec/circuits.js';
|
|
7
|
-
import {
|
|
8
|
+
import { FunctionType, decodeFunctionSignature } from '@aztec/foundation/abi';
|
|
8
9
|
import { createLogger } from '@aztec/foundation/log';
|
|
9
10
|
import { type Maybe } from '@aztec/foundation/types';
|
|
10
11
|
import { type DataStoreConfig } from '@aztec/kv-store/config';
|
|
@@ -23,6 +24,7 @@ import { createArchiverClient } from './rpc/index.js';
|
|
|
23
24
|
|
|
24
25
|
export async function createArchiver(
|
|
25
26
|
config: ArchiverConfig & DataStoreConfig,
|
|
27
|
+
blobSinkClient: BlobSinkClientInterface,
|
|
26
28
|
telemetry: TelemetryClient = new NoopTelemetryClient(),
|
|
27
29
|
opts: { blockUntilSync: boolean } = { blockUntilSync: true },
|
|
28
30
|
): Promise<ArchiverApi & Maybe<Service>> {
|
|
@@ -31,7 +33,7 @@ export async function createArchiver(
|
|
|
31
33
|
const archiverStore = new KVArchiverDataStore(store, config.maxLogs);
|
|
32
34
|
await registerProtocolContracts(archiverStore);
|
|
33
35
|
await registerCommonContracts(archiverStore);
|
|
34
|
-
return Archiver.createAndSync(config, archiverStore, telemetry, opts.blockUntilSync);
|
|
36
|
+
return Archiver.createAndSync(config, archiverStore, { telemetry, blobSinkClient }, opts.blockUntilSync);
|
|
35
37
|
} else {
|
|
36
38
|
return createArchiverClient(config.archiverUrl);
|
|
37
39
|
}
|
|
@@ -47,14 +49,11 @@ async function registerProtocolContracts(store: KVArchiverDataStore) {
|
|
|
47
49
|
unconstrainedFunctions: [],
|
|
48
50
|
};
|
|
49
51
|
|
|
50
|
-
const
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
functionNames[FunctionSelector.fromNameAndParameters(fn.name, fn.parameters).toString()] = fn.name;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
52
|
+
const publicFunctionSignatures = contract.artifact.functions
|
|
53
|
+
.filter(fn => fn.functionType === FunctionType.PUBLIC)
|
|
54
|
+
.map(fn => decodeFunctionSignature(fn.name, fn.parameters));
|
|
56
55
|
|
|
57
|
-
await store.
|
|
56
|
+
await store.registerContractFunctionSignatures(contract.address, publicFunctionSignatures);
|
|
58
57
|
const bytecodeCommitment = computePublicBytecodeCommitment(contractClassPublic.packedBytecode);
|
|
59
58
|
await store.addContractClasses([contractClassPublic], [bytecodeCommitment], blockNumber);
|
|
60
59
|
await store.addContractInstances([contract.instance], blockNumber);
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
|
+
type L1RollupConstants,
|
|
2
3
|
L2Block,
|
|
3
4
|
L2BlockHash,
|
|
4
5
|
type L2BlockSource,
|
|
@@ -6,8 +7,8 @@ import {
|
|
|
6
7
|
type TxHash,
|
|
7
8
|
TxReceipt,
|
|
8
9
|
TxStatus,
|
|
10
|
+
getSlotRangeForEpoch,
|
|
9
11
|
} from '@aztec/circuit-types';
|
|
10
|
-
import { getSlotRangeForEpoch } from '@aztec/circuit-types';
|
|
11
12
|
import { type BlockHeader, EthAddress } from '@aztec/circuits.js';
|
|
12
13
|
import { DefaultL1ContractsConfig } from '@aztec/ethereum';
|
|
13
14
|
import { createLogger } from '@aztec/foundation/log';
|
|
@@ -187,6 +188,10 @@ export class MockL2BlockSource implements L2BlockSource {
|
|
|
187
188
|
throw new Error('Method not implemented.');
|
|
188
189
|
}
|
|
189
190
|
|
|
191
|
+
getL1Constants(): Promise<L1RollupConstants> {
|
|
192
|
+
throw new Error('Method not implemented.');
|
|
193
|
+
}
|
|
194
|
+
|
|
190
195
|
/**
|
|
191
196
|
* Starts the block source. In this mock implementation, this is a noop.
|
|
192
197
|
* @returns A promise that signals the initialization of the l2 block source on completion.
|