@aztec/archiver 0.0.1-commit.e588bc7e5 → 0.0.1-commit.e5a3663dd
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.d.ts +19 -11
- package/dest/archiver.d.ts.map +1 -1
- package/dest/archiver.js +96 -53
- package/dest/config.d.ts +3 -1
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +14 -3
- package/dest/errors.d.ts +32 -5
- package/dest/errors.d.ts.map +1 -1
- package/dest/errors.js +51 -6
- package/dest/factory.d.ts +4 -4
- package/dest/factory.d.ts.map +1 -1
- package/dest/factory.js +13 -10
- package/dest/index.d.ts +10 -3
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +9 -2
- package/dest/l1/calldata_retriever.d.ts +2 -1
- package/dest/l1/calldata_retriever.d.ts.map +1 -1
- package/dest/l1/calldata_retriever.js +9 -4
- package/dest/l1/data_retrieval.d.ts +18 -9
- package/dest/l1/data_retrieval.d.ts.map +1 -1
- package/dest/l1/data_retrieval.js +13 -19
- package/dest/l1/validate_historical_logs.d.ts +23 -0
- package/dest/l1/validate_historical_logs.d.ts.map +1 -0
- package/dest/l1/validate_historical_logs.js +108 -0
- package/dest/modules/contract_data_source_adapter.d.ts +25 -0
- package/dest/modules/contract_data_source_adapter.d.ts.map +1 -0
- package/dest/modules/contract_data_source_adapter.js +42 -0
- package/dest/modules/data_source_base.d.ts +16 -10
- package/dest/modules/data_source_base.d.ts.map +1 -1
- package/dest/modules/data_source_base.js +71 -60
- package/dest/modules/data_store_updater.d.ts +16 -9
- package/dest/modules/data_store_updater.d.ts.map +1 -1
- package/dest/modules/data_store_updater.js +52 -40
- package/dest/modules/instrumentation.d.ts +7 -2
- package/dest/modules/instrumentation.d.ts.map +1 -1
- package/dest/modules/instrumentation.js +22 -6
- package/dest/modules/l1_synchronizer.d.ts +8 -4
- package/dest/modules/l1_synchronizer.d.ts.map +1 -1
- package/dest/modules/l1_synchronizer.js +212 -79
- package/dest/modules/validation.d.ts +4 -3
- package/dest/modules/validation.d.ts.map +1 -1
- package/dest/modules/validation.js +4 -4
- package/dest/store/block_store.d.ts +60 -21
- package/dest/store/block_store.d.ts.map +1 -1
- package/dest/store/block_store.js +229 -70
- package/dest/store/contract_class_store.d.ts +17 -3
- package/dest/store/contract_class_store.d.ts.map +1 -1
- package/dest/store/contract_class_store.js +17 -1
- package/dest/store/contract_instance_store.d.ts +28 -1
- package/dest/store/contract_instance_store.d.ts.map +1 -1
- package/dest/store/contract_instance_store.js +31 -0
- package/dest/store/data_stores.d.ts +68 -0
- package/dest/store/data_stores.d.ts.map +1 -0
- package/dest/store/data_stores.js +50 -0
- package/dest/store/function_names_cache.d.ts +17 -0
- package/dest/store/function_names_cache.d.ts.map +1 -0
- package/dest/store/function_names_cache.js +30 -0
- package/dest/store/l2_tips_cache.d.ts +1 -1
- package/dest/store/l2_tips_cache.d.ts.map +1 -1
- package/dest/store/l2_tips_cache.js +3 -3
- package/dest/store/log_store.d.ts +1 -1
- package/dest/store/log_store.d.ts.map +1 -1
- package/dest/store/log_store.js +2 -4
- package/dest/store/message_store.d.ts +9 -3
- package/dest/store/message_store.d.ts.map +1 -1
- package/dest/store/message_store.js +31 -1
- package/dest/test/fake_l1_state.d.ts +14 -3
- package/dest/test/fake_l1_state.d.ts.map +1 -1
- package/dest/test/fake_l1_state.js +55 -15
- package/dest/test/mock_l2_block_source.d.ts +12 -3
- package/dest/test/mock_l2_block_source.d.ts.map +1 -1
- package/dest/test/mock_l2_block_source.js +24 -2
- package/dest/test/noop_l1_archiver.d.ts +4 -4
- package/dest/test/noop_l1_archiver.d.ts.map +1 -1
- package/dest/test/noop_l1_archiver.js +9 -7
- package/package.json +13 -13
- package/src/archiver.ts +113 -52
- package/src/config.ts +15 -1
- package/src/errors.ts +75 -8
- package/src/factory.ts +11 -10
- package/src/index.ts +17 -2
- package/src/l1/calldata_retriever.ts +15 -4
- package/src/l1/data_retrieval.ts +30 -35
- package/src/l1/validate_historical_logs.ts +140 -0
- package/src/modules/contract_data_source_adapter.ts +59 -0
- package/src/modules/data_source_base.ts +75 -57
- package/src/modules/data_store_updater.ts +71 -39
- package/src/modules/instrumentation.ts +27 -7
- package/src/modules/l1_synchronizer.ts +301 -83
- package/src/modules/validation.ts +8 -7
- package/src/store/block_store.ts +264 -77
- package/src/store/contract_class_store.ts +28 -2
- package/src/store/contract_instance_store.ts +43 -0
- package/src/store/data_stores.ts +108 -0
- package/src/store/function_names_cache.ts +37 -0
- package/src/store/l2_tips_cache.ts +9 -3
- package/src/store/log_store.ts +2 -5
- package/src/store/message_store.ts +35 -2
- package/src/test/fake_l1_state.ts +62 -24
- package/src/test/mock_l2_block_source.ts +23 -2
- package/src/test/noop_l1_archiver.ts +9 -7
- package/dest/store/kv_archiver_store.d.ts +0 -377
- package/dest/store/kv_archiver_store.d.ts.map +0 -1
- package/dest/store/kv_archiver_store.js +0 -494
- package/src/store/kv_archiver_store.ts +0 -713
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { getPublicClient, getRpcUrlsFromClient } from '@aztec/ethereum/client';
|
|
2
|
+
import { RollupContract } from '@aztec/ethereum/contracts';
|
|
3
|
+
import { createLogger } from '@aztec/foundation/log';
|
|
4
|
+
/**
|
|
5
|
+
* Validates that every configured L1 RPC URL returns historical logs for the Rollup contract.
|
|
6
|
+
*
|
|
7
|
+
* Some RPC providers prune old logs, which would cause L1 syncing to silently fail. To detect this,
|
|
8
|
+
* we query for the `OwnershipTransferred` event which every Rollup emits in its constructor (via
|
|
9
|
+
* Ownable) on the block it was deployed (`l1StartBlock`). The `client` is typically a viem fallback
|
|
10
|
+
* transport over several user-configured RPC URLs — checking only the first URL would miss a bad
|
|
11
|
+
* secondary, so we probe each URL independently. The first URL that fails aborts startup, unless
|
|
12
|
+
* the operator has explicitly opted out.
|
|
13
|
+
*
|
|
14
|
+
* @param client - The L1 public client built from the user-configured RPC URLs.
|
|
15
|
+
* @param addresses - The subset of L1 contract addresses we rely on for historical log retrieval.
|
|
16
|
+
* @param skipCheck - If true, log warnings instead of throwing.
|
|
17
|
+
* @param bindings - Optional logger bindings for context.
|
|
18
|
+
* @throws Error if any URL fails the probe and skipCheck is false.
|
|
19
|
+
*/ export async function validateAndLogHistoricalLogsAvailability(client, addresses, skipCheck, bindings) {
|
|
20
|
+
const logger = createLogger('archiver:validate_historical_logs', bindings);
|
|
21
|
+
logger.debug('Validating historical log availability on L1 RPCs');
|
|
22
|
+
const urls = getRpcUrlsFromClient(client);
|
|
23
|
+
if (urls.length === 0) {
|
|
24
|
+
logger.warn('Could not determine L1 RPC URLs from the public client; skipping historical logs check.');
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
const chainId = client.chain?.id;
|
|
28
|
+
if (chainId === undefined) {
|
|
29
|
+
logger.warn('Could not determine L1 chain ID from the public client; skipping historical logs check.');
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
for (const url of urls){
|
|
33
|
+
const probeClient = getPublicClient({
|
|
34
|
+
l1RpcUrls: [
|
|
35
|
+
url
|
|
36
|
+
],
|
|
37
|
+
l1ChainId: chainId
|
|
38
|
+
});
|
|
39
|
+
const rollup = new RollupContract(probeClient, addresses.rollupAddress.toString());
|
|
40
|
+
const result = await probeRpcUrl(rollup, probeClient, logger);
|
|
41
|
+
if (result.ok) {
|
|
42
|
+
logger.debug(`L1 RPC ${url} returned historical OwnershipTransferred log for the Rollup contract.`);
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
const errorMessage = buildErrorMessage(url, result, addresses);
|
|
46
|
+
if (skipCheck) {
|
|
47
|
+
logger.warn(`${errorMessage}\nContinuing because ARCHIVER_SKIP_HISTORICAL_LOGS_CHECK is true.`);
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
logger.error(errorMessage);
|
|
51
|
+
throw new Error(errorMessage);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/** Runs the OwnershipTransferred probe against a single RPC and queries its client version. */ async function probeRpcUrl(rollup, client, logger) {
|
|
55
|
+
let queryError;
|
|
56
|
+
try {
|
|
57
|
+
const logs = await rollup.getOwnershipTransferredEventsAtDeploy();
|
|
58
|
+
if (logs.length > 0) {
|
|
59
|
+
return {
|
|
60
|
+
ok: true
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
} catch (err) {
|
|
64
|
+
queryError = err;
|
|
65
|
+
}
|
|
66
|
+
const clientVersion = await getClientVersion(client, logger);
|
|
67
|
+
let reason;
|
|
68
|
+
if (queryError instanceof Error) {
|
|
69
|
+
reason = `Query for historical logs failed: ${queryError.message}`;
|
|
70
|
+
} else if (queryError !== undefined) {
|
|
71
|
+
reason = 'Query for historical logs failed with a non-Error value.';
|
|
72
|
+
} else {
|
|
73
|
+
reason = 'No OwnershipTransferred event was returned by the L1 RPC for the Rollup deploy block.';
|
|
74
|
+
}
|
|
75
|
+
return {
|
|
76
|
+
ok: false,
|
|
77
|
+
reason,
|
|
78
|
+
clientVersion
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
/** Builds the operator-facing error message for a failing RPC URL. */ function buildErrorMessage(url, result, addresses) {
|
|
82
|
+
return [
|
|
83
|
+
`L1 RPC at ${url} does not return historical logs for the Rollup contract. ${result.reason}`,
|
|
84
|
+
`This likely means this Ethereum RPC node prunes old logs, which would cause the archiver ` + `to silently miss data during L1 sync.`,
|
|
85
|
+
result.clientVersion ? `Detected L1 client version for ${url}: ${result.clientVersion}.` : `Could not determine L1 client version for ${url}.`,
|
|
86
|
+
`The following L1 contract addresses must have their historical logs retained by the RPC node:`,
|
|
87
|
+
` - Rollup: ${addresses.rollupAddress.toString()}`,
|
|
88
|
+
` - Inbox: ${addresses.inboxAddress.toString()}`,
|
|
89
|
+
` - Registry: ${addresses.registryAddress.toString()}`,
|
|
90
|
+
` - GovernanceProposer: ${addresses.governanceProposerAddress.toString()}`,
|
|
91
|
+
isReth(result.clientVersion) ? `To retain logs for these contracts, configure reth with a ` + `prune.segments.receipts_log_filter entry for each address above ` + `so reth does not prune their receipts/logs. See https://reth.rs/run/pruning.html for details.` : `Point this RPC endpoint at a node that retains full log history for the addresses above.`,
|
|
92
|
+
`Set ARCHIVER_SKIP_HISTORICAL_LOGS_CHECK=true to bypass this check at your own risk.`
|
|
93
|
+
].join('\n');
|
|
94
|
+
}
|
|
95
|
+
/** Queries `web3_clientVersion` on the L1 RPC. Returns undefined if the call fails or returns a non-string. */ async function getClientVersion(client, logger) {
|
|
96
|
+
try {
|
|
97
|
+
const result = await client.request({
|
|
98
|
+
method: 'web3_clientVersion'
|
|
99
|
+
});
|
|
100
|
+
return typeof result === 'string' ? result : undefined;
|
|
101
|
+
} catch (err) {
|
|
102
|
+
logger.debug(`Failed to query web3_clientVersion: ${err instanceof Error ? err.message : err}`);
|
|
103
|
+
return undefined;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/** Heuristic check for reth based on the web3_clientVersion string (reth returns e.g. "reth/v1.0.0-..."). */ function isReth(clientVersion) {
|
|
107
|
+
return !!clientVersion && /reth/i.test(clientVersion);
|
|
108
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { BlockNumber } from '@aztec/foundation/branded-types';
|
|
2
|
+
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
|
+
import type { FunctionSelector } from '@aztec/stdlib/abi';
|
|
4
|
+
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
5
|
+
import type { ContractClassPublic, ContractDataSource, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
6
|
+
import type { UInt64 } from '@aztec/stdlib/types';
|
|
7
|
+
import type { ArchiverDataStores } from '../store/data_stores.js';
|
|
8
|
+
/**
|
|
9
|
+
* Thin {@link ContractDataSource} adapter over {@link ArchiverDataStores}.
|
|
10
|
+
*
|
|
11
|
+
* Used by contexts (e.g. offline epoch re-prover tools) that need a ContractDataSource
|
|
12
|
+
* but do not need a full archiver instance.
|
|
13
|
+
*/
|
|
14
|
+
export declare class ArchiverContractDataSourceAdapter implements ContractDataSource {
|
|
15
|
+
private readonly stores;
|
|
16
|
+
constructor(stores: ArchiverDataStores);
|
|
17
|
+
getBlockNumber(): Promise<BlockNumber>;
|
|
18
|
+
getContractClass(id: Fr): Promise<ContractClassPublic | undefined>;
|
|
19
|
+
getBytecodeCommitment(id: Fr): Promise<Fr | undefined>;
|
|
20
|
+
getContract(address: AztecAddress, maybeTimestamp?: UInt64): Promise<ContractInstanceWithAddress | undefined>;
|
|
21
|
+
getContractClassIds(): Promise<Fr[]>;
|
|
22
|
+
getDebugFunctionName(_address: AztecAddress, selector: FunctionSelector): Promise<string | undefined>;
|
|
23
|
+
registerContractFunctionSignatures(signatures: string[]): Promise<void>;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3RfZGF0YV9zb3VyY2VfYWRhcHRlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZHVsZXMvY29udHJhY3RfZGF0YV9zb3VyY2VfYWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RCxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFELE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLDJCQUEyQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkgsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFbEQsT0FBTyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVsRTs7Ozs7R0FLRztBQUNILHFCQUFhLGlDQUFrQyxZQUFXLGtCQUFrQjtJQUM5RCxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU07SUFBbkMsWUFBNkIsTUFBTSxFQUFFLGtCQUFrQixFQUFJO0lBRXBELGNBQWMsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLENBRTVDO0lBRU0sZ0JBQWdCLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsbUJBQW1CLEdBQUcsU0FBUyxDQUFDLENBRXhFO0lBRU0scUJBQXFCLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxHQUFHLFNBQVMsQ0FBQyxDQUU1RDtJQUVZLFdBQVcsQ0FDdEIsT0FBTyxFQUFFLFlBQVksRUFDckIsY0FBYyxDQUFDLEVBQUUsTUFBTSxHQUN0QixPQUFPLENBQUMsMkJBQTJCLEdBQUcsU0FBUyxDQUFDLENBWWxEO0lBRU0sbUJBQW1CLElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBRTFDO0lBRU0sb0JBQW9CLENBQUMsUUFBUSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsQ0FFM0c7SUFFTSxrQ0FBa0MsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUU3RTtDQUNGIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract_data_source_adapter.d.ts","sourceRoot":"","sources":["../../src/modules/contract_data_source_adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AACnH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE;;;;;GAKG;AACH,qBAAa,iCAAkC,YAAW,kBAAkB;IAC9D,OAAO,CAAC,QAAQ,CAAC,MAAM;IAAnC,YAA6B,MAAM,EAAE,kBAAkB,EAAI;IAEpD,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC,CAE5C;IAEM,gBAAgB,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAExE;IAEM,qBAAqB,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,CAE5D;IAEY,WAAW,CACtB,OAAO,EAAE,YAAY,EACrB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC,CAYlD;IAEM,mBAAmB,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC,CAE1C;IAEM,oBAAoB,CAAC,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAE3G;IAEM,kCAAkC,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7E;CACF"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Thin {@link ContractDataSource} adapter over {@link ArchiverDataStores}.
|
|
3
|
+
*
|
|
4
|
+
* Used by contexts (e.g. offline epoch re-prover tools) that need a ContractDataSource
|
|
5
|
+
* but do not need a full archiver instance.
|
|
6
|
+
*/ export class ArchiverContractDataSourceAdapter {
|
|
7
|
+
stores;
|
|
8
|
+
constructor(stores){
|
|
9
|
+
this.stores = stores;
|
|
10
|
+
}
|
|
11
|
+
getBlockNumber() {
|
|
12
|
+
return this.stores.blocks.getLatestL2BlockNumber();
|
|
13
|
+
}
|
|
14
|
+
getContractClass(id) {
|
|
15
|
+
return this.stores.contractClasses.getContractClass(id);
|
|
16
|
+
}
|
|
17
|
+
getBytecodeCommitment(id) {
|
|
18
|
+
return this.stores.contractClasses.getBytecodeCommitment(id);
|
|
19
|
+
}
|
|
20
|
+
async getContract(address, maybeTimestamp) {
|
|
21
|
+
let timestamp = maybeTimestamp;
|
|
22
|
+
if (timestamp === undefined) {
|
|
23
|
+
const latest = await this.stores.blocks.getLatestL2BlockNumber();
|
|
24
|
+
if (latest === 0) {
|
|
25
|
+
timestamp = 0n;
|
|
26
|
+
} else {
|
|
27
|
+
const [header] = await this.stores.blocks.getBlockHeaders(latest, 1);
|
|
28
|
+
timestamp = header ? header.globalVariables.timestamp : 0n;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return this.stores.contractInstances.getContractInstance(address, timestamp);
|
|
32
|
+
}
|
|
33
|
+
getContractClassIds() {
|
|
34
|
+
return this.stores.contractClasses.getContractClassIds();
|
|
35
|
+
}
|
|
36
|
+
getDebugFunctionName(_address, selector) {
|
|
37
|
+
return Promise.resolve(this.stores.functionNames.get(selector));
|
|
38
|
+
}
|
|
39
|
+
registerContractFunctionSignatures(signatures) {
|
|
40
|
+
return this.stores.functionNames.register(signatures);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -15,17 +15,17 @@ import type { CheckpointHeader } from '@aztec/stdlib/rollup';
|
|
|
15
15
|
import type { BlockHeader, IndexedTxEffect, TxHash, TxReceipt } from '@aztec/stdlib/tx';
|
|
16
16
|
import type { UInt64 } from '@aztec/stdlib/types';
|
|
17
17
|
import type { ArchiverDataSource } from '../interfaces.js';
|
|
18
|
-
import type {
|
|
18
|
+
import type { ArchiverDataStores } from '../store/data_stores.js';
|
|
19
19
|
import type { ValidateCheckpointResult } from './validation.js';
|
|
20
20
|
/**
|
|
21
|
-
* Abstract base class implementing ArchiverDataSource using a
|
|
22
|
-
* Provides implementations for all
|
|
23
|
-
*
|
|
21
|
+
* Abstract base class implementing ArchiverDataSource using a bundle of archiver substores.
|
|
22
|
+
* Provides implementations for all read-side methods and declares abstract methods for
|
|
23
|
+
* L1-dependent functionality that subclasses must implement.
|
|
24
24
|
*/
|
|
25
25
|
export declare abstract class ArchiverDataSourceBase implements ArchiverDataSource, L2LogsSource, ContractDataSource, L1ToL2MessageSource {
|
|
26
|
-
protected readonly
|
|
26
|
+
protected readonly stores: ArchiverDataStores;
|
|
27
27
|
protected readonly l1Constants?: L1RollupConstants | undefined;
|
|
28
|
-
constructor(
|
|
28
|
+
constructor(stores: ArchiverDataStores, l1Constants?: L1RollupConstants | undefined);
|
|
29
29
|
abstract getRollupAddress(): Promise<EthAddress>;
|
|
30
30
|
abstract getRegistryAddress(): Promise<EthAddress>;
|
|
31
31
|
abstract getL1Constants(): Promise<L1RollupConstants>;
|
|
@@ -50,6 +50,10 @@ export declare abstract class ArchiverDataSourceBase implements ArchiverDataSour
|
|
|
50
50
|
getCheckpointHeader(number: CheckpointNumber | 'latest'): Promise<CheckpointHeader | undefined>;
|
|
51
51
|
getLastBlockNumberInCheckpoint(checkpointNumber: CheckpointNumber): Promise<BlockNumber | undefined>;
|
|
52
52
|
getCheckpointedBlocks(from: BlockNumber, limit: number): Promise<CheckpointedL2Block[]>;
|
|
53
|
+
getCheckpointData(checkpointNumber: CheckpointNumber): Promise<CheckpointData | undefined>;
|
|
54
|
+
getCheckpointDataRange(from: CheckpointNumber, limit: number): Promise<CheckpointData[]>;
|
|
55
|
+
getCheckpointNumberBySlot(slot: SlotNumber): Promise<CheckpointNumber | undefined>;
|
|
56
|
+
getBlockDataWithCheckpointContext(blockNumber: BlockNumber): Promise<import("@aztec/stdlib/block").BlockDataWithCheckpointContext | undefined>;
|
|
53
57
|
getBlockHeaderByHash(blockHash: BlockHash): Promise<BlockHeader | undefined>;
|
|
54
58
|
getBlockHeaderByArchive(archive: Fr): Promise<BlockHeader | undefined>;
|
|
55
59
|
getBlockData(number: BlockNumber): Promise<BlockData | undefined>;
|
|
@@ -57,8 +61,8 @@ export declare abstract class ArchiverDataSourceBase implements ArchiverDataSour
|
|
|
57
61
|
getL2Block(number: BlockNumber): Promise<L2Block | undefined>;
|
|
58
62
|
getTxEffect(txHash: TxHash): Promise<IndexedTxEffect | undefined>;
|
|
59
63
|
getSettledTxReceipt(txHash: TxHash): Promise<TxReceipt | undefined>;
|
|
60
|
-
|
|
61
|
-
|
|
64
|
+
getLastCheckpoint(): Promise<CommonCheckpointData | undefined>;
|
|
65
|
+
getLastProposedCheckpoint(): Promise<ProposedCheckpointData | undefined>;
|
|
62
66
|
isPendingChainInvalid(): Promise<boolean>;
|
|
63
67
|
getPendingChainValidationStatus(): Promise<ValidateCheckpointResult>;
|
|
64
68
|
getPrivateLogsByTags(tags: SiloedTag[], page?: number, upToBlockNumber?: BlockNumber): Promise<TxScopedL2Log[][]>;
|
|
@@ -69,7 +73,9 @@ export declare abstract class ArchiverDataSourceBase implements ArchiverDataSour
|
|
|
69
73
|
getBytecodeCommitment(id: Fr): Promise<Fr | undefined>;
|
|
70
74
|
getContract(address: AztecAddress, maybeTimestamp?: UInt64): Promise<ContractInstanceWithAddress | undefined>;
|
|
71
75
|
getContractClassIds(): Promise<Fr[]>;
|
|
72
|
-
|
|
76
|
+
/** Looks up a public function name given a selector. */
|
|
77
|
+
getDebugFunctionName(_address: AztecAddress, selector: FunctionSelector): Promise<string | undefined>;
|
|
78
|
+
/** Register public function signatures so they can be looked up by selector. */
|
|
73
79
|
registerContractFunctionSignatures(signatures: string[]): Promise<void>;
|
|
74
80
|
getL1ToL2Messages(checkpointNumber: CheckpointNumber): Promise<Fr[]>;
|
|
75
81
|
getL1ToL2MessageIndex(l1ToL2Message: Fr): Promise<bigint | undefined>;
|
|
@@ -88,4 +94,4 @@ export declare abstract class ArchiverDataSourceBase implements ArchiverDataSour
|
|
|
88
94
|
getL2BlockByHash(blockHash: BlockHash): Promise<L2Block | undefined>;
|
|
89
95
|
getL2BlockByArchive(archive: Fr): Promise<L2Block | undefined>;
|
|
90
96
|
}
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YV9zb3VyY2VfYmFzZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZHVsZXMvZGF0YV9zb3VyY2VfYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLEtBQUssV0FBVyxFQUFFLEtBQUssVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkgsT0FBTyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDekQsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFaEUsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRCxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsS0FBSyxTQUFTLEVBQUUsS0FBSyxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEgsT0FBTyxFQUNMLFVBQVUsRUFDVixLQUFLLGNBQWMsRUFDbkIsS0FBSyxvQkFBb0IsRUFDekIsS0FBSyxzQkFBc0IsRUFDM0IsbUJBQW1CLEVBQ3BCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuSCxPQUFPLEVBQUUsS0FBSyxpQkFBaUIsRUFBd0IsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRixPQUFPLEtBQUssRUFBRSw0QkFBNEIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzNHLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3BFLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data_source_base.d.ts","sourceRoot":"","sources":["../../src/modules/data_source_base.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,iCAAiC,CAAC;AACnH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,mBAAmB,EAAE,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAChH,OAAO,EACL,UAAU,EACV,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AACnH,OAAO,EAAE,KAAK,iBAAiB,EAAwB,MAAM,6BAA6B,CAAC;AAC3F,OAAO,KAAK,EAAE,4BAA4B,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAC3G,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACxF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"data_source_base.d.ts","sourceRoot":"","sources":["../../src/modules/data_source_base.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,131 +4,142 @@ import { isDefined } from '@aztec/foundation/types';
|
|
|
4
4
|
import { Checkpoint, PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
|
|
5
5
|
import { getSlotRangeForEpoch } from '@aztec/stdlib/epoch-helpers';
|
|
6
6
|
/**
|
|
7
|
-
* Abstract base class implementing ArchiverDataSource using a
|
|
8
|
-
* Provides implementations for all
|
|
9
|
-
*
|
|
7
|
+
* Abstract base class implementing ArchiverDataSource using a bundle of archiver substores.
|
|
8
|
+
* Provides implementations for all read-side methods and declares abstract methods for
|
|
9
|
+
* L1-dependent functionality that subclasses must implement.
|
|
10
10
|
*/ export class ArchiverDataSourceBase {
|
|
11
|
-
|
|
11
|
+
stores;
|
|
12
12
|
l1Constants;
|
|
13
|
-
constructor(
|
|
14
|
-
this.
|
|
13
|
+
constructor(stores, l1Constants){
|
|
14
|
+
this.stores = stores;
|
|
15
15
|
this.l1Constants = l1Constants;
|
|
16
16
|
}
|
|
17
17
|
getCheckpointNumber() {
|
|
18
|
-
return this.
|
|
18
|
+
return this.stores.blocks.getLatestCheckpointNumber();
|
|
19
19
|
}
|
|
20
20
|
getSynchedCheckpointNumber() {
|
|
21
|
-
return this.
|
|
21
|
+
return this.stores.blocks.getLatestCheckpointNumber();
|
|
22
22
|
}
|
|
23
23
|
getProvenCheckpointNumber() {
|
|
24
|
-
return this.
|
|
24
|
+
return this.stores.blocks.getProvenCheckpointNumber();
|
|
25
25
|
}
|
|
26
26
|
getBlockNumber() {
|
|
27
|
-
return this.
|
|
27
|
+
return this.stores.blocks.getLatestL2BlockNumber();
|
|
28
28
|
}
|
|
29
29
|
getProvenBlockNumber() {
|
|
30
|
-
return this.
|
|
30
|
+
return this.stores.blocks.getProvenBlockNumber();
|
|
31
31
|
}
|
|
32
32
|
async getBlockHeader(number) {
|
|
33
|
-
const blockNumber = number === 'latest' ? await this.
|
|
33
|
+
const blockNumber = number === 'latest' ? await this.stores.blocks.getLatestL2BlockNumber() : number;
|
|
34
34
|
if (blockNumber === 0) {
|
|
35
35
|
return undefined;
|
|
36
36
|
}
|
|
37
|
-
const headers = await this.
|
|
37
|
+
const headers = await this.stores.blocks.getBlockHeaders(blockNumber, 1);
|
|
38
38
|
return headers.length === 0 ? undefined : headers[0];
|
|
39
39
|
}
|
|
40
40
|
getCheckpointedBlock(number) {
|
|
41
|
-
return this.
|
|
41
|
+
return this.stores.blocks.getCheckpointedBlock(number);
|
|
42
42
|
}
|
|
43
43
|
getCheckpointedL2BlockNumber() {
|
|
44
|
-
return this.
|
|
44
|
+
return this.stores.blocks.getCheckpointedL2BlockNumber();
|
|
45
45
|
}
|
|
46
46
|
getFinalizedL2BlockNumber() {
|
|
47
|
-
return this.
|
|
47
|
+
return this.stores.blocks.getFinalizedL2BlockNumber();
|
|
48
48
|
}
|
|
49
49
|
async getCheckpointHeader(number) {
|
|
50
50
|
if (number === 'latest') {
|
|
51
|
-
number = await this.
|
|
51
|
+
number = await this.stores.blocks.getLatestCheckpointNumber();
|
|
52
52
|
}
|
|
53
53
|
if (number === 0) {
|
|
54
54
|
return undefined;
|
|
55
55
|
}
|
|
56
|
-
const checkpoint = await this.
|
|
56
|
+
const checkpoint = await this.stores.blocks.getCheckpointData(number);
|
|
57
57
|
if (!checkpoint) {
|
|
58
58
|
return undefined;
|
|
59
59
|
}
|
|
60
60
|
return checkpoint.header;
|
|
61
61
|
}
|
|
62
62
|
async getLastBlockNumberInCheckpoint(checkpointNumber) {
|
|
63
|
-
const checkpointData = await this.
|
|
63
|
+
const checkpointData = await this.stores.blocks.getCheckpointData(checkpointNumber);
|
|
64
64
|
if (!checkpointData) {
|
|
65
65
|
return undefined;
|
|
66
66
|
}
|
|
67
67
|
return BlockNumber(checkpointData.startBlock + checkpointData.blockCount - 1);
|
|
68
68
|
}
|
|
69
69
|
getCheckpointedBlocks(from, limit) {
|
|
70
|
-
return this.
|
|
70
|
+
return this.stores.blocks.getCheckpointedBlocks(from, limit);
|
|
71
|
+
}
|
|
72
|
+
getCheckpointData(checkpointNumber) {
|
|
73
|
+
return this.stores.blocks.getCheckpointData(checkpointNumber);
|
|
74
|
+
}
|
|
75
|
+
getCheckpointDataRange(from, limit) {
|
|
76
|
+
return this.stores.blocks.getRangeOfCheckpoints(from, limit);
|
|
77
|
+
}
|
|
78
|
+
getCheckpointNumberBySlot(slot) {
|
|
79
|
+
return this.stores.blocks.getCheckpointNumberBySlot(slot);
|
|
80
|
+
}
|
|
81
|
+
getBlockDataWithCheckpointContext(blockNumber) {
|
|
82
|
+
return this.stores.blocks.getBlockDataWithCheckpointContext(blockNumber);
|
|
71
83
|
}
|
|
72
84
|
getBlockHeaderByHash(blockHash) {
|
|
73
|
-
return this.
|
|
85
|
+
return this.stores.blocks.getBlockHeaderByHash(blockHash);
|
|
74
86
|
}
|
|
75
87
|
getBlockHeaderByArchive(archive) {
|
|
76
|
-
return this.
|
|
88
|
+
return this.stores.blocks.getBlockHeaderByArchive(archive);
|
|
77
89
|
}
|
|
78
90
|
getBlockData(number) {
|
|
79
|
-
return this.
|
|
91
|
+
return this.stores.blocks.getBlockData(number);
|
|
80
92
|
}
|
|
81
93
|
getBlockDataByArchive(archive) {
|
|
82
|
-
return this.
|
|
94
|
+
return this.stores.blocks.getBlockDataByArchive(archive);
|
|
83
95
|
}
|
|
84
96
|
async getL2Block(number) {
|
|
85
97
|
// If the number provided is -ve, then return the latest block.
|
|
86
98
|
if (number < 0) {
|
|
87
|
-
number = await this.
|
|
99
|
+
number = await this.stores.blocks.getLatestL2BlockNumber();
|
|
88
100
|
}
|
|
89
101
|
if (number === 0) {
|
|
90
102
|
return undefined;
|
|
91
103
|
}
|
|
92
|
-
|
|
93
|
-
return publishedBlock;
|
|
104
|
+
return this.stores.blocks.getBlock(number);
|
|
94
105
|
}
|
|
95
106
|
getTxEffect(txHash) {
|
|
96
|
-
return this.
|
|
107
|
+
return this.stores.blocks.getTxEffect(txHash);
|
|
97
108
|
}
|
|
98
109
|
getSettledTxReceipt(txHash) {
|
|
99
|
-
return this.
|
|
110
|
+
return this.stores.blocks.getSettledTxReceipt(txHash, this.l1Constants);
|
|
100
111
|
}
|
|
101
|
-
|
|
102
|
-
return this.
|
|
112
|
+
getLastCheckpoint() {
|
|
113
|
+
return this.stores.blocks.getLastCheckpoint();
|
|
103
114
|
}
|
|
104
|
-
|
|
105
|
-
return this.
|
|
115
|
+
getLastProposedCheckpoint() {
|
|
116
|
+
return this.stores.blocks.getLastProposedCheckpoint();
|
|
106
117
|
}
|
|
107
118
|
isPendingChainInvalid() {
|
|
108
119
|
return this.getPendingChainValidationStatus().then((status)=>!status.valid);
|
|
109
120
|
}
|
|
110
121
|
async getPendingChainValidationStatus() {
|
|
111
|
-
return await this.
|
|
122
|
+
return await this.stores.blocks.getPendingChainValidationStatus() ?? {
|
|
112
123
|
valid: true
|
|
113
124
|
};
|
|
114
125
|
}
|
|
115
126
|
getPrivateLogsByTags(tags, page, upToBlockNumber) {
|
|
116
|
-
return this.
|
|
127
|
+
return this.stores.logs.getPrivateLogsByTags(tags, page, upToBlockNumber);
|
|
117
128
|
}
|
|
118
129
|
getPublicLogsByTagsFromContract(contractAddress, tags, page, upToBlockNumber) {
|
|
119
|
-
return this.
|
|
130
|
+
return this.stores.logs.getPublicLogsByTagsFromContract(contractAddress, tags, page, upToBlockNumber);
|
|
120
131
|
}
|
|
121
132
|
getPublicLogs(filter) {
|
|
122
|
-
return this.
|
|
133
|
+
return this.stores.logs.getPublicLogs(filter);
|
|
123
134
|
}
|
|
124
135
|
getContractClassLogs(filter) {
|
|
125
|
-
return this.
|
|
136
|
+
return this.stores.logs.getContractClassLogs(filter);
|
|
126
137
|
}
|
|
127
138
|
getContractClass(id) {
|
|
128
|
-
return this.
|
|
139
|
+
return this.stores.contractClasses.getContractClass(id);
|
|
129
140
|
}
|
|
130
141
|
getBytecodeCommitment(id) {
|
|
131
|
-
return this.
|
|
142
|
+
return this.stores.contractClasses.getBytecodeCommitment(id);
|
|
132
143
|
}
|
|
133
144
|
async getContract(address, maybeTimestamp) {
|
|
134
145
|
let timestamp;
|
|
@@ -139,37 +150,37 @@ import { getSlotRangeForEpoch } from '@aztec/stdlib/epoch-helpers';
|
|
|
139
150
|
} else {
|
|
140
151
|
timestamp = maybeTimestamp;
|
|
141
152
|
}
|
|
142
|
-
return this.
|
|
153
|
+
return this.stores.contractInstances.getContractInstance(address, timestamp);
|
|
143
154
|
}
|
|
144
155
|
getContractClassIds() {
|
|
145
|
-
return this.
|
|
156
|
+
return this.stores.contractClasses.getContractClassIds();
|
|
146
157
|
}
|
|
147
|
-
getDebugFunctionName(
|
|
148
|
-
return this.
|
|
158
|
+
/** Looks up a public function name given a selector. */ getDebugFunctionName(_address, selector) {
|
|
159
|
+
return Promise.resolve(this.stores.functionNames.get(selector));
|
|
149
160
|
}
|
|
150
|
-
registerContractFunctionSignatures(signatures) {
|
|
151
|
-
return this.
|
|
161
|
+
/** Register public function signatures so they can be looked up by selector. */ registerContractFunctionSignatures(signatures) {
|
|
162
|
+
return this.stores.functionNames.register(signatures);
|
|
152
163
|
}
|
|
153
164
|
getL1ToL2Messages(checkpointNumber) {
|
|
154
|
-
return this.
|
|
165
|
+
return this.stores.messages.getL1ToL2Messages(checkpointNumber);
|
|
155
166
|
}
|
|
156
167
|
getL1ToL2MessageIndex(l1ToL2Message) {
|
|
157
|
-
return this.
|
|
168
|
+
return this.stores.messages.getL1ToL2MessageIndex(l1ToL2Message);
|
|
158
169
|
}
|
|
159
170
|
async getCheckpoints(checkpointNumber, limit) {
|
|
160
|
-
const checkpoints = await this.
|
|
171
|
+
const checkpoints = await this.stores.blocks.getRangeOfCheckpoints(checkpointNumber, limit);
|
|
161
172
|
return Promise.all(checkpoints.map((ch)=>this.getPublishedCheckpointFromCheckpointData(ch)));
|
|
162
173
|
}
|
|
163
174
|
async getPublishedCheckpointFromCheckpointData(checkpoint) {
|
|
164
|
-
const blocksForCheckpoint = await this.
|
|
175
|
+
const blocksForCheckpoint = await this.stores.blocks.getBlocksForCheckpoint(checkpoint.checkpointNumber);
|
|
165
176
|
if (!blocksForCheckpoint) {
|
|
166
177
|
throw new Error(`Blocks for checkpoint ${checkpoint.checkpointNumber} not found`);
|
|
167
178
|
}
|
|
168
|
-
const fullCheckpoint = new Checkpoint(checkpoint.archive, checkpoint.header, blocksForCheckpoint, checkpoint.checkpointNumber);
|
|
179
|
+
const fullCheckpoint = new Checkpoint(checkpoint.archive, checkpoint.header, blocksForCheckpoint, checkpoint.checkpointNumber, checkpoint.feeAssetPriceModifier);
|
|
169
180
|
return new PublishedCheckpoint(fullCheckpoint, checkpoint.l1, checkpoint.attestations);
|
|
170
181
|
}
|
|
171
182
|
getBlocksForSlot(slotNumber) {
|
|
172
|
-
return this.
|
|
183
|
+
return this.stores.blocks.getBlocksForSlot(slotNumber);
|
|
173
184
|
}
|
|
174
185
|
async getCheckpointedBlocksForEpoch(epochNumber) {
|
|
175
186
|
const checkpointsData = await this.getCheckpointsDataForEpoch(epochNumber);
|
|
@@ -190,33 +201,33 @@ import { getSlotRangeForEpoch } from '@aztec/stdlib/epoch-helpers';
|
|
|
190
201
|
throw new Error('L1 constants not set');
|
|
191
202
|
}
|
|
192
203
|
const [start, end] = getSlotRangeForEpoch(epochNumber, this.l1Constants);
|
|
193
|
-
return this.
|
|
204
|
+
return this.stores.blocks.getCheckpointDataForSlotRange(start, end);
|
|
194
205
|
}
|
|
195
206
|
async getBlock(number) {
|
|
196
207
|
// If the number provided is -ve, then return the latest block.
|
|
197
208
|
if (number < 0) {
|
|
198
|
-
number = await this.
|
|
209
|
+
number = await this.stores.blocks.getLatestL2BlockNumber();
|
|
199
210
|
}
|
|
200
211
|
if (number === 0) {
|
|
201
212
|
return undefined;
|
|
202
213
|
}
|
|
203
|
-
return this.
|
|
214
|
+
return this.stores.blocks.getBlock(number);
|
|
204
215
|
}
|
|
205
216
|
getBlocks(from, limit) {
|
|
206
|
-
return this.
|
|
217
|
+
return this.stores.blocks.getBlocks(from, limit);
|
|
207
218
|
}
|
|
208
219
|
getCheckpointedBlockByHash(blockHash) {
|
|
209
|
-
return this.
|
|
220
|
+
return this.stores.blocks.getCheckpointedBlockByHash(blockHash);
|
|
210
221
|
}
|
|
211
222
|
getCheckpointedBlockByArchive(archive) {
|
|
212
|
-
return this.
|
|
223
|
+
return this.stores.blocks.getCheckpointedBlockByArchive(archive);
|
|
213
224
|
}
|
|
214
225
|
async getL2BlockByHash(blockHash) {
|
|
215
|
-
const checkpointedBlock = await this.
|
|
226
|
+
const checkpointedBlock = await this.stores.blocks.getCheckpointedBlockByHash(blockHash);
|
|
216
227
|
return checkpointedBlock?.block;
|
|
217
228
|
}
|
|
218
229
|
async getL2BlockByArchive(archive) {
|
|
219
|
-
const checkpointedBlock = await this.
|
|
230
|
+
const checkpointedBlock = await this.stores.blocks.getCheckpointedBlockByArchive(archive);
|
|
220
231
|
return checkpointedBlock?.block;
|
|
221
232
|
}
|
|
222
233
|
}
|