@aztec/world-state 0.6.7 → 0.7.2
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/Dockerfile +18 -0
- package/package.json +5 -5
- package/src/synchroniser/server_world_state_synchroniser.test.ts +2 -2
- package/src/world-state-db/merkle_trees.ts +3 -3
- package/.tsbuildinfo +0 -1
- package/dest/index.d.ts +0 -5
- package/dest/index.d.ts.map +0 -1
- package/dest/index.js +0 -5
- package/dest/merkle-tree/merkle_tree_operations_facade.d.ts +0 -127
- package/dest/merkle-tree/merkle_tree_operations_facade.d.ts.map +0 -1
- package/dest/merkle-tree/merkle_tree_operations_facade.js +0 -147
- package/dest/synchroniser/config.d.ts +0 -19
- package/dest/synchroniser/config.d.ts.map +0 -1
- package/dest/synchroniser/config.js +0 -13
- package/dest/synchroniser/index.d.ts +0 -3
- package/dest/synchroniser/index.d.ts.map +0 -1
- package/dest/synchroniser/index.js +0 -3
- package/dest/synchroniser/server_world_state_synchroniser.d.ts +0 -55
- package/dest/synchroniser/server_world_state_synchroniser.d.ts.map +0 -1
- package/dest/synchroniser/server_world_state_synchroniser.js +0 -163
- package/dest/synchroniser/server_world_state_synchroniser.test.d.ts +0 -2
- package/dest/synchroniser/server_world_state_synchroniser.test.d.ts.map +0 -1
- package/dest/synchroniser/server_world_state_synchroniser.test.js +0 -317
- package/dest/synchroniser/world_state_synchroniser.d.ts +0 -59
- package/dest/synchroniser/world_state_synchroniser.d.ts.map +0 -1
- package/dest/synchroniser/world_state_synchroniser.js +0 -11
- package/dest/utils.d.ts +0 -18
- package/dest/utils.d.ts.map +0 -1
- package/dest/utils.js +0 -23
- package/dest/world-state-db/index.d.ts +0 -189
- package/dest/world-state-db/index.d.ts.map +0 -1
- package/dest/world-state-db/index.js +0 -31
- package/dest/world-state-db/merkle_trees.d.ts +0 -228
- package/dest/world-state-db/merkle_trees.d.ts.map +0 -1
- package/dest/world-state-db/merkle_trees.js +0 -407
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Wraps a MerkleTreeDbOperations to call all functions with a preset includeUncommitted flag.
|
|
3
|
-
*/
|
|
4
|
-
export class MerkleTreeOperationsFacade {
|
|
5
|
-
constructor(trees, includeUncommitted) {
|
|
6
|
-
this.trees = trees;
|
|
7
|
-
this.includeUncommitted = includeUncommitted;
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* Returns the tree info for the specified tree id.
|
|
11
|
-
* @param treeId - Id of the tree to get information from.
|
|
12
|
-
* @param includeUncommitted - Indicates whether to include uncommitted data.
|
|
13
|
-
* @returns The tree info for the specified tree.
|
|
14
|
-
*/
|
|
15
|
-
getTreeInfo(treeId) {
|
|
16
|
-
return this.trees.getTreeInfo(treeId, this.includeUncommitted);
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Get the current roots of the commitment trees.
|
|
20
|
-
* @returns The current roots of the trees.
|
|
21
|
-
*/
|
|
22
|
-
getTreeRoots() {
|
|
23
|
-
return this.trees.getTreeRoots(this.includeUncommitted);
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Appends a set of leaf values to the tree.
|
|
27
|
-
* @param treeId - Id of the tree to append leaves to.
|
|
28
|
-
* @param leaves - The set of leaves to be appended.
|
|
29
|
-
* @returns The tree info of the specified tree.
|
|
30
|
-
*/
|
|
31
|
-
appendLeaves(treeId, leaves) {
|
|
32
|
-
return this.trees.appendLeaves(treeId, leaves);
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Returns the sibling path for a requested leaf index.
|
|
36
|
-
* @param treeId - Id of the tree to get the sibling path from.
|
|
37
|
-
* @param index - The index of the leaf for which a sibling path is required.
|
|
38
|
-
* @returns A promise with the sibling path of the specified leaf index.
|
|
39
|
-
*/
|
|
40
|
-
async getSiblingPath(treeId, index) {
|
|
41
|
-
const path = await this.trees.getSiblingPath(treeId, index, this.includeUncommitted);
|
|
42
|
-
return path;
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Finds the index of the largest leaf whose value is less than or equal to the provided value.
|
|
46
|
-
* @param treeId - The ID of the tree to search.
|
|
47
|
-
* @param value - The value to be inserted into the tree.
|
|
48
|
-
* @param includeUncommitted - If true, the uncommitted changes are included in the search.
|
|
49
|
-
* @returns The found leaf index and a flag indicating if the corresponding leaf's value is equal to `newValue`.
|
|
50
|
-
*/
|
|
51
|
-
getPreviousValueIndex(treeId, value) {
|
|
52
|
-
return this.trees.getPreviousValueIndex(treeId, value, this.includeUncommitted);
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Updates a leaf in a tree at a given index.
|
|
56
|
-
* @param treeId - The ID of the tree.
|
|
57
|
-
* @param leaf - The new leaf value.
|
|
58
|
-
* @param index - The index to insert into.
|
|
59
|
-
* @returns Empty promise.
|
|
60
|
-
*/
|
|
61
|
-
updateLeaf(treeId, leaf, index) {
|
|
62
|
-
return this.trees.updateLeaf(treeId, leaf, index);
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Gets the leaf data at a given index and tree.
|
|
66
|
-
* @param treeId - The ID of the tree get the leaf from.
|
|
67
|
-
* @param index - The index of the leaf to get.
|
|
68
|
-
* @returns Leaf data.
|
|
69
|
-
*/
|
|
70
|
-
getLeafData(treeId, index) {
|
|
71
|
-
return this.trees.getLeafData(treeId, index, this.includeUncommitted);
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Returns the index of a leaf given its value, or undefined if no leaf with that value is found.
|
|
75
|
-
* @param treeId - The ID of the tree.
|
|
76
|
-
* @param value - The leaf value to look for.
|
|
77
|
-
* @returns The index of the first leaf found with a given value (undefined if not found).
|
|
78
|
-
*/
|
|
79
|
-
findLeafIndex(treeId, value) {
|
|
80
|
-
return this.trees.findLeafIndex(treeId, value, this.includeUncommitted);
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Gets the value at the given index.
|
|
84
|
-
* @param treeId - The ID of the tree to get the leaf value from.
|
|
85
|
-
* @param index - The index of the leaf.
|
|
86
|
-
* @param includeUncommitted - Indicates whether to include uncommitted changes.
|
|
87
|
-
* @returns Leaf value at the given index (undefined if not found).
|
|
88
|
-
*/
|
|
89
|
-
getLeafValue(treeId, index) {
|
|
90
|
-
return this.trees.getLeafValue(treeId, index, this.includeUncommitted);
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Inserts into the roots trees (CONTRACT_TREE_ROOTS_TREE, PRIVATE_DATA_TREE_ROOTS_TREE)
|
|
94
|
-
* the current roots of the corresponding trees (CONTRACT_TREE, PRIVATE_DATA_TREE).
|
|
95
|
-
* @param globalVariablesHash - The hash of the current global variables to include in the block hash.
|
|
96
|
-
* @returns Empty promise.
|
|
97
|
-
*/
|
|
98
|
-
updateHistoricBlocksTree(globalVariablesHash) {
|
|
99
|
-
return this.trees.updateHistoricBlocksTree(globalVariablesHash, this.includeUncommitted);
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Updates the latest global variables hash
|
|
103
|
-
* @param globalVariablesHash - The latest global variables hash
|
|
104
|
-
*/
|
|
105
|
-
updateLatestGlobalVariablesHash(globalVariablesHash) {
|
|
106
|
-
return this.trees.updateLatestGlobalVariablesHash(globalVariablesHash, this.includeUncommitted);
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* Gets the global variables hash from the previous block
|
|
110
|
-
*/
|
|
111
|
-
getLatestGlobalVariablesHash() {
|
|
112
|
-
return this.trees.getLatestGlobalVariablesHash(this.includeUncommitted);
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* Handles a single L2 block (i.e. Inserts the new commitments into the merkle tree).
|
|
116
|
-
* @param block - The L2 block to handle.
|
|
117
|
-
* @returns Empty promise.
|
|
118
|
-
*/
|
|
119
|
-
handleL2Block(block) {
|
|
120
|
-
return this.trees.handleL2Block(block);
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* Commits all pending updates.
|
|
124
|
-
* @returns Empty promise.
|
|
125
|
-
*/
|
|
126
|
-
async commit() {
|
|
127
|
-
return await this.trees.commit();
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* Rolls back all pending updates.
|
|
131
|
-
* @returns Empty promise.
|
|
132
|
-
*/
|
|
133
|
-
async rollback() {
|
|
134
|
-
return await this.trees.rollback();
|
|
135
|
-
}
|
|
136
|
-
/**
|
|
137
|
-
* Batch insert multiple leaves into the tree.
|
|
138
|
-
* @param treeId - The ID of the tree.
|
|
139
|
-
* @param leaves - Leaves to insert into the tree.
|
|
140
|
-
* @param subtreeHeight - Height of the subtree.
|
|
141
|
-
* @returns The data for the leaves to be updated when inserting the new ones.
|
|
142
|
-
*/
|
|
143
|
-
batchInsert(treeId, leaves, subtreeHeight) {
|
|
144
|
-
return this.trees.batchInsert(treeId, leaves, subtreeHeight);
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVya2xlX3RyZWVfb3BlcmF0aW9uc19mYWNhZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWVya2xlLXRyZWUvbWVya2xlX3RyZWVfb3BlcmF0aW9uc19mYWNhZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUE7O0dBRUc7QUFDSCxNQUFNLE9BQU8sMEJBQTBCO0lBQ3JDLFlBQW9CLEtBQW1CLEVBQVUsa0JBQTJCO1FBQXhELFVBQUssR0FBTCxLQUFLLENBQWM7UUFBVSx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQVM7SUFBRyxDQUFDO0lBRWhGOzs7OztPQUtHO0lBQ0gsV0FBVyxDQUFDLE1BQW9CO1FBQzlCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRDs7O09BR0c7SUFDSCxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxZQUFZLENBQUMsTUFBb0IsRUFBRSxNQUFnQjtRQUNqRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsY0FBYyxDQUFtQixNQUFvQixFQUFFLEtBQWE7UUFDeEUsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3JGLE9BQU8sSUFBaUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gscUJBQXFCLENBQ25CLE1BQW1DLEVBQ25DLEtBQWE7UUFXYixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsVUFBVSxDQUFDLE1BQW1DLEVBQUUsSUFBYyxFQUFFLEtBQWE7UUFDM0UsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFdBQVcsQ0FBQyxNQUFtQyxFQUFFLEtBQWE7UUFDNUQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGFBQWEsQ0FBQyxNQUFvQixFQUFFLEtBQWE7UUFDL0MsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxZQUFZLENBQUMsTUFBb0IsRUFBRSxLQUFhO1FBQzlDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSx3QkFBd0IsQ0FBQyxtQkFBdUI7UUFDckQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLHdCQUF3QixDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFFRDs7O09BR0c7SUFDSSwrQkFBK0IsQ0FBQyxtQkFBdUI7UUFDNUQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLCtCQUErQixDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ2xHLENBQUM7SUFFRDs7T0FFRztJQUNJLDRCQUE0QjtRQUNqQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsNEJBQTRCLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxhQUFhLENBQUMsS0FBYztRQUNqQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxLQUFLLENBQUMsTUFBTTtRQUNqQixPQUFPLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSyxDQUFDLFFBQVE7UUFDbkIsT0FBTyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLFdBQVcsQ0FDaEIsTUFBb0IsRUFDcEIsTUFBZ0IsRUFDaEIsYUFBcUI7UUFFckIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQy9ELENBQUM7Q0FDRiJ9
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* World State synchroniser configuration values.
|
|
3
|
-
*/
|
|
4
|
-
export interface WorldStateConfig {
|
|
5
|
-
/**
|
|
6
|
-
* The frequency in which to check.
|
|
7
|
-
*/
|
|
8
|
-
worldStateBlockCheckIntervalMS: number;
|
|
9
|
-
/**
|
|
10
|
-
* Size of queue of L2 blocks to store.
|
|
11
|
-
*/
|
|
12
|
-
l2QueueSize: number;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Returns the configuration values for the world state synchroniser.
|
|
16
|
-
* @returns The configuration values for the world state synchroniser.
|
|
17
|
-
*/
|
|
18
|
-
export declare function getConfigEnvVars(): WorldStateConfig;
|
|
19
|
-
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/synchroniser/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,8BAA8B,EAAE,MAAM,CAAC;IAEvC;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,gBAAgB,CAOnD"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Returns the configuration values for the world state synchroniser.
|
|
3
|
-
* @returns The configuration values for the world state synchroniser.
|
|
4
|
-
*/
|
|
5
|
-
export function getConfigEnvVars() {
|
|
6
|
-
const { WS_BLOCK_CHECK_INTERVAL_MS, WS_L2_BLOCK_QUEUE_SIZE } = process.env;
|
|
7
|
-
const envVars = {
|
|
8
|
-
worldStateBlockCheckIntervalMS: WS_BLOCK_CHECK_INTERVAL_MS ? +WS_BLOCK_CHECK_INTERVAL_MS : 100,
|
|
9
|
-
l2QueueSize: WS_L2_BLOCK_QUEUE_SIZE ? +WS_L2_BLOCK_QUEUE_SIZE : 1000,
|
|
10
|
-
};
|
|
11
|
-
return envVars;
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N5bmNocm9uaXNlci9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZUE7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQjtJQUM5QixNQUFNLEVBQUUsMEJBQTBCLEVBQUUsc0JBQXNCLEVBQUUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDO0lBQzNFLE1BQU0sT0FBTyxHQUFxQjtRQUNoQyw4QkFBOEIsRUFBRSwwQkFBMEIsQ0FBQyxDQUFDLENBQUMsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUMsR0FBRztRQUM5RixXQUFXLEVBQUUsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLElBQUk7S0FDckUsQ0FBQztJQUNGLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMifQ==
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/synchroniser/index.ts"],"names":[],"mappings":"AAAA,cAAc,sCAAsC,CAAC;AACrD,cAAc,+BAA+B,CAAC"}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export * from './server_world_state_synchroniser.js';
|
|
2
|
-
export * from './world_state_synchroniser.js';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3luY2hyb25pc2VyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYywrQkFBK0IsQ0FBQyJ9
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { L2BlockSource } from '@aztec/types';
|
|
2
|
-
import { MerkleTreeOperations, MerkleTrees } from '../index.js';
|
|
3
|
-
import { WorldStateConfig } from './config.js';
|
|
4
|
-
import { WorldStateStatus, WorldStateSynchroniser } from './world_state_synchroniser.js';
|
|
5
|
-
/**
|
|
6
|
-
* Synchronises the world state with the L2 blocks from a L2BlockSource.
|
|
7
|
-
* The synchroniser will download the L2 blocks from the L2BlockSource and insert the new commitments into the merkle
|
|
8
|
-
* tree.
|
|
9
|
-
*/
|
|
10
|
-
export declare class ServerWorldStateSynchroniser implements WorldStateSynchroniser {
|
|
11
|
-
private merkleTreeDb;
|
|
12
|
-
private l2BlockSource;
|
|
13
|
-
private log;
|
|
14
|
-
private currentL2BlockNum;
|
|
15
|
-
private latestBlockNumberAtStart;
|
|
16
|
-
private l2BlockDownloader;
|
|
17
|
-
private syncPromise;
|
|
18
|
-
private syncResolve?;
|
|
19
|
-
private jobQueue;
|
|
20
|
-
private stopping;
|
|
21
|
-
private runningPromise;
|
|
22
|
-
private currentState;
|
|
23
|
-
constructor(merkleTreeDb: MerkleTrees, l2BlockSource: L2BlockSource, config: WorldStateConfig, log?: import("@aztec/foundation/log").DebugLogger);
|
|
24
|
-
getLatest(): MerkleTreeOperations;
|
|
25
|
-
getCommitted(): MerkleTreeOperations;
|
|
26
|
-
start(): Promise<void>;
|
|
27
|
-
stop(): Promise<void>;
|
|
28
|
-
status(): Promise<WorldStateStatus>;
|
|
29
|
-
/**
|
|
30
|
-
* Forces an immediate sync
|
|
31
|
-
* @param minBlockNumber - The minimum block number that we must sync to
|
|
32
|
-
* @returns A promise that resolves once the sync has completed.
|
|
33
|
-
*/
|
|
34
|
-
syncImmediate(minBlockNumber?: number): Promise<void>;
|
|
35
|
-
/**
|
|
36
|
-
* Checks for the availability of new blocks and processes them.
|
|
37
|
-
*/
|
|
38
|
-
private collectAndProcessBlocks;
|
|
39
|
-
/**
|
|
40
|
-
* Handles a list of L2 blocks (i.e. Inserts the new commitments into the merkle tree).
|
|
41
|
-
* @param l2Blocks - The L2 blocks to handle.
|
|
42
|
-
*/
|
|
43
|
-
private handleL2Blocks;
|
|
44
|
-
/**
|
|
45
|
-
* Handles a single L2 block (i.e. Inserts the new commitments into the merkle tree).
|
|
46
|
-
* @param l2Block - The L2 block to handle.
|
|
47
|
-
*/
|
|
48
|
-
private handleL2Block;
|
|
49
|
-
/**
|
|
50
|
-
* Method to set the value of the current state.
|
|
51
|
-
* @param newState - New state value.
|
|
52
|
-
*/
|
|
53
|
-
private setCurrentState;
|
|
54
|
-
}
|
|
55
|
-
//# sourceMappingURL=server_world_state_synchroniser.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"server_world_state_synchroniser.d.ts","sourceRoot":"","sources":["../../src/synchroniser/server_world_state_synchroniser.ts"],"names":[],"mappings":"AAEA,OAAO,EAA8B,aAAa,EAAE,MAAM,cAAc,CAAC;AAEzE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEhE,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAA0B,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAEjH;;;;GAIG;AACH,qBAAa,4BAA6B,YAAW,sBAAsB;IAavE,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,aAAa;IAErB,OAAO,CAAC,GAAG;IAfb,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,wBAAwB,CAAK;IAErC,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,WAAW,CAAoC;IACvD,OAAO,CAAC,WAAW,CAAC,CAAyB;IAC7C,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,cAAc,CAAoC;IAC1D,OAAO,CAAC,YAAY,CAAuD;gBAGjE,YAAY,EAAE,WAAW,EACzB,aAAa,EAAE,aAAa,EACpC,MAAM,EAAE,gBAAgB,EAChB,GAAG,8CAAyC;IAS/C,SAAS,IAAI,oBAAoB;IAIjC,YAAY,IAAI,oBAAoB;IAI9B,KAAK;IAwCL,IAAI;IAUV,MAAM,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAQ1C;;;;OAIG;IACU,aAAa,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoClE;;OAEG;YACW,uBAAuB;IAMrC;;;OAGG;YACW,cAAc;IAM5B;;;OAGG;YACW,aAAa;IAc3B;;;OAGG;IACH,OAAO,CAAC,eAAe;CAIxB"}
|
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
import { SerialQueue } from '@aztec/foundation/fifo';
|
|
2
|
-
import { createDebugLogger } from '@aztec/foundation/log';
|
|
3
|
-
import { L2BlockDownloader } from '@aztec/types';
|
|
4
|
-
import { MerkleTreeOperationsFacade } from '../merkle-tree/merkle_tree_operations_facade.js';
|
|
5
|
-
import { WorldStateRunningState } from './world_state_synchroniser.js';
|
|
6
|
-
/**
|
|
7
|
-
* Synchronises the world state with the L2 blocks from a L2BlockSource.
|
|
8
|
-
* The synchroniser will download the L2 blocks from the L2BlockSource and insert the new commitments into the merkle
|
|
9
|
-
* tree.
|
|
10
|
-
*/
|
|
11
|
-
export class ServerWorldStateSynchroniser {
|
|
12
|
-
constructor(merkleTreeDb, l2BlockSource, config, log = createDebugLogger('aztec:world_state')) {
|
|
13
|
-
this.merkleTreeDb = merkleTreeDb;
|
|
14
|
-
this.l2BlockSource = l2BlockSource;
|
|
15
|
-
this.log = log;
|
|
16
|
-
this.currentL2BlockNum = 0;
|
|
17
|
-
this.latestBlockNumberAtStart = 0;
|
|
18
|
-
this.syncPromise = Promise.resolve();
|
|
19
|
-
this.syncResolve = undefined;
|
|
20
|
-
this.jobQueue = new SerialQueue();
|
|
21
|
-
this.stopping = false;
|
|
22
|
-
this.runningPromise = Promise.resolve();
|
|
23
|
-
this.currentState = WorldStateRunningState.IDLE;
|
|
24
|
-
this.l2BlockDownloader = new L2BlockDownloader(l2BlockSource, config.l2QueueSize, config.worldStateBlockCheckIntervalMS);
|
|
25
|
-
}
|
|
26
|
-
getLatest() {
|
|
27
|
-
return new MerkleTreeOperationsFacade(this.merkleTreeDb, true);
|
|
28
|
-
}
|
|
29
|
-
getCommitted() {
|
|
30
|
-
return new MerkleTreeOperationsFacade(this.merkleTreeDb, false);
|
|
31
|
-
}
|
|
32
|
-
async start() {
|
|
33
|
-
if (this.currentState === WorldStateRunningState.STOPPED) {
|
|
34
|
-
throw new Error('Synchroniser already stopped');
|
|
35
|
-
}
|
|
36
|
-
if (this.currentState !== WorldStateRunningState.IDLE) {
|
|
37
|
-
return this.syncPromise;
|
|
38
|
-
}
|
|
39
|
-
// get the current latest block number
|
|
40
|
-
this.latestBlockNumberAtStart = await this.l2BlockSource.getBlockNumber();
|
|
41
|
-
const blockToDownloadFrom = this.currentL2BlockNum + 1;
|
|
42
|
-
// if there are blocks to be retrieved, go to a synching state
|
|
43
|
-
if (blockToDownloadFrom <= this.latestBlockNumberAtStart) {
|
|
44
|
-
this.setCurrentState(WorldStateRunningState.SYNCHING);
|
|
45
|
-
this.syncPromise = new Promise(resolve => {
|
|
46
|
-
this.syncResolve = resolve;
|
|
47
|
-
});
|
|
48
|
-
this.log(`Starting sync from ${blockToDownloadFrom}, latest block ${this.latestBlockNumberAtStart}`);
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
// if no blocks to be retrieved, go straight to running
|
|
52
|
-
this.setCurrentState(WorldStateRunningState.RUNNING);
|
|
53
|
-
this.syncPromise = Promise.resolve();
|
|
54
|
-
this.log(`Next block ${blockToDownloadFrom} already beyond latest block at ${this.latestBlockNumberAtStart}`);
|
|
55
|
-
}
|
|
56
|
-
// start looking for further blocks
|
|
57
|
-
const blockProcess = async () => {
|
|
58
|
-
while (!this.stopping) {
|
|
59
|
-
await this.jobQueue.put(() => this.collectAndProcessBlocks());
|
|
60
|
-
}
|
|
61
|
-
};
|
|
62
|
-
this.jobQueue.start();
|
|
63
|
-
this.runningPromise = blockProcess();
|
|
64
|
-
this.l2BlockDownloader.start(blockToDownloadFrom);
|
|
65
|
-
this.log(`Started block downloader from block ${blockToDownloadFrom}`);
|
|
66
|
-
return this.syncPromise;
|
|
67
|
-
}
|
|
68
|
-
async stop() {
|
|
69
|
-
this.log('Stopping world state...');
|
|
70
|
-
this.stopping = true;
|
|
71
|
-
await this.l2BlockDownloader.stop();
|
|
72
|
-
await this.jobQueue.cancel();
|
|
73
|
-
await this.merkleTreeDb.stop();
|
|
74
|
-
await this.runningPromise;
|
|
75
|
-
this.setCurrentState(WorldStateRunningState.STOPPED);
|
|
76
|
-
}
|
|
77
|
-
status() {
|
|
78
|
-
const status = {
|
|
79
|
-
syncedToL2Block: this.currentL2BlockNum,
|
|
80
|
-
state: this.currentState,
|
|
81
|
-
};
|
|
82
|
-
return Promise.resolve(status);
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Forces an immediate sync
|
|
86
|
-
* @param minBlockNumber - The minimum block number that we must sync to
|
|
87
|
-
* @returns A promise that resolves once the sync has completed.
|
|
88
|
-
*/
|
|
89
|
-
async syncImmediate(minBlockNumber) {
|
|
90
|
-
if (this.currentState !== WorldStateRunningState.RUNNING) {
|
|
91
|
-
throw new Error(`World State is not running, unable to perform sync`);
|
|
92
|
-
}
|
|
93
|
-
// If we have been given a block number to sync to and we have reached that number
|
|
94
|
-
// then return.
|
|
95
|
-
if (minBlockNumber !== undefined && minBlockNumber <= this.currentL2BlockNum) {
|
|
96
|
-
return;
|
|
97
|
-
}
|
|
98
|
-
const blockToSyncTo = minBlockNumber === undefined ? 'latest' : `${minBlockNumber}`;
|
|
99
|
-
this.log(`World State at block ${this.currentL2BlockNum}, told to sync to block ${blockToSyncTo}...`);
|
|
100
|
-
// ensure any outstanding block updates are completed first.
|
|
101
|
-
await this.jobQueue.syncPoint();
|
|
102
|
-
while (true) {
|
|
103
|
-
// Check the block number again
|
|
104
|
-
if (minBlockNumber !== undefined && minBlockNumber <= this.currentL2BlockNum) {
|
|
105
|
-
return;
|
|
106
|
-
}
|
|
107
|
-
// Poll for more blocks
|
|
108
|
-
const numBlocks = await this.l2BlockDownloader.pollImmediate();
|
|
109
|
-
this.log(`Block download immediate poll yielded ${numBlocks} blocks`);
|
|
110
|
-
if (numBlocks) {
|
|
111
|
-
// More blocks were received, process them and go round again
|
|
112
|
-
await this.jobQueue.put(() => this.collectAndProcessBlocks());
|
|
113
|
-
continue;
|
|
114
|
-
}
|
|
115
|
-
// No blocks are available, if we have been given a block number then we can't achieve it
|
|
116
|
-
if (minBlockNumber !== undefined) {
|
|
117
|
-
throw new Error(`Unable to sync to block number ${minBlockNumber}, currently synced to block ${this.currentL2BlockNum}`);
|
|
118
|
-
}
|
|
119
|
-
return;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* Checks for the availability of new blocks and processes them.
|
|
124
|
-
*/
|
|
125
|
-
async collectAndProcessBlocks() {
|
|
126
|
-
// This request for blocks will timeout after 1 second if no blocks are received
|
|
127
|
-
const blocks = await this.l2BlockDownloader.getL2Blocks(1);
|
|
128
|
-
await this.handleL2Blocks(blocks);
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* Handles a list of L2 blocks (i.e. Inserts the new commitments into the merkle tree).
|
|
132
|
-
* @param l2Blocks - The L2 blocks to handle.
|
|
133
|
-
*/
|
|
134
|
-
async handleL2Blocks(l2Blocks) {
|
|
135
|
-
for (const l2Block of l2Blocks) {
|
|
136
|
-
await this.handleL2Block(l2Block);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Handles a single L2 block (i.e. Inserts the new commitments into the merkle tree).
|
|
141
|
-
* @param l2Block - The L2 block to handle.
|
|
142
|
-
*/
|
|
143
|
-
async handleL2Block(l2Block) {
|
|
144
|
-
await this.merkleTreeDb.handleL2Block(l2Block);
|
|
145
|
-
this.currentL2BlockNum = l2Block.number;
|
|
146
|
-
if (this.currentState === WorldStateRunningState.SYNCHING &&
|
|
147
|
-
this.currentL2BlockNum >= this.latestBlockNumberAtStart) {
|
|
148
|
-
this.setCurrentState(WorldStateRunningState.RUNNING);
|
|
149
|
-
if (this.syncResolve !== undefined) {
|
|
150
|
-
this.syncResolve();
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
/**
|
|
155
|
-
* Method to set the value of the current state.
|
|
156
|
-
* @param newState - New state value.
|
|
157
|
-
*/
|
|
158
|
-
setCurrentState(newState) {
|
|
159
|
-
this.currentState = newState;
|
|
160
|
-
this.log(`Moved to state ${WorldStateRunningState[this.currentState]}`);
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyX3dvcmxkX3N0YXRlX3N5bmNocm9uaXNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zeW5jaHJvbmlzZXIvc2VydmVyX3dvcmxkX3N0YXRlX3N5bmNocm9uaXNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFXLGlCQUFpQixFQUFpQixNQUFNLGNBQWMsQ0FBQztBQUd6RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUU3RixPQUFPLEVBQUUsc0JBQXNCLEVBQTRDLE1BQU0sK0JBQStCLENBQUM7QUFFakg7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyw0QkFBNEI7SUFZdkMsWUFDVSxZQUF5QixFQUN6QixhQUE0QixFQUNwQyxNQUF3QixFQUNoQixNQUFNLGlCQUFpQixDQUFDLG1CQUFtQixDQUFDO1FBSDVDLGlCQUFZLEdBQVosWUFBWSxDQUFhO1FBQ3pCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBRTVCLFFBQUcsR0FBSCxHQUFHLENBQXlDO1FBZjlDLHNCQUFpQixHQUFHLENBQUMsQ0FBQztRQUN0Qiw2QkFBd0IsR0FBRyxDQUFDLENBQUM7UUFHN0IsZ0JBQVcsR0FBa0IsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQy9DLGdCQUFXLEdBQWdCLFNBQVMsQ0FBQztRQUNyQyxhQUFRLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUM3QixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLG1CQUFjLEdBQWtCLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNsRCxpQkFBWSxHQUEyQixzQkFBc0IsQ0FBQyxJQUFJLENBQUM7UUFRekUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksaUJBQWlCLENBQzVD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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"server_world_state_synchroniser.test.d.ts","sourceRoot":"","sources":["../../src/synchroniser/server_world_state_synchroniser.test.ts"],"names":[],"mappings":""}
|