@aztec/world-state 0.7.10 → 0.8.7
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/README.md +3 -3
- package/dest/index.d.ts +2 -2
- package/dest/index.js +2 -2
- package/dest/merkle-tree/merkle_tree_operations_facade.d.ts +3 -3
- package/dest/merkle-tree/merkle_tree_operations_facade.d.ts.map +1 -1
- package/dest/merkle-tree/merkle_tree_operations_facade.js +2 -2
- package/dest/{synchroniser → synchronizer}/config.d.ts +3 -3
- package/dest/{synchroniser → synchronizer}/config.d.ts.map +1 -1
- package/dest/{synchroniser → synchronizer}/config.js +3 -3
- package/dest/synchronizer/index.d.ts +3 -0
- package/dest/synchronizer/index.d.ts.map +1 -0
- package/dest/{synchroniser → synchronizer}/index.js +3 -3
- package/dest/{synchroniser/server_world_state_synchroniser.d.ts → synchronizer/server_world_state_synchronizer.d.ts} +13 -6
- package/dest/synchronizer/server_world_state_synchronizer.d.ts.map +1 -0
- package/dest/synchronizer/server_world_state_synchronizer.js +203 -0
- package/dest/{synchroniser/world_state_synchroniser.d.ts → synchronizer/world_state_synchronizer.d.ts} +11 -11
- package/dest/{synchroniser/world_state_synchroniser.d.ts.map → synchronizer/world_state_synchronizer.d.ts.map} +1 -1
- package/dest/{synchroniser/world_state_synchroniser.js → synchronizer/world_state_synchronizer.js} +2 -2
- package/dest/world-state-db/index.d.ts +5 -1
- package/dest/world-state-db/index.d.ts.map +1 -1
- package/dest/world-state-db/index.js +1 -1
- package/dest/world-state-db/merkle_trees.d.ts +9 -8
- package/dest/world-state-db/merkle_trees.d.ts.map +1 -1
- package/dest/world-state-db/merkle_trees.js +55 -44
- package/package.json +56 -6
- package/src/index.ts +2 -2
- package/src/merkle-tree/merkle_tree_operations_facade.ts +10 -3
- package/src/{synchroniser → synchronizer}/config.ts +3 -3
- package/src/synchronizer/index.ts +2 -0
- package/src/{synchroniser/server_world_state_synchroniser.ts → synchronizer/server_world_state_synchronizer.ts} +60 -10
- package/src/{synchroniser/world_state_synchroniser.ts → synchronizer/world_state_synchronizer.ts} +10 -10
- package/src/world-state-db/index.ts +6 -1
- package/src/world-state-db/merkle_trees.ts +61 -46
- package/.eslintrc.cjs +0 -1
- package/.tsbuildinfo +0 -1
- package/dest/synchroniser/index.d.ts +0 -3
- package/dest/synchroniser/index.d.ts.map +0 -1
- 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/src/synchroniser/index.ts +0 -2
- package/src/synchroniser/server_world_state_synchroniser.test.ts +0 -428
- package/tsconfig.json +0 -23
package/README.md
CHANGED
|
@@ -23,11 +23,11 @@ As of the time of writing the collection consisted of the following trees.
|
|
|
23
23
|
|
|
24
24
|
- The Public Data Tree. A tree whose leaves are the current value of every item of public state in the system, addressed as `leaf_index = hash(contract_address, storage_slot_in_contract)`
|
|
25
25
|
|
|
26
|
-
### The
|
|
26
|
+
### The Synchronizer
|
|
27
27
|
|
|
28
|
-
The
|
|
28
|
+
The synchronizer's role is to periodically poll for new block information and reconcile that information with the current state of the Merkle Trees.
|
|
29
29
|
|
|
30
|
-
Once a new block is received, the
|
|
30
|
+
Once a new block is received, the synchronizer checks the uncommitted root values of all of the trees against the roots published as part of the block. If they are all equal, the tree state is committed. If they are not equal, the tree states are rolled back to the last committed state before the published data is inserted and committed.
|
|
31
31
|
|
|
32
32
|
### The Merkle Tree Interface
|
|
33
33
|
|
package/dest/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export * from './
|
|
1
|
+
export * from './synchronizer/index.js';
|
|
2
2
|
export * from './world-state-db/index.js';
|
|
3
3
|
export * from './utils.js';
|
|
4
|
-
export * from './
|
|
4
|
+
export * from './synchronizer/config.js';
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dest/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export * from './
|
|
1
|
+
export * from './synchronizer/index.js';
|
|
2
2
|
export * from './world-state-db/index.js';
|
|
3
3
|
export * from './utils.js';
|
|
4
|
-
export * from './
|
|
4
|
+
export * from './synchronizer/config.js';
|
|
5
5
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsMEJBQTBCLENBQUMifQ==
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { Fr } from '@aztec/foundation/fields';
|
|
3
3
|
import { LowLeafWitnessData } from '@aztec/merkle-tree';
|
|
4
4
|
import { L2Block, MerkleTreeId, SiblingPath } from '@aztec/types';
|
|
5
|
-
import { CurrentTreeRoots, LeafData, MerkleTreeDb, MerkleTreeOperations, TreeInfo } from '../index.js';
|
|
5
|
+
import { CurrentTreeRoots, HandleL2BlockResult, LeafData, MerkleTreeDb, MerkleTreeOperations, TreeInfo } from '../index.js';
|
|
6
6
|
/**
|
|
7
7
|
* Wraps a MerkleTreeDbOperations to call all functions with a preset includeUncommitted flag.
|
|
8
8
|
*/
|
|
@@ -102,9 +102,9 @@ export declare class MerkleTreeOperationsFacade implements MerkleTreeOperations
|
|
|
102
102
|
/**
|
|
103
103
|
* Handles a single L2 block (i.e. Inserts the new commitments into the merkle tree).
|
|
104
104
|
* @param block - The L2 block to handle.
|
|
105
|
-
* @returns
|
|
105
|
+
* @returns Whether the block handled was produced by this same node.
|
|
106
106
|
*/
|
|
107
|
-
handleL2Block(block: L2Block): Promise<
|
|
107
|
+
handleL2Block(block: L2Block): Promise<HandleL2BlockResult>;
|
|
108
108
|
/**
|
|
109
109
|
* Commits all pending updates.
|
|
110
110
|
* @returns Empty promise.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merkle_tree_operations_facade.d.ts","sourceRoot":"","sources":["../../src/merkle-tree/merkle_tree_operations_facade.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAElE,OAAO,
|
|
1
|
+
{"version":3,"file":"merkle_tree_operations_facade.d.ts","sourceRoot":"","sources":["../../src/merkle-tree/merkle_tree_operations_facade.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAElE,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,QAAQ,EACR,YAAY,EACZ,oBAAoB,EACpB,QAAQ,EACT,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,qBAAa,0BAA2B,YAAW,oBAAoB;IACzD,OAAO,CAAC,KAAK;IAAgB,OAAO,CAAC,kBAAkB;gBAA/C,KAAK,EAAE,YAAY,EAAU,kBAAkB,EAAE,OAAO;IAE5E;;;;;OAKG;IACH,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIpD;;;OAGG;IACH,YAAY,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAIzC;;;;;OAKG;IACH,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAInE;;;;;OAKG;IACG,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAKpG;;;;;;OAMG;IACH,qBAAqB,CACnB,MAAM,EAAE,YAAY,CAAC,cAAc,EACnC,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;QACT;;WAEG;QACH,KAAK,EAAE,MAAM,CAAC;QACd;;WAEG;QACH,cAAc,EAAE,OAAO,CAAC;KACzB,CAAC;IAIF;;;;;;OAMG;IACH,UAAU,CAAC,MAAM,EAAE,YAAY,CAAC,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7F;;;;;OAKG;IACH,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAI9F;;;;;OAKG;IACH,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAI/E;;;;;;OAMG;IACH,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAI9E;;;;;OAKG;IACI,wBAAwB,CAAC,mBAAmB,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvE;;;OAGG;IACI,+BAA+B,CAAC,mBAAmB,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9E;;OAEG;IACI,4BAA4B,IAAI,OAAO,CAAC,EAAE,CAAC;IAIlD;;;;OAIG;IACI,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAIlE;;;OAGG;IACU,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAIpC;;;OAGG;IACU,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAItC;;;;;;OAMG;IACI,WAAW,CAChB,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,MAAM,EAAE,EAChB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;CAGnG"}
|
|
@@ -114,7 +114,7 @@ export class MerkleTreeOperationsFacade {
|
|
|
114
114
|
/**
|
|
115
115
|
* Handles a single L2 block (i.e. Inserts the new commitments into the merkle tree).
|
|
116
116
|
* @param block - The L2 block to handle.
|
|
117
|
-
* @returns
|
|
117
|
+
* @returns Whether the block handled was produced by this same node.
|
|
118
118
|
*/
|
|
119
119
|
handleL2Block(block) {
|
|
120
120
|
return this.trees.handleL2Block(block);
|
|
@@ -144,4 +144,4 @@ export class MerkleTreeOperationsFacade {
|
|
|
144
144
|
return this.trees.batchInsert(treeId, leaves, subtreeHeight);
|
|
145
145
|
}
|
|
146
146
|
}
|
|
147
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
147
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVya2xlX3RyZWVfb3BlcmF0aW9uc19mYWNhZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWVya2xlLXRyZWUvbWVya2xlX3RyZWVfb3BlcmF0aW9uc19mYWNhZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBYUE7O0dBRUc7QUFDSCxNQUFNLE9BQU8sMEJBQTBCO0lBQ3JDLFlBQW9CLEtBQW1CLEVBQVUsa0JBQTJCO1FBQXhELFVBQUssR0FBTCxLQUFLLENBQWM7UUFBVSx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQVM7SUFBRyxDQUFDO0lBRWhGOzs7OztPQUtHO0lBQ0gsV0FBVyxDQUFDLE1BQW9CO1FBQzlCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRDs7O09BR0c7SUFDSCxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxZQUFZLENBQUMsTUFBb0IsRUFBRSxNQUFnQjtRQUNqRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsY0FBYyxDQUFtQixNQUFvQixFQUFFLEtBQWE7UUFDeEUsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3JGLE9BQU8sSUFBaUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gscUJBQXFCLENBQ25CLE1BQW1DLEVBQ25DLEtBQWE7UUFXYixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsVUFBVSxDQUFDLE1BQW1DLEVBQUUsSUFBYyxFQUFFLEtBQWE7UUFDM0UsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFdBQVcsQ0FBQyxNQUFtQyxFQUFFLEtBQWE7UUFDNUQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGFBQWEsQ0FBQyxNQUFvQixFQUFFLEtBQWE7UUFDL0MsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxZQUFZLENBQUMsTUFBb0IsRUFBRSxLQUFhO1FBQzlDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSx3QkFBd0IsQ0FBQyxtQkFBdUI7UUFDckQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLHdCQUF3QixDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFFRDs7O09BR0c7SUFDSSwrQkFBK0IsQ0FBQyxtQkFBdUI7UUFDNUQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLCtCQUErQixDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ2xHLENBQUM7SUFFRDs7T0FFRztJQUNJLDRCQUE0QjtRQUNqQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsNEJBQTRCLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxhQUFhLENBQUMsS0FBYztRQUNqQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxLQUFLLENBQUMsTUFBTTtRQUNqQixPQUFPLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSyxDQUFDLFFBQVE7UUFDbkIsT0FBTyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLFdBQVcsQ0FDaEIsTUFBb0IsRUFDcEIsTUFBZ0IsRUFDaEIsYUFBcUI7UUFFckIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQy9ELENBQUM7Q0FDRiJ9
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* World State
|
|
2
|
+
* World State synchronizer configuration values.
|
|
3
3
|
*/
|
|
4
4
|
export interface WorldStateConfig {
|
|
5
5
|
/**
|
|
@@ -12,8 +12,8 @@ export interface WorldStateConfig {
|
|
|
12
12
|
l2QueueSize: number;
|
|
13
13
|
}
|
|
14
14
|
/**
|
|
15
|
-
* Returns the configuration values for the world state
|
|
16
|
-
* @returns The configuration values for the world state
|
|
15
|
+
* Returns the configuration values for the world state synchronizer.
|
|
16
|
+
* @returns The configuration values for the world state synchronizer.
|
|
17
17
|
*/
|
|
18
18
|
export declare function getConfigEnvVars(): WorldStateConfig;
|
|
19
19
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/synchronizer/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,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Returns the configuration values for the world state
|
|
3
|
-
* @returns The configuration values for the world state
|
|
2
|
+
* Returns the configuration values for the world state synchronizer.
|
|
3
|
+
* @returns The configuration values for the world state synchronizer.
|
|
4
4
|
*/
|
|
5
5
|
export function getConfigEnvVars() {
|
|
6
6
|
const { WS_BLOCK_CHECK_INTERVAL_MS, WS_L2_BLOCK_QUEUE_SIZE } = process.env;
|
|
@@ -10,4 +10,4 @@ export function getConfigEnvVars() {
|
|
|
10
10
|
};
|
|
11
11
|
return envVars;
|
|
12
12
|
}
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N5bmNocm9uaXplci9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZUE7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQjtJQUM5QixNQUFNLEVBQUUsMEJBQTBCLEVBQUUsc0JBQXNCLEVBQUUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDO0lBQzNFLE1BQU0sT0FBTyxHQUFxQjtRQUNoQyw4QkFBOEIsRUFBRSwwQkFBMEIsQ0FBQyxDQUFDLENBQUMsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUMsR0FBRztRQUM5RixXQUFXLEVBQUUsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLElBQUk7S0FDckUsQ0FBQztJQUNGLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/synchronizer/index.ts"],"names":[],"mappings":"AAAA,cAAc,sCAAsC,CAAC;AACrD,cAAc,+BAA+B,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from './
|
|
2
|
-
export * from './
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export * from './server_world_state_synchronizer.js';
|
|
2
|
+
export * from './world_state_synchronizer.js';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3luY2hyb25pemVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYywrQkFBK0IsQ0FBQyJ9
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
import { L2BlockSource } from '@aztec/types';
|
|
2
|
+
import { LevelUp } from 'levelup';
|
|
2
3
|
import { MerkleTreeOperations, MerkleTrees } from '../index.js';
|
|
3
4
|
import { WorldStateConfig } from './config.js';
|
|
4
|
-
import { WorldStateStatus,
|
|
5
|
+
import { WorldStateStatus, WorldStateSynchronizer } from './world_state_synchronizer.js';
|
|
5
6
|
/**
|
|
6
|
-
*
|
|
7
|
-
* The
|
|
7
|
+
* Synchronizes the world state with the L2 blocks from a L2BlockSource.
|
|
8
|
+
* The synchronizer will download the L2 blocks from the L2BlockSource and insert the new commitments into the merkle
|
|
8
9
|
* tree.
|
|
9
10
|
*/
|
|
10
|
-
export declare class
|
|
11
|
+
export declare class ServerWorldStateSynchronizer implements WorldStateSynchronizer {
|
|
12
|
+
#private;
|
|
13
|
+
private db;
|
|
11
14
|
private merkleTreeDb;
|
|
12
15
|
private l2BlockSource;
|
|
13
16
|
private log;
|
|
@@ -20,9 +23,10 @@ export declare class ServerWorldStateSynchroniser implements WorldStateSynchroni
|
|
|
20
23
|
private stopping;
|
|
21
24
|
private runningPromise;
|
|
22
25
|
private currentState;
|
|
23
|
-
constructor(
|
|
26
|
+
private constructor();
|
|
24
27
|
getLatest(): MerkleTreeOperations;
|
|
25
28
|
getCommitted(): MerkleTreeOperations;
|
|
29
|
+
static new(db: LevelUp, merkleTreeDb: MerkleTrees, l2BlockSource: L2BlockSource, config: WorldStateConfig, log?: import("@aztec/foundation/log").DebugLogger): Promise<ServerWorldStateSynchronizer>;
|
|
26
30
|
start(): Promise<void>;
|
|
27
31
|
stop(): Promise<void>;
|
|
28
32
|
status(): Promise<WorldStateStatus>;
|
|
@@ -39,6 +43,7 @@ export declare class ServerWorldStateSynchroniser implements WorldStateSynchroni
|
|
|
39
43
|
/**
|
|
40
44
|
* Handles a list of L2 blocks (i.e. Inserts the new commitments into the merkle tree).
|
|
41
45
|
* @param l2Blocks - The L2 blocks to handle.
|
|
46
|
+
* @returns Whether the block handled was produced by this same node.
|
|
42
47
|
*/
|
|
43
48
|
private handleL2Blocks;
|
|
44
49
|
/**
|
|
@@ -51,5 +56,7 @@ export declare class ServerWorldStateSynchroniser implements WorldStateSynchroni
|
|
|
51
56
|
* @param newState - New state value.
|
|
52
57
|
*/
|
|
53
58
|
private setCurrentState;
|
|
59
|
+
private commitCurrentL2BlockNumber;
|
|
60
|
+
private restoreCurrentL2BlockNumber;
|
|
54
61
|
}
|
|
55
|
-
//# sourceMappingURL=
|
|
62
|
+
//# sourceMappingURL=server_world_state_synchronizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server_world_state_synchronizer.d.ts","sourceRoot":"","sources":["../../src/synchronizer/server_world_state_synchronizer.ts"],"names":[],"mappings":"AAGA,OAAO,EAA8B,aAAa,EAAE,MAAM,cAAc,CAAC;AAEzE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,OAAO,EAAuB,oBAAoB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAErF,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAA0B,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAIjH;;;;GAIG;AACH,qBAAa,4BAA6B,YAAW,sBAAsB;;IAavE,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,aAAa;IAErB,OAAO,CAAC,GAAG;IAhBb,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;IAE3E,OAAO;IAcA,SAAS,IAAI,oBAAoB;IAIjC,YAAY,IAAI,oBAAoB;WAIvB,GAAG,CACrB,EAAE,EAAE,OAAO,EACX,YAAY,EAAE,WAAW,EACzB,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,gBAAgB,EACxB,GAAG,8CAAyC;IAWjC,KAAK;IAwCL,IAAI;IAWV,MAAM,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAQ1C;;;;OAIG;IACU,aAAa,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoClE;;OAEG;YACW,uBAAuB;IAOrC;;;;OAIG;YACW,cAAc;IAY5B;;;OAGG;YACW,aAAa;IAe3B;;;OAGG;IACH,OAAO,CAAC,eAAe;YAKT,0BAA0B;YAO1B,2BAA2B;CAU1C"}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
var _ServerWorldStateSynchronizer_instances, _ServerWorldStateSynchronizer_init;
|
|
2
|
+
import { __classPrivateFieldGet } from "tslib";
|
|
3
|
+
import { SerialQueue } from '@aztec/foundation/fifo';
|
|
4
|
+
import { createDebugLogger } from '@aztec/foundation/log';
|
|
5
|
+
import { elapsed } from '@aztec/foundation/timer';
|
|
6
|
+
import { L2BlockDownloader } from '@aztec/types';
|
|
7
|
+
import { MerkleTreeOperationsFacade } from '../merkle-tree/merkle_tree_operations_facade.js';
|
|
8
|
+
import { WorldStateRunningState } from './world_state_synchronizer.js';
|
|
9
|
+
const DB_KEY_BLOCK_NUMBER = 'latestBlockNumber';
|
|
10
|
+
/**
|
|
11
|
+
* Synchronizes the world state with the L2 blocks from a L2BlockSource.
|
|
12
|
+
* The synchronizer will download the L2 blocks from the L2BlockSource and insert the new commitments into the merkle
|
|
13
|
+
* tree.
|
|
14
|
+
*/
|
|
15
|
+
export class ServerWorldStateSynchronizer {
|
|
16
|
+
constructor(db, merkleTreeDb, l2BlockSource, config, log = createDebugLogger('aztec:world_state')) {
|
|
17
|
+
_ServerWorldStateSynchronizer_instances.add(this);
|
|
18
|
+
this.db = db;
|
|
19
|
+
this.merkleTreeDb = merkleTreeDb;
|
|
20
|
+
this.l2BlockSource = l2BlockSource;
|
|
21
|
+
this.log = log;
|
|
22
|
+
this.currentL2BlockNum = 0;
|
|
23
|
+
this.latestBlockNumberAtStart = 0;
|
|
24
|
+
this.syncPromise = Promise.resolve();
|
|
25
|
+
this.syncResolve = undefined;
|
|
26
|
+
this.jobQueue = new SerialQueue();
|
|
27
|
+
this.stopping = false;
|
|
28
|
+
this.runningPromise = Promise.resolve();
|
|
29
|
+
this.currentState = WorldStateRunningState.IDLE;
|
|
30
|
+
this.l2BlockDownloader = new L2BlockDownloader(l2BlockSource, config.l2QueueSize, config.worldStateBlockCheckIntervalMS);
|
|
31
|
+
}
|
|
32
|
+
getLatest() {
|
|
33
|
+
return new MerkleTreeOperationsFacade(this.merkleTreeDb, true);
|
|
34
|
+
}
|
|
35
|
+
getCommitted() {
|
|
36
|
+
return new MerkleTreeOperationsFacade(this.merkleTreeDb, false);
|
|
37
|
+
}
|
|
38
|
+
static async new(db, merkleTreeDb, l2BlockSource, config, log = createDebugLogger('aztec:world_state')) {
|
|
39
|
+
const server = new ServerWorldStateSynchronizer(db, merkleTreeDb, l2BlockSource, config, log);
|
|
40
|
+
await __classPrivateFieldGet(server, _ServerWorldStateSynchronizer_instances, "m", _ServerWorldStateSynchronizer_init).call(server);
|
|
41
|
+
return server;
|
|
42
|
+
}
|
|
43
|
+
async start() {
|
|
44
|
+
if (this.currentState === WorldStateRunningState.STOPPED) {
|
|
45
|
+
throw new Error('Synchronizer already stopped');
|
|
46
|
+
}
|
|
47
|
+
if (this.currentState !== WorldStateRunningState.IDLE) {
|
|
48
|
+
return this.syncPromise;
|
|
49
|
+
}
|
|
50
|
+
// get the current latest block number
|
|
51
|
+
this.latestBlockNumberAtStart = await this.l2BlockSource.getBlockNumber();
|
|
52
|
+
const blockToDownloadFrom = this.currentL2BlockNum + 1;
|
|
53
|
+
// if there are blocks to be retrieved, go to a synching state
|
|
54
|
+
if (blockToDownloadFrom <= this.latestBlockNumberAtStart) {
|
|
55
|
+
this.setCurrentState(WorldStateRunningState.SYNCHING);
|
|
56
|
+
this.syncPromise = new Promise(resolve => {
|
|
57
|
+
this.syncResolve = resolve;
|
|
58
|
+
});
|
|
59
|
+
this.log(`Starting sync from ${blockToDownloadFrom}, latest block ${this.latestBlockNumberAtStart}`);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
// if no blocks to be retrieved, go straight to running
|
|
63
|
+
this.setCurrentState(WorldStateRunningState.RUNNING);
|
|
64
|
+
this.syncPromise = Promise.resolve();
|
|
65
|
+
this.log(`Next block ${blockToDownloadFrom} already beyond latest block at ${this.latestBlockNumberAtStart}`);
|
|
66
|
+
}
|
|
67
|
+
// start looking for further blocks
|
|
68
|
+
const blockProcess = async () => {
|
|
69
|
+
while (!this.stopping) {
|
|
70
|
+
await this.jobQueue.put(() => this.collectAndProcessBlocks());
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
this.jobQueue.start();
|
|
74
|
+
this.runningPromise = blockProcess();
|
|
75
|
+
this.l2BlockDownloader.start(blockToDownloadFrom);
|
|
76
|
+
this.log(`Started block downloader from block ${blockToDownloadFrom}`);
|
|
77
|
+
return this.syncPromise;
|
|
78
|
+
}
|
|
79
|
+
async stop() {
|
|
80
|
+
this.log('Stopping world state...');
|
|
81
|
+
this.stopping = true;
|
|
82
|
+
await this.l2BlockDownloader.stop();
|
|
83
|
+
await this.jobQueue.cancel();
|
|
84
|
+
await this.merkleTreeDb.stop();
|
|
85
|
+
await this.runningPromise;
|
|
86
|
+
await this.commitCurrentL2BlockNumber();
|
|
87
|
+
this.setCurrentState(WorldStateRunningState.STOPPED);
|
|
88
|
+
}
|
|
89
|
+
status() {
|
|
90
|
+
const status = {
|
|
91
|
+
syncedToL2Block: this.currentL2BlockNum,
|
|
92
|
+
state: this.currentState,
|
|
93
|
+
};
|
|
94
|
+
return Promise.resolve(status);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Forces an immediate sync
|
|
98
|
+
* @param minBlockNumber - The minimum block number that we must sync to
|
|
99
|
+
* @returns A promise that resolves once the sync has completed.
|
|
100
|
+
*/
|
|
101
|
+
async syncImmediate(minBlockNumber) {
|
|
102
|
+
if (this.currentState !== WorldStateRunningState.RUNNING) {
|
|
103
|
+
throw new Error(`World State is not running, unable to perform sync`);
|
|
104
|
+
}
|
|
105
|
+
// If we have been given a block number to sync to and we have reached that number
|
|
106
|
+
// then return.
|
|
107
|
+
if (minBlockNumber !== undefined && minBlockNumber <= this.currentL2BlockNum) {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
const blockToSyncTo = minBlockNumber === undefined ? 'latest' : `${minBlockNumber}`;
|
|
111
|
+
this.log(`World State at block ${this.currentL2BlockNum}, told to sync to block ${blockToSyncTo}...`);
|
|
112
|
+
// ensure any outstanding block updates are completed first.
|
|
113
|
+
await this.jobQueue.syncPoint();
|
|
114
|
+
while (true) {
|
|
115
|
+
// Check the block number again
|
|
116
|
+
if (minBlockNumber !== undefined && minBlockNumber <= this.currentL2BlockNum) {
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
// Poll for more blocks
|
|
120
|
+
const numBlocks = await this.l2BlockDownloader.pollImmediate();
|
|
121
|
+
this.log(`Block download immediate poll yielded ${numBlocks} blocks`);
|
|
122
|
+
if (numBlocks) {
|
|
123
|
+
// More blocks were received, process them and go round again
|
|
124
|
+
await this.jobQueue.put(() => this.collectAndProcessBlocks());
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
// No blocks are available, if we have been given a block number then we can't achieve it
|
|
128
|
+
if (minBlockNumber !== undefined) {
|
|
129
|
+
throw new Error(`Unable to sync to block number ${minBlockNumber}, currently synced to block ${this.currentL2BlockNum}`);
|
|
130
|
+
}
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Checks for the availability of new blocks and processes them.
|
|
136
|
+
*/
|
|
137
|
+
async collectAndProcessBlocks() {
|
|
138
|
+
// This request for blocks will timeout after 1 second if no blocks are received
|
|
139
|
+
const blocks = await this.l2BlockDownloader.getL2Blocks(1);
|
|
140
|
+
await this.handleL2Blocks(blocks);
|
|
141
|
+
await this.commitCurrentL2BlockNumber();
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Handles a list of L2 blocks (i.e. Inserts the new commitments into the merkle tree).
|
|
145
|
+
* @param l2Blocks - The L2 blocks to handle.
|
|
146
|
+
* @returns Whether the block handled was produced by this same node.
|
|
147
|
+
*/
|
|
148
|
+
async handleL2Blocks(l2Blocks) {
|
|
149
|
+
for (const l2Block of l2Blocks) {
|
|
150
|
+
const [time, result] = await elapsed(() => this.handleL2Block(l2Block));
|
|
151
|
+
this.log(`Handled new L2 block`, {
|
|
152
|
+
eventName: 'l2-block-handled',
|
|
153
|
+
duration: time.ms(),
|
|
154
|
+
isBlockOurs: result.isBlockOurs,
|
|
155
|
+
...l2Block.getStats(),
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Handles a single L2 block (i.e. Inserts the new commitments into the merkle tree).
|
|
161
|
+
* @param l2Block - The L2 block to handle.
|
|
162
|
+
*/
|
|
163
|
+
async handleL2Block(l2Block) {
|
|
164
|
+
const result = await this.merkleTreeDb.handleL2Block(l2Block);
|
|
165
|
+
this.currentL2BlockNum = l2Block.number;
|
|
166
|
+
if (this.currentState === WorldStateRunningState.SYNCHING &&
|
|
167
|
+
this.currentL2BlockNum >= this.latestBlockNumberAtStart) {
|
|
168
|
+
this.setCurrentState(WorldStateRunningState.RUNNING);
|
|
169
|
+
if (this.syncResolve !== undefined) {
|
|
170
|
+
this.syncResolve();
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
return result;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Method to set the value of the current state.
|
|
177
|
+
* @param newState - New state value.
|
|
178
|
+
*/
|
|
179
|
+
setCurrentState(newState) {
|
|
180
|
+
this.currentState = newState;
|
|
181
|
+
this.log(`Moved to state ${WorldStateRunningState[this.currentState]}`);
|
|
182
|
+
}
|
|
183
|
+
async commitCurrentL2BlockNumber() {
|
|
184
|
+
const hex = this.currentL2BlockNum.toString(16);
|
|
185
|
+
const encoded = Buffer.from(hex.length % 2 === 1 ? '0' + hex : hex, 'hex');
|
|
186
|
+
await this.db.put(DB_KEY_BLOCK_NUMBER, encoded);
|
|
187
|
+
}
|
|
188
|
+
async restoreCurrentL2BlockNumber() {
|
|
189
|
+
try {
|
|
190
|
+
const encoded = await this.db.get(DB_KEY_BLOCK_NUMBER);
|
|
191
|
+
this.currentL2BlockNum = parseInt(encoded.toString('hex'), 16);
|
|
192
|
+
this.log.debug(`Restored current L2 block number ${this.currentL2BlockNum} from db`);
|
|
193
|
+
}
|
|
194
|
+
catch (err) {
|
|
195
|
+
this.log.debug('No current L2 block number found in db, starting from 0');
|
|
196
|
+
this.currentL2BlockNum = 0;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
_ServerWorldStateSynchronizer_instances = new WeakSet(), _ServerWorldStateSynchronizer_init = async function _ServerWorldStateSynchronizer_init() {
|
|
201
|
+
await this.restoreCurrentL2BlockNumber();
|
|
202
|
+
};
|
|
203
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyX3dvcmxkX3N0YXRlX3N5bmNocm9uaXplci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zeW5jaHJvbml6ZXIvc2VydmVyX3dvcmxkX3N0YXRlX3N5bmNocm9uaXplci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbEQsT0FBTyxFQUFXLGlCQUFpQixFQUFpQixNQUFNLGNBQWMsQ0FBQztBQUt6RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUU3RixPQUFPLEVBQUUsc0JBQXNCLEVBQTRDLE1BQU0sK0JBQStCLENBQUM7QUFFakgsTUFBTSxtQkFBbUIsR0FBRyxtQkFBbUIsQ0FBQztBQUVoRDs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLDRCQUE0QjtJQVl2QyxZQUNVLEVBQVcsRUFDWCxZQUF5QixFQUN6QixhQUE0QixFQUNwQyxNQUF3QixFQUNoQixNQUFNLGlCQUFpQixDQUFDLG1CQUFtQixDQUFDOztRQUo1QyxPQUFFLEdBQUYsRUFBRSxDQUFTO1FBQ1gsaUJBQVksR0FBWixZQUFZLENBQWE7UUFDekIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFFNUIsUUFBRyxHQUFILEdBQUcsQ0FBeUM7UUFoQjlDLHNCQUFpQixHQUFHLENBQUMsQ0FBQztRQUN0Qiw2QkFBd0IsR0FBRyxDQUFDLENBQUM7UUFHN0IsZ0JBQVcsR0FBa0IsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQy9DLGdCQUFXLEdBQWdCLFNBQVMsQ0FBQztRQUNyQyxhQUFRLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUM3QixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLG1CQUFj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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { MerkleTreeOperations } from '../index.js';
|
|
2
2
|
/**
|
|
3
|
-
* Defines the possible states of the world state
|
|
3
|
+
* Defines the possible states of the world state synchronizer.
|
|
4
4
|
*/
|
|
5
5
|
export declare enum WorldStateRunningState {
|
|
6
6
|
IDLE = 0,
|
|
@@ -9,34 +9,34 @@ export declare enum WorldStateRunningState {
|
|
|
9
9
|
STOPPED = 3
|
|
10
10
|
}
|
|
11
11
|
/**
|
|
12
|
-
* Defines the status of the world state
|
|
12
|
+
* Defines the status of the world state synchronizer.
|
|
13
13
|
*/
|
|
14
14
|
export interface WorldStateStatus {
|
|
15
15
|
/**
|
|
16
|
-
* The current state of the world state
|
|
16
|
+
* The current state of the world state synchronizer.
|
|
17
17
|
*/
|
|
18
18
|
state: WorldStateRunningState;
|
|
19
19
|
/**
|
|
20
|
-
* The block number that the world state
|
|
20
|
+
* The block number that the world state synchronizer is synced to.
|
|
21
21
|
*/
|
|
22
22
|
syncedToL2Block: number;
|
|
23
23
|
}
|
|
24
24
|
/**
|
|
25
|
-
* Defines the interface for a world state
|
|
25
|
+
* Defines the interface for a world state synchronizer.
|
|
26
26
|
*/
|
|
27
|
-
export interface
|
|
27
|
+
export interface WorldStateSynchronizer {
|
|
28
28
|
/**
|
|
29
|
-
* Starts the
|
|
29
|
+
* Starts the synchronizer.
|
|
30
30
|
* @returns A promise that resolves once the initial sync is completed.
|
|
31
31
|
*/
|
|
32
32
|
start(): void;
|
|
33
33
|
/**
|
|
34
|
-
* Returns the current status of the
|
|
35
|
-
* @returns The current status of the
|
|
34
|
+
* Returns the current status of the synchronizer.
|
|
35
|
+
* @returns The current status of the synchronizer.
|
|
36
36
|
*/
|
|
37
37
|
status(): Promise<WorldStateStatus>;
|
|
38
38
|
/**
|
|
39
|
-
* Stops the
|
|
39
|
+
* Stops the synchronizer.
|
|
40
40
|
*/
|
|
41
41
|
stop(): Promise<void>;
|
|
42
42
|
/**
|
|
@@ -56,4 +56,4 @@ export interface WorldStateSynchroniser {
|
|
|
56
56
|
*/
|
|
57
57
|
getCommitted(): MerkleTreeOperations;
|
|
58
58
|
}
|
|
59
|
-
//# sourceMappingURL=
|
|
59
|
+
//# sourceMappingURL=world_state_synchronizer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"world_state_synchronizer.d.ts","sourceRoot":"","sources":["../../src/synchronizer/world_state_synchronizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD;;GAEG;AACH,oBAAY,sBAAsB;IAChC,IAAI,IAAA;IACJ,QAAQ,IAAA;IACR,OAAO,IAAA;IACP,OAAO,IAAA;CACR;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,KAAK,EAAE,sBAAsB,CAAC;IAC9B;;OAEG;IACH,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,KAAK,IAAI,IAAI,CAAC;IAEd;;;OAGG;IACH,MAAM,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAEpC;;OAEG;IACH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtB;;;;OAIG;IACH,aAAa,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtD;;;OAGG;IACH,SAAS,IAAI,oBAAoB,CAAC;IAElC;;;OAGG;IACH,YAAY,IAAI,oBAAoB,CAAC;CACtC"}
|
package/dest/{synchroniser/world_state_synchroniser.js → synchronizer/world_state_synchronizer.js}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Defines the possible states of the world state
|
|
2
|
+
* Defines the possible states of the world state synchronizer.
|
|
3
3
|
*/
|
|
4
4
|
export var WorldStateRunningState;
|
|
5
5
|
(function (WorldStateRunningState) {
|
|
@@ -8,4 +8,4 @@ export var WorldStateRunningState;
|
|
|
8
8
|
WorldStateRunningState[WorldStateRunningState["RUNNING"] = 2] = "RUNNING";
|
|
9
9
|
WorldStateRunningState[WorldStateRunningState["STOPPED"] = 3] = "STOPPED";
|
|
10
10
|
})(WorldStateRunningState || (WorldStateRunningState = {}));
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ybGRfc3RhdGVfc3luY2hyb25pemVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N5bmNocm9uaXplci93b3JsZF9zdGF0ZV9zeW5jaHJvbml6ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSxzQkFLWDtBQUxELFdBQVksc0JBQXNCO0lBQ2hDLG1FQUFJLENBQUE7SUFDSiwyRUFBUSxDQUFBO0lBQ1IseUVBQU8sQ0FBQTtJQUNQLHlFQUFPLENBQUE7QUFDVCxDQUFDLEVBTFcsc0JBQXNCLEtBQXRCLHNCQUFzQixRQUtqQyJ9
|
|
@@ -172,7 +172,7 @@ export interface MerkleTreeOperations {
|
|
|
172
172
|
* Handles a single L2 block (i.e. Inserts the new commitments into the merkle tree).
|
|
173
173
|
* @param block - The L2 block to handle.
|
|
174
174
|
*/
|
|
175
|
-
handleL2Block(block: L2Block): Promise<
|
|
175
|
+
handleL2Block(block: L2Block): Promise<HandleL2BlockResult>;
|
|
176
176
|
/**
|
|
177
177
|
* Commits pending changes to the underlying store.
|
|
178
178
|
*/
|
|
@@ -182,6 +182,10 @@ export interface MerkleTreeOperations {
|
|
|
182
182
|
*/
|
|
183
183
|
rollback(): Promise<void>;
|
|
184
184
|
}
|
|
185
|
+
/** Return type for handleL2Block */
|
|
186
|
+
export type HandleL2BlockResult = {
|
|
187
|
+
/** Whether the block processed was emitted by our sequencer */ isBlockOurs: boolean;
|
|
188
|
+
};
|
|
185
189
|
/**
|
|
186
190
|
* Outputs a tree leaves using for debugging purposes.
|
|
187
191
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/world-state-db/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/world-state-db/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,4 +28,4 @@ export async function inspectTree(db, treeId, log = createDebugLogger('aztec:ins
|
|
|
28
28
|
}
|
|
29
29
|
log(output.join('\n'));
|
|
30
30
|
}
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd29ybGQtc3RhdGUtZGIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFL0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFJMUQsY0FBYyxtQkFBbUIsQ0FBQztBQWFsQzs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLENBQUMsR0FBRyx5QkFBeUIsQ0FBQztBQWtNekU7O0dBRUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLFdBQVcsQ0FDL0IsRUFBd0IsRUFDeEIsTUFBb0IsRUFDcEIsR0FBRyxHQUFHLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDO0lBRTdDLE1BQU0sSUFBSSxHQUFHLE1BQU0sRUFBRSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxQyxNQUFNLE1BQU0sR0FBRyxDQUFDLFdBQVcsTUFBTSxTQUFTLElBQUksQ0FBQyxJQUFJLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNGLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ2xDLE1BQU0sQ0FBQyxJQUFJLENBQ1QsU0FBUyxDQUFDLEtBQUssTUFBTSxFQUFFLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLGFBQWEsQ0FBQyxFQUFFLENBQ3pHLENBQUM7S0FDSDtJQUNELEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDekIsQ0FBQyJ9
|
|
@@ -4,9 +4,9 @@ import { IWasmModule } from '@aztec/foundation/wasm';
|
|
|
4
4
|
import { LeafData, LowLeafWitnessData } from '@aztec/merkle-tree';
|
|
5
5
|
import { L2Block, MerkleTreeId, SiblingPath } from '@aztec/types';
|
|
6
6
|
import { default as levelup } from 'levelup';
|
|
7
|
-
import { CurrentTreeRoots, IndexedTreeId, MerkleTreeDb, MerkleTreeOperations, PublicTreeId, TreeInfo } from './index.js';
|
|
7
|
+
import { CurrentTreeRoots, HandleL2BlockResult, IndexedTreeId, MerkleTreeDb, MerkleTreeOperations, PublicTreeId, TreeInfo } from './index.js';
|
|
8
8
|
/**
|
|
9
|
-
* Data necessary to
|
|
9
|
+
* Data necessary to reinitialize the merkle trees from Db.
|
|
10
10
|
*/
|
|
11
11
|
interface FromDbOptions {
|
|
12
12
|
/**
|
|
@@ -25,16 +25,16 @@ export declare class MerkleTrees implements MerkleTreeDb {
|
|
|
25
25
|
private jobQueue;
|
|
26
26
|
constructor(db: levelup.LevelUp, log?: import("@aztec/foundation/log").DebugLogger);
|
|
27
27
|
/**
|
|
28
|
-
*
|
|
28
|
+
* initializes the collection of Merkle Trees.
|
|
29
29
|
* @param optionalWasm - WASM instance to use for hashing (if not provided PrimitivesWasm will be used).
|
|
30
|
-
* @param fromDbOptions - Options to
|
|
30
|
+
* @param fromDbOptions - Options to initialize the trees from the database.
|
|
31
31
|
*/
|
|
32
32
|
init(optionalWasm?: IWasmModule, fromDbOptions?: FromDbOptions): Promise<void>;
|
|
33
33
|
/**
|
|
34
|
-
* Method to asynchronously create and
|
|
34
|
+
* Method to asynchronously create and initialize a MerkleTrees instance.
|
|
35
35
|
* @param db - The db instance to use for data persistance.
|
|
36
36
|
* @param wasm - WASM instance to use for hashing (if not provided PrimitivesWasm will be used).
|
|
37
|
-
* @returns - A fully
|
|
37
|
+
* @returns - A fully initialized MerkleTrees instance.
|
|
38
38
|
*/
|
|
39
39
|
static new(db: levelup.LevelUp, wasm?: IWasmModule): Promise<MerkleTrees>;
|
|
40
40
|
/**
|
|
@@ -160,8 +160,9 @@ export declare class MerkleTrees implements MerkleTreeDb {
|
|
|
160
160
|
/**
|
|
161
161
|
* Handles a single L2 block (i.e. Inserts the new commitments into the merkle tree).
|
|
162
162
|
* @param block - The L2 block to handle.
|
|
163
|
+
* @returns Whether the block handled was produced by this same node.
|
|
163
164
|
*/
|
|
164
|
-
handleL2Block(block: L2Block): Promise<
|
|
165
|
+
handleL2Block(block: L2Block): Promise<HandleL2BlockResult>;
|
|
165
166
|
/**
|
|
166
167
|
* Batch insert multiple leaves into the tree.
|
|
167
168
|
* @param treeId - The ID of the tree.
|
|
@@ -175,7 +176,7 @@ export declare class MerkleTrees implements MerkleTreeDb {
|
|
|
175
176
|
* @param fn - The function to execute.
|
|
176
177
|
* @returns Promise containing the result of the function.
|
|
177
178
|
*/
|
|
178
|
-
private
|
|
179
|
+
private synchronize;
|
|
179
180
|
private _updateLatestGlobalVariablesHash;
|
|
180
181
|
private _getGlobalVariablesHash;
|
|
181
182
|
private _updateHistoricBlocksTree;
|