@aztec/kv-store 0.84.0 → 0.85.0-alpha-testnet.1

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.
@@ -7,6 +7,6 @@ export declare function openTmpStore(name: string, ephemeral?: boolean, dbMapSiz
7
7
  maxReaders?: number, log?: Logger): Promise<AztecLMDBStoreV2>;
8
8
  export declare function openStoreAt(dataDir: string, dbMapSizeKb?: number, // 10GB
9
9
  maxReaders?: number, log?: Logger): Promise<AztecLMDBStoreV2>;
10
- export declare function openVersionedStoreAt(dataDir: string, schemaVersion: number, rollupAddress: EthAddress, dbMapSizeKb?: number, // 10GB
10
+ export declare function openVersionedStoreAt(dataDirectory: string, schemaVersion: number, rollupAddress: EthAddress, dbMapSizeKb?: number, // 10GB
11
11
  maxReaders?: number, log?: Logger): Promise<AztecLMDBStoreV2>;
12
12
  //# sourceMappingURL=factory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/lmdb-v2/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAOlE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAI9C,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,eAAe,EACvB,GAAG,GAAE,MAAiD,GACrD,OAAO,CAAC,gBAAgB,CAAC,CAyB3B;AAED,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,SAAS,GAAE,OAAc,EACzB,WAAW,SAAqB,EAAE,OAAO;AACzC,UAAU,SAAc,EACxB,GAAG,GAAE,MAAiD,GACrD,OAAO,CAAC,gBAAgB,CAAC,CAqB3B;AAED,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,WAAW,SAAqB,EAAE,OAAO;AACzC,UAAU,SAAc,EACxB,GAAG,GAAE,MAAyC,GAC7C,OAAO,CAAC,gBAAgB,CAAC,CAG3B;AAED,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,UAAU,EACzB,WAAW,SAAqB,EAAE,OAAO;AACzC,UAAU,SAAc,EACxB,GAAG,GAAE,MAAyC,GAC7C,OAAO,CAAC,gBAAgB,CAAC,CAM3B"}
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/lmdb-v2/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAOlE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAI9C,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,eAAe,EACvB,GAAG,GAAE,MAAiD,GACrD,OAAO,CAAC,gBAAgB,CAAC,CA6B3B;AAED,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,SAAS,GAAE,OAAc,EACzB,WAAW,SAAqB,EAAE,OAAO;AACzC,UAAU,SAAc,EACxB,GAAG,GAAE,MAAiD,GACrD,OAAO,CAAC,gBAAgB,CAAC,CAqB3B;AAED,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,WAAW,SAAqB,EAAE,OAAO;AACzC,UAAU,SAAc,EACxB,GAAG,GAAE,MAAyC,GAC7C,OAAO,CAAC,gBAAgB,CAAC,CAG3B;AAED,wBAAsB,oBAAoB,CACxC,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,UAAU,EACzB,WAAW,SAAqB,EAAE,OAAO;AACzC,UAAU,SAAc,EACxB,GAAG,GAAE,MAAyC,GAC7C,OAAO,CAAC,gBAAgB,CAAC,CAS3B"}
@@ -17,7 +17,12 @@ export async function createStore(name, schemaVersion, config, log = createLogge
17
17
  });
18
18
  const rollupAddress = l1Contracts ? l1Contracts.rollupAddress : EthAddress.ZERO;
19
19
  // Create a version manager
20
- const versionManager = new DatabaseVersionManager(schemaVersion, rollupAddress, subDir, (dbDirectory)=>AztecLMDBStoreV2.new(dbDirectory, config.dataStoreMapSizeKB, MAX_READERS, ()=>Promise.resolve(), log));
20
+ const versionManager = new DatabaseVersionManager({
21
+ schemaVersion,
22
+ rollupAddress,
23
+ dataDirectory: subDir,
24
+ onOpen: (dbDirectory)=>AztecLMDBStoreV2.new(dbDirectory, config.dataStoreMapSizeKB, MAX_READERS, ()=>Promise.resolve(), log)
25
+ });
21
26
  log.info(`Creating ${name} data store at directory ${subDir} with map size ${config.dataStoreMapSizeKB} KB (LMDB v2)`);
22
27
  [store] = await versionManager.open();
