@aztec/world-state 0.0.1-commit.2f68f620 → 0.0.1-commit.3100065
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/instrumentation/instrumentation.d.ts +3 -4
- package/dest/instrumentation/instrumentation.d.ts.map +1 -1
- package/dest/instrumentation/instrumentation.js +9 -4
- package/dest/native/ipc_world_state_instance.d.ts +22 -59
- package/dest/native/ipc_world_state_instance.d.ts.map +1 -1
- package/dest/native/ipc_world_state_instance.js +495 -520
- package/dest/native/merkle_trees_facade.d.ts +3 -4
- package/dest/native/merkle_trees_facade.d.ts.map +1 -1
- package/dest/native/merkle_trees_facade.js +109 -37
- package/dest/native/message.d.ts +233 -14
- package/dest/native/message.d.ts.map +1 -1
- package/dest/native/message.js +42 -0
- package/dest/native/native_world_state.d.ts +28 -14
- package/dest/native/native_world_state.d.ts.map +1 -1
- package/dest/native/native_world_state.js +102 -101
- package/dest/native/native_world_state_instance.d.ts +42 -58
- package/dest/native/native_world_state_instance.d.ts.map +1 -1
- package/dest/native/native_world_state_instance.js +222 -5
- package/dest/native/world_state_ops_queue.d.ts +19 -0
- package/dest/native/world_state_ops_queue.d.ts.map +1 -0
- package/dest/native/world_state_ops_queue.js +146 -0
- package/dest/synchronizer/errors.d.ts +8 -1
- package/dest/synchronizer/errors.d.ts.map +1 -1
- package/dest/synchronizer/errors.js +8 -1
- package/dest/synchronizer/factory.d.ts +1 -1
- package/dest/synchronizer/factory.d.ts.map +1 -1
- package/dest/synchronizer/factory.js +1 -1
- package/dest/synchronizer/index.d.ts +2 -1
- package/dest/synchronizer/index.d.ts.map +1 -1
- package/dest/synchronizer/index.js +1 -0
- package/dest/synchronizer/server_world_state_synchronizer.d.ts +11 -6
- package/dest/synchronizer/server_world_state_synchronizer.d.ts.map +1 -1
- package/dest/synchronizer/server_world_state_synchronizer.js +55 -43
- package/dest/test/utils.d.ts +1 -1
- package/dest/test/utils.d.ts.map +1 -1
- package/dest/test/utils.js +6 -1
- package/dest/testing.d.ts +2 -2
- package/dest/testing.d.ts.map +1 -1
- package/dest/testing.js +15 -4
- package/package.json +10 -12
- package/src/instrumentation/instrumentation.ts +18 -6
- package/src/native/ipc_world_state_instance.ts +503 -608
- package/src/native/merkle_trees_facade.ts +104 -59
- package/src/native/message.ts +300 -13
- package/src/native/native_world_state.ts +156 -121
- package/src/native/native_world_state_instance.ts +307 -96
- package/src/native/world_state_ops_queue.ts +190 -0
- package/src/synchronizer/errors.ts +8 -0
- package/src/synchronizer/factory.ts +1 -0
- package/src/synchronizer/index.ts +1 -0
- package/src/synchronizer/server_world_state_synchronizer.ts +63 -30
- package/src/test/utils.ts +10 -1
- package/src/testing.ts +14 -4
- package/dest/native/world_state_operation.d.ts +0 -7
- package/dest/native/world_state_operation.d.ts.map +0 -1
- package/dest/native/world_state_operation.js +0 -5
- package/src/native/world_state_operation.ts +0 -33
|
@@ -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 type
|
|
8
|
+
import { type WorldStateRevision, WorldStateRevisionWithHandle } 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,8 +14,7 @@ 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():
|
|
18
|
-
getIpcPath(): string;
|
|
17
|
+
getRevision(): WorldStateRevisionWithHandle;
|
|
19
18
|
findLeafIndices(treeId: MerkleTreeId, values: MerkleTreeLeafType<MerkleTreeId>[]): Promise<(bigint | undefined)[]>;
|
|
20
19
|
findSiblingPaths<N extends number>(treeId: MerkleTreeId, values: MerkleTreeLeafType<MerkleTreeId>[]): Promise<({
|
|
21
20
|
path: SiblingPath<N>;
|
|
@@ -55,4 +54,4 @@ export declare class MerkleTreesForkFacade extends MerkleTreesFacade implements
|
|
|
55
54
|
revertAllCheckpointsTo(depth: number): Promise<void>;
|
|
56
55
|
}
|
|
57
56
|
export declare function serializeLeaf(leaf: Fr | BlockHash | NullifierLeaf | PublicDataTreeLeaf): SerializedLeafValue;
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVya2xlX3RyZWVzX2ZhY2FkZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL25hdGl2ZS9tZXJrbGVfdHJlZXNfZmFjYWRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFJcEQsT0FBTyxFQUFFLEtBQUssdUJBQXVCLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hELE9BQU8sS0FBSyxFQUNWLG9CQUFvQixFQUNwQixhQUFhLEVBQ2Isa0JBQWtCLEVBQ2xCLHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDekIseUJBQXlCLEVBQ3pCLFFBQVEsRUFDVCxNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFDTCxZQUFZLEVBQ1osYUFBYSxFQUViLGtCQUFrQixFQUVuQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxLQUFLLFdBQVcsRUFBeUIsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDM0YsT0FBTyxFQUFFLEtBQUssa0JBQWtCLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUlsRyxPQUFPLEVBRUwsS0FBSyxtQkFBbUIsRUFJekIsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxLQUFLLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUVqRixxQkFBYSxpQkFBa0IsWUFBVyx3QkFBd0I7SUFFOUQsU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsd0JBQXdCO0lBQ3JELFNBQVMsQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLFdBQVc7SUFDN0MsU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsa0JBQWtCO0lBSGpE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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,KAAK,EAAE,
|
|
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,EAAE,KAAK,kBAAkB,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AAIlG,OAAO,EAEL,KAAK,mBAAmB,EAIzB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAEjF,qBAAa,iBAAkB,YAAW,wBAAwB;IAE9D,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,wBAAwB;IACrD,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,WAAW;IAC7C,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,kBAAkB;IAHjD,YACqB,QAAQ,EAAE,wBAAwB,EAClC,aAAa,EAAE,WAAW,EAC1B,QAAQ,EAAE,kBAAkB,EAC7C;IAEJ,gBAAgB,IAAI,WAAW,CAE9B;IAED,WAAW,IAAI,4BAA4B,CAE1C;IAED,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,kBAAkB,CAAC,YAAY,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC,CAEjH;IAEK,gBAAgB,CAAC,CAAC,SAAS,MAAM,EACrC,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,kBAAkB,CAAC,YAAY,CAAC,EAAE,GACzC,OAAO,CAAC,CAAC;QAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC,EAAE,CAAC,CAalE;IAEK,oBAAoB,CACxB,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,kBAAkB,CAAC,YAAY,CAAC,EAAE,EAC1C,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC,CAejC;IAEK,eAAe,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,GAAG,SAAS,CAAC,CAQ5G;IAEK,YAAY,CAAC,EAAE,SAAS,YAAY,EACxC,MAAM,EAAE,EAAE,EACV,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAiB7C;IAEK,qBAAqB,CACzB,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,OAAO,CAAA;KAAE,GAAG,SAAS,CAAC,CAUjE;IAEK,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAQvG;IAEK,iBAAiB,IAAI,OAAO,CAAC,cAAc,CAAC,CAajD;IAEK,wBAAwB,IAAI,OAAO,CAAC,cAAc,CAAC,CAWxD;IAEK,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAYzD;IAEK,6BAA6B,CAAC,EAAE,SAAS,YAAY,EACzD,MAAM,EAAE,EAAE,EACV,WAAW,EAAE,MAAM,EAAE,GACpB,OAAO,CAAC,CAAC,WAAW,GAAG,SAAS,CAAC,EAAE,CAAC,CAQtC;CACF;AAED,qBAAa,qBAAsB,SAAQ,iBAAkB,YAAW,yBAAyB;IAQ7F,OAAO,CAAC,IAAI;IAPd,OAAO,CAAC,GAAG,CAAwD;IACnE,OAAO,CAAC,YAAY,CAA4B;IAEhD,YACE,QAAQ,EAAE,wBAAwB,EAClC,aAAa,EAAE,WAAW,EAC1B,QAAQ,EAAE,kBAAkB,EACpB,IAAI,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,EAKxC;IACK,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAMtD;IAEK,YAAY,CAAC,EAAE,SAAS,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,kBAAkB,CAAC,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAMvG;IAEK,WAAW,CAAC,UAAU,SAAS,MAAM,EAAE,wBAAwB,SAAS,MAAM,EAAE,EAAE,SAAS,aAAa,EAC5G,MAAM,EAAE,EAAE,EACV,SAAS,EAAE,MAAM,EAAE,EACnB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,oBAAoB,CAAC,UAAU,EAAE,wBAAwB,CAAC,CAAC,CAyBrE;IAEK,gBAAgB,CAAC,UAAU,SAAS,MAAM,EAAE,EAAE,SAAS,aAAa,EACxE,MAAM,EAAE,EAAE,EACV,SAAS,EAAE,MAAM,EAAE,GAClB,OAAO,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC,CAoBhD;IAEM,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAQ5B;YAEa,OAAO;IAmBf,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAU3C;IAEY,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAI/C;IAEY,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAG7C;IAEY,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAG7C;IAEY,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMhE;IAEY,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMhE;CACF;AAgBD,wBAAgB,aAAa,CAAC,IAAI,EAAE,EAAE,GAAG,SAAS,GAAG,aAAa,GAAG,kBAAkB,GAAG,mBAAmB,CAU5G"}
|
|
@@ -8,8 +8,9 @@ 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';
|
|
11
12
|
import assert from 'assert';
|
|
12
|
-
import { blockStateReference, treeStateReferenceToSnapshot } from './message.js';
|
|
13
|
+
import { WorldStateMessageType, blockStateReference, treeStateReferenceToSnapshot } from './message.js';
|
|
13
14
|
export class MerkleTreesFacade {
|
|
14
15
|
instance;
|
|
15
16
|
initialHeader;
|
|
@@ -23,17 +24,18 @@ export class MerkleTreesFacade {
|
|
|
23
24
|
return this.initialHeader;
|
|
24
25
|
}
|
|
25
26
|
getRevision() {
|
|
26
|
-
return this.revision;
|
|
27
|
-
}
|
|
28
|
-
getIpcPath() {
|
|
29
|
-
return this.instance.getIpcPath();
|
|
27
|
+
return WorldStateRevisionWithHandle.fromWorldStateRevision(this.revision, this.instance.getHandle());
|
|
30
28
|
}
|
|
31
29
|
findLeafIndices(treeId, values) {
|
|
32
30
|
return this.findLeafIndicesAfter(treeId, values, 0n);
|
|
33
31
|
}
|
|
34
32
|
async findSiblingPaths(treeId, values) {
|
|
35
|
-
const
|
|
36
|
-
|
|
33
|
+
const response = await this.instance.call(WorldStateMessageType.FIND_SIBLING_PATHS, {
|
|
34
|
+
leaves: values.map((leaf)=>serializeLeaf(hydrateLeaf(treeId, leaf))),
|
|
35
|
+
revision: this.revision,
|
|
36
|
+
treeId
|
|
37
|
+
});
|
|
38
|
+
return response.paths.map((path)=>{
|
|
37
39
|
if (!path) {
|
|
38
40
|
return undefined;
|
|
39
41
|
}
|
|
@@ -44,8 +46,13 @@ export class MerkleTreesFacade {
|
|
|
44
46
|
});
|
|
45
47
|
}
|
|
46
48
|
async findLeafIndicesAfter(treeId, leaves, startIndex) {
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
+
const response = await this.instance.call(WorldStateMessageType.FIND_LEAF_INDICES, {
|
|
50
|
+
leaves: leaves.map((leaf)=>serializeLeaf(hydrateLeaf(treeId, leaf))),
|
|
51
|
+
revision: this.revision,
|
|
52
|
+
treeId,
|
|
53
|
+
startIndex
|
|
54
|
+
});
|
|
55
|
+
return response.indices.map((index)=>{
|
|
49
56
|
if (typeof index === 'number' || typeof index === 'bigint') {
|
|
50
57
|
return BigInt(index);
|
|
51
58
|
} else {
|
|
@@ -54,11 +61,19 @@ export class MerkleTreesFacade {
|
|
|
54
61
|
});
|
|
55
62
|
}
|
|
56
63
|
async getLeafPreimage(treeId, leafIndex) {
|
|
57
|
-
const resp = await this.instance.
|
|
64
|
+
const resp = await this.instance.call(WorldStateMessageType.GET_LEAF_PREIMAGE, {
|
|
65
|
+
leafIndex,
|
|
66
|
+
revision: this.revision,
|
|
67
|
+
treeId
|
|
68
|
+
});
|
|
58
69
|
return resp ? deserializeIndexedLeaf(resp) : undefined;
|
|
59
70
|
}
|
|
60
71
|
async getLeafValue(treeId, leafIndex) {
|
|
61
|
-
const resp = await this.instance.
|
|
72
|
+
const resp = await this.instance.call(WorldStateMessageType.GET_LEAF_VALUE, {
|
|
73
|
+
leafIndex,
|
|
74
|
+
revision: this.revision,
|
|
75
|
+
treeId
|
|
76
|
+
});
|
|
62
77
|
if (!resp) {
|
|
63
78
|
return undefined;
|
|
64
79
|
}
|
|
@@ -70,30 +85,55 @@ export class MerkleTreesFacade {
|
|
|
70
85
|
}
|
|
71
86
|
}
|
|
72
87
|
async getPreviousValueIndex(treeId, value) {
|
|
73
|
-
const resp = await this.instance.
|
|
88
|
+
const resp = await this.instance.call(WorldStateMessageType.FIND_LOW_LEAF, {
|
|
89
|
+
key: new Fr(value),
|
|
90
|
+
revision: this.revision,
|
|
91
|
+
treeId
|
|
92
|
+
});
|
|
74
93
|
return {
|
|
75
94
|
alreadyPresent: resp.alreadyPresent,
|
|
76
95
|
index: BigInt(resp.index)
|
|
77
96
|
};
|
|
78
97
|
}
|
|
79
98
|
async getSiblingPath(treeId, leafIndex) {
|
|
80
|
-
const siblingPath = await this.instance.
|
|
99
|
+
const siblingPath = await this.instance.call(WorldStateMessageType.GET_SIBLING_PATH, {
|
|
100
|
+
leafIndex,
|
|
101
|
+
revision: this.revision,
|
|
102
|
+
treeId
|
|
103
|
+
});
|
|
81
104
|
return new SiblingPath(siblingPath.length, siblingPath);
|
|
82
105
|
}
|
|
83
106
|
async getStateReference() {
|
|
84
|
-
const
|
|
85
|
-
|
|
107
|
+
const resp = await this.instance.call(WorldStateMessageType.GET_STATE_REFERENCE, {
|
|
108
|
+
revision: this.revision
|
|
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])));
|
|
86
111
|
}
|
|
87
112
|
async getInitialStateReference() {
|
|
88
|
-
const
|
|
89
|
-
|
|
113
|
+
const resp = await this.instance.call(WorldStateMessageType.GET_INITIAL_STATE_REFERENCE, {
|
|
114
|
+
canonical: true
|
|
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])));
|
|
90
117
|
}
|
|
91
118
|
async getTreeInfo(treeId) {
|
|
92
|
-
|
|
119
|
+
const resp = await this.instance.call(WorldStateMessageType.GET_TREE_INFO, {
|
|
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
|
+
};
|
|
93
129
|
}
|
|
94
130
|
async getBlockNumbersForLeafIndices(treeId, leafIndices) {
|
|
95
|
-
const
|
|
96
|
-
|
|
131
|
+
const response = await this.instance.call(WorldStateMessageType.GET_BLOCK_NUMBERS_FOR_LEAF_INDICES, {
|
|
132
|
+
treeId,
|
|
133
|
+
revision: this.revision,
|
|
134
|
+
leafIndices
|
|
135
|
+
});
|
|
136
|
+
return response.blockNumbers.map((x)=>x === undefined || x === null ? undefined : BlockNumber(Number(x)));
|
|
97
137
|
}
|
|
98
138
|
}
|
|
99
139
|
_computedKey = Symbol.asyncDispose;
|
|
@@ -107,19 +147,32 @@ export class MerkleTreesForkFacade extends MerkleTreesFacade {
|
|
|
107
147
|
super(instance, initialHeader, revision), this.opts = opts, this.log = createLogger('world-state:merkle-trees-fork-facade');
|
|
108
148
|
}
|
|
109
149
|
async updateArchive(header) {
|
|
110
|
-
await this.instance.
|
|
150
|
+
await this.instance.call(WorldStateMessageType.UPDATE_ARCHIVE, {
|
|
151
|
+
forkId: this.revision.forkId,
|
|
152
|
+
blockHeaderHash: (await header.hash()).toBuffer(),
|
|
153
|
+
blockStateRef: blockStateReference(header.state)
|
|
154
|
+
});
|
|
111
155
|
}
|
|
112
156
|
async appendLeaves(treeId, leaves) {
|
|
113
|
-
await this.instance.
|
|
157
|
+
await this.instance.call(WorldStateMessageType.APPEND_LEAVES, {
|
|
158
|
+
leaves: leaves.map((leaf)=>serializeLeaf(hydrateLeaf(treeId, leaf))),
|
|
159
|
+
forkId: this.revision.forkId,
|
|
160
|
+
treeId
|
|
161
|
+
});
|
|
114
162
|
}
|
|
115
163
|
async batchInsert(treeId, rawLeaves, subtreeHeight) {
|
|
116
164
|
const leaves = rawLeaves.map((leaf)=>hydrateLeaf(treeId, leaf)).map(serializeLeaf);
|
|
117
|
-
const resp = await this.instance.
|
|
165
|
+
const resp = await this.instance.call(WorldStateMessageType.BATCH_INSERT, {
|
|
166
|
+
leaves,
|
|
167
|
+
treeId,
|
|
168
|
+
forkId: this.revision.forkId,
|
|
169
|
+
subtreeDepth: subtreeHeight
|
|
170
|
+
});
|
|
118
171
|
return {
|
|
119
|
-
newSubtreeSiblingPath: new SiblingPath(resp.
|
|
120
|
-
sortedNewLeaves: resp.
|
|
121
|
-
sortedNewLeavesIndexes: resp.
|
|
122
|
-
lowLeavesWitnessData: resp.
|
|
172
|
+
newSubtreeSiblingPath: new SiblingPath(resp.subtree_path.length, resp.subtree_path),
|
|
173
|
+
sortedNewLeaves: resp.sorted_leaves.map(([leaf])=>leaf).map(deserializeLeafValue).map(serializeToBuffer),
|
|
174
|
+
sortedNewLeavesIndexes: resp.sorted_leaves.map(([, index])=>index),
|
|
175
|
+
lowLeavesWitnessData: resp.low_leaf_witness_data.map((data)=>({
|
|
123
176
|
index: BigInt(data.index),
|
|
124
177
|
leafPreimage: deserializeIndexedLeaf(data.leaf),
|
|
125
178
|
siblingPath: new SiblingPath(data.path.length, data.path)
|
|
@@ -128,14 +181,18 @@ export class MerkleTreesForkFacade extends MerkleTreesFacade {
|
|
|
128
181
|
}
|
|
129
182
|
async sequentialInsert(treeId, rawLeaves) {
|
|
130
183
|
const leaves = rawLeaves.map((leaf)=>hydrateLeaf(treeId, leaf)).map(serializeLeaf);
|
|
131
|
-
const resp = await this.instance.
|
|
184
|
+
const resp = await this.instance.call(WorldStateMessageType.SEQUENTIAL_INSERT, {
|
|
185
|
+
leaves,
|
|
186
|
+
treeId,
|
|
187
|
+
forkId: this.revision.forkId
|
|
188
|
+
});
|
|
132
189
|
return {
|
|
133
|
-
lowLeavesWitnessData: resp.
|
|
190
|
+
lowLeavesWitnessData: resp.low_leaf_witness_data.map((data)=>({
|
|
134
191
|
index: BigInt(data.index),
|
|
135
192
|
leafPreimage: deserializeIndexedLeaf(data.leaf),
|
|
136
193
|
siblingPath: new SiblingPath(data.path.length, data.path)
|
|
137
194
|
})),
|
|
138
|
-
insertionWitnessData: resp.
|
|
195
|
+
insertionWitnessData: resp.insertion_witness_data.map((data)=>({
|
|
139
196
|
index: BigInt(data.index),
|
|
140
197
|
leafPreimage: deserializeIndexedLeaf(data.leaf),
|
|
141
198
|
siblingPath: new SiblingPath(data.path.length, data.path)
|
|
@@ -153,11 +210,13 @@ export class MerkleTreesForkFacade extends MerkleTreesFacade {
|
|
|
153
210
|
}
|
|
154
211
|
async doClose() {
|
|
155
212
|
try {
|
|
156
|
-
await this.instance.
|
|
213
|
+
await this.instance.call(WorldStateMessageType.DELETE_FORK, {
|
|
214
|
+
forkId: this.revision.forkId
|
|
215
|
+
});
|
|
157
216
|
} catch (err) {
|
|
158
217
|
// Ignore errors due to native instance being closed during shutdown.
|
|
159
218
|
// This can happen when validators are still processing block proposals while the node is stopping.
|
|
160
|
-
if (err?.message === 'Native instance is closed'
|
|
219
|
+
if (err?.message === 'Native instance is closed') {
|
|
161
220
|
return;
|
|
162
221
|
}
|
|
163
222
|
// Ignore "Fork not found": the native fork was already destroyed by a pending-chain unwind or a
|
|
@@ -182,23 +241,36 @@ export class MerkleTreesForkFacade extends MerkleTreesFacade {
|
|
|
182
241
|
}
|
|
183
242
|
async createCheckpoint() {
|
|
184
243
|
assert.notEqual(this.revision.forkId, 0, 'Fork ID must be set');
|
|
185
|
-
|
|
244
|
+
const resp = await this.instance.call(WorldStateMessageType.CREATE_CHECKPOINT, {
|
|
245
|
+
forkId: this.revision.forkId
|
|
246
|
+
});
|
|
247
|
+
return resp.depth;
|
|
186
248
|
}
|
|
187
249
|
async commitCheckpoint() {
|
|
188
250
|
assert.notEqual(this.revision.forkId, 0, 'Fork ID must be set');
|
|
189
|
-
await this.instance.
|
|
251
|
+
await this.instance.call(WorldStateMessageType.COMMIT_CHECKPOINT, {
|
|
252
|
+
forkId: this.revision.forkId
|
|
253
|
+
});
|
|
190
254
|
}
|
|
191
255
|
async revertCheckpoint() {
|
|
192
256
|
assert.notEqual(this.revision.forkId, 0, 'Fork ID must be set');
|
|
193
|
-
await this.instance.
|
|
257
|
+
await this.instance.call(WorldStateMessageType.REVERT_CHECKPOINT, {
|
|
258
|
+
forkId: this.revision.forkId
|
|
259
|
+
});
|
|
194
260
|
}
|
|
195
261
|
async commitAllCheckpointsTo(depth) {
|
|
196
262
|
assert.notEqual(this.revision.forkId, 0, 'Fork ID must be set');
|
|
197
|
-
await this.instance.
|
|
263
|
+
await this.instance.call(WorldStateMessageType.COMMIT_ALL_CHECKPOINTS, {
|
|
264
|
+
forkId: this.revision.forkId,
|
|
265
|
+
depth
|
|
266
|
+
});
|
|
198
267
|
}
|
|
199
268
|
async revertAllCheckpointsTo(depth) {
|
|
200
269
|
assert.notEqual(this.revision.forkId, 0, 'Fork ID must be set');
|
|
201
|
-
await this.instance.
|
|
270
|
+
await this.instance.call(WorldStateMessageType.REVERT_ALL_CHECKPOINTS, {
|
|
271
|
+
forkId: this.revision.forkId,
|
|
272
|
+
depth
|
|
273
|
+
});
|
|
202
274
|
}
|
|
203
275
|
}
|
|
204
276
|
function hydrateLeaf(treeId, leaf) {
|
package/dest/native/message.d.ts
CHANGED
|
@@ -1,7 +1,45 @@
|
|
|
1
1
|
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
2
2
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
|
+
import type { Tuple } from '@aztec/foundation/serialize';
|
|
3
4
|
import { AppendOnlyTreeSnapshot, MerkleTreeId } from '@aztec/stdlib/trees';
|
|
4
5
|
import type { StateReference } from '@aztec/stdlib/tx';
|
|
6
|
+
import type { UInt32 } from '@aztec/stdlib/types';
|
|
7
|
+
import type { WorldStateRevision } from '@aztec/stdlib/world-state';
|
|
8
|
+
export declare enum WorldStateMessageType {
|
|
9
|
+
GET_TREE_INFO = 100,
|
|
10
|
+
GET_STATE_REFERENCE = 101,
|
|
11
|
+
GET_INITIAL_STATE_REFERENCE = 102,
|
|
12
|
+
GET_LEAF_VALUE = 103,
|
|
13
|
+
GET_LEAF_PREIMAGE = 104,
|
|
14
|
+
GET_SIBLING_PATH = 105,
|
|
15
|
+
GET_BLOCK_NUMBERS_FOR_LEAF_INDICES = 106,
|
|
16
|
+
FIND_LEAF_INDICES = 107,
|
|
17
|
+
FIND_LOW_LEAF = 108,
|
|
18
|
+
FIND_SIBLING_PATHS = 109,
|
|
19
|
+
APPEND_LEAVES = 110,
|
|
20
|
+
BATCH_INSERT = 111,
|
|
21
|
+
SEQUENTIAL_INSERT = 112,
|
|
22
|
+
UPDATE_ARCHIVE = 113,
|
|
23
|
+
COMMIT = 114,
|
|
24
|
+
ROLLBACK = 115,
|
|
25
|
+
SYNC_BLOCK = 116,
|
|
26
|
+
CREATE_FORK = 117,
|
|
27
|
+
DELETE_FORK = 118,
|
|
28
|
+
FINALIZE_BLOCKS = 119,
|
|
29
|
+
UNWIND_BLOCKS = 120,
|
|
30
|
+
REMOVE_HISTORICAL_BLOCKS = 121,
|
|
31
|
+
GET_STATUS = 122,
|
|
32
|
+
CREATE_CHECKPOINT = 123,
|
|
33
|
+
COMMIT_CHECKPOINT = 124,
|
|
34
|
+
REVERT_CHECKPOINT = 125,
|
|
35
|
+
COMMIT_ALL_CHECKPOINTS = 126,
|
|
36
|
+
REVERT_ALL_CHECKPOINTS = 127,
|
|
37
|
+
COPY_STORES = 128,
|
|
38
|
+
CLOSE = 999
|
|
39
|
+
}
|
|
40
|
+
interface WithTreeId {
|
|
41
|
+
treeId: MerkleTreeId;
|
|
42
|
+
}
|
|
5
43
|
export interface WorldStateStatusSummary {
|
|
6
44
|
/** Last block number that can still be unwound. */
|
|
7
45
|
unfinalizedBlockNumber: BlockNumber;
|
|
@@ -101,6 +139,26 @@ export declare function sanitizeTreeDBStats(stats: TreeDBStats): TreeDBStats;
|
|
|
101
139
|
export declare function sanitizeWorldStateDBStats(stats: WorldStateDBStats): WorldStateDBStats;
|
|
102
140
|
export declare function sanitizeWorldStateTreeMeta(meta: WorldStateMeta): WorldStateMeta;
|
|
103
141
|
export declare function sanitizeFullStatus(status: WorldStateStatusFull): WorldStateStatusFull;
|
|
142
|
+
interface WithForkId {
|
|
143
|
+
forkId: number;
|
|
144
|
+
}
|
|
145
|
+
interface CreateCheckpointResponse {
|
|
146
|
+
depth: number;
|
|
147
|
+
}
|
|
148
|
+
/** Request to commit/revert all checkpoints down to a target depth. The resulting depth after the operation equals the given depth. */
|
|
149
|
+
interface CheckpointDepthRequest extends WithForkId {
|
|
150
|
+
/** The target depth after the operation. All checkpoints above this depth are committed/reverted. */
|
|
151
|
+
depth: number;
|
|
152
|
+
}
|
|
153
|
+
interface WithWorldStateRevision {
|
|
154
|
+
revision: WorldStateRevision;
|
|
155
|
+
}
|
|
156
|
+
interface WithCanonicalForkId {
|
|
157
|
+
canonical: true;
|
|
158
|
+
}
|
|
159
|
+
interface WithLeafIndex {
|
|
160
|
+
leafIndex: bigint;
|
|
161
|
+
}
|
|
104
162
|
export type SerializedLeafValue = Buffer | {
|
|
105
163
|
nullifier: Buffer;
|
|
106
164
|
} | {
|
|
@@ -112,34 +170,195 @@ export type SerializedIndexedLeaf = {
|
|
|
112
170
|
nextIndex: bigint | number;
|
|
113
171
|
nextKey: Buffer;
|
|
114
172
|
};
|
|
115
|
-
|
|
173
|
+
interface WithLeafValues {
|
|
174
|
+
leaves: SerializedLeafValue[];
|
|
175
|
+
}
|
|
176
|
+
interface BlockShiftRequest extends WithCanonicalForkId {
|
|
177
|
+
toBlockNumber: BlockNumber;
|
|
178
|
+
}
|
|
179
|
+
interface WithLeaves {
|
|
180
|
+
leaves: SerializedLeafValue[];
|
|
181
|
+
}
|
|
182
|
+
interface GetTreeInfoRequest extends WithTreeId, WithWorldStateRevision {
|
|
183
|
+
}
|
|
184
|
+
interface GetTreeInfoResponse {
|
|
185
|
+
treeId: MerkleTreeId;
|
|
186
|
+
depth: UInt32;
|
|
187
|
+
size: bigint | number;
|
|
188
|
+
root: Buffer;
|
|
189
|
+
}
|
|
190
|
+
interface GetBlockNumbersForLeafIndicesRequest extends WithTreeId, WithWorldStateRevision {
|
|
191
|
+
leafIndices: bigint[];
|
|
192
|
+
}
|
|
193
|
+
interface GetBlockNumbersForLeafIndicesResponse {
|
|
194
|
+
blockNumbers: bigint[];
|
|
195
|
+
}
|
|
196
|
+
interface GetSiblingPathRequest extends WithTreeId, WithLeafIndex, WithWorldStateRevision {
|
|
197
|
+
}
|
|
198
|
+
type GetSiblingPathResponse = Buffer[];
|
|
199
|
+
interface GetStateReferenceRequest extends WithWorldStateRevision {
|
|
200
|
+
}
|
|
201
|
+
interface GetStateReferenceResponse {
|
|
202
|
+
state: Record<MerkleTreeId, TreeStateReference>;
|
|
203
|
+
}
|
|
204
|
+
interface GetLeafRequest extends WithTreeId, WithWorldStateRevision, WithLeafIndex {
|
|
205
|
+
}
|
|
206
|
+
type GetLeafResponse = SerializedLeafValue | undefined;
|
|
207
|
+
interface GetLeafPreImageRequest extends WithTreeId, WithLeafIndex, WithWorldStateRevision {
|
|
208
|
+
}
|
|
209
|
+
type GetLeafPreImageResponse = SerializedIndexedLeaf | undefined;
|
|
210
|
+
interface FindLeafIndicesRequest extends WithTreeId, WithLeafValues, WithWorldStateRevision {
|
|
211
|
+
startIndex: bigint;
|
|
212
|
+
}
|
|
213
|
+
interface FindLeafIndicesResponse {
|
|
214
|
+
indices: bigint[];
|
|
215
|
+
}
|
|
216
|
+
interface FindSiblingPathsRequest extends WithTreeId, WithLeafValues, WithWorldStateRevision {
|
|
217
|
+
}
|
|
218
|
+
interface SiblingPathAndIndex {
|
|
116
219
|
index: bigint;
|
|
117
220
|
path: Buffer[];
|
|
118
221
|
}
|
|
119
|
-
|
|
120
|
-
|
|
222
|
+
interface FindSiblingPathsResponse {
|
|
223
|
+
paths: (SiblingPathAndIndex | undefined)[];
|
|
224
|
+
}
|
|
225
|
+
interface FindLowLeafRequest extends WithTreeId, WithWorldStateRevision {
|
|
226
|
+
key: Fr;
|
|
227
|
+
}
|
|
228
|
+
interface FindLowLeafResponse {
|
|
229
|
+
index: bigint | number;
|
|
230
|
+
alreadyPresent: boolean;
|
|
231
|
+
}
|
|
232
|
+
interface AppendLeavesRequest extends WithTreeId, WithForkId, WithLeaves {
|
|
233
|
+
}
|
|
234
|
+
interface BatchInsertRequest extends WithTreeId, WithForkId, WithLeaves {
|
|
235
|
+
subtreeDepth: number;
|
|
236
|
+
}
|
|
237
|
+
interface BatchInsertResponse {
|
|
238
|
+
low_leaf_witness_data: ReadonlyArray<{
|
|
121
239
|
leaf: SerializedIndexedLeaf;
|
|
122
240
|
index: bigint | number;
|
|
123
|
-
path: Buffer
|
|
241
|
+
path: Tuple<Buffer, number>;
|
|
124
242
|
}>;
|
|
125
|
-
|
|
126
|
-
|
|
243
|
+
sorted_leaves: ReadonlyArray<[SerializedLeafValue, UInt32]>;
|
|
244
|
+
subtree_path: Tuple<Buffer, number>;
|
|
127
245
|
}
|
|
128
|
-
|
|
129
|
-
|
|
246
|
+
interface SequentialInsertRequest extends WithTreeId, WithForkId, WithLeaves {
|
|
247
|
+
}
|
|
248
|
+
interface SequentialInsertResponse {
|
|
249
|
+
low_leaf_witness_data: ReadonlyArray<{
|
|
130
250
|
leaf: SerializedIndexedLeaf;
|
|
131
251
|
index: bigint | number;
|
|
132
|
-
path: Buffer
|
|
252
|
+
path: Tuple<Buffer, number>;
|
|
133
253
|
}>;
|
|
134
|
-
|
|
254
|
+
insertion_witness_data: ReadonlyArray<{
|
|
135
255
|
leaf: SerializedIndexedLeaf;
|
|
136
256
|
index: bigint | number;
|
|
137
|
-
path: Buffer
|
|
257
|
+
path: Tuple<Buffer, number>;
|
|
138
258
|
}>;
|
|
139
259
|
}
|
|
140
|
-
|
|
141
|
-
|
|
260
|
+
interface UpdateArchiveRequest extends WithForkId {
|
|
261
|
+
blockStateRef: BlockStateReference;
|
|
262
|
+
blockHeaderHash: Buffer;
|
|
263
|
+
}
|
|
264
|
+
interface SyncBlockRequest extends WithCanonicalForkId {
|
|
265
|
+
blockNumber: BlockNumber;
|
|
266
|
+
blockStateRef: BlockStateReference;
|
|
267
|
+
blockHeaderHash: Buffer;
|
|
268
|
+
/** Canonical archive root after this block; world state rejects the sync if its computed root differs. */
|
|
269
|
+
expectedArchiveRoot: Buffer;
|
|
270
|
+
/** Canonical archive root before this block (the block's lastArchive); verified against the local root. */
|
|
271
|
+
expectedPreviousArchiveRoot: Buffer;
|
|
272
|
+
paddedNoteHashes: readonly SerializedLeafValue[];
|
|
273
|
+
paddedL1ToL2Messages: readonly SerializedLeafValue[];
|
|
274
|
+
paddedNullifiers: readonly SerializedLeafValue[];
|
|
275
|
+
publicDataWrites: readonly SerializedLeafValue[];
|
|
276
|
+
}
|
|
277
|
+
interface CreateForkRequest extends WithCanonicalForkId {
|
|
278
|
+
latest: boolean;
|
|
279
|
+
blockNumber: BlockNumber;
|
|
280
|
+
}
|
|
281
|
+
interface CreateForkResponse {
|
|
282
|
+
forkId: number;
|
|
283
|
+
}
|
|
284
|
+
interface DeleteForkRequest extends WithForkId {
|
|
285
|
+
}
|
|
286
|
+
interface CopyStoresRequest extends WithCanonicalForkId {
|
|
287
|
+
dstPath: string;
|
|
288
|
+
compact: boolean;
|
|
289
|
+
}
|
|
290
|
+
export type WorldStateRequestCategories = WithForkId | WithWorldStateRevision | WithCanonicalForkId;
|
|
291
|
+
export declare function isWithForkId(body: WorldStateRequestCategories): body is WithForkId;
|
|
292
|
+
export declare function isWithRevision(body: WorldStateRequestCategories): body is WithWorldStateRevision;
|
|
293
|
+
export declare function isWithCanonical(body: WorldStateRequestCategories): body is WithCanonicalForkId;
|
|
294
|
+
export type WorldStateRequest = {
|
|
295
|
+
[WorldStateMessageType.GET_TREE_INFO]: GetTreeInfoRequest;
|
|
296
|
+
[WorldStateMessageType.GET_STATE_REFERENCE]: GetStateReferenceRequest;
|
|
297
|
+
[WorldStateMessageType.GET_INITIAL_STATE_REFERENCE]: WithCanonicalForkId;
|
|
298
|
+
[WorldStateMessageType.GET_LEAF_VALUE]: GetLeafRequest;
|
|
299
|
+
[WorldStateMessageType.GET_LEAF_PREIMAGE]: GetLeafPreImageRequest;
|
|
300
|
+
[WorldStateMessageType.GET_SIBLING_PATH]: GetSiblingPathRequest;
|
|
301
|
+
[WorldStateMessageType.GET_BLOCK_NUMBERS_FOR_LEAF_INDICES]: GetBlockNumbersForLeafIndicesRequest;
|
|
302
|
+
[WorldStateMessageType.FIND_LEAF_INDICES]: FindLeafIndicesRequest;
|
|
303
|
+
[WorldStateMessageType.FIND_LOW_LEAF]: FindLowLeafRequest;
|
|
304
|
+
[WorldStateMessageType.FIND_SIBLING_PATHS]: FindSiblingPathsRequest;
|
|
305
|
+
[WorldStateMessageType.APPEND_LEAVES]: AppendLeavesRequest;
|
|
306
|
+
[WorldStateMessageType.BATCH_INSERT]: BatchInsertRequest;
|
|
307
|
+
[WorldStateMessageType.SEQUENTIAL_INSERT]: SequentialInsertRequest;
|
|
308
|
+
[WorldStateMessageType.UPDATE_ARCHIVE]: UpdateArchiveRequest;
|
|
309
|
+
[WorldStateMessageType.COMMIT]: WithCanonicalForkId;
|
|
310
|
+
[WorldStateMessageType.ROLLBACK]: WithCanonicalForkId;
|
|
311
|
+
[WorldStateMessageType.SYNC_BLOCK]: SyncBlockRequest;
|
|
312
|
+
[WorldStateMessageType.CREATE_FORK]: CreateForkRequest;
|
|
313
|
+
[WorldStateMessageType.DELETE_FORK]: DeleteForkRequest;
|
|
314
|
+
[WorldStateMessageType.REMOVE_HISTORICAL_BLOCKS]: BlockShiftRequest;
|
|
315
|
+
[WorldStateMessageType.UNWIND_BLOCKS]: BlockShiftRequest;
|
|
316
|
+
[WorldStateMessageType.FINALIZE_BLOCKS]: BlockShiftRequest;
|
|
317
|
+
[WorldStateMessageType.GET_STATUS]: WithCanonicalForkId;
|
|
318
|
+
[WorldStateMessageType.CREATE_CHECKPOINT]: WithForkId;
|
|
319
|
+
[WorldStateMessageType.COMMIT_CHECKPOINT]: WithForkId;
|
|
320
|
+
[WorldStateMessageType.REVERT_CHECKPOINT]: WithForkId;
|
|
321
|
+
[WorldStateMessageType.COMMIT_ALL_CHECKPOINTS]: CheckpointDepthRequest;
|
|
322
|
+
[WorldStateMessageType.REVERT_ALL_CHECKPOINTS]: CheckpointDepthRequest;
|
|
323
|
+
[WorldStateMessageType.COPY_STORES]: CopyStoresRequest;
|
|
324
|
+
[WorldStateMessageType.CLOSE]: WithCanonicalForkId;
|
|
325
|
+
};
|
|
326
|
+
export type WorldStateResponse = {
|
|
327
|
+
[WorldStateMessageType.GET_TREE_INFO]: GetTreeInfoResponse;
|
|
328
|
+
[WorldStateMessageType.GET_STATE_REFERENCE]: GetStateReferenceResponse;
|
|
329
|
+
[WorldStateMessageType.GET_INITIAL_STATE_REFERENCE]: GetStateReferenceResponse;
|
|
330
|
+
[WorldStateMessageType.GET_LEAF_VALUE]: GetLeafResponse;
|
|
331
|
+
[WorldStateMessageType.GET_LEAF_PREIMAGE]: GetLeafPreImageResponse;
|
|
332
|
+
[WorldStateMessageType.GET_SIBLING_PATH]: GetSiblingPathResponse;
|
|
333
|
+
[WorldStateMessageType.GET_BLOCK_NUMBERS_FOR_LEAF_INDICES]: GetBlockNumbersForLeafIndicesResponse;
|
|
334
|
+
[WorldStateMessageType.FIND_LEAF_INDICES]: FindLeafIndicesResponse;
|
|
335
|
+
[WorldStateMessageType.FIND_LOW_LEAF]: FindLowLeafResponse;
|
|
336
|
+
[WorldStateMessageType.FIND_SIBLING_PATHS]: FindSiblingPathsResponse;
|
|
337
|
+
[WorldStateMessageType.APPEND_LEAVES]: void;
|
|
338
|
+
[WorldStateMessageType.BATCH_INSERT]: BatchInsertResponse;
|
|
339
|
+
[WorldStateMessageType.SEQUENTIAL_INSERT]: SequentialInsertResponse;
|
|
340
|
+
[WorldStateMessageType.UPDATE_ARCHIVE]: void;
|
|
341
|
+
[WorldStateMessageType.COMMIT]: void;
|
|
342
|
+
[WorldStateMessageType.ROLLBACK]: void;
|
|
343
|
+
[WorldStateMessageType.SYNC_BLOCK]: WorldStateStatusFull;
|
|
344
|
+
[WorldStateMessageType.CREATE_FORK]: CreateForkResponse;
|
|
345
|
+
[WorldStateMessageType.DELETE_FORK]: void;
|
|
346
|
+
[WorldStateMessageType.REMOVE_HISTORICAL_BLOCKS]: WorldStateStatusFull;
|
|
347
|
+
[WorldStateMessageType.UNWIND_BLOCKS]: WorldStateStatusFull;
|
|
348
|
+
[WorldStateMessageType.FINALIZE_BLOCKS]: WorldStateStatusSummary;
|
|
349
|
+
[WorldStateMessageType.GET_STATUS]: WorldStateStatusSummary;
|
|
350
|
+
[WorldStateMessageType.CREATE_CHECKPOINT]: CreateCheckpointResponse;
|
|
351
|
+
[WorldStateMessageType.COMMIT_CHECKPOINT]: void;
|
|
352
|
+
[WorldStateMessageType.REVERT_CHECKPOINT]: void;
|
|
353
|
+
[WorldStateMessageType.COMMIT_ALL_CHECKPOINTS]: void;
|
|
354
|
+
[WorldStateMessageType.REVERT_ALL_CHECKPOINTS]: void;
|
|
355
|
+
[WorldStateMessageType.COPY_STORES]: void;
|
|
356
|
+
[WorldStateMessageType.CLOSE]: void;
|
|
357
|
+
};
|
|
358
|
+
type TreeStateReference = readonly [Buffer, number | bigint];
|
|
359
|
+
type BlockStateReference = Map<Exclude<MerkleTreeId, MerkleTreeId.ARCHIVE>, TreeStateReference>;
|
|
142
360
|
export declare function treeStateReferenceToSnapshot([root, size]: TreeStateReference): AppendOnlyTreeSnapshot;
|
|
143
361
|
export declare function treeStateReference(snapshot: AppendOnlyTreeSnapshot): readonly [Buffer<ArrayBufferLike>, bigint];
|
|
144
362
|
export declare function blockStateReference(state: StateReference): BlockStateReference;
|
|
145
|
-
|
|
363
|
+
export {};
|
|
364
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL25hdGl2ZS9tZXNzYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEQsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzNFLE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFcEUsb0JBQVkscUJBQXFCO0lBQy9CLGFBQWEsTUFBTTtJQUNuQixtQkFBbUIsTUFBQTtJQUNuQiwyQkFBMkIsTUFBQTtJQUUzQixjQUFjLE1BQUE7SUFDZCxpQkFBaUIsTUFBQTtJQUNqQixnQkFBZ0IsTUFBQTtJQUNoQixrQ0FBa0MsTUFBQTtJQUVsQyxpQkFBaUIsTUFBQTtJQUNqQixhQUFhLE1BQUE7SUFDYixrQkFBa0IsTUFBQTtJQUVsQixhQUFhLE1BQUE7SUFDYixZQUFZLE1BQUE7SUFDWixpQkFBaUIsTUFBQTtJQUVqQixjQUFjLE1BQUE7SUFFZCxNQUFNLE1BQUE7SUFDTixRQUFRLE1BQUE7SUFFUixVQUFVLE1BQUE7SUFFVixXQUFXLE1BQUE7SUFDWCxXQUFXLE1BQUE7SUFFWCxlQUFlLE1BQUE7SUFDZixhQUFhLE1BQUE7SUFDYix3QkFBd0IsTUFBQTtJQUV4QixVQUFVLE1BQUE7SUFFVixpQkFBaUIsTUFBQTtJQUNqQixpQkFBaUIsTUFBQTtJQUNqQixpQkFBaUIsTUFBQTtJQUNq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
|