@aztec/world-state 0.0.1-commit.2f68f620 → 0.0.1-commit.3100065
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/instrumentation/instrumentation.d.ts +3 -4
- package/dest/instrumentation/instrumentation.d.ts.map +1 -1
- package/dest/instrumentation/instrumentation.js +9 -4
- package/dest/native/ipc_world_state_instance.d.ts +22 -59
- package/dest/native/ipc_world_state_instance.d.ts.map +1 -1
- package/dest/native/ipc_world_state_instance.js +495 -520
- package/dest/native/merkle_trees_facade.d.ts +3 -4
- package/dest/native/merkle_trees_facade.d.ts.map +1 -1
- package/dest/native/merkle_trees_facade.js +109 -37
- package/dest/native/message.d.ts +233 -14
- package/dest/native/message.d.ts.map +1 -1
- package/dest/native/message.js +42 -0
- package/dest/native/native_world_state.d.ts +28 -14
- package/dest/native/native_world_state.d.ts.map +1 -1
- package/dest/native/native_world_state.js +102 -101
- package/dest/native/native_world_state_instance.d.ts +42 -58
- package/dest/native/native_world_state_instance.d.ts.map +1 -1
- package/dest/native/native_world_state_instance.js +222 -5
- package/dest/native/world_state_ops_queue.d.ts +19 -0
- package/dest/native/world_state_ops_queue.d.ts.map +1 -0
- package/dest/native/world_state_ops_queue.js +146 -0
- package/dest/synchronizer/errors.d.ts +8 -1
- package/dest/synchronizer/errors.d.ts.map +1 -1
- package/dest/synchronizer/errors.js +8 -1
- package/dest/synchronizer/factory.d.ts +1 -1
- package/dest/synchronizer/factory.d.ts.map +1 -1
- package/dest/synchronizer/factory.js +1 -1
- package/dest/synchronizer/index.d.ts +2 -1
- package/dest/synchronizer/index.d.ts.map +1 -1
- package/dest/synchronizer/index.js +1 -0
- package/dest/synchronizer/server_world_state_synchronizer.d.ts +11 -6
- package/dest/synchronizer/server_world_state_synchronizer.d.ts.map +1 -1
- package/dest/synchronizer/server_world_state_synchronizer.js +55 -43
- package/dest/test/utils.d.ts +1 -1
- package/dest/test/utils.d.ts.map +1 -1
- package/dest/test/utils.js +6 -1
- package/dest/testing.d.ts +2 -2
- package/dest/testing.d.ts.map +1 -1
- package/dest/testing.js +15 -4
- package/package.json +10 -12
- package/src/instrumentation/instrumentation.ts +18 -6
- package/src/native/ipc_world_state_instance.ts +503 -608
- package/src/native/merkle_trees_facade.ts +104 -59
- package/src/native/message.ts +300 -13
- package/src/native/native_world_state.ts +156 -121
- package/src/native/native_world_state_instance.ts +307 -96
- package/src/native/world_state_ops_queue.ts +190 -0
- package/src/synchronizer/errors.ts +8 -0
- package/src/synchronizer/factory.ts +1 -0
- package/src/synchronizer/index.ts +1 -0
- package/src/synchronizer/server_world_state_synchronizer.ts +63 -30
- package/src/test/utils.ts +10 -1
- package/src/testing.ts +14 -4
- package/dest/native/world_state_operation.d.ts +0 -7
- package/dest/native/world_state_operation.d.ts.map +0 -1
- package/dest/native/world_state_operation.js +0 -5
- package/src/native/world_state_operation.ts +0 -33
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../src/native/message.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../src/native/message.ts"],"names":[],"mappings":"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"}
|
package/dest/native/message.js
CHANGED
|
@@ -1,6 +1,39 @@
|
|
|
1
1
|
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
2
2
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
3
|
import { AppendOnlyTreeSnapshot, MerkleTreeId } from '@aztec/stdlib/trees';
|
|
4
|
+
export var WorldStateMessageType = /*#__PURE__*/ function(WorldStateMessageType) {
|
|
5
|
+
WorldStateMessageType[WorldStateMessageType["GET_TREE_INFO"] = 100] = "GET_TREE_INFO";
|
|
6
|
+
WorldStateMessageType[WorldStateMessageType["GET_STATE_REFERENCE"] = 101] = "GET_STATE_REFERENCE";
|
|
7
|
+
WorldStateMessageType[WorldStateMessageType["GET_INITIAL_STATE_REFERENCE"] = 102] = "GET_INITIAL_STATE_REFERENCE";
|
|
8
|
+
WorldStateMessageType[WorldStateMessageType["GET_LEAF_VALUE"] = 103] = "GET_LEAF_VALUE";
|
|
9
|
+
WorldStateMessageType[WorldStateMessageType["GET_LEAF_PREIMAGE"] = 104] = "GET_LEAF_PREIMAGE";
|
|
10
|
+
WorldStateMessageType[WorldStateMessageType["GET_SIBLING_PATH"] = 105] = "GET_SIBLING_PATH";
|
|
11
|
+
WorldStateMessageType[WorldStateMessageType["GET_BLOCK_NUMBERS_FOR_LEAF_INDICES"] = 106] = "GET_BLOCK_NUMBERS_FOR_LEAF_INDICES";
|
|
12
|
+
WorldStateMessageType[WorldStateMessageType["FIND_LEAF_INDICES"] = 107] = "FIND_LEAF_INDICES";
|
|
13
|
+
WorldStateMessageType[WorldStateMessageType["FIND_LOW_LEAF"] = 108] = "FIND_LOW_LEAF";
|
|
14
|
+
WorldStateMessageType[WorldStateMessageType["FIND_SIBLING_PATHS"] = 109] = "FIND_SIBLING_PATHS";
|
|
15
|
+
WorldStateMessageType[WorldStateMessageType["APPEND_LEAVES"] = 110] = "APPEND_LEAVES";
|
|
16
|
+
WorldStateMessageType[WorldStateMessageType["BATCH_INSERT"] = 111] = "BATCH_INSERT";
|
|
17
|
+
WorldStateMessageType[WorldStateMessageType["SEQUENTIAL_INSERT"] = 112] = "SEQUENTIAL_INSERT";
|
|
18
|
+
WorldStateMessageType[WorldStateMessageType["UPDATE_ARCHIVE"] = 113] = "UPDATE_ARCHIVE";
|
|
19
|
+
WorldStateMessageType[WorldStateMessageType["COMMIT"] = 114] = "COMMIT";
|
|
20
|
+
WorldStateMessageType[WorldStateMessageType["ROLLBACK"] = 115] = "ROLLBACK";
|
|
21
|
+
WorldStateMessageType[WorldStateMessageType["SYNC_BLOCK"] = 116] = "SYNC_BLOCK";
|
|
22
|
+
WorldStateMessageType[WorldStateMessageType["CREATE_FORK"] = 117] = "CREATE_FORK";
|
|
23
|
+
WorldStateMessageType[WorldStateMessageType["DELETE_FORK"] = 118] = "DELETE_FORK";
|
|
24
|
+
WorldStateMessageType[WorldStateMessageType["FINALIZE_BLOCKS"] = 119] = "FINALIZE_BLOCKS";
|
|
25
|
+
WorldStateMessageType[WorldStateMessageType["UNWIND_BLOCKS"] = 120] = "UNWIND_BLOCKS";
|
|
26
|
+
WorldStateMessageType[WorldStateMessageType["REMOVE_HISTORICAL_BLOCKS"] = 121] = "REMOVE_HISTORICAL_BLOCKS";
|
|
27
|
+
WorldStateMessageType[WorldStateMessageType["GET_STATUS"] = 122] = "GET_STATUS";
|
|
28
|
+
WorldStateMessageType[WorldStateMessageType["CREATE_CHECKPOINT"] = 123] = "CREATE_CHECKPOINT";
|
|
29
|
+
WorldStateMessageType[WorldStateMessageType["COMMIT_CHECKPOINT"] = 124] = "COMMIT_CHECKPOINT";
|
|
30
|
+
WorldStateMessageType[WorldStateMessageType["REVERT_CHECKPOINT"] = 125] = "REVERT_CHECKPOINT";
|
|
31
|
+
WorldStateMessageType[WorldStateMessageType["COMMIT_ALL_CHECKPOINTS"] = 126] = "COMMIT_ALL_CHECKPOINTS";
|
|
32
|
+
WorldStateMessageType[WorldStateMessageType["REVERT_ALL_CHECKPOINTS"] = 127] = "REVERT_ALL_CHECKPOINTS";
|
|
33
|
+
WorldStateMessageType[WorldStateMessageType["COPY_STORES"] = 128] = "COPY_STORES";
|
|
34
|
+
WorldStateMessageType[WorldStateMessageType["CLOSE"] = 999] = "CLOSE";
|
|
35
|
+
return WorldStateMessageType;
|
|
36
|
+
}({});
|
|
4
37
|
export function buildEmptyDBStats() {
|
|
5
38
|
return {
|
|
6
39
|
name: '',
|
|
@@ -119,6 +152,15 @@ export function sanitizeFullStatus(status) {
|
|
|
119
152
|
status.meta = sanitizeWorldStateTreeMeta(status.meta);
|
|
120
153
|
return status;
|
|
121
154
|
}
|
|
155
|
+
export function isWithForkId(body) {
|
|
156
|
+
return body && 'forkId' in body;
|
|
157
|
+
}
|
|
158
|
+
export function isWithRevision(body) {
|
|
159
|
+
return body && 'revision' in body;
|
|
160
|
+
}
|
|
161
|
+
export function isWithCanonical(body) {
|
|
162
|
+
return body && 'canonical' in body;
|
|
163
|
+
}
|
|
122
164
|
export function treeStateReferenceToSnapshot([root, size]) {
|
|
123
165
|
return new AppendOnlyTreeSnapshot(Fr.fromBuffer(root), Number(size));
|
|
124
166
|
}
|
|
@@ -11,32 +11,47 @@ import { type GenesisData } from '@aztec/stdlib/world-state';
|
|
|
11
11
|
import { WorldStateInstrumentation } from '../instrumentation/instrumentation.js';
|
|
12
12
|
import type { WorldStateTreeMapSizes } from '../synchronizer/factory.js';
|
|
13
13
|
import type { MerkleTreeAdminDatabase as MerkleTreeDatabase } from '../world-state-db/merkle_tree_db.js';
|
|
14
|
-
import { IpcWorldState } from './ipc_world_state_instance.js';
|
|
15
14
|
import { type WorldStateStatusFull, type WorldStateStatusSummary } from './message.js';
|
|
16
|
-
import
|
|
15
|
+
import { NativeWorldState } from './native_world_state_instance.js';
|
|
17
16
|
export declare const WORLD_STATE_DB_VERSION = 2;
|
|
18
17
|
export declare const WORLD_STATE_DIR = "world_state";
|
|
19
18
|
export declare class NativeWorldStateService implements MerkleTreeDatabase {
|
|
20
|
-
protected instance:
|
|
19
|
+
protected instance: NativeWorldState;
|
|
21
20
|
protected readonly worldStateInstrumentation: WorldStateInstrumentation;
|
|
22
21
|
protected readonly log: Logger;
|
|
23
22
|
private readonly genesis;
|
|
24
23
|
private readonly cleanup;
|
|
25
|
-
/** Factory to recreate a fresh IpcWorldState after clear(). */
|
|
26
|
-
private readonly recreateInstance?;
|
|
27
24
|
protected initialHeader: BlockHeader | undefined;
|
|
28
25
|
private cachedStatusSummary;
|
|
29
|
-
protected constructor(instance:
|
|
30
|
-
/**
|
|
31
|
-
|
|
26
|
+
protected constructor(instance: NativeWorldState, worldStateInstrumentation: WorldStateInstrumentation, log: Logger, genesis?: GenesisData, cleanup?: () => Promise<void>);
|
|
27
|
+
/**
|
|
28
|
+
* Opens a persistent world state at `dataDir`. Goes through `DatabaseVersionManager` so the
|
|
29
|
+
* caller's rollup address is bound to the on-disk schema and incompatible versions surface
|
|
30
|
+
* loudly. The LMDB envs commit with full fsync.
|
|
31
|
+
*/
|
|
32
32
|
static new(rollupAddress: EthAddress, dataDir: string, wsTreeMapSizes: WorldStateTreeMapSizes, genesis?: GenesisData, instrumentation?: WorldStateInstrumentation, bindings?: LoggerBindings, cleanup?: () => Promise<void>): Promise<NativeWorldStateService>;
|
|
33
|
-
|
|
33
|
+
/**
|
|
34
|
+
* Opens a world state in a fresh tmpdir with full fsync semantics. Use when you need the
|
|
35
|
+
* on-disk file to remain crash-recoverable (e.g. for snapshot/backup tests) but don't
|
|
36
|
+
* want a persistent dataDir. Pass `cleanupTmpDir=false` to keep the directory after
|
|
37
|
+
* close for inspection.
|
|
38
|
+
*
|
|
39
|
+
* If you don't care about crash-recoverability — i.e. you just want a fast scratch
|
|
40
|
+
* database for tests — use {@link ephemeral} instead.
|
|
41
|
+
*/
|
|
42
|
+
static tmp(rollupAddress?: EthAddress, cleanupTmpDir?: boolean, genesis?: GenesisData, instrumentation?: WorldStateInstrumentation, bindings?: LoggerBindings): Promise<NativeWorldStateService>;
|
|
43
|
+
/**
|
|
44
|
+
* Opens a fully-ephemeral world state. The directory is created in `os.tmpdir()`, the LMDB
|
|
45
|
+
* envs open with `MDB_NOSYNC | MDB_NOMETASYNC` so commits never block on fsync, and the
|
|
46
|
+
* directory is removed on dispose. A crash mid-write leaves the env unrecoverable.
|
|
47
|
+
*
|
|
48
|
+
* For unit tests and other isolated runs. Use {@link tmp} when you need fsync semantics in a
|
|
49
|
+
* tmp dir, and {@link new} for a persistent store. Skips {@link DatabaseVersionManager} —
|
|
50
|
+
* there is no on-disk schema to bind to and no rollup address is taken.
|
|
51
|
+
*/
|
|
34
52
|
static ephemeral(genesis?: GenesisData, instrumentation?: WorldStateInstrumentation, bindings?: LoggerBindings): Promise<NativeWorldStateService>;
|
|
35
|
-
static fromIpc(wsdbBackend: ConstructorParameters<typeof IpcWorldState>[0], instrumentation?: WorldStateInstrumentation, bindings?: LoggerBindings, genesis?: GenesisData, cleanup?: () => Promise<void>, recreateInstance?: () => Promise<NativeWorldStateInstance>): Promise<NativeWorldStateService>;
|
|
36
53
|
protected init(): Promise<void>;
|
|
37
54
|
clear(): Promise<void>;
|
|
38
|
-
/** Returns the IPC path of the underlying IPC backend, if available. */
|
|
39
|
-
getIpcPath(): string;
|
|
40
55
|
getCommitted(): MerkleTreeReadOperations;
|
|
41
56
|
getSnapshot(blockNumber: BlockNumber): MerkleTreeReadOperations;
|
|
42
57
|
fork(blockNumber?: BlockNumber, opts?: {
|
|
@@ -45,7 +60,6 @@ export declare class NativeWorldStateService implements MerkleTreeDatabase {
|
|
|
45
60
|
getInitialHeader(): BlockHeader;
|
|
46
61
|
handleL2BlockAndMessages(l2Block: L2Block, l1ToL2Messages: Fr[]): Promise<WorldStateStatusFull>;
|
|
47
62
|
close(): Promise<void>;
|
|
48
|
-
[Symbol.asyncDispose](): Promise<void>;
|
|
49
63
|
private buildInitialHeader;
|
|
50
64
|
private sanitizeAndCacheSummaryFromFull;
|
|
51
65
|
private sanitizeAndCacheSummary;
|
|
@@ -74,4 +88,4 @@ export declare class NativeWorldStateService implements MerkleTreeDatabase {
|
|
|
74
88
|
backupTo(dstPath: string, compact?: boolean): Promise<Record<Exclude<SnapshotDataKeys, 'archiver'>, string>>;
|
|
75
89
|
}
|
|
76
90
|
export declare const NATIVE_WORLD_STATE_DBS: readonly [readonly ["l1-to-l2-message-tree", "L1ToL2MessageTree"], readonly ["archive-tree", "ArchiveTree"], readonly ["public-data-tree", "PublicDataTree"], readonly ["note-hash-tree", "NoteHashTree"], readonly ["nullifier-tree", "NullifierTree"]];
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlX3dvcmxkX3N0YXRlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbmF0aXZlL25hdGl2ZV93b3JsZF9zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFOUQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUUzRCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQUUsS0FBSyxjQUFjLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFDdkYsT0FBTyxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFbkQsT0FBTyxLQUFLLEVBQ1YsYUFBYSxFQUNiLHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDMUIsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hFLE9BQU8sRUFBK0IsS0FBSyxxQkFBcUIsRUFBc0IsTUFBTSxxQkFBcUIsQ0FBQztBQUNsSCxPQUFPLEVBQUUsV0FBVyxFQUEwRCxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZHLE9BQU8sRUFBc0IsS0FBSyxXQUFXLEVBQXNCLE1BQU0sMkJBQTJCLENBQUM7QUFRckcsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDbEYsT0FBTyxLQUFLLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RSxPQUFPLEtBQUssRUFBRSx1QkFBdUIsSUFBSSxrQkFBa0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRXpHLE9BQU8sRUFFTCxLQUFLLG9CQUFvQixFQUN6QixLQUFLLHVCQUF1QixFQUs3QixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUs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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native_world_state.d.ts","sourceRoot":"","sources":["../../src/native/native_world_state.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"native_world_state.d.ts","sourceRoot":"","sources":["../../src/native/native_world_state.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
var _computedKey;
|
|
2
1
|
import { MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP } from '@aztec/constants';
|
|
3
2
|
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
4
3
|
import { fromEntries, padArrayEnd } from '@aztec/foundation/collection';
|
|
5
4
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
5
|
+
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
6
|
+
import { tryRmDir } from '@aztec/foundation/fs';
|
|
6
7
|
import { createLogger } from '@aztec/foundation/log';
|
|
7
8
|
import { DatabaseVersionManager } from '@aztec/stdlib/database-version/manager';
|
|
8
9
|
import { MerkleTreeId, NullifierLeaf, PublicDataTreeLeaf } from '@aztec/stdlib/trees';
|
|
@@ -10,63 +11,70 @@ import { BlockHeader, GlobalVariables, PartialStateReference, StateReference } f
|
|
|
10
11
|
import { EMPTY_GENESIS_DATA, WorldStateRevision } from '@aztec/stdlib/world-state';
|
|
11
12
|
import { getTelemetryClient } from '@aztec/telemetry-client';
|
|
12
13
|
import assert from 'assert/strict';
|
|
13
|
-
import {
|
|
14
|
+
import { mkdtemp, rm } from 'fs/promises';
|
|
14
15
|
import { tmpdir } from 'os';
|
|
15
16
|
import { join } from 'path';
|
|
16
17
|
import { WorldStateInstrumentation } from '../instrumentation/instrumentation.js';
|
|
17
|
-
import { IpcWorldState } from './ipc_world_state_instance.js';
|
|
18
18
|
import { MerkleTreesFacade, MerkleTreesForkFacade, serializeLeaf } from './merkle_trees_facade.js';
|
|
19
|
-
import { blockStateReference, sanitizeFullStatus, sanitizeSummary, treeStateReferenceToSnapshot } from './message.js';
|
|
19
|
+
import { WorldStateMessageType, blockStateReference, sanitizeFullStatus, sanitizeSummary, treeStateReferenceToSnapshot } from './message.js';
|
|
20
|
+
import { NativeWorldState } from './native_world_state_instance.js';
|
|
20
21
|
// The current version of the world state database schema
|
|
21
22
|
// Increment this when making incompatible changes to the database schema
|
|
22
23
|
export const WORLD_STATE_DB_VERSION = 2; // The initial version
|
|
23
24
|
export const WORLD_STATE_DIR = 'world_state';
|
|
24
|
-
|
|
25
|
+
const DEFAULT_TMP_TREE_MAP_SIZE_KB = 10 * 1024 * 1024;
|
|
26
|
+
/**
|
|
27
|
+
* Sets up a fresh `mkdtemp` directory + default `WorldStateTreeMapSizes` shared by both
|
|
28
|
+
* the `.tmp` (fsync-on) and `.ephemeral` (fsync-off) factories. Returns the raw tmpdir,
|
|
29
|
+
* the tree map sizes, and the package logger.
|
|
30
|
+
*/ async function createTmpWorldStateDir(bindings) {
|
|
31
|
+
const log = createLogger('world-state:database', bindings);
|
|
32
|
+
const dataDir = await mkdtemp(join(tmpdir(), 'aztec-world-state-'));
|
|
33
|
+
const wsTreeMapSizes = {
|
|
34
|
+
archiveTreeMapSizeKb: DEFAULT_TMP_TREE_MAP_SIZE_KB,
|
|
35
|
+
nullifierTreeMapSizeKb: DEFAULT_TMP_TREE_MAP_SIZE_KB,
|
|
36
|
+
noteHashTreeMapSizeKb: DEFAULT_TMP_TREE_MAP_SIZE_KB,
|
|
37
|
+
messageTreeMapSizeKb: DEFAULT_TMP_TREE_MAP_SIZE_KB,
|
|
38
|
+
publicDataTreeMapSizeKb: DEFAULT_TMP_TREE_MAP_SIZE_KB
|
|
39
|
+
};
|
|
40
|
+
log.debug(`Created temporary world state database at: ${dataDir} (map size ${DEFAULT_TMP_TREE_MAP_SIZE_KB} KB)`);
|
|
41
|
+
return {
|
|
42
|
+
dataDir,
|
|
43
|
+
wsTreeMapSizes,
|
|
44
|
+
log
|
|
45
|
+
};
|
|
46
|
+
}
|
|
25
47
|
export class NativeWorldStateService {
|
|
26
48
|
instance;
|
|
27
49
|
worldStateInstrumentation;
|
|
28
50
|
log;
|
|
29
51
|
genesis;
|
|
30
52
|
cleanup;
|
|
31
|
-
recreateInstance;
|
|
32
53
|
initialHeader;
|
|
33
54
|
// This is read heavily and only changes when data is persisted, so we cache it
|
|
34
55
|
cachedStatusSummary;
|
|
35
|
-
constructor(instance, worldStateInstrumentation, log, genesis = EMPTY_GENESIS_DATA, cleanup = ()=>Promise.resolve()
|
|
56
|
+
constructor(instance, worldStateInstrumentation, log, genesis = EMPTY_GENESIS_DATA, cleanup = ()=>Promise.resolve()){
|
|
36
57
|
this.instance = instance;
|
|
37
58
|
this.worldStateInstrumentation = worldStateInstrumentation;
|
|
38
59
|
this.log = log;
|
|
39
60
|
this.genesis = genesis;
|
|
40
61
|
this.cleanup = cleanup;
|
|
41
|
-
this.recreateInstance = recreateInstance;
|
|
42
62
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
}
|
|
63
|
+
/**
|
|
64
|
+
* Opens a persistent world state at `dataDir`. Goes through `DatabaseVersionManager` so the
|
|
65
|
+
* caller's rollup address is bound to the on-disk schema and incompatible versions surface
|
|
66
|
+
* loudly. The LMDB envs commit with full fsync.
|
|
67
|
+
*/ static async new(rollupAddress, dataDir, wsTreeMapSizes, genesis = EMPTY_GENESIS_DATA, instrumentation = new WorldStateInstrumentation(getTelemetryClient()), bindings, cleanup = ()=>Promise.resolve()) {
|
|
49
68
|
const log = createLogger('world-state:database', bindings);
|
|
50
69
|
const worldStateDirectory = join(dataDir, WORLD_STATE_DIR);
|
|
51
70
|
const versionManager = new DatabaseVersionManager({
|
|
52
71
|
schemaVersion: WORLD_STATE_DB_VERSION,
|
|
53
72
|
rollupAddress,
|
|
54
73
|
dataDirectory: worldStateDirectory,
|
|
55
|
-
onOpen: (dir)=>
|
|
74
|
+
onOpen: (dir)=>Promise.resolve(new NativeWorldState(dir, wsTreeMapSizes, genesis, instrumentation, bindings, undefined, /*ephemeral=*/ false))
|
|
56
75
|
});
|
|
57
76
|
const [instance] = await versionManager.open();
|
|
58
|
-
const
|
|
59
|
-
await rm(worldStateDirectory, {
|
|
60
|
-
recursive: true,
|
|
61
|
-
force: true,
|
|
62
|
-
maxRetries: 3
|
|
63
|
-
});
|
|
64
|
-
await mkdir(worldStateDirectory, {
|
|
65
|
-
recursive: true
|
|
66
|
-
});
|
|
67
|
-
return IpcWorldState.spawn(worldStateDirectory, wsTreeMapSizes, genesis, instrumentation, bindings);
|
|
68
|
-
};
|
|
69
|
-
const worldState = new this(instance, instrumentation, log, genesis, cleanup, recreateInstance);
|
|
77
|
+
const worldState = new this(instance, instrumentation, log, genesis, cleanup);
|
|
70
78
|
try {
|
|
71
79
|
await worldState.init();
|
|
72
80
|
} catch (e) {
|
|
@@ -75,23 +83,16 @@ export class NativeWorldStateService {
|
|
|
75
83
|
}
|
|
76
84
|
return worldState;
|
|
77
85
|
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
nullifierTreeMapSizeKb: dbMapSizeKb,
|
|
89
|
-
noteHashTreeMapSizeKb: dbMapSizeKb,
|
|
90
|
-
messageTreeMapSizeKb: dbMapSizeKb,
|
|
91
|
-
publicDataTreeMapSizeKb: dbMapSizeKb
|
|
92
|
-
};
|
|
93
|
-
log.debug(`Created temporary world state database at: ${dataDir} with tree map size: ${dbMapSizeKb}`);
|
|
94
|
-
const instance = await IpcWorldState.spawn(dataDir, worldStateTreeMapSizes, genesis, instrumentation, bindings);
|
|
86
|
+
/**
|
|
87
|
+
* Opens a world state in a fresh tmpdir with full fsync semantics. Use when you need the
|
|
88
|
+
* on-disk file to remain crash-recoverable (e.g. for snapshot/backup tests) but don't
|
|
89
|
+
* want a persistent dataDir. Pass `cleanupTmpDir=false` to keep the directory after
|
|
90
|
+
* close for inspection.
|
|
91
|
+
*
|
|
92
|
+
* If you don't care about crash-recoverability — i.e. you just want a fast scratch
|
|
93
|
+
* database for tests — use {@link ephemeral} instead.
|
|
94
|
+
*/ static async tmp(rollupAddress = EthAddress.ZERO, cleanupTmpDir = true, genesis = EMPTY_GENESIS_DATA, instrumentation = new WorldStateInstrumentation(getTelemetryClient()), bindings) {
|
|
95
|
+
const { dataDir, wsTreeMapSizes, log } = await createTmpWorldStateDir(bindings);
|
|
95
96
|
const cleanup = async ()=>{
|
|
96
97
|
if (cleanupTmpDir) {
|
|
97
98
|
await rm(dataDir, {
|
|
@@ -104,36 +105,36 @@ export class NativeWorldStateService {
|
|
|
104
105
|
log.debug(`Leaving temporary world state database: ${dataDir}`);
|
|
105
106
|
}
|
|
106
107
|
};
|
|
107
|
-
|
|
108
|
+
return this.new(rollupAddress, dataDir, wsTreeMapSizes, genesis, instrumentation, bindings, cleanup);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Opens a fully-ephemeral world state. The directory is created in `os.tmpdir()`, the LMDB
|
|
112
|
+
* envs open with `MDB_NOSYNC | MDB_NOMETASYNC` so commits never block on fsync, and the
|
|
113
|
+
* directory is removed on dispose. A crash mid-write leaves the env unrecoverable.
|
|
114
|
+
*
|
|
115
|
+
* For unit tests and other isolated runs. Use {@link tmp} when you need fsync semantics in a
|
|
116
|
+
* tmp dir, and {@link new} for a persistent store. Skips {@link DatabaseVersionManager} —
|
|
117
|
+
* there is no on-disk schema to bind to and no rollup address is taken.
|
|
118
|
+
*/ static async ephemeral(genesis = EMPTY_GENESIS_DATA, instrumentation = new WorldStateInstrumentation(getTelemetryClient()), bindings) {
|
|
119
|
+
const { dataDir, wsTreeMapSizes, log } = await createTmpWorldStateDir(bindings);
|
|
120
|
+
const cleanup = async ()=>{
|
|
108
121
|
await rm(dataDir, {
|
|
109
122
|
recursive: true,
|
|
110
123
|
force: true,
|
|
111
124
|
maxRetries: 3
|
|
112
125
|
});
|
|
113
|
-
|
|
114
|
-
recursive: true
|
|
115
|
-
});
|
|
116
|
-
return IpcWorldState.spawn(dataDir, worldStateTreeMapSizes, genesis, instrumentation, bindings);
|
|
126
|
+
log.debug(`Deleted ephemeral world state database: ${dataDir}`);
|
|
117
127
|
};
|
|
118
|
-
const
|
|
128
|
+
const instance = new NativeWorldState(join(dataDir, WORLD_STATE_DIR), wsTreeMapSizes, genesis, instrumentation, bindings, undefined, /*ephemeral=*/ true);
|
|
129
|
+
const worldState = new this(instance, instrumentation, log, genesis, cleanup);
|
|
119
130
|
try {
|
|
120
131
|
await worldState.init();
|
|
121
132
|
} catch (e) {
|
|
122
|
-
log.error(`Error initializing
|
|
133
|
+
log.error(`Error initializing ephemeral world state: ${e}`);
|
|
123
134
|
throw e;
|
|
124
135
|
}
|
|
125
136
|
return worldState;
|
|
126
137
|
}
|
|
127
|
-
static ephemeral(genesis = EMPTY_GENESIS_DATA, instrumentation = new WorldStateInstrumentation(getTelemetryClient()), bindings) {
|
|
128
|
-
return this.tmp(/*cleanupTmpDir=*/ true, genesis, instrumentation, bindings);
|
|
129
|
-
}
|
|
130
|
-
static async fromIpc(wsdbBackend, instrumentation = new WorldStateInstrumentation(getTelemetryClient()), bindings, genesis = EMPTY_GENESIS_DATA, cleanup = ()=>Promise.resolve(), recreateInstance) {
|
|
131
|
-
const log = createLogger('world-state:database', bindings);
|
|
132
|
-
const instance = new IpcWorldState(wsdbBackend, instrumentation, bindings);
|
|
133
|
-
const worldState = new this(instance, instrumentation, log, genesis, cleanup, recreateInstance);
|
|
134
|
-
await worldState.init();
|
|
135
|
-
return worldState;
|
|
136
|
-
}
|
|
137
138
|
async init() {
|
|
138
139
|
const status = await this.getStatusSummary();
|
|
139
140
|
if (!status.treesAreSynched) {
|
|
@@ -155,21 +156,10 @@ export class NativeWorldStateService {
|
|
|
155
156
|
assert.strictEqual(initialHeaderIndex, 0n, 'Invalid initial archive state');
|
|
156
157
|
}
|
|
157
158
|
async clear() {
|
|
158
|
-
if (!this.recreateInstance) {
|
|
159
|
-
throw new Error('clear() is not available for externally-managed IPC backends');
|
|
160
|
-
}
|
|
161
|
-
this.log.warn('Clearing world state: shutting down WSDB, deleting data, and recreating');
|
|
162
159
|
await this.instance.close();
|
|
163
160
|
this.cachedStatusSummary = undefined;
|
|
164
|
-
this.instance
|
|
165
|
-
|
|
166
|
-
this.log.info('World state cleared and reinitialized from genesis');
|
|
167
|
-
}
|
|
168
|
-
/** Returns the IPC path of the underlying IPC backend, if available. */ getIpcPath() {
|
|
169
|
-
if (this.instance instanceof IpcWorldState) {
|
|
170
|
-
return this.instance.getIpcPath();
|
|
171
|
-
}
|
|
172
|
-
throw new Error('getIpcPath() is only available with IPC world state');
|
|
161
|
+
await tryRmDir(this.instance.getDataDir(), this.log);
|
|
162
|
+
this.instance = this.instance.clone();
|
|
173
163
|
}
|
|
174
164
|
getCommitted() {
|
|
175
165
|
return new MerkleTreesFacade(this.instance, this.initialHeader, WorldStateRevision.empty());
|
|
@@ -178,11 +168,12 @@ export class NativeWorldStateService {
|
|
|
178
168
|
return new MerkleTreesFacade(this.instance, this.initialHeader, new WorldStateRevision(/*forkId=*/ 0, /* blockNumber=*/ blockNumber, /* includeUncommitted=*/ false));
|
|
179
169
|
}
|
|
180
170
|
async fork(blockNumber, opts = {}) {
|
|
181
|
-
const
|
|
171
|
+
const resp = await this.instance.call(WorldStateMessageType.CREATE_FORK, {
|
|
182
172
|
latest: blockNumber === undefined,
|
|
183
|
-
blockNumber: blockNumber ?? BlockNumber.ZERO
|
|
173
|
+
blockNumber: blockNumber ?? BlockNumber.ZERO,
|
|
174
|
+
canonical: true
|
|
184
175
|
});
|
|
185
|
-
return new MerkleTreesForkFacade(this.instance, this.initialHeader, new WorldStateRevision(/*forkId=*/ forkId, /* blockNumber=*/ WorldStateRevision.LATEST, /* includeUncommitted=*/ true), opts);
|
|
176
|
+
return new MerkleTreesForkFacade(this.instance, this.initialHeader, new WorldStateRevision(/*forkId=*/ resp.forkId, /* blockNumber=*/ WorldStateRevision.LATEST, /* includeUncommitted=*/ true), opts);
|
|
186
177
|
}
|
|
187
178
|
getInitialHeader() {
|
|
188
179
|
return this.initialHeader;
|
|
@@ -206,31 +197,27 @@ export class NativeWorldStateService {
|
|
|
206
197
|
});
|
|
207
198
|
});
|
|
208
199
|
try {
|
|
209
|
-
|
|
200
|
+
return await this.instance.call(WorldStateMessageType.SYNC_BLOCK, {
|
|
210
201
|
blockNumber: l2Block.number,
|
|
211
202
|
blockHeaderHash: (await l2Block.hash()).toBuffer(),
|
|
203
|
+
// Forwarded so the native sync verifies the archive root against canonical and rejects a divergent tree.
|
|
204
|
+
expectedArchiveRoot: l2Block.archive.root.toBuffer(),
|
|
205
|
+
expectedPreviousArchiveRoot: l2Block.header.lastArchive.root.toBuffer(),
|
|
212
206
|
paddedL1ToL2Messages: paddedL1ToL2Messages.map(serializeLeaf),
|
|
213
207
|
paddedNoteHashes: paddedNoteHashes.map(serializeLeaf),
|
|
214
208
|
paddedNullifiers: paddedNullifiers.map(serializeLeaf),
|
|
215
209
|
publicDataWrites: publicDataWrites.map(serializeLeaf),
|
|
216
|
-
blockStateRef: blockStateReference(l2Block.header.state)
|
|
217
|
-
|
|
218
|
-
|
|
210
|
+
blockStateRef: blockStateReference(l2Block.header.state),
|
|
211
|
+
canonical: true
|
|
212
|
+
}, this.sanitizeAndCacheSummaryFromFull.bind(this), this.deleteCachedSummary.bind(this));
|
|
219
213
|
} catch (err) {
|
|
220
|
-
this.deleteCachedSummary();
|
|
221
214
|
this.worldStateInstrumentation.incCriticalErrors('synch_pending_block');
|
|
222
215
|
throw err;
|
|
223
216
|
}
|
|
224
217
|
}
|
|
225
218
|
async close() {
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
} finally{
|
|
229
|
-
await this.cleanup();
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
async [_computedKey]() {
|
|
233
|
-
await this.close();
|
|
219
|
+
await this.instance.close();
|
|
220
|
+
await this.cleanup();
|
|
234
221
|
}
|
|
235
222
|
async buildInitialHeader() {
|
|
236
223
|
const state = await this.getInitialStateReference();
|
|
@@ -255,7 +242,7 @@ export class NativeWorldStateService {
|
|
|
255
242
|
};
|
|
256
243
|
return sanitized;
|
|
257
244
|
}
|
|
258
|
-
deleteCachedSummary() {
|
|
245
|
+
deleteCachedSummary(_) {
|
|
259
246
|
this.cachedStatusSummary = undefined;
|
|
260
247
|
}
|
|
261
248
|
/**
|
|
@@ -264,9 +251,11 @@ export class NativeWorldStateService {
|
|
|
264
251
|
* @returns The new WorldStateStatus
|
|
265
252
|
*/ async setFinalized(toBlockNumber) {
|
|
266
253
|
try {
|
|
267
|
-
|
|
254
|
+
await this.instance.call(WorldStateMessageType.FINALIZE_BLOCKS, {
|
|
255
|
+
toBlockNumber,
|
|
256
|
+
canonical: true
|
|
257
|
+
}, this.sanitizeAndCacheSummary.bind(this), this.deleteCachedSummary.bind(this));
|
|
268
258
|
} catch (err) {
|
|
269
|
-
this.deleteCachedSummary();
|
|
270
259
|
this.worldStateInstrumentation.incCriticalErrors('finalize_block');
|
|
271
260
|
throw err;
|
|
272
261
|
}
|
|
@@ -278,9 +267,11 @@ export class NativeWorldStateService {
|
|
|
278
267
|
* @returns The new WorldStateStatus
|
|
279
268
|
*/ async removeHistoricalBlocks(toBlockNumber) {
|
|
280
269
|
try {
|
|
281
|
-
return
|
|
270
|
+
return await this.instance.call(WorldStateMessageType.REMOVE_HISTORICAL_BLOCKS, {
|
|
271
|
+
toBlockNumber,
|
|
272
|
+
canonical: true
|
|
273
|
+
}, this.sanitizeAndCacheSummaryFromFull.bind(this), this.deleteCachedSummary.bind(this));
|
|
282
274
|
} catch (err) {
|
|
283
|
-
this.deleteCachedSummary();
|
|
284
275
|
this.worldStateInstrumentation.incCriticalErrors('prune_historical_block');
|
|
285
276
|
throw err;
|
|
286
277
|
}
|
|
@@ -291,9 +282,11 @@ export class NativeWorldStateService {
|
|
|
291
282
|
* @returns The new WorldStateStatus
|
|
292
283
|
*/ async unwindBlocks(toBlockNumber) {
|
|
293
284
|
try {
|
|
294
|
-
return
|
|
285
|
+
return await this.instance.call(WorldStateMessageType.UNWIND_BLOCKS, {
|
|
286
|
+
toBlockNumber,
|
|
287
|
+
canonical: true
|
|
288
|
+
}, this.sanitizeAndCacheSummaryFromFull.bind(this), this.deleteCachedSummary.bind(this));
|
|
295
289
|
} catch (err) {
|
|
296
|
-
this.deleteCachedSummary();
|
|
297
290
|
this.worldStateInstrumentation.incCriticalErrors('prune_pending_block');
|
|
298
291
|
throw err;
|
|
299
292
|
}
|
|
@@ -304,17 +297,25 @@ export class NativeWorldStateService {
|
|
|
304
297
|
...this.cachedStatusSummary
|
|
305
298
|
};
|
|
306
299
|
}
|
|
307
|
-
return
|
|
300
|
+
return await this.instance.call(WorldStateMessageType.GET_STATUS, {
|
|
301
|
+
canonical: true
|
|
302
|
+
}, this.sanitizeAndCacheSummary.bind(this));
|
|
308
303
|
}
|
|
309
304
|
updateLeaf(_treeId, _leaf, _index) {
|
|
310
305
|
return Promise.reject(new Error('Method not implemented'));
|
|
311
306
|
}
|
|
312
307
|
async getInitialStateReference() {
|
|
313
|
-
const
|
|
314
|
-
|
|
308
|
+
const resp = await this.instance.call(WorldStateMessageType.GET_INITIAL_STATE_REFERENCE, {
|
|
309
|
+
canonical: true
|
|
310
|
+
});
|
|
311
|
+
return new StateReference(treeStateReferenceToSnapshot(resp.state[MerkleTreeId.L1_TO_L2_MESSAGE_TREE]), new PartialStateReference(treeStateReferenceToSnapshot(resp.state[MerkleTreeId.NOTE_HASH_TREE]), treeStateReferenceToSnapshot(resp.state[MerkleTreeId.NULLIFIER_TREE]), treeStateReferenceToSnapshot(resp.state[MerkleTreeId.PUBLIC_DATA_TREE])));
|
|
315
312
|
}
|
|
316
313
|
async backupTo(dstPath, compact = true) {
|
|
317
|
-
await this.instance.
|
|
314
|
+
await this.instance.call(WorldStateMessageType.COPY_STORES, {
|
|
315
|
+
dstPath,
|
|
316
|
+
compact,
|
|
317
|
+
canonical: true
|
|
318
|
+
});
|
|
318
319
|
return fromEntries(NATIVE_WORLD_STATE_DBS.map(([name, dir])=>[
|
|
319
320
|
name,
|
|
320
321
|
join(dstPath, dir, 'data.mdb')
|