@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.
- package/dest/lmdb-v2/factory.d.ts +1 -1
- package/dest/lmdb-v2/factory.d.ts.map +1 -1
- package/dest/lmdb-v2/factory.js +14 -4
- package/dest/stores/index.d.ts +1 -3
- package/dest/stores/index.d.ts.map +1 -1
- package/dest/stores/index.js +1 -1
- package/package.json +5 -5
- package/src/lmdb-v2/factory.ts +15 -8
- package/src/stores/index.ts +1 -4
- package/dest/stores/interface.d.ts +0 -3
- package/dest/stores/interface.d.ts.map +0 -1
- package/dest/stores/interface.js +0 -1
- package/dest/stores/l2_tips_memory_store.d.ts +0 -12
- package/dest/stores/l2_tips_memory_store.d.ts.map +0 -1
- package/dest/stores/l2_tips_memory_store.js +0 -64
- package/src/stores/interface.ts +0 -3
- package/src/stores/l2_tips_memory_store.ts +0 -73
|
@@ -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(
|
|
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,
|
|
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"}
|
package/dest/lmdb-v2/factory.js
CHANGED
|
@@ -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(
|
|
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(
|
|
57
|
-
log.debug(`Opening data store at: ${
|
|
58
|
-
const [store] = await new DatabaseVersionManager(
|
|
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
|
}
|
package/dest/stores/index.d.ts
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import type { L2BlockStreamEventHandler, L2BlockStreamLocalDataProvider } from '@aztec/stdlib/block';
|
|
2
1
|
export * from './l2_tips_store.js';
|
|
3
|
-
export
|
|
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,
|
|
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"}
|
package/dest/stores/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export * from './l2_tips_store.js';
|
|
2
|
-
export
|
|
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.
|
|
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.
|
|
29
|
-
"@aztec/foundation": "0.
|
|
30
|
-
"@aztec/native": "0.
|
|
31
|
-
"@aztec/stdlib": "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",
|
package/src/lmdb-v2/factory.ts
CHANGED
|
@@ -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(
|
|
32
|
-
|
|
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
|
-
|
|
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: ${
|
|
94
|
-
const [store] = await new DatabaseVersionManager(
|
|
95
|
-
|
|
96
|
-
|
|
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
|
}
|
package/src/stores/index.ts
CHANGED
|
@@ -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
|
|
3
|
+
export { L2TipsMemoryStore, type L2TipsStore } from '@aztec/stdlib/block';
|
|
@@ -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"}
|
package/dest/stores/interface.js
DELETED
|
@@ -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
|
-
}
|
package/src/stores/interface.ts
DELETED
|
@@ -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
|
-
}
|