23
28
  } else {
@@ -53,8 +58,13 @@ export async function openStoreAt(dataDir, dbMapSizeKb = 10 * 1_024 * 1_024, max
53
58
  log.debug(`Opening data store at: ${dataDir} with size: ${dbMapSizeKb} KB (LMDB v2)`);
54
59
  return await AztecLMDBStoreV2.new(dataDir, dbMapSizeKb, maxReaders, undefined, log);
55
60
  }
56
- export async function openVersionedStoreAt(dataDir, schemaVersion, rollupAddress, dbMapSizeKb = 10 * 1_024 * 1_024, maxReaders = MAX_READERS, log = createLogger('kv-store:lmdb-v2')) {
57
- log.debug(`Opening data store at: ${dataDir} with size: ${dbMapSizeKb} KB (LMDB v2)`);
58
- const [store] = await new DatabaseVersionManager(schemaVersion, rollupAddress, dataDir, (dataDir)=>AztecLMDBStoreV2.new(dataDir, dbMapSizeKb, maxReaders, undefined, log)).open();
61
+ export async function openVersionedStoreAt(dataDirectory, schemaVersion, rollupAddress, dbMapSizeKb = 10 * 1_024 * 1_024, maxReaders = MAX_READERS, log = createLogger('kv-store:lmdb-v2')) {
62
+ log.debug(`Opening data store at: ${dataDirectory} with size: ${dbMapSizeKb} KB (LMDB v2)`);
63
+ const [store] = await new DatabaseVersionManager({
64
+ schemaVersion,
65
+ rollupAddress,
66
+ dataDirectory,
67
+ onOpen: (dataDir)=>AztecLMDBStoreV2.new(dataDir, dbMapSizeKb, maxReaders, undefined, log)
68
+ }).open();
59
69
  return store;
60
70
  }
@@ -1,5 +1,3 @@
1
- import type { L2BlockStreamEventHandler, L2BlockStreamLocalDataProvider } from '@aztec/stdlib/block';
2
1
  export * from './l2_tips_store.js';
3
- export * from './l2_tips_memory_store.js';
4
- export type L2TipsStore = L2BlockStreamEventHandler & L2BlockStreamLocalDataProvider;
2
+ export { L2TipsMemoryStore, type L2TipsStore } from '@aztec/stdlib/block';
5
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/stores/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,8BAA8B,EAAE,MAAM,qBAAqB,CAAC;AAErG,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAE1C,MAAM,MAAM,WAAW,GAAG,yBAAyB,GAAG,8BAA8B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/stores/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AAEnC,OAAO,EAAE,iBAAiB,EAAE,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC"}
@@ -1,2 +1,2 @@
1
1
  export * from './l2_tips_store.js';
2
- export * from './l2_tips_memory_store.js';
2
+ export { L2TipsMemoryStore } from '@aztec/stdlib/block';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/kv-store",
3
- "version": "0.84.0",
3
+ "version": "0.85.0-alpha-testnet.1",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./dest/interfaces/index.js",
@@ -25,10 +25,10 @@
25
25
  "./package.local.json"
26
26
  ],
27
27
  "dependencies": {
28
- "@aztec/ethereum": "0.84.0",
29
- "@aztec/foundation": "0.84.0",
30
- "@aztec/native": "0.84.0",
31
- "@aztec/stdlib": "0.84.0",
28
+ "@aztec/ethereum": "0.85.0-alpha-testnet.1",
29
+ "@aztec/foundation": "0.85.0-alpha-testnet.1",
30
+ "@aztec/native": "0.85.0-alpha-testnet.1",
31
+ "@aztec/stdlib": "0.85.0-alpha-testnet.1",
32
32
  "idb": "^8.0.0",
33
33
  "lmdb": "^3.2.0",
34
34
  "msgpackr": "^1.11.2",
@@ -28,9 +28,13 @@ export async function createStore(
28
28
  const rollupAddress = l1Contracts ? l1Contracts.rollupAddress : EthAddress.ZERO;
29
29
 
30
30
  // Create a version manager
31
- const versionManager = new DatabaseVersionManager(schemaVersion, rollupAddress, subDir, dbDirectory =>
32
- AztecLMDBStoreV2.new(dbDirectory, config.dataStoreMapSizeKB, MAX_READERS, () => Promise.resolve(), log),
33
- );
31
+ const versionManager = new DatabaseVersionManager({
32
+ schemaVersion,
33
+ rollupAddress,
34
+ dataDirectory: subDir,
35
+ onOpen: dbDirectory =>
36
+ AztecLMDBStoreV2.new(dbDirectory, config.dataStoreMapSizeKB, MAX_READERS, () => Promise.resolve(), log),
37
+ });
34
38
 
35
39
  log.info(
36
40
  `Creating ${name} data store at directory ${subDir} with map size ${config.dataStoreMapSizeKB} KB (LMDB v2)`,
@@ -83,16 +87,19 @@ export async function openStoreAt(
83
87
  }
84
88
 
85
89
  export async function openVersionedStoreAt(
86
- dataDir: string,
90
+ dataDirectory: string,
87
91
  schemaVersion: number,
88
92
  rollupAddress: EthAddress,
89
93
  dbMapSizeKb = 10 * 1_024 * 1_024, // 10GB
90
94
  maxReaders = MAX_READERS,
91
95
  log: Logger = createLogger('kv-store:lmdb-v2'),
92
96
  ): Promise<AztecLMDBStoreV2> {
93
- log.debug(`Opening data store at: ${dataDir} with size: ${dbMapSizeKb} KB (LMDB v2)`);
94
- const [store] = await new DatabaseVersionManager(schemaVersion, rollupAddress, dataDir, dataDir =>
95
- AztecLMDBStoreV2.new(dataDir, dbMapSizeKb, maxReaders, undefined, log),
96
- ).open();
97
+ log.debug(`Opening data store at: ${dataDirectory} with size: ${dbMapSizeKb} KB (LMDB v2)`);
98
+ const [store] = await new DatabaseVersionManager({
99
+ schemaVersion,
100
+ rollupAddress,
101
+ dataDirectory,
102
+ onOpen: dataDir => AztecLMDBStoreV2.new(dataDir, dbMapSizeKb, maxReaders, undefined, log),
103
+ }).open();
97
104
  return store;
98
105
  }
@@ -1,6 +1,3 @@
1
- import type { L2BlockStreamEventHandler, L2BlockStreamLocalDataProvider } from '@aztec/stdlib/block';
2
-
3
1
  export * from './l2_tips_store.js';
4
- export * from './l2_tips_memory_store.js';
5
2
 
6
- export type L2TipsStore = L2BlockStreamEventHandler & L2BlockStreamLocalDataProvider;
3
+ export { L2TipsMemoryStore, type L2TipsStore } from '@aztec/stdlib/block';
@@ -1,3 +0,0 @@
1
- import type { L2BlockStreamEventHandler, L2BlockStreamLocalDataProvider } from '@aztec/stdlib/block';
2
- export type L2TipsStore = L2BlockStreamEventHandler & L2BlockStreamLocalDataProvider;
3
- //# sourceMappingURL=interface.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/stores/interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,8BAA8B,EAAE,MAAM,qBAAqB,CAAC;AAErG,MAAM,MAAM,WAAW,GAAG,yBAAyB,GAAG,8BAA8B,CAAC"}
@@ -1 +0,0 @@
1
- export { };
@@ -1,12 +0,0 @@
1
- import type { L2BlockStreamEvent, L2BlockStreamEventHandler, L2BlockStreamLocalDataProvider, L2Tips } from '@aztec/stdlib/block';
2
- /** Stores currently synced L2 tips and unfinalized block hashes. */
3
- export declare class L2TipsMemoryStore implements L2BlockStreamEventHandler, L2BlockStreamLocalDataProvider {
4
- private readonly l2TipsStore;
5
- private readonly l2BlockHashesStore;
6
- getL2BlockHash(number: number): Promise<string | undefined>;
7
- getL2Tips(): Promise<L2Tips>;
8
- private getL2Tip;
9
- handleBlockStreamEvent(event: L2BlockStreamEvent): Promise<void>;
10
- private saveTag;
11
- }
12
- //# sourceMappingURL=l2_tips_memory_store.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"l2_tips_memory_store.d.ts","sourceRoot":"","sources":["../../src/stores/l2_tips_memory_store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,kBAAkB,EAClB,yBAAyB,EACzB,8BAA8B,EAE9B,MAAM,EACP,MAAM,qBAAqB,CAAC;AAE7B,oEAAoE;AACpE,qBAAa,iBAAkB,YAAW,yBAAyB,EAAE,8BAA8B;IACjG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsC;IAClE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAkC;IAE9D,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAI3D,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAQnC,OAAO,CAAC,QAAQ;IAaH,sBAAsB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IA2B7E,OAAO,CAAC,OAAO;CAMhB"}
@@ -1,64 +0,0 @@
1
- /** Stores currently synced L2 tips and unfinalized block hashes. */ export class L2TipsMemoryStore {
2
- l2TipsStore = new Map();
3
- l2BlockHashesStore = new Map();
4
- getL2BlockHash(number) {
5
- return Promise.resolve(this.l2BlockHashesStore.get(number));
6
- }
7
- getL2Tips() {
8
- return Promise.resolve({
9
- latest: this.getL2Tip('latest'),
10
- finalized: this.getL2Tip('finalized'),
11
- proven: this.getL2Tip('proven')
12
- });
13
- }
14
- getL2Tip(tag) {
15
- const blockNumber = this.l2TipsStore.get(tag);
16
- if (blockNumber === undefined || blockNumber === 0) {
17
- return {
18
- number: 0,
19
- hash: undefined
20
- };
21
- }
22
- const blockHash = this.l2BlockHashesStore.get(blockNumber);
23
- if (!blockHash) {
24
- throw new Error(`Block hash not found for block number ${blockNumber}`);
25
- }
26
- return {
27
- number: blockNumber,
28
- hash: blockHash
29
- };
30
- }
31
- async handleBlockStreamEvent(event) {
32
- switch(event.type){
33
- case 'blocks-added':
34
- {
35
- const blocks = event.blocks.map((b)=>b.block);
36
- for (const block of blocks){
37
- this.l2BlockHashesStore.set(block.number, (await block.header.hash()).toString());
38
- }
39
- this.l2TipsStore.set('latest', blocks.at(-1).number);
40
- break;
41
- }
42
- case 'chain-pruned':
43
- this.saveTag('latest', event.block);
44
- break;
45
- case 'chain-proven':
46
- this.saveTag('proven', event.block);
47
- break;
48
- case 'chain-finalized':
49
- this.saveTag('finalized', event.block);
50
- for (const key of this.l2BlockHashesStore.keys()){
51
- if (key < event.block.number) {
52
- this.l2BlockHashesStore.delete(key);
53
- }
54
- }
55
- break;
56
- }
57
- }
58
- saveTag(name, block) {
59
- this.l2TipsStore.set(name, block.number);
60
- if (block.hash) {
61
- this.l2BlockHashesStore.set(block.number, block.hash);
62
- }
63
- }
64
- }
@@ -1,3 +0,0 @@
1
- import type { L2BlockStreamEventHandler, L2BlockStreamLocalDataProvider } from '@aztec/stdlib/block';
2
-
3
- export type L2TipsStore = L2BlockStreamEventHandler & L2BlockStreamLocalDataProvider;
@@ -1,73 +0,0 @@
1
- import type {
2
- L2BlockId,
3
- L2BlockStreamEvent,
4
- L2BlockStreamEventHandler,
5
- L2BlockStreamLocalDataProvider,
6
- L2BlockTag,
7
- L2Tips,
8
- } from '@aztec/stdlib/block';
9
-
10
- /** Stores currently synced L2 tips and unfinalized block hashes. */
11
- export class L2TipsMemoryStore implements L2BlockStreamEventHandler, L2BlockStreamLocalDataProvider {
12
- private readonly l2TipsStore: Map<L2BlockTag, number> = new Map();
13
- private readonly l2BlockHashesStore: Map<number, string> = new Map();
14
-
15
- public getL2BlockHash(number: number): Promise<string | undefined> {
16
- return Promise.resolve(this.l2BlockHashesStore.get(number));
17
- }
18
-
19
- public getL2Tips(): Promise<L2Tips> {
20
- return Promise.resolve({
21
- latest: this.getL2Tip('latest'),
22
- finalized: this.getL2Tip('finalized'),
23
- proven: this.getL2Tip('proven'),
24
- });
25
- }
26
-
27
- private getL2Tip(tag: L2BlockTag): L2BlockId {
28
- const blockNumber = this.l2TipsStore.get(tag);
29
- if (blockNumber === undefined || blockNumber === 0) {
30
- return { number: 0, hash: undefined };
31
- }
32
- const blockHash = this.l2BlockHashesStore.get(blockNumber);
33
- if (!blockHash) {
34
- throw new Error(`Block hash not found for block number ${blockNumber}`);
35
- }
36
-
37
- return { number: blockNumber, hash: blockHash };
38
- }
39
-
40
- public async handleBlockStreamEvent(event: L2BlockStreamEvent): Promise<void> {
41
- switch (event.type) {
42
- case 'blocks-added': {
43
- const blocks = event.blocks.map(b => b.block);
44
- for (const block of blocks) {
45
- this.l2BlockHashesStore.set(block.number, (await block.header.hash()).toString());
46
- }
47
- this.l2TipsStore.set('latest', blocks.at(-1)!.number);
48
- break;
49
- }
50
- case 'chain-pruned':
51
- this.saveTag('latest', event.block);
52
- break;
53
- case 'chain-proven':
54
- this.saveTag('proven', event.block);
55
- break;
56
- case 'chain-finalized':
57
- this.saveTag('finalized', event.block);
58
- for (const key of this.l2BlockHashesStore.keys()) {
59
- if (key < event.block.number) {
60
- this.l2BlockHashesStore.delete(key);
61
- }
62
- }
63
- break;
64
- }
65
- }
66
-
67
- private saveTag(name: L2BlockTag, block: L2BlockId) {
68
- this.l2TipsStore.set(name, block.number);
69
- if (block.hash) {
70
- this.l2BlockHashesStore.set(block.number, block.hash);
71
- }
72
- }
73
- }