@aztec/world-state 0.0.1-commit.b2a5d0dd1 → 0.0.1-commit.b3d3157a
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 +4 -3
- package/dest/instrumentation/instrumentation.d.ts.map +1 -1
- package/dest/instrumentation/instrumentation.js +4 -9
- package/dest/native/ipc_world_state_instance.d.ts +87 -0
- package/dest/native/ipc_world_state_instance.d.ts.map +1 -0
- package/dest/native/ipc_world_state_instance.js +660 -0
- package/dest/native/merkle_trees_facade.d.ts +6 -3
- package/dest/native/merkle_trees_facade.d.ts.map +1 -1
- package/dest/native/merkle_trees_facade.js +53 -113
- package/dest/native/message.d.ts +14 -229
- package/dest/native/message.d.ts.map +1 -1
- package/dest/native/message.js +0 -42
- package/dest/native/native_world_state.d.ts +15 -5
- package/dest/native/native_world_state.d.ts.map +1 -1
- package/dest/native/native_world_state.js +97 -51
- package/dest/native/native_world_state_instance.d.ts +58 -41
- package/dest/native/native_world_state_instance.d.ts.map +1 -1
- package/dest/native/native_world_state_instance.js +5 -203
- package/dest/native/world_state_operation.d.ts +7 -0
- package/dest/native/world_state_operation.d.ts.map +1 -0
- package/dest/native/world_state_operation.js +5 -0
- package/dest/synchronizer/config.d.ts +1 -1
- package/dest/synchronizer/config.d.ts.map +1 -1
- package/dest/synchronizer/config.js +9 -10
- package/dest/synchronizer/factory.d.ts +3 -3
- package/dest/synchronizer/factory.d.ts.map +1 -1
- package/dest/synchronizer/factory.js +5 -5
- package/dest/synchronizer/server_world_state_synchronizer.d.ts +1 -1
- package/dest/synchronizer/server_world_state_synchronizer.d.ts.map +1 -1
- package/dest/synchronizer/server_world_state_synchronizer.js +16 -13
- package/dest/testing.js +1 -1
- package/package.json +14 -10
- package/src/instrumentation/instrumentation.ts +6 -18
- package/src/native/ipc_world_state_instance.ts +830 -0
- package/src/native/merkle_trees_facade.ts +76 -108
- package/src/native/message.ts +13 -296
- package/src/native/native_world_state.ts +113 -79
- package/src/native/native_world_state_instance.ts +96 -284
- package/src/native/world_state_operation.ts +33 -0
- package/src/synchronizer/config.ts +14 -10
- package/src/synchronizer/factory.ts +8 -7
- package/src/synchronizer/server_world_state_synchronizer.ts +11 -14
- package/src/testing.ts +1 -1
- package/dest/native/world_state_ops_queue.d.ts +0 -19
- package/dest/native/world_state_ops_queue.d.ts.map +0 -1
- package/dest/native/world_state_ops_queue.js +0 -146
- package/src/native/world_state_ops_queue.ts +0 -190
|
@@ -5,7 +5,7 @@ import { BlockHash } from '@aztec/stdlib/block';
|
|
|
5
5
|
import type { BatchInsertionResult, IndexedTreeId, MerkleTreeLeafType, MerkleTreeReadOperations, MerkleTreeWriteOperations, SequentialInsertionResult, TreeInfo } from '@aztec/stdlib/interfaces/server';
|
|
6
6
|
import { MerkleTreeId, NullifierLeaf, PublicDataTreeLeaf } from '@aztec/stdlib/trees';
|
|
7
7
|
import { type BlockHeader, StateReference } from '@aztec/stdlib/tx';
|
|
8
|
-
import {
|
|
8
|
+
import type { WorldStateRevision } from '@aztec/stdlib/world-state';
|
|
9
9
|
import { type SerializedLeafValue } from './message.js';
|
|
10
10
|
import type { NativeWorldStateInstance } from './native_world_state_instance.js';
|
|
11
11
|
export declare class MerkleTreesFacade implements MerkleTreeReadOperations {
|
|
@@ -14,7 +14,8 @@ export declare class MerkleTreesFacade implements MerkleTreeReadOperations {
|
|
|
14
14
|
protected readonly revision: WorldStateRevision;
|
|
15
15
|
constructor(instance: NativeWorldStateInstance, initialHeader: BlockHeader, revision: WorldStateRevision);
|
|
16
16
|
getInitialHeader(): BlockHeader;
|
|
17
|
-
getRevision():
|
|
17
|
+
getRevision(): WorldStateRevision;
|
|
18
|
+
getIpcPath(): string;
|
|
18
19
|
findLeafIndices(treeId: MerkleTreeId, values: MerkleTreeLeafType<MerkleTreeId>[]): Promise<(bigint | undefined)[]>;
|
|
19
20
|
findSiblingPaths<N extends number>(treeId: MerkleTreeId, values: MerkleTreeLeafType<MerkleTreeId>[]): Promise<({
|
|
20
21
|
path: SiblingPath<N>;
|
|
@@ -36,6 +37,7 @@ export declare class MerkleTreesFacade implements MerkleTreeReadOperations {
|
|
|
36
37
|
export declare class MerkleTreesForkFacade extends MerkleTreesFacade implements MerkleTreeWriteOperations {
|
|
37
38
|
private opts;
|
|
38
39
|
private log;
|
|
40
|
+
private closePromise;
|
|
39
41
|
constructor(instance: NativeWorldStateInstance, initialHeader: BlockHeader, revision: WorldStateRevision, opts: {
|
|
40
42
|
closeDelayMs?: number;
|
|
41
43
|
});
|
|
@@ -44,6 +46,7 @@ export declare class MerkleTreesForkFacade extends MerkleTreesFacade implements
|
|
|
44
46
|
batchInsert<TreeHeight extends number, SubtreeSiblingPathHeight extends number, ID extends IndexedTreeId>(treeId: ID, rawLeaves: Buffer[], subtreeHeight: number): Promise<BatchInsertionResult<TreeHeight, SubtreeSiblingPathHeight>>;
|
|
45
47
|
sequentialInsert<TreeHeight extends number, ID extends IndexedTreeId>(treeId: ID, rawLeaves: Buffer[]): Promise<SequentialInsertionResult<TreeHeight>>;
|
|
46
48
|
close(): Promise<void>;
|
|
49
|
+
private doClose;
|
|
47
50
|
[Symbol.asyncDispose](): Promise<void>;
|
|
48
51
|
createCheckpoint(): Promise<number>;
|
|
49
52
|
commitCheckpoint(): Promise<void>;
|
|
@@ -52,4 +55,4 @@ export declare class MerkleTreesForkFacade extends MerkleTreesFacade implements
|
|
|
52
55
|
revertAllCheckpointsTo(depth: number): Promise<void>;
|
|
53
56
|
}
|
|
54
57
|
export declare function serializeLeaf(leaf: Fr | BlockHash | NullifierLeaf | PublicDataTreeLeaf): SerializedLeafValue;
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVya2xlX3RyZWVzX2ZhY2FkZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL25hdGl2ZS9tZXJrbGVfdHJlZXNfZmFjYWRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFJcEQsT0FBTyxFQUFFLEtBQUssdUJBQXVCLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hELE9BQU8sS0FBSyxFQUNWLG9CQUFvQixFQUNwQixhQUFhLEVBQ2Isa0JBQWtCLEVBQ2xCLHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDekIseUJBQXlCLEVBQ3pCLFFBQVEsRUFDVCxNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFDTCxZQUFZLEVBQ1osYUFBYSxFQUViLGtCQUFrQixFQUVuQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxLQUFLLFdBQVcsRUFBeUIsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDM0YsT0FBTyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUlwRSxPQUFPLEVBRUwsS0FBSyxtQkFBbUIsRUFHekIsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxLQUFLLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUVqRixxQkFBYSxpQkFBa0IsWUFBVyx3QkFBd0I7SUFFOUQsU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsd0JBQXdCO0lBQ3JELFNBQVMsQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLFdBQVc7SUFDN0MsU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsa0JBQWtCO0lBSGpELFlBQ3FCLFFBQVEs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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merkle_trees_facade.d.ts","sourceRoot":"","sources":["../../src/native/merkle_trees_facade.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAIpD,OAAO,EAAE,KAAK,uBAAuB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACpF,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,EACV,oBAAoB,EACpB,aAAa,EACb,kBAAkB,EAClB,wBAAwB,EACxB,yBAAyB,EACzB,yBAAyB,EACzB,QAAQ,EACT,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,YAAY,EACZ,aAAa,EAEb,kBAAkB,EAEnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,WAAW,EAAyB,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC3F,OAAO,
|
|
1
|
+
{"version":3,"file":"merkle_trees_facade.d.ts","sourceRoot":"","sources":["../../src/native/merkle_trees_facade.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,9 +8,8 @@ import { SiblingPath } from '@aztec/foundation/trees';
|
|
|
8
8
|
import { BlockHash } from '@aztec/stdlib/block';
|
|
9
9
|
import { MerkleTreeId, NullifierLeaf, NullifierLeafPreimage, PublicDataTreeLeaf, PublicDataTreeLeafPreimage } from '@aztec/stdlib/trees';
|
|
10
10
|
import { PartialStateReference, StateReference } from '@aztec/stdlib/tx';
|
|
11
|
-
import { WorldStateRevisionWithHandle } from '@aztec/stdlib/world-state';
|
|
12
11
|
import assert from 'assert';
|
|
13
|
-
import {
|
|
12
|
+
import { blockStateReference, treeStateReferenceToSnapshot } from './message.js';
|
|
14
13
|
export class MerkleTreesFacade {
|
|
15
14
|
instance;
|
|
16
15
|
initialHeader;
|
|
@@ -24,18 +23,17 @@ export class MerkleTreesFacade {
|
|
|
24
23
|
return this.initialHeader;
|
|
25
24
|
}
|
|
26
25
|
getRevision() {
|
|
27
|
-
return
|
|
26
|
+
return this.revision;
|
|
27
|
+
}
|
|
28
|
+
getIpcPath() {
|
|
29
|
+
return this.instance.getIpcPath();
|
|
28
30
|
}
|
|
29
31
|
findLeafIndices(treeId, values) {
|
|
30
32
|
return this.findLeafIndicesAfter(treeId, values, 0n);
|
|
31
33
|
}
|
|
32
34
|
async findSiblingPaths(treeId, values) {
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
revision: this.revision,
|
|
36
|
-
treeId
|
|
37
|
-
});
|
|
38
|
-
return response.paths.map((path)=>{
|
|
35
|
+
const paths = await this.instance.findSiblingPaths(treeId, this.revision, values.map((leaf)=>serializeLeaf(hydrateLeaf(treeId, leaf))));
|
|
36
|
+
return paths.map((path)=>{
|
|
39
37
|
if (!path) {
|
|
40
38
|
return undefined;
|
|
41
39
|
}
|
|
@@ -46,13 +44,8 @@ export class MerkleTreesFacade {
|
|
|
46
44
|
});
|
|
47
45
|
}
|
|
48
46
|
async findLeafIndicesAfter(treeId, leaves, startIndex) {
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
revision: this.revision,
|
|
52
|
-
treeId,
|
|
53
|
-
startIndex
|
|
54
|
-
});
|
|
55
|
-
return response.indices.map((index)=>{
|
|
47
|
+
const indices = await this.instance.findLeafIndices(treeId, this.revision, leaves.map((leaf)=>serializeLeaf(hydrateLeaf(treeId, leaf))), startIndex);
|
|
48
|
+
return indices.map((index)=>{
|
|
56
49
|
if (typeof index === 'number' || typeof index === 'bigint') {
|
|
57
50
|
return BigInt(index);
|
|
58
51
|
} else {
|
|
@@ -61,19 +54,11 @@ export class MerkleTreesFacade {
|
|
|
61
54
|
});
|
|
62
55
|
}
|
|
63
56
|
async getLeafPreimage(treeId, leafIndex) {
|
|
64
|
-
const resp = await this.instance.
|
|
65
|
-
leafIndex,
|
|
66
|
-
revision: this.revision,
|
|
67
|
-
treeId
|
|
68
|
-
});
|
|
57
|
+
const resp = await this.instance.getLeafPreimage(treeId, this.revision, leafIndex);
|
|
69
58
|
return resp ? deserializeIndexedLeaf(resp) : undefined;
|
|
70
59
|
}
|
|
71
60
|
async getLeafValue(treeId, leafIndex) {
|
|
72
|
-
const resp = await this.instance.
|
|
73
|
-
leafIndex,
|
|
74
|
-
revision: this.revision,
|
|
75
|
-
treeId
|
|
76
|
-
});
|
|
61
|
+
const resp = await this.instance.getLeafValue(treeId, this.revision, leafIndex);
|
|
77
62
|
if (!resp) {
|
|
78
63
|
return undefined;
|
|
79
64
|
}
|
|
@@ -85,93 +70,56 @@ export class MerkleTreesFacade {
|
|
|
85
70
|
}
|
|
86
71
|
}
|
|
87
72
|
async getPreviousValueIndex(treeId, value) {
|
|
88
|
-
const resp = await this.instance.
|
|
89
|
-
key: new Fr(value),
|
|
90
|
-
revision: this.revision,
|
|
91
|
-
treeId
|
|
92
|
-
});
|
|
73
|
+
const resp = await this.instance.findLowLeaf(treeId, this.revision, new Fr(value));
|
|
93
74
|
return {
|
|
94
75
|
alreadyPresent: resp.alreadyPresent,
|
|
95
76
|
index: BigInt(resp.index)
|
|
96
77
|
};
|
|
97
78
|
}
|
|
98
79
|
async getSiblingPath(treeId, leafIndex) {
|
|
99
|
-
const siblingPath = await this.instance.
|
|
100
|
-
leafIndex,
|
|
101
|
-
revision: this.revision,
|
|
102
|
-
treeId
|
|
103
|
-
});
|
|
80
|
+
const siblingPath = await this.instance.getSiblingPath(treeId, this.revision, leafIndex);
|
|
104
81
|
return new SiblingPath(siblingPath.length, siblingPath);
|
|
105
82
|
}
|
|
106
83
|
async getStateReference() {
|
|
107
|
-
const
|
|
108
|
-
|
|
109
|
-
});
|
|
110
|
-
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])));
|
|
84
|
+
const state = await this.instance.getStateReference(this.revision);
|
|
85
|
+
return new StateReference(treeStateReferenceToSnapshot(state[MerkleTreeId.L1_TO_L2_MESSAGE_TREE]), new PartialStateReference(treeStateReferenceToSnapshot(state[MerkleTreeId.NOTE_HASH_TREE]), treeStateReferenceToSnapshot(state[MerkleTreeId.NULLIFIER_TREE]), treeStateReferenceToSnapshot(state[MerkleTreeId.PUBLIC_DATA_TREE])));
|
|
111
86
|
}
|
|
112
87
|
async getInitialStateReference() {
|
|
113
|
-
const
|
|
114
|
-
|
|
115
|
-
});
|
|
116
|
-
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])));
|
|
88
|
+
const state = await this.instance.getInitialStateReference();
|
|
89
|
+
return new StateReference(treeStateReferenceToSnapshot(state[MerkleTreeId.L1_TO_L2_MESSAGE_TREE]), new PartialStateReference(treeStateReferenceToSnapshot(state[MerkleTreeId.NOTE_HASH_TREE]), treeStateReferenceToSnapshot(state[MerkleTreeId.NULLIFIER_TREE]), treeStateReferenceToSnapshot(state[MerkleTreeId.PUBLIC_DATA_TREE])));
|
|
117
90
|
}
|
|
118
91
|
async getTreeInfo(treeId) {
|
|
119
|
-
|
|
120
|
-
treeId: treeId,
|
|
121
|
-
revision: this.revision
|
|
122
|
-
});
|
|
123
|
-
return {
|
|
124
|
-
depth: resp.depth,
|
|
125
|
-
root: resp.root,
|
|
126
|
-
size: BigInt(resp.size),
|
|
127
|
-
treeId
|
|
128
|
-
};
|
|
92
|
+
return await this.instance.getTreeInfo(treeId, this.revision);
|
|
129
93
|
}
|
|
130
94
|
async getBlockNumbersForLeafIndices(treeId, leafIndices) {
|
|
131
|
-
const
|
|
132
|
-
|
|
133
|
-
revision: this.revision,
|
|
134
|
-
leafIndices
|
|
135
|
-
});
|
|
136
|
-
return response.blockNumbers.map((x)=>x === undefined || x === null ? undefined : BlockNumber(Number(x)));
|
|
95
|
+
const blockNumbers = await this.instance.getBlockNumbersForLeafIndices(treeId, this.revision, leafIndices);
|
|
96
|
+
return blockNumbers.map((x)=>x === undefined || x === null ? undefined : BlockNumber(Number(x)));
|
|
137
97
|
}
|
|
138
98
|
}
|
|
139
99
|
_computedKey = Symbol.asyncDispose;
|
|
140
100
|
export class MerkleTreesForkFacade extends MerkleTreesFacade {
|
|
141
101
|
opts;
|
|
142
102
|
log;
|
|
103
|
+
closePromise;
|
|
143
104
|
constructor(instance, initialHeader, revision, opts){
|
|
144
105
|
assert.notEqual(revision.forkId, 0, 'Fork ID must be set');
|
|
145
106
|
assert.equal(revision.includeUncommitted, true, 'Fork must include uncommitted data');
|
|
146
107
|
super(instance, initialHeader, revision), this.opts = opts, this.log = createLogger('world-state:merkle-trees-fork-facade');
|
|
147
108
|
}
|
|
148
109
|
async updateArchive(header) {
|
|
149
|
-
await this.instance.
|
|
150
|
-
forkId: this.revision.forkId,
|
|
151
|
-
blockHeaderHash: (await header.hash()).toBuffer(),
|
|
152
|
-
blockStateRef: blockStateReference(header.state)
|
|
153
|
-
});
|
|
110
|
+
await this.instance.updateArchive(this.revision.forkId, blockStateReference(header.state), (await header.hash()).toBuffer());
|
|
154
111
|
}
|
|
155
112
|
async appendLeaves(treeId, leaves) {
|
|
156
|
-
await this.instance.
|
|
157
|
-
leaves: leaves.map((leaf)=>serializeLeaf(hydrateLeaf(treeId, leaf))),
|
|
158
|
-
forkId: this.revision.forkId,
|
|
159
|
-
treeId
|
|
160
|
-
});
|
|
113
|
+
await this.instance.appendLeaves(treeId, this.revision.forkId, leaves.map((leaf)=>serializeLeaf(hydrateLeaf(treeId, leaf))));
|
|
161
114
|
}
|
|
162
115
|
async batchInsert(treeId, rawLeaves, subtreeHeight) {
|
|
163
116
|
const leaves = rawLeaves.map((leaf)=>hydrateLeaf(treeId, leaf)).map(serializeLeaf);
|
|
164
|
-
const resp = await this.instance.
|
|
165
|
-
leaves,
|
|
166
|
-
treeId,
|
|
167
|
-
forkId: this.revision.forkId,
|
|
168
|
-
subtreeDepth: subtreeHeight
|
|
169
|
-
});
|
|
117
|
+
const resp = await this.instance.batchInsert(treeId, this.revision.forkId, leaves, subtreeHeight);
|
|
170
118
|
return {
|
|
171
|
-
newSubtreeSiblingPath: new SiblingPath(resp.
|
|
172
|
-
sortedNewLeaves: resp.
|
|
173
|
-
sortedNewLeavesIndexes: resp.
|
|
174
|
-
lowLeavesWitnessData: resp.
|
|
119
|
+
newSubtreeSiblingPath: new SiblingPath(resp.subtreePath.length, resp.subtreePath),
|
|
120
|
+
sortedNewLeaves: resp.sortedLeaves.map(([leaf])=>leaf).map(deserializeLeafValue).map(serializeToBuffer),
|
|
121
|
+
sortedNewLeavesIndexes: resp.sortedLeaves.map(([, index])=>index),
|
|
122
|
+
lowLeavesWitnessData: resp.lowLeafWitnessData.map((data)=>({
|
|
175
123
|
index: BigInt(data.index),
|
|
176
124
|
leafPreimage: deserializeIndexedLeaf(data.leaf),
|
|
177
125
|
siblingPath: new SiblingPath(data.path.length, data.path)
|
|
@@ -180,34 +128,42 @@ export class MerkleTreesForkFacade extends MerkleTreesFacade {
|
|
|
180
128
|
}
|
|
181
129
|
async sequentialInsert(treeId, rawLeaves) {
|
|
182
130
|
const leaves = rawLeaves.map((leaf)=>hydrateLeaf(treeId, leaf)).map(serializeLeaf);
|
|
183
|
-
const resp = await this.instance.
|
|
184
|
-
leaves,
|
|
185
|
-
treeId,
|
|
186
|
-
forkId: this.revision.forkId
|
|
187
|
-
});
|
|
131
|
+
const resp = await this.instance.sequentialInsert(treeId, this.revision.forkId, leaves);
|
|
188
132
|
return {
|
|
189
|
-
lowLeavesWitnessData: resp.
|
|
133
|
+
lowLeavesWitnessData: resp.lowLeafWitnessData.map((data)=>({
|
|
190
134
|
index: BigInt(data.index),
|
|
191
135
|
leafPreimage: deserializeIndexedLeaf(data.leaf),
|
|
192
136
|
siblingPath: new SiblingPath(data.path.length, data.path)
|
|
193
137
|
})),
|
|
194
|
-
insertionWitnessData: resp.
|
|
138
|
+
insertionWitnessData: resp.insertionWitnessData.map((data)=>({
|
|
195
139
|
index: BigInt(data.index),
|
|
196
140
|
leafPreimage: deserializeIndexedLeaf(data.leaf),
|
|
197
141
|
siblingPath: new SiblingPath(data.path.length, data.path)
|
|
198
142
|
}))
|
|
199
143
|
};
|
|
200
144
|
}
|
|
201
|
-
|
|
145
|
+
close() {
|
|
202
146
|
assert.notEqual(this.revision.forkId, 0, 'Fork ID must be set');
|
|
147
|
+
// Share the in-flight close promise across duplicate dispose calls so DELETE_FORK is sent at most once.
|
|
148
|
+
if (this.closePromise) {
|
|
149
|
+
return this.closePromise;
|
|
150
|
+
}
|
|
151
|
+
this.closePromise = this.doClose();
|
|
152
|
+
return this.closePromise;
|
|
153
|
+
}
|
|
154
|
+
async doClose() {
|
|
203
155
|
try {
|
|
204
|
-
await this.instance.
|
|
205
|
-
forkId: this.revision.forkId
|
|
206
|
-
});
|
|
156
|
+
await this.instance.deleteFork(this.revision.forkId);
|
|
207
157
|
} catch (err) {
|
|
208
158
|
// Ignore errors due to native instance being closed during shutdown.
|
|
209
159
|
// This can happen when validators are still processing block proposals while the node is stopping.
|
|
210
|
-
if (err?.message === 'Native instance is closed') {
|
|
160
|
+
if (err?.message === 'Native instance is closed' || err?.message === 'IPC instance is closed') {
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
// Ignore "Fork not found": the native fork was already destroyed by a pending-chain unwind or a
|
|
164
|
+
// historical prune (both call C++ remove_forks_for_block). Fork IDs are monotonic and never reused,
|
|
165
|
+
// so swallowing this on close cannot mask a deletion of a different fork.
|
|
166
|
+
if (err?.message === 'Fork not found') {
|
|
211
167
|
return;
|
|
212
168
|
}
|
|
213
169
|
throw err;
|
|
@@ -216,9 +172,6 @@ export class MerkleTreesForkFacade extends MerkleTreesFacade {
|
|
|
216
172
|
async [_computedKey]() {
|
|
217
173
|
if (this.opts.closeDelayMs) {
|
|
218
174
|
void sleep(this.opts.closeDelayMs).then(()=>this.close()).catch((err)=>{
|
|
219
|
-
if (err && 'message' in err && err.message === 'Native instance is closed') {
|
|
220
|
-
return; // Ignore errors due to native instance being closed
|
|
221
|
-
}
|
|
222
175
|
this.log.warn('Error closing MerkleTreesForkFacade after delay', {
|
|
223
176
|
err
|
|
224
177
|
});
|
|
@@ -229,36 +182,23 @@ export class MerkleTreesForkFacade extends MerkleTreesFacade {
|
|
|
229
182
|
}
|
|
230
183
|
async createCheckpoint() {
|
|
231
184
|
assert.notEqual(this.revision.forkId, 0, 'Fork ID must be set');
|
|
232
|
-
|
|
233
|
-
forkId: this.revision.forkId
|
|
234
|
-
});
|
|
235
|
-
return resp.depth;
|
|
185
|
+
return await this.instance.createCheckpoint(this.revision.forkId);
|
|
236
186
|
}
|
|
237
187
|
async commitCheckpoint() {
|
|
238
188
|
assert.notEqual(this.revision.forkId, 0, 'Fork ID must be set');
|
|
239
|
-
await this.instance.
|
|
240
|
-
forkId: this.revision.forkId
|
|
241
|
-
});
|
|
189
|
+
await this.instance.commitCheckpoint(this.revision.forkId);
|
|
242
190
|
}
|
|
243
191
|
async revertCheckpoint() {
|
|
244
192
|
assert.notEqual(this.revision.forkId, 0, 'Fork ID must be set');
|
|
245
|
-
await this.instance.
|
|
246
|
-
forkId: this.revision.forkId
|
|
247
|
-
});
|
|
193
|
+
await this.instance.revertCheckpoint(this.revision.forkId);
|
|
248
194
|
}
|
|
249
195
|
async commitAllCheckpointsTo(depth) {
|
|
250
196
|
assert.notEqual(this.revision.forkId, 0, 'Fork ID must be set');
|
|
251
|
-
await this.instance.
|
|
252
|
-
forkId: this.revision.forkId,
|
|
253
|
-
depth
|
|
254
|
-
});
|
|
197
|
+
await this.instance.commitAllCheckpoints(this.revision.forkId, depth);
|
|
255
198
|
}
|
|
256
199
|
async revertAllCheckpointsTo(depth) {
|
|
257
200
|
assert.notEqual(this.revision.forkId, 0, 'Fork ID must be set');
|
|
258
|
-
await this.instance.
|
|
259
|
-
forkId: this.revision.forkId,
|
|
260
|
-
depth
|
|
261
|
-
});
|
|
201
|
+
await this.instance.revertAllCheckpoints(this.revision.forkId, depth);
|
|
262
202
|
}
|
|
263
203
|
}
|
|
264
204
|
function hydrateLeaf(treeId, leaf) {
|