@aztec/world-state 0.0.0-test.1 → 0.0.1-commit.03f7ef2
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/index.d.ts +1 -1
- package/dest/instrumentation/instrumentation.d.ts +6 -4
- package/dest/instrumentation/instrumentation.d.ts.map +1 -1
- package/dest/instrumentation/instrumentation.js +16 -8
- package/dest/native/bench_metrics.d.ts +23 -0
- package/dest/native/bench_metrics.d.ts.map +1 -0
- package/dest/native/bench_metrics.js +81 -0
- package/dest/native/fork_checkpoint.d.ts +1 -1
- package/dest/native/fork_checkpoint.d.ts.map +1 -1
- package/dest/native/index.d.ts +1 -1
- package/dest/native/merkle_trees_facade.d.ts +19 -7
- package/dest/native/merkle_trees_facade.d.ts.map +1 -1
- package/dest/native/merkle_trees_facade.js +62 -11
- package/dest/native/message.d.ts +72 -51
- package/dest/native/message.d.ts.map +1 -1
- package/dest/native/message.js +61 -61
- package/dest/native/native_world_state.d.ts +28 -20
- package/dest/native/native_world_state.d.ts.map +1 -1
- package/dest/native/native_world_state.js +97 -36
- package/dest/native/native_world_state_instance.d.ts +20 -4
- package/dest/native/native_world_state_instance.d.ts.map +1 -1
- package/dest/native/native_world_state_instance.js +42 -3
- package/dest/native/world_state_ops_queue.d.ts +1 -1
- package/dest/native/world_state_ops_queue.d.ts.map +1 -1
- package/dest/native/world_state_ops_queue.js +1 -1
- package/dest/synchronizer/config.d.ts +12 -2
- package/dest/synchronizer/config.d.ts.map +1 -1
- package/dest/synchronizer/config.js +26 -1
- package/dest/synchronizer/errors.d.ts +4 -0
- package/dest/synchronizer/errors.d.ts.map +1 -0
- package/dest/synchronizer/errors.js +5 -0
- package/dest/synchronizer/factory.d.ts +9 -2
- package/dest/synchronizer/factory.d.ts.map +1 -1
- package/dest/synchronizer/factory.js +9 -4
- package/dest/synchronizer/index.d.ts +1 -1
- package/dest/synchronizer/server_world_state_synchronizer.d.ts +20 -29
- package/dest/synchronizer/server_world_state_synchronizer.d.ts.map +1 -1
- package/dest/synchronizer/server_world_state_synchronizer.js +94 -70
- package/dest/test/index.d.ts +1 -1
- package/dest/test/utils.d.ts +16 -9
- package/dest/test/utils.d.ts.map +1 -1
- package/dest/test/utils.js +56 -49
- package/dest/testing.d.ts +3 -3
- package/dest/testing.d.ts.map +1 -1
- package/dest/testing.js +7 -11
- package/dest/world-state-db/index.d.ts +1 -1
- package/dest/world-state-db/merkle_tree_db.d.ts +12 -9
- package/dest/world-state-db/merkle_tree_db.d.ts.map +1 -1
- package/package.json +24 -24
- package/src/instrumentation/instrumentation.ts +22 -10
- package/src/native/bench_metrics.ts +91 -0
- package/src/native/merkle_trees_facade.ts +73 -17
- package/src/native/message.ts +92 -73
- package/src/native/native_world_state.ts +118 -50
- package/src/native/native_world_state_instance.ts +59 -8
- package/src/native/world_state_ops_queue.ts +1 -1
- package/src/synchronizer/config.ts +47 -2
- package/src/synchronizer/errors.ts +5 -0
- package/src/synchronizer/factory.ts +31 -8
- package/src/synchronizer/server_world_state_synchronizer.ts +132 -93
- package/src/test/utils.ts +94 -84
- package/src/testing.ts +4 -8
- package/src/world-state-db/merkle_tree_db.ts +12 -8
package/dest/index.d.ts
CHANGED
|
@@ -2,4 +2,4 @@ export * from './synchronizer/index.js';
|
|
|
2
2
|
export * from './world-state-db/index.js';
|
|
3
3
|
export * from './synchronizer/config.js';
|
|
4
4
|
export * from './native/index.js';
|
|
5
|
-
//# sourceMappingURL=
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLG1CQUFtQixDQUFDIn0=
|
|
@@ -1,22 +1,24 @@
|
|
|
1
|
+
import { type Logger } from '@aztec/foundation/log';
|
|
1
2
|
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
2
3
|
import { WorldStateMessageType, type WorldStateStatusFull } from '../native/message.js';
|
|
3
4
|
export declare class WorldStateInstrumentation {
|
|
4
5
|
readonly telemetry: TelemetryClient;
|
|
5
6
|
private log;
|
|
6
7
|
private dbMapSize;
|
|
8
|
+
private dbPhysicalSize;
|
|
7
9
|
private treeSize;
|
|
8
|
-
private
|
|
9
|
-
private
|
|
10
|
+
private unfinalizedHeight;
|
|
11
|
+
private finalizedHeight;
|
|
10
12
|
private oldestBlock;
|
|
11
13
|
private dbNumItems;
|
|
12
14
|
private dbUsedSize;
|
|
13
15
|
private requestHistogram;
|
|
14
16
|
private criticalErrors;
|
|
15
|
-
constructor(telemetry: TelemetryClient, log?:
|
|
17
|
+
constructor(telemetry: TelemetryClient, log?: Logger);
|
|
16
18
|
private updateTreeStats;
|
|
17
19
|
private updateTreeDBStats;
|
|
18
20
|
updateWorldStateMetrics(worldStateStatus: WorldStateStatusFull): void;
|
|
19
21
|
recordRoundTrip(timeUs: number, request: WorldStateMessageType): void;
|
|
20
22
|
incCriticalErrors(errorType: 'synch_pending_block' | 'finalize_block' | 'prune_pending_block' | 'prune_historical_block'): void;
|
|
21
23
|
}
|
|
22
|
-
//# sourceMappingURL=
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1bWVudGF0aW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5zdHJ1bWVudGF0aW9uL2luc3RydW1lbnRhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFFbEUsT0FBTyxFQUtMLEtBQUssZUFBZSxFQUdyQixNQUFNLHlCQUF5QixDQUFDO0FBRWpDLE9BQU8sRUFJTCxxQkFBcUIsRUFDckIsS0FBSyxvQkFBb0IsRUFDMUIsTUFBTSxzQkFBc0IsQ0FBQztBQWE5QixxQkFBYSx5QkFBeUI7YUFhbEIsU0FBUyxFQUFFLGVBQWU7SUFDMUMsT0FBTyxDQUFDLEdBQUc7SUFiYixPQUFPLENBQUMsU0FBUyxDQUFRO0lBQ3pCLE9BQU8sQ0FBQyxjQUFjLENBQVE7SUFDOUIsT0FBTyxDQUFDLFFBQVEsQ0FBUTtJQUN4QixPQUFPLENBQUMsaUJBQWlCLENBQVE7SUFDakMsT0FBTyxDQUFDLGVBQWUsQ0FBUTtJQUMvQixPQUFPLENBQUMsV0FBVyxDQUFRO0lBQzNCLE9BQU8sQ0FBQyxVQUFVLENBQVE7SUFDMUIsT0FBTyxDQUFDLFVBQVUsQ0FBUTtJQUMxQixPQUFPLENBQUMsZ0JBQWdCLENBQVk7SUFDcEMsT0FBTyxDQUFDLGNBQWMsQ0FBZ0I7SUFFdEMsWUFDa0IsU0FBUyxFQUFFLGVBQWUsRUFDbEMsR0FBRyxHQUFFLE1BQW9ELEVBcURsRTtJQUVELE9BQU8sQ0FBQyxlQUFlO0lBMkJ2QixPQUFPLENBQUMsaUJBQWlCO0lBV2xCLHVCQUF1QixDQUFDLGdCQUFnQixFQUFFLG9CQUFvQixRQThCcEU7SUFFTSxlQUFlLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUscUJBQXFCLFFBTXBFO0lBRU0saUJBQWlCLENBQ3RCLFNBQVMsRUFBRSxxQkFBcUIsR0FBRyxnQkFBZ0IsR0FBRyxxQkFBcUIsR0FBRyx3QkFBd0IsUUFLdkc7Q0FDRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../src/instrumentation/instrumentation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../src/instrumentation/instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAElE,OAAO,EAKL,KAAK,eAAe,EAGrB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAIL,qBAAqB,EACrB,KAAK,oBAAoB,EAC1B,MAAM,sBAAsB,CAAC;AAa9B,qBAAa,yBAAyB;aAalB,SAAS,EAAE,eAAe;IAC1C,OAAO,CAAC,GAAG;IAbb,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,iBAAiB,CAAQ;IACjC,OAAO,CAAC,eAAe,CAAQ;IAC/B,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,gBAAgB,CAAY;IACpC,OAAO,CAAC,cAAc,CAAgB;IAEtC,YACkB,SAAS,EAAE,eAAe,EAClC,GAAG,GAAE,MAAoD,EAqDlE;IAED,OAAO,CAAC,eAAe;IA2BvB,OAAO,CAAC,iBAAiB;IAWlB,uBAAuB,CAAC,gBAAgB,EAAE,oBAAoB,QA8BpE;IAEM,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB,QAMpE;IAEM,iBAAiB,CACtB,SAAS,EAAE,qBAAqB,GAAG,gBAAgB,GAAG,qBAAqB,GAAG,wBAAwB,QAKvG;CACF"}
|
|
@@ -13,9 +13,10 @@ export class WorldStateInstrumentation {
|
|
|
13
13
|
telemetry;
|
|
14
14
|
log;
|
|
15
15
|
dbMapSize;
|
|
16
|
+
dbPhysicalSize;
|
|
16
17
|
treeSize;
|
|
17
|
-
|
|
18
|
-
|
|
18
|
+
unfinalizedHeight;
|
|
19
|
+
finalizedHeight;
|
|
19
20
|
oldestBlock;
|
|
20
21
|
dbNumItems;
|
|
21
22
|
dbUsedSize;
|
|
@@ -29,16 +30,20 @@ export class WorldStateInstrumentation {
|
|
|
29
30
|
description: `The current configured map size for each merkle tree`,
|
|
30
31
|
valueType: ValueType.INT
|
|
31
32
|
});
|
|
33
|
+
this.dbPhysicalSize = meter.createGauge(Metrics.WORLD_STATE_DB_PHYSICAL_SIZE, {
|
|
34
|
+
description: `The current physical disk space used for each database`,
|
|
35
|
+
valueType: ValueType.INT
|
|
36
|
+
});
|
|
32
37
|
this.treeSize = meter.createGauge(Metrics.WORLD_STATE_TREE_SIZE, {
|
|
33
38
|
description: `The current number of leaves in each merkle tree`,
|
|
34
39
|
valueType: ValueType.INT
|
|
35
40
|
});
|
|
36
|
-
this.
|
|
37
|
-
description: `The
|
|
41
|
+
this.unfinalizedHeight = meter.createGauge(Metrics.WORLD_STATE_UNFINALIZED_HEIGHT, {
|
|
42
|
+
description: `The unfinalized block height of each merkle tree`,
|
|
38
43
|
valueType: ValueType.INT
|
|
39
44
|
});
|
|
40
|
-
this.
|
|
41
|
-
description: `The
|
|
45
|
+
this.finalizedHeight = meter.createGauge(Metrics.WORLD_STATE_FINALIZED_HEIGHT, {
|
|
46
|
+
description: `The finalized block height of each merkle tree`,
|
|
42
47
|
valueType: ValueType.INT
|
|
43
48
|
});
|
|
44
49
|
this.oldestBlock = meter.createGauge(Metrics.WORLD_STATE_OLDEST_BLOCK, {
|
|
@@ -67,13 +72,16 @@ export class WorldStateInstrumentation {
|
|
|
67
72
|
this.dbMapSize.record(Number(treeDbStats.mapSize), {
|
|
68
73
|
[Attributes.MERKLE_TREE_NAME]: MerkleTreeId[tree]
|
|
69
74
|
});
|
|
75
|
+
this.dbPhysicalSize.record(Number(treeDbStats.physicalFileSize), {
|
|
76
|
+
[Attributes.MERKLE_TREE_NAME]: MerkleTreeId[tree]
|
|
77
|
+
});
|
|
70
78
|
this.treeSize.record(Number(treeMeta.size), {
|
|
71
79
|
[Attributes.MERKLE_TREE_NAME]: MerkleTreeId[tree]
|
|
72
80
|
});
|
|
73
|
-
this.
|
|
81
|
+
this.unfinalizedHeight.record(Number(treeMeta.unfinalizedBlockHeight), {
|
|
74
82
|
[Attributes.MERKLE_TREE_NAME]: MerkleTreeId[tree]
|
|
75
83
|
});
|
|
76
|
-
this.
|
|
84
|
+
this.finalizedHeight.record(Number(treeMeta.finalizedBlockHeight), {
|
|
77
85
|
[Attributes.MERKLE_TREE_NAME]: MerkleTreeId[tree]
|
|
78
86
|
});
|
|
79
87
|
this.oldestBlock.record(Number(treeMeta.oldestHistoricBlock), {
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
2
|
+
export declare enum InsertionType {
|
|
3
|
+
BATCH = 0,
|
|
4
|
+
SEQUENTIAL = 1
|
|
5
|
+
}
|
|
6
|
+
export declare enum DataRetrievalType {
|
|
7
|
+
SIBLING_PATH = 0,
|
|
8
|
+
LEAF_PREIMAGE = 1,
|
|
9
|
+
LEAF_VALUE = 2,
|
|
10
|
+
LEAF_INDICES = 3,
|
|
11
|
+
LOW_LEAF = 4
|
|
12
|
+
}
|
|
13
|
+
export declare class NativeBenchMetics {
|
|
14
|
+
private blockSyncMetrics;
|
|
15
|
+
private insertionMetrics;
|
|
16
|
+
private dataRetrievalMetrics;
|
|
17
|
+
toPrettyString(): string;
|
|
18
|
+
addBlockSyncMetric(numTxs: number, numLeaves: number, value: number): void;
|
|
19
|
+
addInsertionMetric(treeId: MerkleTreeId, insertionType: InsertionType, numLeaves: number, value: number): void;
|
|
20
|
+
addDataRetrievalMetric(retrievalType: DataRetrievalType, value: number): void;
|
|
21
|
+
toGithubActionBenchmarkJSON(indent?: number): string;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVuY2hfbWV0cmljcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL25hdGl2ZS9iZW5jaF9tZXRyaWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQVFuRCxvQkFBWSxhQUFhO0lBQ3ZCLEtBQUssSUFBQTtJQUNMLFVBQVUsSUFBQTtDQUNYO0FBU0Qsb0JBQVksaUJBQWlCO0lBQzNCLFlBQVksSUFBQTtJQUNaLGFBQWEsSUFBQTtJQUNiLFVBQVUsSUFBQTtJQUNWLFlBQVksSUFBQTtJQUNaLFFBQVEsSUFBQTtDQUNUO0FBT0QscUJBQWEsaUJBQWlCO0lBQzVCLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBMEI7SUFDbEQsT0FBTyxDQUFDLGdCQUFnQixDQUEwQjtJQUNsRCxPQUFPLENBQUMsb0JBQW9CLENBQThCO0lBRW5ELGNBQWMsV0FlcEI7SUFFTSxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sUUFFekU7SUFDTSxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxRQUU3RztJQUNNLHNCQUFzQixDQUFDLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsTUFBTSxRQUU1RTtJQUVNLDJCQUEyQixDQUFDLE1BQU0sU0FBSSxVQXdCNUM7Q0FDRiJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bench_metrics.d.ts","sourceRoot":"","sources":["../../src/native/bench_metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAQnD,oBAAY,aAAa;IACvB,KAAK,IAAA;IACL,UAAU,IAAA;CACX;AASD,oBAAY,iBAAiB;IAC3B,YAAY,IAAA;IACZ,aAAa,IAAA;IACb,UAAU,IAAA;IACV,YAAY,IAAA;IACZ,QAAQ,IAAA;CACT;AAOD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,gBAAgB,CAA0B;IAClD,OAAO,CAAC,gBAAgB,CAA0B;IAClD,OAAO,CAAC,oBAAoB,CAA8B;IAEnD,cAAc,WAepB;IAEM,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAEzE;IACM,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAE7G;IACM,sBAAsB,CAAC,aAAa,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,QAE5E;IAEM,2BAA2B,CAAC,MAAM,SAAI,UAwB5C;CACF"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
2
|
+
export var InsertionType = /*#__PURE__*/ function(InsertionType) {
|
|
3
|
+
InsertionType[InsertionType["BATCH"] = 0] = "BATCH";
|
|
4
|
+
InsertionType[InsertionType["SEQUENTIAL"] = 1] = "SEQUENTIAL";
|
|
5
|
+
return InsertionType;
|
|
6
|
+
}({});
|
|
7
|
+
export var DataRetrievalType = /*#__PURE__*/ function(DataRetrievalType) {
|
|
8
|
+
DataRetrievalType[DataRetrievalType["SIBLING_PATH"] = 0] = "SIBLING_PATH";
|
|
9
|
+
DataRetrievalType[DataRetrievalType["LEAF_PREIMAGE"] = 1] = "LEAF_PREIMAGE";
|
|
10
|
+
DataRetrievalType[DataRetrievalType["LEAF_VALUE"] = 2] = "LEAF_VALUE";
|
|
11
|
+
DataRetrievalType[DataRetrievalType["LEAF_INDICES"] = 3] = "LEAF_INDICES";
|
|
12
|
+
DataRetrievalType[DataRetrievalType["LOW_LEAF"] = 4] = "LOW_LEAF";
|
|
13
|
+
return DataRetrievalType;
|
|
14
|
+
}({});
|
|
15
|
+
export class NativeBenchMetics {
|
|
16
|
+
blockSyncMetrics = [];
|
|
17
|
+
insertionMetrics = [];
|
|
18
|
+
dataRetrievalMetrics = [];
|
|
19
|
+
toPrettyString() {
|
|
20
|
+
let pretty = '';
|
|
21
|
+
pretty += `Block sync metrics:\n`;
|
|
22
|
+
for (const metric of this.blockSyncMetrics){
|
|
23
|
+
pretty += ` ${metric.numTxs} txs, ${metric.numLeaves} leaves: ${metric.value} ms\n`;
|
|
24
|
+
}
|
|
25
|
+
pretty += `Insertion metrics:\n`;
|
|
26
|
+
for (const metric of this.insertionMetrics){
|
|
27
|
+
pretty += ` ${MerkleTreeId[metric.treeType]}: ${InsertionType[metric.insertionType]} (${metric.numLeaves} leaves): ${metric.value} ms\n`;
|
|
28
|
+
}
|
|
29
|
+
pretty += `Data retrieval metrics:\n`;
|
|
30
|
+
for (const metric of this.dataRetrievalMetrics){
|
|
31
|
+
pretty += ` ${DataRetrievalType[metric.retrievalType]}: ${metric.value} us\n`;
|
|
32
|
+
}
|
|
33
|
+
return pretty;
|
|
34
|
+
}
|
|
35
|
+
addBlockSyncMetric(numTxs, numLeaves, value) {
|
|
36
|
+
this.blockSyncMetrics.push({
|
|
37
|
+
numTxs,
|
|
38
|
+
numLeaves,
|
|
39
|
+
value
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
addInsertionMetric(treeId, insertionType, numLeaves, value) {
|
|
43
|
+
this.insertionMetrics.push({
|
|
44
|
+
treeType: treeId,
|
|
45
|
+
insertionType,
|
|
46
|
+
numLeaves,
|
|
47
|
+
value
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
addDataRetrievalMetric(retrievalType, value) {
|
|
51
|
+
this.dataRetrievalMetrics.push({
|
|
52
|
+
retrievalType,
|
|
53
|
+
value: value
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
toGithubActionBenchmarkJSON(indent = 2) {
|
|
57
|
+
const data = [];
|
|
58
|
+
for (const blockSync of this.blockSyncMetrics){
|
|
59
|
+
data.push({
|
|
60
|
+
name: `Block Sync/${blockSync.numTxs} txs/${blockSync.numLeaves} leaves per tx`,
|
|
61
|
+
value: blockSync.value,
|
|
62
|
+
unit: 'ms'
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
for (const insertion of this.insertionMetrics){
|
|
66
|
+
data.push({
|
|
67
|
+
name: `Tree Insertion/${MerkleTreeId[insertion.treeType]}/${InsertionType[insertion.insertionType]}/${insertion.numLeaves} leaves`,
|
|
68
|
+
value: insertion.value,
|
|
69
|
+
unit: 'ms'
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
for (const retrieval of this.dataRetrievalMetrics){
|
|
73
|
+
data.push({
|
|
74
|
+
name: `Data Retrieval/${DataRetrievalType[retrieval.retrievalType]}`,
|
|
75
|
+
value: retrieval.value,
|
|
76
|
+
unit: 'us'
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
return JSON.stringify(data, null, indent);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
@@ -7,4 +7,4 @@ export declare class ForkCheckpoint {
|
|
|
7
7
|
commit(): Promise<void>;
|
|
8
8
|
revert(): Promise<void>;
|
|
9
9
|
}
|
|
10
|
-
//# sourceMappingURL=
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ya19jaGVja3BvaW50LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbmF0aXZlL2ZvcmtfY2hlY2twb2ludC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXRGLHFCQUFhLGNBQWM7SUFHTCxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUk7SUFGekMsT0FBTyxDQUFDLFNBQVMsQ0FBUztJQUUxQixPQUFPLGVBQXNFO0lBRTdFLE9BQWEsR0FBRyxDQUFDLElBQUksRUFBRSw4QkFBOEIsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLENBRzlFO0lBRUssTUFBTSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FPNUI7SUFFSyxNQUFNLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQU81QjtDQUNGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fork_checkpoint.d.ts","sourceRoot":"","sources":["../../src/native/fork_checkpoint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,iCAAiC,CAAC;AAEtF,qBAAa,cAAc;IAGL,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFzC,OAAO,CAAC,SAAS,CAAS;IAE1B,OAAO;
|
|
1
|
+
{"version":3,"file":"fork_checkpoint.d.ts","sourceRoot":"","sources":["../../src/native/fork_checkpoint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,iCAAiC,CAAC;AAEtF,qBAAa,cAAc;IAGL,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFzC,OAAO,CAAC,SAAS,CAAS;IAE1B,OAAO,eAAsE;IAE7E,OAAa,GAAG,CAAC,IAAI,EAAE,8BAA8B,GAAG,OAAO,CAAC,cAAc,CAAC,CAG9E;IAEK,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAO5B;IAEK,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAO5B;CACF"}
|
package/dest/native/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export * from './native_world_state.js';
|
|
2
2
|
export * from './fork_checkpoint.js';
|
|
3
|
-
//# sourceMappingURL=
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9uYXRpdmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHNCQUFzQixDQUFDIn0=
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import { Fr } from '@aztec/foundation/fields';
|
|
1
|
+
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
2
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
3
|
import { type IndexedTreeLeafPreimage, SiblingPath } from '@aztec/foundation/trees';
|
|
5
4
|
import type { BatchInsertionResult, IndexedTreeId, MerkleTreeLeafType, MerkleTreeReadOperations, MerkleTreeWriteOperations, SequentialInsertionResult, TreeInfo } from '@aztec/stdlib/interfaces/server';
|
|
6
5
|
import { MerkleTreeId, NullifierLeaf, PublicDataTreeLeaf } from '@aztec/stdlib/trees';
|
|
7
6
|
import { type BlockHeader, StateReference } from '@aztec/stdlib/tx';
|
|
8
|
-
import { type
|
|
7
|
+
import { type WorldStateRevision, WorldStateRevisionWithHandle } from '@aztec/stdlib/world-state';
|
|
8
|
+
import { type SerializedLeafValue } from './message.js';
|
|
9
9
|
import type { NativeWorldStateInstance } from './native_world_state_instance.js';
|
|
10
10
|
export declare class MerkleTreesFacade implements MerkleTreeReadOperations {
|
|
11
11
|
protected readonly instance: NativeWorldStateInstance;
|
|
@@ -13,7 +13,12 @@ export declare class MerkleTreesFacade implements MerkleTreeReadOperations {
|
|
|
13
13
|
protected readonly revision: WorldStateRevision;
|
|
14
14
|
constructor(instance: NativeWorldStateInstance, initialHeader: BlockHeader, revision: WorldStateRevision);
|
|
15
15
|
getInitialHeader(): BlockHeader;
|
|
16
|
+
getRevision(): WorldStateRevisionWithHandle;
|
|
16
17
|
findLeafIndices(treeId: MerkleTreeId, values: MerkleTreeLeafType<MerkleTreeId>[]): Promise<(bigint | undefined)[]>;
|
|
18
|
+
findSiblingPaths<N extends number>(treeId: MerkleTreeId, values: MerkleTreeLeafType<MerkleTreeId>[]): Promise<({
|
|
19
|
+
path: SiblingPath<N>;
|
|
20
|
+
index: bigint;
|
|
21
|
+
} | undefined)[]>;
|
|
17
22
|
findLeafIndicesAfter(treeId: MerkleTreeId, leaves: MerkleTreeLeafType<MerkleTreeId>[], startIndex: bigint): Promise<(bigint | undefined)[]>;
|
|
18
23
|
getLeafPreimage(treeId: IndexedTreeId, leafIndex: bigint): Promise<IndexedTreeLeafPreimage | undefined>;
|
|
19
24
|
getLeafValue<ID extends MerkleTreeId>(treeId: ID, leafIndex: bigint): Promise<MerkleTreeLeafType<ID> | undefined>;
|
|
@@ -25,18 +30,25 @@ export declare class MerkleTreesFacade implements MerkleTreeReadOperations {
|
|
|
25
30
|
getStateReference(): Promise<StateReference>;
|
|
26
31
|
getInitialStateReference(): Promise<StateReference>;
|
|
27
32
|
getTreeInfo(treeId: MerkleTreeId): Promise<TreeInfo>;
|
|
28
|
-
getBlockNumbersForLeafIndices<ID extends MerkleTreeId>(treeId: ID, leafIndices: bigint[]): Promise<(
|
|
33
|
+
getBlockNumbersForLeafIndices<ID extends MerkleTreeId>(treeId: ID, leafIndices: bigint[]): Promise<(BlockNumber | undefined)[]>;
|
|
29
34
|
}
|
|
30
35
|
export declare class MerkleTreesForkFacade extends MerkleTreesFacade implements MerkleTreeWriteOperations {
|
|
31
|
-
|
|
36
|
+
private opts;
|
|
37
|
+
private log;
|
|
38
|
+
constructor(instance: NativeWorldStateInstance, initialHeader: BlockHeader, revision: WorldStateRevision, opts: {
|
|
39
|
+
closeDelayMs?: number;
|
|
40
|
+
});
|
|
32
41
|
updateArchive(header: BlockHeader): Promise<void>;
|
|
33
42
|
appendLeaves<ID extends MerkleTreeId>(treeId: ID, leaves: MerkleTreeLeafType<ID>[]): Promise<void>;
|
|
34
43
|
batchInsert<TreeHeight extends number, SubtreeSiblingPathHeight extends number, ID extends IndexedTreeId>(treeId: ID, rawLeaves: Buffer[], subtreeHeight: number): Promise<BatchInsertionResult<TreeHeight, SubtreeSiblingPathHeight>>;
|
|
35
44
|
sequentialInsert<TreeHeight extends number, ID extends IndexedTreeId>(treeId: ID, rawLeaves: Buffer[]): Promise<SequentialInsertionResult<TreeHeight>>;
|
|
36
45
|
close(): Promise<void>;
|
|
46
|
+
[Symbol.dispose](): Promise<void>;
|
|
37
47
|
createCheckpoint(): Promise<void>;
|
|
38
48
|
commitCheckpoint(): Promise<void>;
|
|
39
49
|
revertCheckpoint(): Promise<void>;
|
|
50
|
+
commitAllCheckpoints(): Promise<void>;
|
|
51
|
+
revertAllCheckpoints(): Promise<void>;
|
|
40
52
|
}
|
|
41
53
|
export declare function serializeLeaf(leaf: Fr | NullifierLeaf | PublicDataTreeLeaf): SerializedLeafValue;
|
|
42
|
-
//# sourceMappingURL=
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVya2xlX3RyZWVzX2ZhY2FkZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL25hdGl2ZS9tZXJrbGVfdHJlZXNfZmFjYWRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFJcEQsT0FBTyxFQUFFLEtBQUssdUJBQXVCLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEYsT0FBTyxLQUFLLEVBQ1Ysb0JBQW9CLEVBQ3BCLGFBQWEsRUFDYixrQkFBa0IsRUFDbEIsd0JBQXdCLEVBQ3hCLHlCQUF5QixFQUN6Qix5QkFBeUIsRUFDekIsUUFBUSxFQUNULE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxFQUNMLFlBQVksRUFDWixhQUFhLEVBRWIsa0JBQWtCLEVBRW5CLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLEtBQUssV0FBVyxFQUF5QixjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMzRixPQUFPLEVBQUUsS0FBSyxrQkFBa0IsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBSWxHLE9BQU8sRUFFTCxLQUFLLG1CQUFtQixFQUl6QixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRWpGLHFCQUFhLGlCQUFrQixZQUFXLHdCQUF3QjtJQUU5RCxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSx3QkFBd0I7SUFDckQsU0FBUyxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsV0FBVztJQUM3QyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxrQkFBa0I7SUFIakQsWUFDcUIsUUFBUSxFQUFFLHdCQUF3QixFQUNsQyxhQUFhLEVBQUUsV0FB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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":"
|
|
1
|
+
{"version":3,"file":"merkle_trees_facade.d.ts","sourceRoot":"","sources":["../../src/native/merkle_trees_facade.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
2
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
|
+
import { createLogger } from '@aztec/foundation/log';
|
|
2
4
|
import { serializeToBuffer } from '@aztec/foundation/serialize';
|
|
5
|
+
import { sleep } from '@aztec/foundation/sleep';
|
|
3
6
|
import { SiblingPath } from '@aztec/foundation/trees';
|
|
4
7
|
import { MerkleTreeId, NullifierLeaf, NullifierLeafPreimage, PublicDataTreeLeaf, PublicDataTreeLeafPreimage } from '@aztec/stdlib/trees';
|
|
5
8
|
import { PartialStateReference, StateReference } from '@aztec/stdlib/tx';
|
|
9
|
+
import { WorldStateRevisionWithHandle } from '@aztec/stdlib/world-state';
|
|
6
10
|
import assert from 'assert';
|
|
7
11
|
import { WorldStateMessageType, blockStateReference, treeStateReferenceToSnapshot } from './message.js';
|
|
8
12
|
export class MerkleTreesFacade {
|
|
@@ -17,9 +21,28 @@ export class MerkleTreesFacade {
|
|
|
17
21
|
getInitialHeader() {
|
|
18
22
|
return this.initialHeader;
|
|
19
23
|
}
|
|
24
|
+
getRevision() {
|
|
25
|
+
return WorldStateRevisionWithHandle.fromWorldStateRevision(this.revision, this.instance.getHandle());
|
|
26
|
+
}
|
|
20
27
|
findLeafIndices(treeId, values) {
|
|
21
28
|
return this.findLeafIndicesAfter(treeId, values, 0n);
|
|
22
29
|
}
|
|
30
|
+
async findSiblingPaths(treeId, values) {
|
|
31
|
+
const response = await this.instance.call(WorldStateMessageType.FIND_SIBLING_PATHS, {
|
|
32
|
+
leaves: values.map((leaf)=>serializeLeaf(hydrateLeaf(treeId, leaf))),
|
|
33
|
+
revision: this.revision,
|
|
34
|
+
treeId
|
|
35
|
+
});
|
|
36
|
+
return response.paths.map((path)=>{
|
|
37
|
+
if (!path) {
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
path: new SiblingPath(path.path.length, path.path),
|
|
42
|
+
index: BigInt(path.index)
|
|
43
|
+
};
|
|
44
|
+
});
|
|
45
|
+
}
|
|
23
46
|
async findLeafIndicesAfter(treeId, leaves, startIndex) {
|
|
24
47
|
const response = await this.instance.call(WorldStateMessageType.FIND_LEAF_INDICES, {
|
|
25
48
|
leaves: leaves.map((leaf)=>serializeLeaf(hydrateLeaf(treeId, leaf))),
|
|
@@ -108,14 +131,16 @@ export class MerkleTreesFacade {
|
|
|
108
131
|
revision: this.revision,
|
|
109
132
|
leafIndices
|
|
110
133
|
});
|
|
111
|
-
return response.blockNumbers.map((x)=>x === undefined || x === null ? undefined :
|
|
134
|
+
return response.blockNumbers.map((x)=>x === undefined || x === null ? undefined : BlockNumber(Number(x)));
|
|
112
135
|
}
|
|
113
136
|
}
|
|
114
137
|
export class MerkleTreesForkFacade extends MerkleTreesFacade {
|
|
115
|
-
|
|
138
|
+
opts;
|
|
139
|
+
log;
|
|
140
|
+
constructor(instance, initialHeader, revision, opts){
|
|
116
141
|
assert.notEqual(revision.forkId, 0, 'Fork ID must be set');
|
|
117
142
|
assert.equal(revision.includeUncommitted, true, 'Fork must include uncommitted data');
|
|
118
|
-
super(instance, initialHeader, revision);
|
|
143
|
+
super(instance, initialHeader, revision), this.opts = opts, this.log = createLogger('world-state:merkle-trees-fork-facade');
|
|
119
144
|
}
|
|
120
145
|
async updateArchive(header) {
|
|
121
146
|
await this.instance.call(WorldStateMessageType.UPDATE_ARCHIVE, {
|
|
@@ -176,6 +201,20 @@ export class MerkleTreesForkFacade extends MerkleTreesFacade {
|
|
|
176
201
|
forkId: this.revision.forkId
|
|
177
202
|
});
|
|
178
203
|
}
|
|
204
|
+
async [Symbol.dispose]() {
|
|
205
|
+
if (this.opts.closeDelayMs) {
|
|
206
|
+
void sleep(this.opts.closeDelayMs).then(()=>this.close()).catch((err)=>{
|
|
207
|
+
if (err && 'message' in err && err.message === 'Native instance is closed') {
|
|
208
|
+
return; // Ignore errors due to native instance being closed
|
|
209
|
+
}
|
|
210
|
+
this.log.warn('Error closing MerkleTreesForkFacade after delay', {
|
|
211
|
+
err
|
|
212
|
+
});
|
|
213
|
+
});
|
|
214
|
+
} else {
|
|
215
|
+
await this.close();
|
|
216
|
+
}
|
|
217
|
+
}
|
|
179
218
|
async createCheckpoint() {
|
|
180
219
|
assert.notEqual(this.revision.forkId, 0, 'Fork ID must be set');
|
|
181
220
|
await this.instance.call(WorldStateMessageType.CREATE_CHECKPOINT, {
|
|
@@ -194,6 +233,18 @@ export class MerkleTreesForkFacade extends MerkleTreesFacade {
|
|
|
194
233
|
forkId: this.revision.forkId
|
|
195
234
|
});
|
|
196
235
|
}
|
|
236
|
+
async commitAllCheckpoints() {
|
|
237
|
+
assert.notEqual(this.revision.forkId, 0, 'Fork ID must be set');
|
|
238
|
+
await this.instance.call(WorldStateMessageType.COMMIT_ALL_CHECKPOINTS, {
|
|
239
|
+
forkId: this.revision.forkId
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
async revertAllCheckpoints() {
|
|
243
|
+
assert.notEqual(this.revision.forkId, 0, 'Fork ID must be set');
|
|
244
|
+
await this.instance.call(WorldStateMessageType.REVERT_ALL_CHECKPOINTS, {
|
|
245
|
+
forkId: this.revision.forkId
|
|
246
|
+
});
|
|
247
|
+
}
|
|
197
248
|
}
|
|
198
249
|
function hydrateLeaf(treeId, leaf) {
|
|
199
250
|
if (leaf instanceof Fr) {
|
|
@@ -211,7 +262,7 @@ export function serializeLeaf(leaf) {
|
|
|
211
262
|
return leaf.toBuffer();
|
|
212
263
|
} else if (leaf instanceof NullifierLeaf) {
|
|
213
264
|
return {
|
|
214
|
-
|
|
265
|
+
nullifier: leaf.nullifier.toBuffer()
|
|
215
266
|
};
|
|
216
267
|
} else {
|
|
217
268
|
return {
|
|
@@ -226,14 +277,14 @@ function deserializeLeafValue(leaf) {
|
|
|
226
277
|
} else if ('slot' in leaf) {
|
|
227
278
|
return new PublicDataTreeLeaf(Fr.fromBuffer(leaf.slot), Fr.fromBuffer(leaf.value));
|
|
228
279
|
} else {
|
|
229
|
-
return new NullifierLeaf(Fr.fromBuffer(leaf.
|
|
280
|
+
return new NullifierLeaf(Fr.fromBuffer(leaf.nullifier));
|
|
230
281
|
}
|
|
231
282
|
}
|
|
232
|
-
function deserializeIndexedLeaf(
|
|
233
|
-
if ('slot' in leaf
|
|
234
|
-
return new PublicDataTreeLeafPreimage(Fr.fromBuffer(leaf.
|
|
235
|
-
} else if ('
|
|
236
|
-
return new NullifierLeafPreimage(Fr.fromBuffer(leaf.
|
|
283
|
+
function deserializeIndexedLeaf(leafPreimage) {
|
|
284
|
+
if ('slot' in leafPreimage.leaf) {
|
|
285
|
+
return new PublicDataTreeLeafPreimage(new PublicDataTreeLeaf(Fr.fromBuffer(leafPreimage.leaf.slot), Fr.fromBuffer(leafPreimage.leaf.value)), Fr.fromBuffer(leafPreimage.nextKey), BigInt(leafPreimage.nextIndex));
|
|
286
|
+
} else if ('nullifier' in leafPreimage.leaf) {
|
|
287
|
+
return new NullifierLeafPreimage(new NullifierLeaf(Fr.fromBuffer(leafPreimage.leaf.nullifier)), Fr.fromBuffer(leafPreimage.nextKey), BigInt(leafPreimage.nextIndex));
|
|
237
288
|
} else {
|
|
238
289
|
throw new Error('Invalid leaf type');
|
|
239
290
|
}
|