diff --git a/yarn-project/archiver/src/archiver/kv_archiver_store/kv_archiver_store.test.ts b/yarn-project/archiver/src/archiver/kv_archiver_store/kv_archiver_store.test.ts index 520ac236d05..90b3693716c 100644 --- a/yarn-project/archiver/src/archiver/kv_archiver_store/kv_archiver_store.test.ts +++ b/yarn-project/archiver/src/archiver/kv_archiver_store/kv_archiver_store.test.ts @@ -1,4 +1,4 @@ -import { AztecLmdbStore } from '@aztec/kv-store'; +import { openTmpStore } from '@aztec/kv-store/utils'; import { describeArchiverDataStore } from '../archiver_store_test_suite.js'; import { KVArchiverDataStore } from './kv_archiver_store.js'; @@ -6,8 +6,8 @@ import { KVArchiverDataStore } from './kv_archiver_store.js'; describe('KVArchiverDataStore', () => { let archiverStore: KVArchiverDataStore; - beforeEach(async () => { - archiverStore = new KVArchiverDataStore(await AztecLmdbStore.openTmp()); + beforeEach(() => { + archiverStore = new KVArchiverDataStore(openTmpStore()); }); describeArchiverDataStore('ArchiverStore', () => archiverStore); diff --git a/yarn-project/archiver/src/archiver/kv_archiver_store/kv_archiver_store.ts b/yarn-project/archiver/src/archiver/kv_archiver_store/kv_archiver_store.ts index 7048dbbdc85..6b8339d09fc 100644 --- a/yarn-project/archiver/src/archiver/kv_archiver_store/kv_archiver_store.ts +++ b/yarn-project/archiver/src/archiver/kv_archiver_store/kv_archiver_store.ts @@ -35,7 +35,7 @@ export class KVArchiverDataStore implements ArchiverDataStore { #contractClassStore: ContractClassStore; #contractInstanceStore: ContractInstanceStore; - #log = createDebugLogger('aztec:archiver:lmdb'); + #log = createDebugLogger('aztec:archiver:data-store'); constructor(db: AztecKVStore, logsMaxPageSize: number = 1000) { this.#blockStore = new BlockStore(db); diff --git a/yarn-project/aztec-node/src/aztec-node/server.ts b/yarn-project/aztec-node/src/aztec-node/server.ts index f55dd757bf4..8e42de8e586 100644 --- a/yarn-project/aztec-node/src/aztec-node/server.ts +++ b/yarn-project/aztec-node/src/aztec-node/server.ts @@ -40,7 +40,9 @@ import { computePublicDataTreeLeafSlot } from '@aztec/circuits.js/abis'; import { L1ContractAddresses, createEthereumChain } from '@aztec/ethereum'; import { AztecAddress } from '@aztec/foundation/aztec-address'; import { createDebugLogger } from '@aztec/foundation/log'; -import { AztecKVStore, AztecLmdbStore } from '@aztec/kv-store'; +import { AztecKVStore } from '@aztec/kv-store'; +import { AztecLmdbStore } from '@aztec/kv-store/lmdb'; +import { initStoreForRollup } from '@aztec/kv-store/utils'; import { AztecKVTxPool, P2P, createP2PClient } from '@aztec/p2p'; import { GlobalVariableBuilder, @@ -104,7 +106,12 @@ export class AztecNodeService implements AztecNode { } const log = createDebugLogger('aztec:node'); - const store = await AztecLmdbStore.open(config.l1Contracts.rollupAddress, config.dataDirectory); + const storeLog = createDebugLogger('aztec:node:lmdb'); + const store = await initStoreForRollup( + AztecLmdbStore.open(config.dataDirectory, storeLog), + config.l1Contracts.rollupAddress, + storeLog, + ); let archiver: ArchiveSource; if (!config.archiverUrl) { diff --git a/yarn-project/aztec/src/cli/cmds/start_archiver.ts b/yarn-project/aztec/src/cli/cmds/start_archiver.ts index 0a07c96ae6c..653636f8c8f 100644 --- a/yarn-project/aztec/src/cli/cmds/start_archiver.ts +++ b/yarn-project/aztec/src/cli/cmds/start_archiver.ts @@ -5,8 +5,10 @@ import { createArchiverRpcServer, getConfigEnvVars as getArchiverConfigEnvVars, } from '@aztec/archiver'; +import { createDebugLogger } from '@aztec/aztec.js'; import { ServerList } from '@aztec/foundation/json-rpc/server'; -import { AztecLmdbStore } from '@aztec/kv-store'; +import { AztecLmdbStore } from '@aztec/kv-store/lmdb'; +import { initStoreForRollup } from '@aztec/kv-store/utils'; import { mergeEnvVarsAndCliOptions, parseModuleOptions } from '../util.js'; @@ -20,7 +22,12 @@ export const startArchiver = async (options: any, signalHandlers: (() => Promise // merge env vars and cli options const archiverConfig = mergeEnvVarsAndCliOptions(archiverConfigEnvVars, archiverCliOptions, true); - const store = await AztecLmdbStore.open(archiverConfig.l1Contracts.rollupAddress, archiverConfig.dataDirectory); + const storeLog = createDebugLogger('aztec:archiver:lmdb'); + const store = await initStoreForRollup( + AztecLmdbStore.open(archiverConfig.dataDirectory, storeLog), + archiverConfig.l1Contracts.rollupAddress, + storeLog, + ); const archiverStore = new KVArchiverDataStore(store, archiverConfig.maxLogs); const archiver = await Archiver.createAndSync(archiverConfig, archiverStore, true); diff --git a/yarn-project/deploy_npm.sh b/yarn-project/deploy_npm.sh index c5a4757f722..ddbc1226be5 100755 --- a/yarn-project/deploy_npm.sh +++ b/yarn-project/deploy_npm.sh @@ -90,6 +90,7 @@ deploy_package l1-artifacts deploy_package ethereum deploy_package noir-compiler deploy_package noir-contracts +deploy_package kv-store deploy_package merkle-tree deploy_package noir-protocol-circuits deploy_package simulator diff --git a/yarn-project/end-to-end/src/e2e_blacklist_token_contract.test.ts b/yarn-project/end-to-end/src/e2e_blacklist_token_contract.test.ts index d6f41b87384..9f462b241dc 100644 --- a/yarn-project/end-to-end/src/e2e_blacklist_token_contract.test.ts +++ b/yarn-project/end-to-end/src/e2e_blacklist_token_contract.test.ts @@ -14,7 +14,7 @@ import { computeAuthWitMessageHash, computeMessageSecretHash, } from '@aztec/aztec.js'; -import { AztecLmdbStore } from '@aztec/kv-store'; +import { openTmpStore } from '@aztec/kv-store/utils'; import { Pedersen, SparseTree, newTree } from '@aztec/merkle-tree'; import { SlowTreeContract, TokenBlacklistContract, TokenContract } from '@aztec/noir-contracts'; @@ -104,7 +104,7 @@ describe('e2e_blacklist_token_contract', () => { slowTree = await SlowTreeContract.deploy(wallets[0]).send().deployed(); const depth = 254; - slowUpdateTreeSimulator = await newTree(SparseTree, await AztecLmdbStore.openTmp(), new Pedersen(), 'test', depth); + slowUpdateTreeSimulator = await newTree(SparseTree, openTmpStore(), new Pedersen(), 'test', depth); const deployTx = TokenBlacklistContract.deploy(wallets[0], accounts[0], slowTree.address).send({}); const receipt = await deployTx.wait(); diff --git a/yarn-project/end-to-end/src/e2e_slow_tree.test.ts b/yarn-project/end-to-end/src/e2e_slow_tree.test.ts index 21693a62aea..32531fc15c3 100644 --- a/yarn-project/end-to-end/src/e2e_slow_tree.test.ts +++ b/yarn-project/end-to-end/src/e2e_slow_tree.test.ts @@ -1,6 +1,6 @@ /* eslint-disable camelcase */ import { CheatCodes, DebugLogger, Fr, Wallet } from '@aztec/aztec.js'; -import { AztecLmdbStore } from '@aztec/kv-store'; +import { openTmpStore } from '@aztec/kv-store/utils'; import { Pedersen, SparseTree, newTree } from '@aztec/merkle-tree'; import { SlowTreeContract } from '@aztec/noir-contracts/SlowTree'; @@ -23,13 +23,7 @@ describe('e2e_slow_tree', () => { it('Messing around with noir slow tree', async () => { const depth = 254; - const slowUpdateTreeSimulator = await newTree( - SparseTree, - await AztecLmdbStore.openTmp(), - new Pedersen(), - 'test', - depth, - ); + const slowUpdateTreeSimulator = await newTree(SparseTree, openTmpStore(), new Pedersen(), 'test', depth); const getMembershipProof = async (index: bigint, includeUncommitted: boolean) => { return { index, diff --git a/yarn-project/end-to-end/src/integration_archiver_l1_to_l2.test.ts b/yarn-project/end-to-end/src/integration_archiver_l1_to_l2.test.ts index 25e501b8fdb..fd673178798 100644 --- a/yarn-project/end-to-end/src/integration_archiver_l1_to_l2.test.ts +++ b/yarn-project/end-to-end/src/integration_archiver_l1_to_l2.test.ts @@ -10,7 +10,7 @@ import { Wallet, computeMessageSecretHash, } from '@aztec/aztec.js'; -import { AztecLmdbStore } from '@aztec/kv-store'; +import { initStoreForRollup, openTmpStore } from '@aztec/kv-store/utils'; import { TokenContract } from '@aztec/noir-contracts/Token'; import { Chain, HttpTransport, PublicClient } from 'viem'; @@ -43,7 +43,9 @@ describe('archiver integration with l1 to l2 messages', () => { config.archiverPollingIntervalMS = 100; archiver = await Archiver.createAndSync( { ...config, l1Contracts: deployL1ContractsValues.l1ContractAddresses }, - new KVArchiverDataStore(await AztecLmdbStore.open(deployL1ContractsValues.l1ContractAddresses.rollupAddress)), + new KVArchiverDataStore( + await initStoreForRollup(openTmpStore(), deployL1ContractsValues.l1ContractAddresses.rollupAddress), + ), ); const walletClient = deployL1ContractsValues.walletClient; diff --git a/yarn-project/end-to-end/src/integration_l1_publisher.test.ts b/yarn-project/end-to-end/src/integration_l1_publisher.test.ts index ddac114d698..01d0e5a240b 100644 --- a/yarn-project/end-to-end/src/integration_l1_publisher.test.ts +++ b/yarn-project/end-to-end/src/integration_l1_publisher.test.ts @@ -30,7 +30,7 @@ import { } from '@aztec/circuits.js/factories'; import { createEthereumChain } from '@aztec/ethereum'; import { makeTuple, range } from '@aztec/foundation/array'; -import { AztecLmdbStore } from '@aztec/kv-store'; +import { openTmpStore } from '@aztec/kv-store/utils'; import { InboxAbi, OutboxAbi, RollupAbi } from '@aztec/l1-artifacts'; import { EmptyRollupProver, @@ -136,7 +136,7 @@ describe('L1Publisher integration', () => { publicClient, }); - builderDb = await MerkleTrees.new(await AztecLmdbStore.openTmp()).then(t => t.asLatest()); + builderDb = await MerkleTrees.new(openTmpStore()).then(t => t.asLatest()); const vks = getVerificationKeys(); const simulator = new RealRollupCircuitSimulator(); const prover = new EmptyRollupProver(); diff --git a/yarn-project/kv-store/package.json b/yarn-project/kv-store/package.json index 4c440901969..55808c67312 100644 --- a/yarn-project/kv-store/package.json +++ b/yarn-project/kv-store/package.json @@ -2,7 +2,11 @@ "name": "@aztec/kv-store", "version": "0.1.0", "type": "module", - "exports": "./dest/index.js", + "exports": { + ".": "./dest/interfaces/index.js", + "./lmdb": "./dest/lmdb/index.js", + "./utils": "./dest/utils.js" + }, "scripts": { "build": "yarn clean && tsc -b", "build:dev": "tsc -b --watch", @@ -43,7 +47,6 @@ "src", "!*.test.*" ], - "types": "./dest/index.d.ts", "engines": { "node": ">=18" } diff --git a/yarn-project/kv-store/src/index.ts b/yarn-project/kv-store/src/index.ts deleted file mode 100644 index b35a4fb3d53..00000000000 --- a/yarn-project/kv-store/src/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -export * from './interfaces/array.js'; -export * from './interfaces/map.js'; -export * from './interfaces/counter.js'; -export * from './interfaces/singleton.js'; -export * from './interfaces/store.js'; -export * from './lmdb/store.js'; -export { Range } from './interfaces/common.js'; diff --git a/yarn-project/kv-store/src/interfaces/index.ts b/yarn-project/kv-store/src/interfaces/index.ts new file mode 100644 index 00000000000..e478b630e65 --- /dev/null +++ b/yarn-project/kv-store/src/interfaces/index.ts @@ -0,0 +1,6 @@ +export * from './array.js'; +export * from './map.js'; +export * from './counter.js'; +export * from './singleton.js'; +export * from './store.js'; +export { Range } from './common.js'; diff --git a/yarn-project/kv-store/src/interfaces/store.ts b/yarn-project/kv-store/src/interfaces/store.ts index 2e2777f0e8a..9b0f1c9364d 100644 --- a/yarn-project/kv-store/src/interfaces/store.ts +++ b/yarn-project/kv-store/src/interfaces/store.ts @@ -45,4 +45,9 @@ export interface AztecKVStore { * @param callback - The callback to execute in a transaction */ transaction>>(callback: () => T): Promise; + + /** + * Clears the store + */ + clear(): Promise; } diff --git a/yarn-project/kv-store/src/lmdb/index.ts b/yarn-project/kv-store/src/lmdb/index.ts new file mode 100644 index 00000000000..53e012fa539 --- /dev/null +++ b/yarn-project/kv-store/src/lmdb/index.ts @@ -0,0 +1 @@ +export { AztecLmdbStore } from './store.js'; diff --git a/yarn-project/kv-store/src/lmdb/store.ts b/yarn-project/kv-store/src/lmdb/store.ts index bbd866efe8c..7f9286403ce 100644 --- a/yarn-project/kv-store/src/lmdb/store.ts +++ b/yarn-project/kv-store/src/lmdb/store.ts @@ -1,5 +1,4 @@ -import { EthAddress } from '@aztec/foundation/eth-address'; -import { Logger, createDebugLogger } from '@aztec/foundation/log'; +import { createDebugLogger } from '@aztec/foundation/log'; import { Database, Key, RootDatabase, open } from 'lmdb'; @@ -20,12 +19,9 @@ export class AztecLmdbStore implements AztecKVStore { #rootDb: RootDatabase; #data: Database; #multiMapData: Database; - #rollupAddress: AztecSingleton; - #log: Logger; - constructor(rootDb: RootDatabase, log: Logger) { + constructor(rootDb: RootDatabase) { this.#rootDb = rootDb; - this.#log = log; // big bucket to store all the data this.#data = rootDb.openDB('data', { @@ -38,8 +34,6 @@ export class AztecLmdbStore implements AztecKVStore { keyEncoding: 'ordered-binary', dupSort: true, }); - - this.#rollupAddress = this.openSingleton('rollupAddress'); } /** @@ -50,30 +44,14 @@ export class AztecLmdbStore implements AztecKVStore { * the database is cleared before returning the store. This way data is not accidentally shared between * different rollup instances. * - * @param rollupAddress - The ETH address of the rollup contract * @param path - A path on the disk to store the database. Optional * @param log - A logger to use. Optional * @returns The store */ - static async open( - rollupAddress: EthAddress, - path?: string, - log = createDebugLogger('aztec:kv-store:lmdb'), - ): Promise { + static open(path?: string, log = createDebugLogger('aztec:kv-store:lmdb')): AztecLmdbStore { log.info(`Opening LMDB database at ${path || 'temporary location'}`); - - const rootDb = open({ - path, - }); - - const db = new AztecLmdbStore(rootDb, log); - await db.#init(rollupAddress); - - return db; - } - - static openTmp(): Promise { - return AztecLmdbStore.open(EthAddress.random()); + const rootDb = open({ path }); + return new AztecLmdbStore(rootDb); } /** @@ -125,17 +103,10 @@ export class AztecLmdbStore implements AztecKVStore { return this.#rootDb.transaction(callback); } - async #init(rollupAddress: EthAddress): Promise { - const storedRollupAddress = this.#rollupAddress.get(); - const rollupAddressString = rollupAddress.toString(); - - if (typeof storedRollupAddress === 'string' && rollupAddressString !== storedRollupAddress) { - this.#log.warn( - `Rollup address mismatch: expected ${rollupAddress}, found ${storedRollupAddress}. Clearing entire database...`, - ); - await this.#rootDb.clearAsync(); - } - - await this.#rollupAddress.set(rollupAddressString); + /** + * Clears the store + */ + async clear() { + await this.#rootDb.clearAsync(); } } diff --git a/yarn-project/kv-store/src/utils.ts b/yarn-project/kv-store/src/utils.ts new file mode 100644 index 00000000000..7cab23f5827 --- /dev/null +++ b/yarn-project/kv-store/src/utils.ts @@ -0,0 +1,41 @@ +import { EthAddress } from '@aztec/foundation/eth-address'; +import { Logger } from '@aztec/foundation/log'; + +import { AztecKVStore } from './interfaces/store.js'; +import { AztecLmdbStore } from './lmdb/store.js'; + +/** + * Clears the store if the rollup address does not match the one stored in the database. + * This is to prevent data from being accidentally shared between different rollup instances. + * @param store - The store to check + * @param rollupAddress - The ETH address of the rollup contract + * @returns A promise that resolves when the store is cleared, or rejects if the rollup address does not match + */ +export async function initStoreForRollup( + store: T, + rollupAddress: EthAddress, + log?: Logger, +): Promise { + const rollupAddressValue = store.openSingleton>('rollupAddress'); + const rollupAddressString = rollupAddress.toString(); + const storedRollupAddressString = rollupAddressValue.get(); + + if (typeof storedRollupAddressString !== 'undefined' && storedRollupAddressString !== rollupAddressString) { + log?.warn( + `Rollup address mismatch: expected ${rollupAddress}, found ${rollupAddressValue}. Clearing entire database...`, + ); + + await store.clear(); + } + + await rollupAddressValue.set(rollupAddressString); + return store; +} + +/** + * Opens a temporary store for testing purposes. + * @returns A new store + */ +export function openTmpStore(): AztecKVStore { + return AztecLmdbStore.open(); +} diff --git a/yarn-project/merkle-tree/src/snapshots/append_only_snapshot.test.ts b/yarn-project/merkle-tree/src/snapshots/append_only_snapshot.test.ts index 52ebdec437d..f1b2d458b72 100644 --- a/yarn-project/merkle-tree/src/snapshots/append_only_snapshot.test.ts +++ b/yarn-project/merkle-tree/src/snapshots/append_only_snapshot.test.ts @@ -1,4 +1,5 @@ -import { AztecKVStore, AztecLmdbStore } from '@aztec/kv-store'; +import { AztecKVStore } from '@aztec/kv-store'; +import { openTmpStore } from '@aztec/kv-store/utils'; import { Pedersen, StandardTree, newTree } from '../index.js'; import { AppendOnlySnapshotBuilder } from './append_only_snapshot.js'; @@ -10,7 +11,7 @@ describe('AppendOnlySnapshot', () => { let db: AztecKVStore; beforeEach(async () => { - db = await AztecLmdbStore.openTmp(); + db = openTmpStore(); const hasher = new Pedersen(); tree = await newTree(StandardTree, db, hasher, 'test', 4); snapshotBuilder = new AppendOnlySnapshotBuilder(db, tree, hasher); diff --git a/yarn-project/merkle-tree/src/snapshots/full_snapshot.test.ts b/yarn-project/merkle-tree/src/snapshots/full_snapshot.test.ts index 4219dbd1c45..6e57e113f93 100644 --- a/yarn-project/merkle-tree/src/snapshots/full_snapshot.test.ts +++ b/yarn-project/merkle-tree/src/snapshots/full_snapshot.test.ts @@ -1,4 +1,5 @@ -import { AztecKVStore, AztecLmdbStore } from '@aztec/kv-store'; +import { AztecKVStore } from '@aztec/kv-store'; +import { openTmpStore } from '@aztec/kv-store/utils'; import { Pedersen, StandardTree, newTree } from '../index.js'; import { FullTreeSnapshotBuilder } from './full_snapshot.js'; @@ -10,7 +11,7 @@ describe('FullSnapshotBuilder', () => { let db: AztecKVStore; beforeEach(async () => { - db = await AztecLmdbStore.openTmp(); + db = openTmpStore(); tree = await newTree(StandardTree, db, new Pedersen(), 'test', 4); snapshotBuilder = new FullTreeSnapshotBuilder(db, tree); }); diff --git a/yarn-project/merkle-tree/src/snapshots/indexed_tree_snapshot.test.ts b/yarn-project/merkle-tree/src/snapshots/indexed_tree_snapshot.test.ts index e1ba0b9e0f7..81f5ccb5b20 100644 --- a/yarn-project/merkle-tree/src/snapshots/indexed_tree_snapshot.test.ts +++ b/yarn-project/merkle-tree/src/snapshots/indexed_tree_snapshot.test.ts @@ -1,5 +1,6 @@ import { Fr, NullifierLeaf, NullifierLeafPreimage } from '@aztec/circuits.js'; -import { AztecKVStore, AztecLmdbStore } from '@aztec/kv-store'; +import { AztecKVStore } from '@aztec/kv-store'; +import { openTmpStore } from '@aztec/kv-store/utils'; import { Hasher } from '@aztec/types/interfaces'; import { Pedersen, newTree } from '../index.js'; @@ -19,7 +20,7 @@ describe('IndexedTreeSnapshotBuilder', () => { let snapshotBuilder: IndexedTreeSnapshotBuilder; beforeEach(async () => { - db = await AztecLmdbStore.openTmp(); + db = openTmpStore(); tree = await newTree(NullifierTree, db, new Pedersen(), 'test', 4); snapshotBuilder = new IndexedTreeSnapshotBuilder(db, tree, NullifierLeafPreimage); }); diff --git a/yarn-project/merkle-tree/src/sparse_tree/sparse_tree.test.ts b/yarn-project/merkle-tree/src/sparse_tree/sparse_tree.test.ts index 21ce5c2b767..05b869932e6 100644 --- a/yarn-project/merkle-tree/src/sparse_tree/sparse_tree.test.ts +++ b/yarn-project/merkle-tree/src/sparse_tree/sparse_tree.test.ts @@ -1,6 +1,7 @@ import { SiblingPath } from '@aztec/circuit-types'; import { createDebugLogger } from '@aztec/foundation/log'; -import { AztecKVStore, AztecLmdbStore } from '@aztec/kv-store'; +import { AztecKVStore } from '@aztec/kv-store'; +import { openTmpStore } from '@aztec/kv-store/utils'; import { Hasher } from '@aztec/types/interfaces'; import { randomBytes } from 'crypto'; @@ -36,7 +37,7 @@ describe('SparseTreeSpecific', () => { }); it('throws when index is bigger than (2^DEPTH - 1) ', async () => { - const db = await AztecLmdbStore.openTmp(); + const db = openTmpStore(); const depth = 32; const tree = await createDb(db, pedersen, 'test', depth); @@ -48,7 +49,7 @@ describe('SparseTreeSpecific', () => { const depth = 32; const maxIndex = 2 ** depth - 1; - const db = await AztecLmdbStore.openTmp(); + const db = openTmpStore(); const tree = await createDb(db, pedersen, 'test', depth); const randomIndex = BigInt(Math.floor(Math.random() * maxIndex)); @@ -67,7 +68,7 @@ describe('SparseTreeSpecific', () => { const depth = 254; const maxIndex = 2 ** depth - 1; - const db = await AztecLmdbStore.openTmp(); + const db = openTmpStore(); const tree = await createDb(db, pedersen, 'test', depth); const randomIndex = BigInt(Math.floor(Math.random() * maxIndex)); @@ -83,7 +84,7 @@ describe('SparseTreeSpecific', () => { }); it('should have correct root and sibling path after in a "non-append-only" way', async () => { - const db = await AztecLmdbStore.openTmp(); + const db = openTmpStore(); const tree = await createDb(db, pedersen, 'test', 3); const level2ZeroHash = pedersen.hash(INITIAL_LEAF, INITIAL_LEAF); @@ -156,7 +157,7 @@ describe('SparseTreeSpecific', () => { const depth = 254; const maxIndex = 2 ** depth - 1; - const db = await AztecLmdbStore.openTmp(); + const db = openTmpStore(); const tree = await createDb(db, pedersen, 'test', depth); const leaves = Array.from({ length: 1000 }).map(() => randomBytes(32)); diff --git a/yarn-project/merkle-tree/src/standard_indexed_tree/test/standard_indexed_tree.test.ts b/yarn-project/merkle-tree/src/standard_indexed_tree/test/standard_indexed_tree.test.ts index 6543283df8c..7454aad786f 100644 --- a/yarn-project/merkle-tree/src/standard_indexed_tree/test/standard_indexed_tree.test.ts +++ b/yarn-project/merkle-tree/src/standard_indexed_tree/test/standard_indexed_tree.test.ts @@ -7,7 +7,8 @@ import { PublicDataTreeLeafPreimage, } from '@aztec/circuits.js'; import { toBufferBE } from '@aztec/foundation/bigint-buffer'; -import { AztecKVStore, AztecLmdbStore } from '@aztec/kv-store'; +import { AztecKVStore } from '@aztec/kv-store'; +import { openTmpStore } from '@aztec/kv-store/utils'; import { Hasher } from '@aztec/types/interfaces'; import { INITIAL_LEAF, MerkleTree, Pedersen, loadTree, newTree } from '../../index.js'; @@ -75,7 +76,7 @@ describe('StandardIndexedTreeSpecific', () => { it('produces the correct roots and sibling paths', async () => { // Create a depth-3 indexed merkle tree - const db = await AztecLmdbStore.openTmp(); + const db = openTmpStore(); const tree = await createDb(db, pedersen, 'test', 3); /** @@ -272,7 +273,7 @@ describe('StandardIndexedTreeSpecific', () => { it('Can append empty leaves and handle insertions', async () => { // Create a depth-3 indexed merkle tree - const tree = await createDb(await AztecLmdbStore.openTmp(), pedersen, 'test', 3); + const tree = await createDb(openTmpStore(), pedersen, 'test', 3); /** * Initial state: @@ -489,8 +490,8 @@ describe('StandardIndexedTreeSpecific', () => { const SUBTREE_HEIGHT = 5; // originally from BaseRollupInputs.NULLIFIER_SUBTREE_HEIGHT // Create a depth-3 indexed merkle tree - const appendTree = await createDb(await AztecLmdbStore.openTmp(), pedersen, 'test', TREE_HEIGHT, INITIAL_TREE_SIZE); - const insertTree = await createDb(await AztecLmdbStore.openTmp(), pedersen, 'test', TREE_HEIGHT, INITIAL_TREE_SIZE); + const appendTree = await createDb(openTmpStore(), pedersen, 'test', TREE_HEIGHT, INITIAL_TREE_SIZE); + const insertTree = await createDb(openTmpStore(), pedersen, 'test', TREE_HEIGHT, INITIAL_TREE_SIZE); await appendTree.appendLeaves(leaves); await insertTree.batchInsert(leaves, SUBTREE_HEIGHT); @@ -501,7 +502,7 @@ describe('StandardIndexedTreeSpecific', () => { }); it('should be able to find indexes of leaves', async () => { - const db = await AztecLmdbStore.openTmp(); + const db = openTmpStore(); const tree = await createDb(db, pedersen, 'test', 3); const values = [Buffer.alloc(32, 1), Buffer.alloc(32, 2)]; @@ -519,7 +520,7 @@ describe('StandardIndexedTreeSpecific', () => { describe('Updatable leaves', () => { it('should be able to upsert leaves', async () => { // Create a depth-3 indexed merkle tree - const db = await AztecLmdbStore.openTmp(); + const db = openTmpStore(); const tree = await newTree(PublicDataTree, db, pedersen, 'test', 3, 1); /** @@ -629,7 +630,7 @@ describe('StandardIndexedTreeSpecific', () => { const INITIAL_TREE_SIZE = 8; const SUBTREE_HEIGHT = 5; - const db = await AztecLmdbStore.openTmp(); + const db = openTmpStore(); const appendTree = await newTree(PublicDataTree, db, pedersen, 'test', TREE_HEIGHT, INITIAL_TREE_SIZE); const insertTree = await newTree(PublicDataTree, db, pedersen, 'test', TREE_HEIGHT, INITIAL_TREE_SIZE); diff --git a/yarn-project/merkle-tree/src/standard_tree/standard_tree.test.ts b/yarn-project/merkle-tree/src/standard_tree/standard_tree.test.ts index 7da886753aa..465f5a59a64 100644 --- a/yarn-project/merkle-tree/src/standard_tree/standard_tree.test.ts +++ b/yarn-project/merkle-tree/src/standard_tree/standard_tree.test.ts @@ -1,5 +1,6 @@ import { randomBytes } from '@aztec/foundation/crypto'; -import { AztecKVStore, AztecLmdbStore } from '@aztec/kv-store'; +import { AztecKVStore } from '@aztec/kv-store'; +import { openTmpStore } from '@aztec/kv-store/utils'; import { Hasher } from '@aztec/types/interfaces'; import { loadTree } from '../load_tree.js'; @@ -33,7 +34,7 @@ describe('StandardTree_batchAppend', () => { }); it('correctly computes root when batch appending and calls hash function expected num times', async () => { - const db = await AztecLmdbStore.openTmp(); + const db = openTmpStore(); const tree = await createDb(db, pedersen, 'test', 3); const leaves = Array.from({ length: 5 }, _ => randomBytes(32)); @@ -69,7 +70,7 @@ describe('StandardTree_batchAppend', () => { }); it('should be able to find indexes of leaves', async () => { - const db = await AztecLmdbStore.openTmp(); + const db = openTmpStore(); const tree = await createDb(db, pedersen, 'test', 3); const values = [Buffer.alloc(32, 1), Buffer.alloc(32, 2)]; diff --git a/yarn-project/merkle-tree/src/test/standard_based_test_suite.ts b/yarn-project/merkle-tree/src/test/standard_based_test_suite.ts index f970a9c89aa..9931e074131 100644 --- a/yarn-project/merkle-tree/src/test/standard_based_test_suite.ts +++ b/yarn-project/merkle-tree/src/test/standard_based_test_suite.ts @@ -1,5 +1,6 @@ import { SiblingPath } from '@aztec/circuit-types'; -import { AztecKVStore, AztecLmdbStore } from '@aztec/kv-store'; +import { AztecKVStore } from '@aztec/kv-store'; +import { openTmpStore } from '@aztec/kv-store/utils'; import { Hasher } from '@aztec/types/interfaces'; import { randomBytes } from 'crypto'; @@ -35,21 +36,21 @@ export const standardBasedTreeTestSuite = ( }); it('should have correct empty tree root for depth 32', async () => { - const db = await AztecLmdbStore.openTmp(); + const db = openTmpStore(); const tree = await createDb(db, pedersen, 'test', 32); const root = tree.getRoot(false); expect(root.toString('hex')).toEqual('16642d9ccd8346c403aa4c3fa451178b22534a27035cdaa6ec34ae53b29c50cb'); }); it('should throw when appending beyond max index', async () => { - const db = await AztecLmdbStore.openTmp(); + const db = openTmpStore(); const tree = await createDb(db, pedersen, 'test', 2); const leaves = Array.from({ length: 5 }, _ => randomBytes(32)); await expect(appendLeaves(tree, leaves)).rejects.toThrow(); }); it('should have correct root and sibling paths', async () => { - const db = await AztecLmdbStore.openTmp(); + const db = openTmpStore(); const tree = await createDb(db, pedersen, 'test', 2); const level1ZeroHash = pedersen.hash(INITIAL_LEAF, INITIAL_LEAF); diff --git a/yarn-project/merkle-tree/src/test/test_suite.ts b/yarn-project/merkle-tree/src/test/test_suite.ts index c7fdd51b103..74b75c5dd43 100644 --- a/yarn-project/merkle-tree/src/test/test_suite.ts +++ b/yarn-project/merkle-tree/src/test/test_suite.ts @@ -1,5 +1,6 @@ import { SiblingPath } from '@aztec/circuit-types'; -import { AztecKVStore, AztecLmdbStore } from '@aztec/kv-store'; +import { AztecKVStore } from '@aztec/kv-store'; +import { openTmpStore } from '@aztec/kv-store/utils'; import { Hasher } from '@aztec/types/interfaces'; import { Pedersen } from '../index.js'; @@ -50,10 +51,10 @@ export const treeTestSuite = ( }); it('should revert changes on rollback', async () => { - const dbEmpty = await AztecLmdbStore.openTmp(); + const dbEmpty = openTmpStore(); const emptyTree = await createDb(dbEmpty, pedersen, 'test', 10); - const db = await AztecLmdbStore.openTmp(); + const db = openTmpStore(); const tree = await createDb(db, pedersen, 'test2', 10); await appendLeaves(tree, values.slice(0, 4)); @@ -85,10 +86,10 @@ export const treeTestSuite = ( }); it('should not revert changes after commit', async () => { - const dbEmpty = await AztecLmdbStore.openTmp(); + const dbEmpty = openTmpStore(); const emptyTree = await createDb(dbEmpty, pedersen, 'test', 10); - const db = await AztecLmdbStore.openTmp(); + const db = openTmpStore(); const tree = await createDb(db, pedersen, 'test2', 10); await appendLeaves(tree, values.slice(0, 4)); @@ -104,7 +105,7 @@ export const treeTestSuite = ( }); it('should be able to restore from previous committed data', async () => { - const db = await AztecLmdbStore.openTmp(); + const db = openTmpStore(); const tree = await createDb(db, pedersen, 'test', 10); await appendLeaves(tree, values.slice(0, 4)); await tree.commit(); @@ -121,7 +122,7 @@ export const treeTestSuite = ( }); it('should throw an error if previous data does not exist for the given name', async () => { - const db = await AztecLmdbStore.openTmp(); + const db = openTmpStore(); await expect( (async () => { await createFromName(db, pedersen, 'a_whole_new_tree'); @@ -130,7 +131,7 @@ export const treeTestSuite = ( }); it('should serialize sibling path data to a buffer and be able to deserialize it back', async () => { - const db = await AztecLmdbStore.openTmp(); + const db = openTmpStore(); const tree = await createDb(db, pedersen, 'test', 10); await appendLeaves(tree, values.slice(0, 1)); diff --git a/yarn-project/noir-protocol-circuits/src/noir_test_gen.test.ts b/yarn-project/noir-protocol-circuits/src/noir_test_gen.test.ts index 7c61e33590c..2f8bad46b4e 100644 --- a/yarn-project/noir-protocol-circuits/src/noir_test_gen.test.ts +++ b/yarn-project/noir-protocol-circuits/src/noir_test_gen.test.ts @@ -12,7 +12,7 @@ import { computeSaltedInitializationHash, } from '@aztec/circuits.js'; import { Fr } from '@aztec/foundation/fields'; -import { AztecLmdbStore } from '@aztec/kv-store'; +import { openTmpStore } from '@aztec/kv-store/utils'; import { Pedersen, StandardTree } from '@aztec/merkle-tree'; import { ContractClass, ContractInstance } from '@aztec/types/contracts'; @@ -94,7 +94,7 @@ describe('Data generation for noir tests', () => { const indexes = new Array(128).fill(null).map((_, i) => BigInt(i)); const leaves = indexes.map(i => new Fr(i + 1n).toBuffer()); - const db = await AztecLmdbStore.openTmp(); + const db = openTmpStore(); const noteHashTree = new StandardTree( db, diff --git a/yarn-project/p2p/src/client/p2p_client.test.ts b/yarn-project/p2p/src/client/p2p_client.test.ts index 0ca27e09752..d0c9ba8da8a 100644 --- a/yarn-project/p2p/src/client/p2p_client.test.ts +++ b/yarn-project/p2p/src/client/p2p_client.test.ts @@ -1,5 +1,6 @@ import { L2BlockSource, mockTx } from '@aztec/circuit-types'; -import { AztecKVStore, AztecLmdbStore } from '@aztec/kv-store'; +import { AztecKVStore } from '@aztec/kv-store'; +import { openTmpStore } from '@aztec/kv-store/utils'; import { expect, jest } from '@jest/globals'; @@ -22,7 +23,7 @@ describe('In-Memory P2P Client', () => { let kvStore: AztecKVStore; let client: P2PClient; - beforeEach(async () => { + beforeEach(() => { txPool = { addTxs: jest.fn(), getTxByHash: jest.fn().mockReturnValue(undefined), @@ -41,7 +42,7 @@ describe('In-Memory P2P Client', () => { blockSource = new MockBlockSource(); - kvStore = await AztecLmdbStore.openTmp(); + kvStore = openTmpStore(); client = new P2PClient(kvStore, blockSource, txPool, p2pService); }); diff --git a/yarn-project/p2p/src/tx_pool/aztec_kv_tx_pool.test.ts b/yarn-project/p2p/src/tx_pool/aztec_kv_tx_pool.test.ts index fe030abe6d7..9dc6e8ddc11 100644 --- a/yarn-project/p2p/src/tx_pool/aztec_kv_tx_pool.test.ts +++ b/yarn-project/p2p/src/tx_pool/aztec_kv_tx_pool.test.ts @@ -1,12 +1,12 @@ -import { AztecLmdbStore } from '@aztec/kv-store'; +import { openTmpStore } from '@aztec/kv-store/utils'; import { AztecKVTxPool } from './aztec_kv_tx_pool.js'; import { describeTxPool } from './tx_pool_test_suite.js'; describe('In-Memory TX pool', () => { let txPool: AztecKVTxPool; - beforeEach(async () => { - txPool = new AztecKVTxPool(await AztecLmdbStore.openTmp()); + beforeEach(() => { + txPool = new AztecKVTxPool(openTmpStore()); }); describeTxPool(() => txPool); diff --git a/yarn-project/pxe/src/database/kv_pxe_database.test.ts b/yarn-project/pxe/src/database/kv_pxe_database.test.ts index 27e0da25f37..501e8de9921 100644 --- a/yarn-project/pxe/src/database/kv_pxe_database.test.ts +++ b/yarn-project/pxe/src/database/kv_pxe_database.test.ts @@ -1,4 +1,4 @@ -import { AztecLmdbStore } from '@aztec/kv-store'; +import { openTmpStore } from '@aztec/kv-store/utils'; import { KVPxeDatabase } from './kv_pxe_database.js'; import { describePxeDatabase } from './pxe_database_test_suite.js'; @@ -6,8 +6,8 @@ import { describePxeDatabase } from './pxe_database_test_suite.js'; describe('KVPxeDatabase', () => { let database: KVPxeDatabase; - beforeEach(async () => { - database = new KVPxeDatabase(await AztecLmdbStore.openTmp()); + beforeEach(() => { + database = new KVPxeDatabase(openTmpStore()); }); describePxeDatabase(() => database); diff --git a/yarn-project/pxe/src/note_processor/note_processor.test.ts b/yarn-project/pxe/src/note_processor/note_processor.test.ts index 9b5b4d67bf8..a08189e5a21 100644 --- a/yarn-project/pxe/src/note_processor/note_processor.test.ts +++ b/yarn-project/pxe/src/note_processor/note_processor.test.ts @@ -16,7 +16,7 @@ import { Grumpkin } from '@aztec/circuits.js/barretenberg'; import { pedersenHash } from '@aztec/foundation/crypto'; import { Point } from '@aztec/foundation/fields'; import { ConstantKeyPair } from '@aztec/key-store'; -import { AztecLmdbStore } from '@aztec/kv-store'; +import { openTmpStore } from '@aztec/kv-store/utils'; import { AcirSimulator } from '@aztec/simulator'; import { jest } from '@jest/globals'; @@ -118,8 +118,8 @@ describe('Note Processor', () => { owner = ConstantKeyPair.random(grumpkin); }); - beforeEach(async () => { - database = new KVPxeDatabase(await AztecLmdbStore.openTmp()); + beforeEach(() => { + database = new KVPxeDatabase(openTmpStore()); addNotesSpy = jest.spyOn(database, 'addNotes'); aztecNode = mock(); diff --git a/yarn-project/pxe/src/pxe_service/create_pxe_service.ts b/yarn-project/pxe/src/pxe_service/create_pxe_service.ts index 00d800f1e7a..3ccad19041f 100644 --- a/yarn-project/pxe/src/pxe_service/create_pxe_service.ts +++ b/yarn-project/pxe/src/pxe_service/create_pxe_service.ts @@ -1,7 +1,8 @@ import { AztecNode } from '@aztec/circuit-types'; import { Grumpkin } from '@aztec/circuits.js/barretenberg'; import { TestKeyStore } from '@aztec/key-store'; -import { AztecLmdbStore } from '@aztec/kv-store'; +import { AztecLmdbStore } from '@aztec/kv-store/lmdb'; +import { initStoreForRollup } from '@aztec/kv-store/utils'; import { join } from 'path'; @@ -35,8 +36,11 @@ export async function createPXEService( const keyStorePath = config.dataDirectory ? join(config.dataDirectory, 'pxe_key_store') : undefined; const l1Contracts = await aztecNode.getL1ContractAddresses(); - const keyStore = new TestKeyStore(new Grumpkin(), await AztecLmdbStore.open(l1Contracts.rollupAddress, keyStorePath)); - const db = new KVPxeDatabase(await AztecLmdbStore.open(l1Contracts.rollupAddress, pxeDbPath)); + const keyStore = new TestKeyStore( + new Grumpkin(), + await initStoreForRollup(AztecLmdbStore.open(keyStorePath), l1Contracts.rollupAddress), + ); + const db = new KVPxeDatabase(await initStoreForRollup(AztecLmdbStore.open(pxeDbPath), l1Contracts.rollupAddress)); const server = new PXEService(keyStore, aztecNode, db, config, logSuffix); diff --git a/yarn-project/pxe/src/pxe_service/test/pxe_service.test.ts b/yarn-project/pxe/src/pxe_service/test/pxe_service.test.ts index 7caf5668e35..2258dca6566 100644 --- a/yarn-project/pxe/src/pxe_service/test/pxe_service.test.ts +++ b/yarn-project/pxe/src/pxe_service/test/pxe_service.test.ts @@ -3,7 +3,7 @@ import { Grumpkin } from '@aztec/circuits.js/barretenberg'; import { L1ContractAddresses } from '@aztec/ethereum'; import { EthAddress } from '@aztec/foundation/eth-address'; import { TestKeyStore } from '@aztec/key-store'; -import { AztecLmdbStore } from '@aztec/kv-store'; +import { openTmpStore } from '@aztec/kv-store/utils'; import { MockProxy, mock } from 'jest-mock-extended'; @@ -13,8 +13,8 @@ import { PXEServiceConfig } from '../../index.js'; import { PXEService } from '../pxe_service.js'; import { pxeTestSuite } from './pxe_test_suite.js'; -async function createPXEService(): Promise { - const kvStore = await AztecLmdbStore.openTmp(); +function createPXEService(): Promise { + const kvStore = openTmpStore(); const keyStore = new TestKeyStore(new Grumpkin(), kvStore); const node = mock(); const db = new KVPxeDatabase(kvStore); @@ -45,8 +45,8 @@ describe('PXEService', () => { let db: PxeDatabase; let config: PXEServiceConfig; - beforeEach(async () => { - const kvStore = await AztecLmdbStore.openTmp(); + beforeEach(() => { + const kvStore = openTmpStore(); keyStore = new TestKeyStore(new Grumpkin(), kvStore); node = mock(); db = new KVPxeDatabase(kvStore); diff --git a/yarn-project/pxe/src/synchronizer/synchronizer.test.ts b/yarn-project/pxe/src/synchronizer/synchronizer.test.ts index aa283ba1bec..4353ba36b9b 100644 --- a/yarn-project/pxe/src/synchronizer/synchronizer.test.ts +++ b/yarn-project/pxe/src/synchronizer/synchronizer.test.ts @@ -4,7 +4,7 @@ import { Grumpkin } from '@aztec/circuits.js/barretenberg'; import { makeHeader } from '@aztec/circuits.js/factories'; import { SerialQueue } from '@aztec/foundation/fifo'; import { TestKeyStore } from '@aztec/key-store'; -import { AztecLmdbStore } from '@aztec/kv-store'; +import { openTmpStore } from '@aztec/kv-store/utils'; import { MockProxy, mock } from 'jest-mock-extended'; import omit from 'lodash.omit'; @@ -21,11 +21,11 @@ describe('Synchronizer', () => { const initialSyncBlockNumber = 3; let headerBlock3: Header; - beforeEach(async () => { + beforeEach(() => { headerBlock3 = makeHeader(Math.floor(Math.random() * 1000), initialSyncBlockNumber); aztecNode = mock(); - database = new KVPxeDatabase(await AztecLmdbStore.openTmp()); + database = new KVPxeDatabase(openTmpStore()); jobQueue = new SerialQueue(); synchronizer = new TestSynchronizer(aztecNode, database, jobQueue); }); @@ -114,7 +114,7 @@ describe('Synchronizer', () => { expect(await synchronizer.isGlobalStateSynchronized()).toBe(true); // Manually adding account to database so that we can call synchronizer.isAccountStateSynchronized - const keyStore = new TestKeyStore(new Grumpkin(), await AztecLmdbStore.openTmp()); + const keyStore = new TestKeyStore(new Grumpkin(), openTmpStore()); const addAddress = async (startingBlockNum: number) => { const privateKey = GrumpkinScalar.random(); await keyStore.addAccount(privateKey); diff --git a/yarn-project/sequencer-client/src/block_builder/solo_block_builder.test.ts b/yarn-project/sequencer-client/src/block_builder/solo_block_builder.test.ts index 9ff0678357f..06e160d99f2 100644 --- a/yarn-project/sequencer-client/src/block_builder/solo_block_builder.test.ts +++ b/yarn-project/sequencer-client/src/block_builder/solo_block_builder.test.ts @@ -52,7 +52,7 @@ import { makeTuple, range } from '@aztec/foundation/array'; import { toBufferBE } from '@aztec/foundation/bigint-buffer'; import { times } from '@aztec/foundation/collection'; import { to2Fields } from '@aztec/foundation/serialize'; -import { AztecLmdbStore } from '@aztec/kv-store'; +import { openTmpStore } from '@aztec/kv-store/utils'; import { MerkleTreeOperations, MerkleTrees } from '@aztec/world-state'; import { MockProxy, mock } from 'jest-mock-extended'; @@ -100,8 +100,8 @@ describe('sequencer/solo_block_builder', () => { blockNumber = 3; globalVariables = new GlobalVariables(chainId, version, new Fr(blockNumber), Fr.ZERO, coinbase, feeRecipient); - builderDb = await MerkleTrees.new(await AztecLmdbStore.openTmp()).then(t => t.asLatest()); - expectsDb = await MerkleTrees.new(await AztecLmdbStore.openTmp()).then(t => t.asLatest()); + builderDb = await MerkleTrees.new(openTmpStore()).then(t => t.asLatest()); + expectsDb = await MerkleTrees.new(openTmpStore()).then(t => t.asLatest()); vks = getVerificationKeys(); simulator = mock(); prover = mock(); diff --git a/yarn-project/simulator/src/client/private_execution.test.ts b/yarn-project/simulator/src/client/private_execution.test.ts index 14ef6ca5419..63ae8f7c410 100644 --- a/yarn-project/simulator/src/client/private_execution.test.ts +++ b/yarn-project/simulator/src/client/private_execution.test.ts @@ -41,7 +41,7 @@ import { EthAddress } from '@aztec/foundation/eth-address'; import { Fr, GrumpkinScalar } from '@aztec/foundation/fields'; import { DebugLogger, createDebugLogger } from '@aztec/foundation/log'; import { FieldsOf } from '@aztec/foundation/types'; -import { AztecLmdbStore } from '@aztec/kv-store'; +import { openTmpStore } from '@aztec/kv-store/utils'; import { AppendOnlyTree, Pedersen, StandardTree, newTree } from '@aztec/merkle-tree'; import { ChildContractArtifact, @@ -140,7 +140,7 @@ describe('Private Execution test suite', () => { throw new Error(`Unknown tree ${name}`); } if (!trees[name]) { - const db = await AztecLmdbStore.openTmp(); + const db = openTmpStore(); const pedersen = new Pedersen(); trees[name] = await newTree(StandardTree, db, pedersen, name, treeHeights[name]); } diff --git a/yarn-project/world-state/src/synchronizer/server_world_state_synchronizer.test.ts b/yarn-project/world-state/src/synchronizer/server_world_state_synchronizer.test.ts index 684e46a84a6..1a3f8730a7c 100644 --- a/yarn-project/world-state/src/synchronizer/server_world_state_synchronizer.test.ts +++ b/yarn-project/world-state/src/synchronizer/server_world_state_synchronizer.test.ts @@ -2,7 +2,8 @@ import { L2Block, L2BlockSource, MerkleTreeId, SiblingPath } from '@aztec/circui import { Fr } from '@aztec/circuits.js'; import { createDebugLogger } from '@aztec/foundation/log'; import { sleep } from '@aztec/foundation/sleep'; -import { AztecKVStore, AztecLmdbStore } from '@aztec/kv-store'; +import { AztecKVStore } from '@aztec/kv-store'; +import { openTmpStore } from '@aztec/kv-store/utils'; import { INITIAL_LEAF, Pedersen } from '@aztec/merkle-tree'; import { jest } from '@jest/globals'; @@ -103,8 +104,8 @@ describe('server_world_state_synchronizer', () => { ); }; - beforeEach(async () => { - db = await AztecLmdbStore.openTmp(); + beforeEach(() => { + db = openTmpStore(); }); it('can be constructed', () => {