@aztec/node-lib 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/actions/snapshot-sync.d.ts +3 -2
- package/dest/actions/snapshot-sync.d.ts.map +1 -1
- package/dest/actions/snapshot-sync.js +7 -8
- package/dest/metrics/l1_tx_metrics.d.ts +1 -1
- package/dest/metrics/l1_tx_metrics.d.ts.map +1 -1
- package/dest/metrics/l1_tx_metrics.js +12 -12
- package/package.json +20 -20
- package/src/actions/snapshot-sync.ts +14 -10
- package/src/metrics/l1_tx_metrics.ts +16 -14
|
@@ -4,6 +4,7 @@ import type { L1ContractsConfig } from '@aztec/ethereum/config';
|
|
|
4
4
|
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
5
5
|
import type { Logger } from '@aztec/foundation/log';
|
|
6
6
|
import type { ChainConfig } from '@aztec/stdlib/config';
|
|
7
|
+
import { type ReadOnlyFileStore } from '@aztec/stdlib/file-store';
|
|
7
8
|
import type { DataStoreConfig } from '@aztec/stdlib/kv-store';
|
|
8
9
|
import { type SnapshotMetadata } from '@aztec/stdlib/snapshots';
|
|
9
10
|
import type { SharedNodeConfig } from '../config/index.js';
|
|
@@ -22,7 +23,7 @@ export declare function trySnapshotSync(config: SnapshotSyncConfig, log: Logger)
|
|
|
22
23
|
export declare function snapshotSync(snapshot: Pick<SnapshotMetadata, 'dataUrls'>, log: Logger, config: {
|
|
23
24
|
dataDirectory: string;
|
|
24
25
|
rollupAddress: EthAddress;
|
|
25
|
-
|
|
26
|
+
fileStore: ReadOnlyFileStore;
|
|
26
27
|
}): Promise<void>;
|
|
27
28
|
export {};
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hcHNob3Qtc3luYy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FjdGlvbnMvc25hcHNob3Qtc3luYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsS0FBSyxjQUFjLEVBR3BCLE1BQU0saUJBQWlCLENBQUM7QUFFekIsT0FBTyxFQUFFLEtBQUssb0JBQW9CLEVBQW1CLE1BQU0sd0JBQXdCLENBQUM7QUFDcEYsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUVoRSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsS0FBSyxpQkFBaUIsRUFBMkIsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRixPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RCxPQUFPLEVBQ0wsS0FBSyxnQkFBZ0IsRUFLdEIsTUFBTSx5QkFBeUIsQ0FBQztBQU1qQyxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSzNELEtBQUssa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLFVBQVUsQ0FBQyxHQUMxRCxJQUFJLENBQUMsV0FBVyxFQUFFLFdBQVcsR0FBRyxlQUFlLENBQUMsR0FDaEQsSUFBSSxDQUFDLGlCQUFpQixFQUFFLG9CQUFvQixDQUFDLEdBQzdDLElBQUksQ0FBQyxjQUFjLEVBQUUsd0JBQXdCLEdBQUcsU0FBUyxDQUFDLEdBQzFELGVBQWUsR0FDZixRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxhQUFhLENBQUMsQ0FBQyxHQUM5QyxvQkFBb0IsR0FBRztJQUNyQixhQUFhLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUN6QiwyQkFBMkIsQ0FBQyxFQUFFLE1BQU0sQ0FBQztDQUN0QyxDQUFDO0FBRUo7OztHQUdHO0FBQ0gsd0JBQXNCLGVBQWUsQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsR0FBRyxFQUFFLE1BQU0sb0JBcUs1RTtBQUVEOztHQUVHO0FBQ0gsd0JBQXNCLFlBQVksQ0FDaEMsUUFBUSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxVQUFVLENBQUMsRUFDNUMsR0FBRyxFQUFFLE1BQU0sRUFDWCxNQUFNLEVBQUU7SUFBRSxhQUFhLEVBQUUsTUFBTSxDQUFDO0lBQUMsYUFBYSxFQUFFLFVBQVUsQ0FBQztJQUFDLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQTtDQUFFLGlCQW1EM0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot-sync.d.ts","sourceRoot":"","sources":["../../src/actions/snapshot-sync.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"snapshot-sync.d.ts","sourceRoot":"","sources":["../../src/actions/snapshot-sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,cAAc,EAGpB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,KAAK,oBAAoB,EAAmB,MAAM,wBAAwB,CAAC;AACpF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,KAAK,iBAAiB,EAA2B,MAAM,0BAA0B,CAAC;AAC3F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EACL,KAAK,gBAAgB,EAKtB,MAAM,yBAAyB,CAAC;AAMjC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAK3D,KAAK,kBAAkB,GAAG,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,GAC1D,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,eAAe,CAAC,GAChD,IAAI,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAC7C,IAAI,CAAC,cAAc,EAAE,wBAAwB,GAAG,SAAS,CAAC,GAC1D,eAAe,GACf,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC,GAC9C,oBAAoB,GAAG;IACrB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,2BAA2B,CAAC,EAAE,MAAM,CAAC;CACtC,CAAC;AAEJ;;;GAGG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,kBAAkB,EAAE,GAAG,EAAE,MAAM,oBAqK5E;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,EAC5C,GAAG,EAAE,MAAM,EACX,MAAM,EAAE;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,iBAAiB,CAAA;CAAE,iBAmD3F"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ARCHIVER_DB_VERSION, ARCHIVER_STORE_NAME, createArchiverStore } from '@aztec/archiver';
|
|
1
|
+
import { ARCHIVER_DB_VERSION, ARCHIVER_STORE_NAME, createArchiverStore, getArchiverSynchPoint } from '@aztec/archiver';
|
|
2
2
|
import { INITIAL_L2_BLOCK_NUM } from '@aztec/constants';
|
|
3
3
|
import { getPublicClient } from '@aztec/ethereum/client';
|
|
4
4
|
import { tryRmDir } from '@aztec/foundation/fs';
|
|
@@ -37,15 +37,15 @@ const MIN_L1_BLOCKS_TO_TRIGGER_REPLACE = 86400 / 2 / 12;
|
|
|
37
37
|
let archiverL2BlockNumber;
|
|
38
38
|
try {
|
|
39
39
|
[archiverL1BlockNumber, archiverL2BlockNumber] = await Promise.all([
|
|
40
|
-
archiverStore
|
|
41
|
-
archiverStore.
|
|
40
|
+
getArchiverSynchPoint(archiverStore).then((s)=>s.blocksSynchedTo),
|
|
41
|
+
archiverStore.blocks.getLatestL2BlockNumber()
|
|
42
42
|
]);
|
|
43
43
|
} finally{
|
|
44
44
|
log.verbose(`Closing temporary archiver data store`, {
|
|
45
45
|
archiverL1BlockNumber,
|
|
46
46
|
archiverL2BlockNumber
|
|
47
47
|
});
|
|
48
|
-
await archiverStore.close();
|
|
48
|
+
await archiverStore.db.close();
|
|
49
49
|
}
|
|
50
50
|
const minL1BlocksToTriggerReplace = config.minL1BlocksToTriggerReplace ?? MIN_L1_BLOCKS_TO_TRIGGER_REPLACE;
|
|
51
51
|
if (syncMode === 'snapshot' && archiverL2BlockNumber !== undefined && archiverL2BlockNumber >= INITIAL_L2_BLOCK_NUM) {
|
|
@@ -132,7 +132,7 @@ const MIN_L1_BLOCKS_TO_TRIGGER_REPLACE = 86400 / 2 / 12;
|
|
|
132
132
|
// Sort candidates by L1 block number (highest first)
|
|
133
133
|
snapshotCandidates.sort((a, b)=>b.snapshot.l1BlockNumber - a.snapshot.l1BlockNumber);
|
|
134
134
|
// Try each candidate in order until one succeeds
|
|
135
|
-
for (const { snapshot, url } of snapshotCandidates){
|
|
135
|
+
for (const { snapshot, url, fileStore } of snapshotCandidates){
|
|
136
136
|
const { l1BlockNumber, l2BlockNumber } = snapshot;
|
|
137
137
|
log.info(`Attempting to sync from snapshot at L1 block ${l1BlockNumber} L2 block ${l2BlockNumber}`, {
|
|
138
138
|
snapshot,
|
|
@@ -142,7 +142,7 @@ const MIN_L1_BLOCKS_TO_TRIGGER_REPLACE = 86400 / 2 / 12;
|
|
|
142
142
|
await snapshotSync(snapshot, log, {
|
|
143
143
|
dataDirectory: config.dataDirectory,
|
|
144
144
|
rollupAddress: config.l1Contracts.rollupAddress,
|
|
145
|
-
|
|
145
|
+
fileStore
|
|
146
146
|
});
|
|
147
147
|
log.info(`Snapshot synced to L1 block ${l1BlockNumber} L2 block ${l2BlockNumber}`, {
|
|
148
148
|
snapshot,
|
|
@@ -165,11 +165,10 @@ const MIN_L1_BLOCKS_TO_TRIGGER_REPLACE = 86400 / 2 / 12;
|
|
|
165
165
|
/**
|
|
166
166
|
* Downloads the given snapshot replacing any local data stores.
|
|
167
167
|
*/ export async function snapshotSync(snapshot, log, config) {
|
|
168
|
-
const { dataDirectory, rollupAddress } = config;
|
|
168
|
+
const { dataDirectory, rollupAddress, fileStore } = config;
|
|
169
169
|
if (!dataDirectory) {
|
|
170
170
|
throw new Error(`No local data directory defined. Cannot sync snapshot.`);
|
|
171
171
|
}
|
|
172
|
-
const fileStore = await createReadOnlyFileStore(config.snapshotsUrl, log);
|
|
173
172
|
let downloadDir;
|
|
174
173
|
try {
|
|
175
174
|
// Download the snapshot to a temp location.
|
|
@@ -26,4 +26,4 @@ export declare class L1TxMetrics implements IL1TxMetrics {
|
|
|
26
26
|
recordMinedTx(state: L1TxState, l1Timestamp: Date): void;
|
|
27
27
|
recordDroppedTx(state: L1TxState): void;
|
|
28
28
|
}
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibDFfdHhfbWV0cmljcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21ldHJpY3MvbDFfdHhfbWV0cmljcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFHM0UsT0FBTyxFQUdMLEtBQUssS0FBSyxFQUlYLE1BQU0seUJBQXlCLENBQUM7QUFFakMsTUFBTSxNQUFNLFNBQVMsR0FBRyxXQUFXLEdBQUcsUUFBUSxHQUFHLE9BQU8sQ0FBQztBQUV6RDs7R0FFRztBQUNILHFCQUFhLFdBQVksWUFBVyxZQUFZO0lBbUI1QyxPQUFPLENBQUMsS0FBSztJQUNiLE9BQU8sQ0FBQyxLQUFLO0lBQ2IsT0FBTyxDQUFDLE1BQU07SUFuQmhCLE9BQU8sQ0FBQyxlQUFlLENBQVk7SUFHbkMsT0FBTyxDQUFDLG9CQUFvQixDQUFZO0lBR3hDLE9BQU8sQ0FBQyxZQUFZLENBQWdCO0lBQ3BDLE9BQU8sQ0FBQyxlQUFlLENBQWdCO0lBQ3ZDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBZ0I7SUFDeEMsT0FBTyxDQUFDLGVBQWUsQ0FBZ0I7SUFHdkMsT0FBTyxDQUFDLHVCQUF1QixDQUFZO0lBQzNDLE9BQU8sQ0FBQyxlQUFlLENBQVk7SUFDbkMsT0FBTyxDQUFDLGdCQUFnQixDQUFZO0lBRXBDLFlBQ1UsS0FBSyxFQUFFLEtBQUssRUFDWixLQUFLLEdBQUUsU0FBbUIsRUFDMUIsTUFBTSx5Q0FBc0MsRUFvQnJEO0lBRUQ7Ozs7T0FJRztJQUNJLGFBQWEsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxJQUFJLEdBQUcsSUFBSSxDQXNEOUQ7SUFFTSxlQUFlLENBQUMsS0FBSyxFQUFFLFNBQVMsR0FBRyxJQUFJLENBaUI3QztDQUNGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"l1_tx_metrics.d.ts","sourceRoot":"","sources":["../../src/metrics/l1_tx_metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAG3E,OAAO,EAGL,KAAK,KAAK,EAIX,MAAM,yBAAyB,CAAC;AAEjC,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEzD;;GAEG;AACH,qBAAa,WAAY,YAAW,YAAY;IAmB5C,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,MAAM;IAnBhB,OAAO,CAAC,eAAe,CAAY;IAGnC,OAAO,CAAC,oBAAoB,CAAY;IAGxC,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,eAAe,CAAgB;IACvC,OAAO,CAAC,gBAAgB,CAAgB;IACxC,OAAO,CAAC,eAAe,CAAgB;IAGvC,OAAO,CAAC,uBAAuB,CAAY;IAC3C,OAAO,CAAC,eAAe,CAAY;IACnC,OAAO,CAAC,gBAAgB,CAAY;IAEpC,YACU,KAAK,EAAE,KAAK,EACZ,KAAK,GAAE,SAAmB,EAC1B,MAAM,yCAAsC,EAoBrD;IAED;;;;OAIG;IACI,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"l1_tx_metrics.d.ts","sourceRoot":"","sources":["../../src/metrics/l1_tx_metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAG3E,OAAO,EAGL,KAAK,KAAK,EAIX,MAAM,yBAAyB,CAAC;AAEjC,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEzD;;GAEG;AACH,qBAAa,WAAY,YAAW,YAAY;IAmB5C,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,MAAM;IAnBhB,OAAO,CAAC,eAAe,CAAY;IAGnC,OAAO,CAAC,oBAAoB,CAAY;IAGxC,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,eAAe,CAAgB;IACvC,OAAO,CAAC,gBAAgB,CAAgB;IACxC,OAAO,CAAC,eAAe,CAAgB;IAGvC,OAAO,CAAC,uBAAuB,CAAY;IAC3C,OAAO,CAAC,eAAe,CAAY;IACnC,OAAO,CAAC,gBAAgB,CAAY;IAEpC,YACU,KAAK,EAAE,KAAK,EACZ,KAAK,GAAE,SAAmB,EAC1B,MAAM,yCAAsC,EAoBrD;IAED;;;;OAIG;IACI,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,GAAG,IAAI,CAsD9D;IAEM,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAiB7C;CACF"}
|
|
@@ -69,15 +69,15 @@ import { Attributes, Metrics, createUpDownCounterWithDefault } from '@aztec/tele
|
|
|
69
69
|
// Record number of attempts until mined
|
|
70
70
|
const attempts = isCancelTx ? state.cancelTxHashes.length : state.txHashes.length;
|
|
71
71
|
this.txAttemptsUntilMined.record(attempts, attributes);
|
|
72
|
-
// Record gas prices at end state
|
|
73
|
-
const
|
|
74
|
-
const
|
|
75
|
-
const
|
|
76
|
-
|
|
77
|
-
this.
|
|
78
|
-
|
|
79
|
-
if (
|
|
80
|
-
this.blobFeeHistogram.record(
|
|
72
|
+
// Record gas prices at end state, converted from wei to gwei to match metric unit definitions
|
|
73
|
+
const weiToGwei = 1e9;
|
|
74
|
+
const maxPriorityFeeGwei = Number(state.gasPrice.maxPriorityFeePerGas) / weiToGwei;
|
|
75
|
+
const maxFeeGwei = Number(state.gasPrice.maxFeePerGas) / weiToGwei;
|
|
76
|
+
const blobFeeGwei = state.gasPrice.maxFeePerBlobGas ? Number(state.gasPrice.maxFeePerBlobGas) / weiToGwei : undefined;
|
|
77
|
+
this.maxPriorityFeeHistogram.record(maxPriorityFeeGwei, attributes);
|
|
78
|
+
this.maxFeeHistogram.record(maxFeeGwei, attributes);
|
|
79
|
+
if (blobFeeGwei !== undefined) {
|
|
80
|
+
this.blobFeeHistogram.record(blobFeeGwei, attributes);
|
|
81
81
|
}
|
|
82
82
|
this.logger.debug(`Recorded tx end state metrics`, {
|
|
83
83
|
status: TxUtilsState[state.status],
|
|
@@ -85,9 +85,9 @@ import { Attributes, Metrics, createUpDownCounterWithDefault } from '@aztec/tele
|
|
|
85
85
|
isCancelTx,
|
|
86
86
|
isReverted,
|
|
87
87
|
scope: this.scope,
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
88
|
+
maxPriorityFeeGwei,
|
|
89
|
+
maxFeeGwei,
|
|
90
|
+
blobFeeGwei
|
|
91
91
|
});
|
|
92
92
|
}
|
|
93
93
|
recordDroppedTx(state) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/node-lib",
|
|
3
|
-
"version": "0.0.1-commit.
|
|
3
|
+
"version": "0.0.1-commit.e5a3663dd",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"typedocOptions": {
|
|
6
6
|
"entryPoints": [
|
|
@@ -66,28 +66,28 @@
|
|
|
66
66
|
]
|
|
67
67
|
},
|
|
68
68
|
"dependencies": {
|
|
69
|
-
"@aztec/archiver": "0.0.1-commit.
|
|
70
|
-
"@aztec/bb-prover": "0.0.1-commit.
|
|
71
|
-
"@aztec/blob-client": "0.0.1-commit.
|
|
72
|
-
"@aztec/constants": "0.0.1-commit.
|
|
73
|
-
"@aztec/epoch-cache": "0.0.1-commit.
|
|
74
|
-
"@aztec/ethereum": "0.0.1-commit.
|
|
75
|
-
"@aztec/foundation": "0.0.1-commit.
|
|
76
|
-
"@aztec/kv-store": "0.0.1-commit.
|
|
77
|
-
"@aztec/p2p": "0.0.1-commit.
|
|
78
|
-
"@aztec/protocol-contracts": "0.0.1-commit.
|
|
79
|
-
"@aztec/prover-client": "0.0.1-commit.
|
|
80
|
-
"@aztec/sequencer-client": "0.0.1-commit.
|
|
81
|
-
"@aztec/simulator": "0.0.1-commit.
|
|
82
|
-
"@aztec/stdlib": "0.0.1-commit.
|
|
83
|
-
"@aztec/telemetry-client": "0.0.1-commit.
|
|
84
|
-
"@aztec/validator-client": "0.0.1-commit.
|
|
85
|
-
"@aztec/world-state": "0.0.1-commit.
|
|
69
|
+
"@aztec/archiver": "0.0.1-commit.e5a3663dd",
|
|
70
|
+
"@aztec/bb-prover": "0.0.1-commit.e5a3663dd",
|
|
71
|
+
"@aztec/blob-client": "0.0.1-commit.e5a3663dd",
|
|
72
|
+
"@aztec/constants": "0.0.1-commit.e5a3663dd",
|
|
73
|
+
"@aztec/epoch-cache": "0.0.1-commit.e5a3663dd",
|
|
74
|
+
"@aztec/ethereum": "0.0.1-commit.e5a3663dd",
|
|
75
|
+
"@aztec/foundation": "0.0.1-commit.e5a3663dd",
|
|
76
|
+
"@aztec/kv-store": "0.0.1-commit.e5a3663dd",
|
|
77
|
+
"@aztec/p2p": "0.0.1-commit.e5a3663dd",
|
|
78
|
+
"@aztec/protocol-contracts": "0.0.1-commit.e5a3663dd",
|
|
79
|
+
"@aztec/prover-client": "0.0.1-commit.e5a3663dd",
|
|
80
|
+
"@aztec/sequencer-client": "0.0.1-commit.e5a3663dd",
|
|
81
|
+
"@aztec/simulator": "0.0.1-commit.e5a3663dd",
|
|
82
|
+
"@aztec/stdlib": "0.0.1-commit.e5a3663dd",
|
|
83
|
+
"@aztec/telemetry-client": "0.0.1-commit.e5a3663dd",
|
|
84
|
+
"@aztec/validator-client": "0.0.1-commit.e5a3663dd",
|
|
85
|
+
"@aztec/world-state": "0.0.1-commit.e5a3663dd",
|
|
86
86
|
"tslib": "^2.4.0"
|
|
87
87
|
},
|
|
88
88
|
"devDependencies": {
|
|
89
|
-
"@aztec/blob-lib": "0.0.1-commit.
|
|
90
|
-
"@aztec/node-keystore": "0.0.1-commit.
|
|
89
|
+
"@aztec/blob-lib": "0.0.1-commit.e5a3663dd",
|
|
90
|
+
"@aztec/node-keystore": "0.0.1-commit.e5a3663dd",
|
|
91
91
|
"@jest/globals": "^30.0.0",
|
|
92
92
|
"@types/jest": "^30.0.0",
|
|
93
93
|
"@types/node": "^22.15.17",
|
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
ARCHIVER_DB_VERSION,
|
|
3
|
+
ARCHIVER_STORE_NAME,
|
|
4
|
+
type ArchiverConfig,
|
|
5
|
+
createArchiverStore,
|
|
6
|
+
getArchiverSynchPoint,
|
|
7
|
+
} from '@aztec/archiver';
|
|
2
8
|
import { INITIAL_L2_BLOCK_NUM } from '@aztec/constants';
|
|
3
9
|
import { type EthereumClientConfig, getPublicClient } from '@aztec/ethereum/client';
|
|
4
10
|
import type { L1ContractsConfig } from '@aztec/ethereum/config';
|
|
@@ -66,12 +72,12 @@ export async function trySnapshotSync(config: SnapshotSyncConfig, log: Logger) {
|
|
|
66
72
|
let archiverL2BlockNumber: number | undefined;
|
|
67
73
|
try {
|
|
68
74
|
[archiverL1BlockNumber, archiverL2BlockNumber] = await Promise.all([
|
|
69
|
-
archiverStore
|
|
70
|
-
archiverStore.
|
|
75
|
+
getArchiverSynchPoint(archiverStore).then(s => s.blocksSynchedTo),
|
|
76
|
+
archiverStore.blocks.getLatestL2BlockNumber(),
|
|
71
77
|
] as const);
|
|
72
78
|
} finally {
|
|
73
79
|
log.verbose(`Closing temporary archiver data store`, { archiverL1BlockNumber, archiverL2BlockNumber });
|
|
74
|
-
await archiverStore.close();
|
|
80
|
+
await archiverStore.db.close();
|
|
75
81
|
}
|
|
76
82
|
|
|
77
83
|
const minL1BlocksToTriggerReplace = config.minL1BlocksToTriggerReplace ?? MIN_L1_BLOCKS_TO_TRIGGER_REPLACE;
|
|
@@ -178,7 +184,7 @@ export async function trySnapshotSync(config: SnapshotSyncConfig, log: Logger) {
|
|
|
178
184
|
snapshotCandidates.sort((a, b) => b.snapshot.l1BlockNumber - a.snapshot.l1BlockNumber);
|
|
179
185
|
|
|
180
186
|
// Try each candidate in order until one succeeds
|
|
181
|
-
for (const { snapshot, url } of snapshotCandidates) {
|
|
187
|
+
for (const { snapshot, url, fileStore } of snapshotCandidates) {
|
|
182
188
|
const { l1BlockNumber, l2BlockNumber } = snapshot;
|
|
183
189
|
log.info(`Attempting to sync from snapshot at L1 block ${l1BlockNumber} L2 block ${l2BlockNumber}`, {
|
|
184
190
|
snapshot,
|
|
@@ -189,7 +195,7 @@ export async function trySnapshotSync(config: SnapshotSyncConfig, log: Logger) {
|
|
|
189
195
|
await snapshotSync(snapshot, log, {
|
|
190
196
|
dataDirectory: config.dataDirectory!,
|
|
191
197
|
rollupAddress: config.l1Contracts.rollupAddress,
|
|
192
|
-
|
|
198
|
+
fileStore,
|
|
193
199
|
});
|
|
194
200
|
log.info(`Snapshot synced to L1 block ${l1BlockNumber} L2 block ${l2BlockNumber}`, {
|
|
195
201
|
snapshot,
|
|
@@ -215,15 +221,13 @@ export async function trySnapshotSync(config: SnapshotSyncConfig, log: Logger) {
|
|
|
215
221
|
export async function snapshotSync(
|
|
216
222
|
snapshot: Pick<SnapshotMetadata, 'dataUrls'>,
|
|
217
223
|
log: Logger,
|
|
218
|
-
config: { dataDirectory: string; rollupAddress: EthAddress;
|
|
224
|
+
config: { dataDirectory: string; rollupAddress: EthAddress; fileStore: ReadOnlyFileStore },
|
|
219
225
|
) {
|
|
220
|
-
const { dataDirectory, rollupAddress } = config;
|
|
226
|
+
const { dataDirectory, rollupAddress, fileStore } = config;
|
|
221
227
|
if (!dataDirectory) {
|
|
222
228
|
throw new Error(`No local data directory defined. Cannot sync snapshot.`);
|
|
223
229
|
}
|
|
224
230
|
|
|
225
|
-
const fileStore = await createReadOnlyFileStore(config.snapshotsUrl, log);
|
|
226
|
-
|
|
227
231
|
let downloadDir: string | undefined;
|
|
228
232
|
|
|
229
233
|
try {
|
|
@@ -92,17 +92,19 @@ export class L1TxMetrics implements IL1TxMetrics {
|
|
|
92
92
|
const attempts = isCancelTx ? state.cancelTxHashes.length : state.txHashes.length;
|
|
93
93
|
this.txAttemptsUntilMined.record(attempts, attributes);
|
|
94
94
|
|
|
95
|
-
// Record gas prices at end state
|
|
96
|
-
const
|
|
97
|
-
const
|
|
98
|
-
const
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
95
|
+
// Record gas prices at end state, converted from wei to gwei to match metric unit definitions
|
|
96
|
+
const weiToGwei = 1e9;
|
|
97
|
+
const maxPriorityFeeGwei = Number(state.gasPrice.maxPriorityFeePerGas) / weiToGwei;
|
|
98
|
+
const maxFeeGwei = Number(state.gasPrice.maxFeePerGas) / weiToGwei;
|
|
99
|
+
const blobFeeGwei = state.gasPrice.maxFeePerBlobGas
|
|
100
|
+
? Number(state.gasPrice.maxFeePerBlobGas) / weiToGwei
|
|
101
|
+
: undefined;
|
|
102
|
+
|
|
103
|
+
this.maxPriorityFeeHistogram.record(maxPriorityFeeGwei, attributes);
|
|
104
|
+
this.maxFeeHistogram.record(maxFeeGwei, attributes);
|
|
105
|
+
|
|
106
|
+
if (blobFeeGwei !== undefined) {
|
|
107
|
+
this.blobFeeHistogram.record(blobFeeGwei, attributes);
|
|
106
108
|
}
|
|
107
109
|
|
|
108
110
|
this.logger.debug(`Recorded tx end state metrics`, {
|
|
@@ -111,9 +113,9 @@ export class L1TxMetrics implements IL1TxMetrics {
|
|
|
111
113
|
isCancelTx,
|
|
112
114
|
isReverted,
|
|
113
115
|
scope: this.scope,
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
116
|
+
maxPriorityFeeGwei,
|
|
117
|
+
maxFeeGwei,
|
|
118
|
+
blobFeeGwei,
|
|
117
119
|
});
|
|
118
120
|
}
|
|
119
121
|
|