@aztec/world-state 0.0.0-test.1 → 0.0.1-commit.023c3e5
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 +25 -41
- 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 +76 -14
- package/dest/native/message.d.ts +74 -52
- package/dest/native/message.d.ts.map +1 -1
- package/dest/native/message.js +61 -61
- package/dest/native/native_world_state.d.ts +27 -19
- package/dest/native/native_world_state.d.ts.map +1 -1
- package/dest/native/native_world_state.js +103 -41
- 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 -4
- package/dest/synchronizer/config.d.ts.map +1 -1
- package/dest/synchronizer/config.js +27 -7
- 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 +11 -3
- package/dest/synchronizer/factory.d.ts.map +1 -1
- package/dest/synchronizer/factory.js +13 -8
- package/dest/synchronizer/index.d.ts +1 -1
- package/dest/synchronizer/server_world_state_synchronizer.d.ts +21 -31
- package/dest/synchronizer/server_world_state_synchronizer.d.ts.map +1 -1
- package/dest/synchronizer/server_world_state_synchronizer.js +144 -92
- package/dest/test/index.d.ts +1 -1
- package/dest/test/utils.d.ts +12 -5
- package/dest/test/utils.d.ts.map +1 -1
- package/dest/test/utils.js +54 -47
- 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 +31 -43
- package/src/native/bench_metrics.ts +91 -0
- package/src/native/merkle_trees_facade.ts +83 -18
- package/src/native/message.ts +94 -74
- package/src/native/native_world_state.ts +132 -52
- package/src/native/native_world_state_instance.ts +62 -9
- package/src/native/world_state_ops_queue.ts +1 -1
- package/src/synchronizer/config.ts +48 -16
- package/src/synchronizer/errors.ts +5 -0
- package/src/synchronizer/factory.ts +38 -9
- package/src/synchronizer/server_world_state_synchronizer.ts +170 -117
- package/src/test/utils.ts +92 -82
- package/src/testing.ts +4 -8
- package/src/world-state-db/merkle_tree_db.ts +16 -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1bWVudGF0aW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5zdHJ1bWVudGF0aW9uL2luc3RydW1lbnRhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFFbEUsT0FBTyxFQUtMLEtBQUssZUFBZSxFQUdyQixNQUFNLHlCQUF5QixDQUFDO0FBRWpDLE9BQU8sRUFJTCxxQkFBcUIsRUFDckIsS0FBSyxvQkFBb0IsRUFDMUIsTUFBTSxzQkFBc0IsQ0FBQztBQWE5QixxQkFBYSx5QkFBeUI7YUFhbEIsU0FBUyxFQUFFLGVBQWU7SUFDMUMsT0FBTyxDQUFDLEdBQUc7SUFiYixPQUFPLENBQUMsU0FBUyxDQUFRO0lBQ3pCLE9BQU8sQ0FBQyxjQUFjLENBQVE7SUFDOUIsT0FBTyxDQUFDLFFBQVEsQ0FBUTtJQUN4QixPQUFPLENBQUMsaUJBQWlCLENBQVE7SUFDakMsT0FBTyxDQUFDLGVBQWUsQ0FBUTtJQUMvQixPQUFPLENBQUMsV0FBVyxDQUFRO0lBQzNCLE9BQU8sQ0FBQyxVQUFVLENBQVE7SUFDMUIsT0FBTyxDQUFDLFVBQVUsQ0FBUTtJQUMxQixPQUFPLENBQUMsZ0JBQWdCLENBQVk7SUFDcEMsT0FBTyxDQUFDLGNBQWMsQ0FBZ0I7SUFFdEMsWUFDa0IsU0FBUyxFQUFFLGVBQWUsRUFDbEMsR0FBRyxHQUFFLE1BQW9ELEVBNkJsRTtJQUVELE9BQU8sQ0FBQyxlQUFlO0lBMkJ2QixPQUFPLENBQUMsaUJBQWlCO0lBV2xCLHVCQUF1QixDQUFDLGdCQUFnQixFQUFFLG9CQUFvQixRQThCcEU7SUFFTSxlQUFlLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUscUJBQXFCLFFBTXBFO0lBRU0saUJBQWlCLENBQ3RCLFNBQVMsRUFBRSxxQkFBcUIsR0FBRyxnQkFBZ0IsR0FBRyxxQkFBcUIsR0FBRyx3QkFBd0IsUUFLdkc7Q0FDRiJ9
|
|
@@ -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,EA6BlE;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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createLogger } from '@aztec/foundation/log';
|
|
2
2
|
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
3
|
-
import { Attributes, Metrics,
|
|
3
|
+
import { Attributes, Metrics, createUpDownCounterWithDefault } from '@aztec/telemetry-client';
|
|
4
4
|
import { WorldStateMessageType } from '../native/message.js';
|
|
5
5
|
const durationTrackDenylist = new Set([
|
|
6
6
|
WorldStateMessageType.GET_INITIAL_STATE_REFERENCE,
|
|
@@ -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;
|
|
@@ -25,55 +26,38 @@ export class WorldStateInstrumentation {
|
|
|
25
26
|
this.telemetry = telemetry;
|
|
26
27
|
this.log = log;
|
|
27
28
|
const meter = telemetry.getMeter('World State');
|
|
28
|
-
this.dbMapSize = meter.createGauge(Metrics.WORLD_STATE_DB_MAP_SIZE
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
this.
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
this.
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
this.oldestBlock = meter.createGauge(Metrics.WORLD_STATE_OLDEST_BLOCK, {
|
|
45
|
-
description: `The oldest historical block of each merkle tree`,
|
|
46
|
-
valueType: ValueType.INT
|
|
47
|
-
});
|
|
48
|
-
this.dbUsedSize = meter.createGauge(Metrics.WORLD_STATE_DB_USED_SIZE, {
|
|
49
|
-
description: `The current used database size for each db of each merkle tree`,
|
|
50
|
-
valueType: ValueType.INT
|
|
51
|
-
});
|
|
52
|
-
this.dbNumItems = meter.createGauge(Metrics.WORLD_STATE_DB_NUM_ITEMS, {
|
|
53
|
-
description: `The current number of items in each database of each merkle tree`,
|
|
54
|
-
valueType: ValueType.INT
|
|
55
|
-
});
|
|
56
|
-
this.requestHistogram = meter.createHistogram(Metrics.WORLD_STATE_REQUEST_TIME, {
|
|
57
|
-
description: 'The round trip time of world state requests',
|
|
58
|
-
unit: 'us',
|
|
59
|
-
valueType: ValueType.INT
|
|
60
|
-
});
|
|
61
|
-
this.criticalErrors = meter.createUpDownCounter(Metrics.WORLD_STATE_CRITICAL_ERROR_COUNT, {
|
|
62
|
-
description: 'The number of critical errors in the world state',
|
|
63
|
-
valueType: ValueType.INT
|
|
29
|
+
this.dbMapSize = meter.createGauge(Metrics.WORLD_STATE_DB_MAP_SIZE);
|
|
30
|
+
this.dbPhysicalSize = meter.createGauge(Metrics.WORLD_STATE_DB_PHYSICAL_SIZE);
|
|
31
|
+
this.treeSize = meter.createGauge(Metrics.WORLD_STATE_TREE_SIZE);
|
|
32
|
+
this.unfinalizedHeight = meter.createGauge(Metrics.WORLD_STATE_UNFINALIZED_HEIGHT);
|
|
33
|
+
this.finalizedHeight = meter.createGauge(Metrics.WORLD_STATE_FINALIZED_HEIGHT);
|
|
34
|
+
this.oldestBlock = meter.createGauge(Metrics.WORLD_STATE_OLDEST_BLOCK);
|
|
35
|
+
this.dbUsedSize = meter.createGauge(Metrics.WORLD_STATE_DB_USED_SIZE);
|
|
36
|
+
this.dbNumItems = meter.createGauge(Metrics.WORLD_STATE_DB_NUM_ITEMS);
|
|
37
|
+
this.requestHistogram = meter.createHistogram(Metrics.WORLD_STATE_REQUEST_TIME);
|
|
38
|
+
this.criticalErrors = createUpDownCounterWithDefault(meter, Metrics.WORLD_STATE_CRITICAL_ERROR_COUNT, {
|
|
39
|
+
[Attributes.ERROR_TYPE]: [
|
|
40
|
+
'synch_pending_block',
|
|
41
|
+
'finalize_block',
|
|
42
|
+
'prune_pending_block',
|
|
43
|
+
'prune_historical_block'
|
|
44
|
+
]
|
|
64
45
|
});
|
|
65
46
|
}
|
|
66
47
|
updateTreeStats(treeDbStats, treeMeta, tree) {
|
|
67
48
|
this.dbMapSize.record(Number(treeDbStats.mapSize), {
|
|
68
49
|
[Attributes.MERKLE_TREE_NAME]: MerkleTreeId[tree]
|
|
69
50
|
});
|
|
51
|
+
this.dbPhysicalSize.record(Number(treeDbStats.physicalFileSize), {
|
|
52
|
+
[Attributes.MERKLE_TREE_NAME]: MerkleTreeId[tree]
|
|
53
|
+
});
|
|
70
54
|
this.treeSize.record(Number(treeMeta.size), {
|
|
71
55
|
[Attributes.MERKLE_TREE_NAME]: MerkleTreeId[tree]
|
|
72
56
|
});
|
|
73
|
-
this.
|
|
57
|
+
this.unfinalizedHeight.record(Number(treeMeta.unfinalizedBlockHeight), {
|
|
74
58
|
[Attributes.MERKLE_TREE_NAME]: MerkleTreeId[tree]
|
|
75
59
|
});
|
|
76
|
-
this.
|
|
60
|
+
this.finalizedHeight.record(Number(treeMeta.finalizedBlockHeight), {
|
|
77
61
|
[Attributes.MERKLE_TREE_NAME]: MerkleTreeId[tree]
|
|
78
62
|
});
|
|
79
63
|
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":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAIpD,OAAO,EAAE,KAAK,uBAAuB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACpF,OAAO,KAAK,EACV,oBAAoB,EACpB,aAAa,EACb,kBAAkB,EAClB,wBAAwB,EACxB,yBAAyB,EACzB,yBAAyB,EACzB,QAAQ,EACT,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,YAAY,EACZ,aAAa,EAEb,kBAAkB,EAEnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,WAAW,EAAyB,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC3F,OAAO,EAAE,KAAK,kBAAkB,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AAIlG,OAAO,EAEL,KAAK,mBAAmB,EAIzB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAEjF,qBAAa,iBAAkB,YAAW,wBAAwB;IAE9D,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,wBAAwB;IACrD,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,WAAW;IAC7C,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,kBAAkB;IAHjD,YACqB,QAAQ,EAAE,wBAAwB,EAClC,aAAa,EAAE,WAAW,EAC1B,QAAQ,EAAE,kBAAkB,EAC7C;IAEJ,gBAAgB,IAAI,WAAW,CAE9B;IAED,WAAW,IAAI,4BAA4B,CAE1C;IAED,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,kBAAkB,CAAC,YAAY,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC,CAEjH;IAEK,gBAAgB,CAAC,CAAC,SAAS,MAAM,EACrC,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,kBAAkB,CAAC,YAAY,CAAC,EAAE,GACzC,OAAO,CAAC,CAAC;QAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC,EAAE,CAAC,CAalE;IAEK,oBAAoB,CACxB,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,kBAAkB,CAAC,YAAY,CAAC,EAAE,EAC1C,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC,CAejC;IAEK,eAAe,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,GAAG,SAAS,CAAC,CAQ5G;IAEK,YAAY,CAAC,EAAE,SAAS,YAAY,EACxC,MAAM,EAAE,EAAE,EACV,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAiB7C;IAEK,qBAAqB,CACzB,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,OAAO,CAAA;KAAE,GAAG,SAAS,CAAC,CAUjE;IAEK,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAQvG;IAEK,iBAAiB,IAAI,OAAO,CAAC,cAAc,CAAC,CAajD;IAEK,wBAAwB,IAAI,OAAO,CAAC,cAAc,CAAC,CAWxD;IAEK,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAYzD;IAEK,6BAA6B,CAAC,EAAE,SAAS,YAAY,EACzD,MAAM,EAAE,EAAE,EACV,WAAW,EAAE,MAAM,EAAE,GACpB,OAAO,CAAC,CAAC,WAAW,GAAG,SAAS,CAAC,EAAE,CAAC,CAQtC;CACF;AAED,qBAAa,qBAAsB,SAAQ,iBAAkB,YAAW,yBAAyB;IAO7F,OAAO,CAAC,IAAI;IANd,OAAO,CAAC,GAAG,CAAwD;IAEnE,YACE,QAAQ,EAAE,wBAAwB,EAClC,aAAa,EAAE,WAAW,EAC1B,QAAQ,EAAE,kBAAkB,EACpB,IAAI,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,EAKxC;IACK,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAMtD;IAEK,YAAY,CAAC,EAAE,SAAS,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,kBAAkB,CAAC,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAMvG;IAEK,WAAW,CAAC,UAAU,SAAS,MAAM,EAAE,wBAAwB,SAAS,MAAM,EAAE,EAAE,SAAS,aAAa,EAC5G,MAAM,EAAE,EAAE,EACV,SAAS,EAAE,MAAM,EAAE,EACnB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,oBAAoB,CAAC,UAAU,EAAE,wBAAwB,CAAC,CAAC,CAyBrE;IAEK,gBAAgB,CAAC,UAAU,SAAS,MAAM,EAAE,EAAE,SAAS,aAAa,EACxE,MAAM,EAAE,EAAE,EACV,SAAS,EAAE,MAAM,EAAE,GAClB,OAAO,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC,CAoBhD;IAEY,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAYlC;IAEK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAatC;IAEY,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAG7C;IAEY,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAG7C;IAEY,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAG7C;IAEY,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAGjD;IAEY,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAGjD;CACF;AAcD,wBAAgB,aAAa,CAAC,IAAI,EAAE,EAAE,GAAG,aAAa,GAAG,kBAAkB,GAAG,mBAAmB,CAQhG"}
|
|
@@ -1,8 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
var _computedKey;
|
|
2
|
+
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
3
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
|
+
import { createLogger } from '@aztec/foundation/log';
|
|
2
5
|
import { serializeToBuffer } from '@aztec/foundation/serialize';
|
|
6
|
+
import { sleep } from '@aztec/foundation/sleep';
|
|
3
7
|
import { SiblingPath } from '@aztec/foundation/trees';
|
|
4
8
|
import { MerkleTreeId, NullifierLeaf, NullifierLeafPreimage, PublicDataTreeLeaf, PublicDataTreeLeafPreimage } from '@aztec/stdlib/trees';
|
|
5
9
|
import { PartialStateReference, StateReference } from '@aztec/stdlib/tx';
|
|
10
|
+
import { WorldStateRevisionWithHandle } from '@aztec/stdlib/world-state';
|
|
6
11
|
import assert from 'assert';
|
|
7
12
|
import { WorldStateMessageType, blockStateReference, treeStateReferenceToSnapshot } from './message.js';
|
|
8
13
|
export class MerkleTreesFacade {
|
|
@@ -17,9 +22,28 @@ export class MerkleTreesFacade {
|
|
|
17
22
|
getInitialHeader() {
|
|
18
23
|
return this.initialHeader;
|
|
19
24
|
}
|
|
25
|
+
getRevision() {
|
|
26
|
+
return WorldStateRevisionWithHandle.fromWorldStateRevision(this.revision, this.instance.getHandle());
|
|
27
|
+
}
|
|
20
28
|
findLeafIndices(treeId, values) {
|
|
21
29
|
return this.findLeafIndicesAfter(treeId, values, 0n);
|
|
22
30
|
}
|
|
31
|
+
async findSiblingPaths(treeId, values) {
|
|
32
|
+
const response = await this.instance.call(WorldStateMessageType.FIND_SIBLING_PATHS, {
|
|
33
|
+
leaves: values.map((leaf)=>serializeLeaf(hydrateLeaf(treeId, leaf))),
|
|
34
|
+
revision: this.revision,
|
|
35
|
+
treeId
|
|
36
|
+
});
|
|
37
|
+
return response.paths.map((path)=>{
|
|
38
|
+
if (!path) {
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
path: new SiblingPath(path.path.length, path.path),
|
|
43
|
+
index: BigInt(path.index)
|
|
44
|
+
};
|
|
45
|
+
});
|
|
46
|
+
}
|
|
23
47
|
async findLeafIndicesAfter(treeId, leaves, startIndex) {
|
|
24
48
|
const response = await this.instance.call(WorldStateMessageType.FIND_LEAF_INDICES, {
|
|
25
49
|
leaves: leaves.map((leaf)=>serializeLeaf(hydrateLeaf(treeId, leaf))),
|
|
@@ -108,14 +132,17 @@ export class MerkleTreesFacade {
|
|
|
108
132
|
revision: this.revision,
|
|
109
133
|
leafIndices
|
|
110
134
|
});
|
|
111
|
-
return response.blockNumbers.map((x)=>x === undefined || x === null ? undefined :
|
|
135
|
+
return response.blockNumbers.map((x)=>x === undefined || x === null ? undefined : BlockNumber(Number(x)));
|
|
112
136
|
}
|
|
113
137
|
}
|
|
138
|
+
_computedKey = Symbol.dispose;
|
|
114
139
|
export class MerkleTreesForkFacade extends MerkleTreesFacade {
|
|
115
|
-
|
|
140
|
+
opts;
|
|
141
|
+
log;
|
|
142
|
+
constructor(instance, initialHeader, revision, opts){
|
|
116
143
|
assert.notEqual(revision.forkId, 0, 'Fork ID must be set');
|
|
117
144
|
assert.equal(revision.includeUncommitted, true, 'Fork must include uncommitted data');
|
|
118
|
-
super(instance, initialHeader, revision);
|
|
145
|
+
super(instance, initialHeader, revision), this.opts = opts, this.log = createLogger('world-state:merkle-trees-fork-facade');
|
|
119
146
|
}
|
|
120
147
|
async updateArchive(header) {
|
|
121
148
|
await this.instance.call(WorldStateMessageType.UPDATE_ARCHIVE, {
|
|
@@ -172,9 +199,32 @@ export class MerkleTreesForkFacade extends MerkleTreesFacade {
|
|
|
172
199
|
}
|
|
173
200
|
async close() {
|
|
174
201
|
assert.notEqual(this.revision.forkId, 0, 'Fork ID must be set');
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
202
|
+
try {
|
|
203
|
+
await this.instance.call(WorldStateMessageType.DELETE_FORK, {
|
|
204
|
+
forkId: this.revision.forkId
|
|
205
|
+
});
|
|
206
|
+
} catch (err) {
|
|
207
|
+
// Ignore errors due to native instance being closed during shutdown.
|
|
208
|
+
// This can happen when validators are still processing block proposals while the node is stopping.
|
|
209
|
+
if (err?.message === 'Native instance is closed') {
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
throw err;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
async [_computedKey]() {
|
|
216
|
+
if (this.opts.closeDelayMs) {
|
|
217
|
+
void sleep(this.opts.closeDelayMs).then(()=>this.close()).catch((err)=>{
|
|
218
|
+
if (err && 'message' in err && err.message === 'Native instance is closed') {
|
|
219
|
+
return; // Ignore errors due to native instance being closed
|
|
220
|
+
}
|
|
221
|
+
this.log.warn('Error closing MerkleTreesForkFacade after delay', {
|
|
222
|
+
err
|
|
223
|
+
});
|
|
224
|
+
});
|
|
225
|
+
} else {
|
|
226
|
+
await this.close();
|
|
227
|
+
}
|
|
178
228
|
}
|
|
179
229
|
async createCheckpoint() {
|
|
180
230
|
assert.notEqual(this.revision.forkId, 0, 'Fork ID must be set');
|
|
@@ -194,6 +244,18 @@ export class MerkleTreesForkFacade extends MerkleTreesFacade {
|
|
|
194
244
|
forkId: this.revision.forkId
|
|
195
245
|
});
|
|
196
246
|
}
|
|
247
|
+
async commitAllCheckpoints() {
|
|
248
|
+
assert.notEqual(this.revision.forkId, 0, 'Fork ID must be set');
|
|
249
|
+
await this.instance.call(WorldStateMessageType.COMMIT_ALL_CHECKPOINTS, {
|
|
250
|
+
forkId: this.revision.forkId
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
async revertAllCheckpoints() {
|
|
254
|
+
assert.notEqual(this.revision.forkId, 0, 'Fork ID must be set');
|
|
255
|
+
await this.instance.call(WorldStateMessageType.REVERT_ALL_CHECKPOINTS, {
|
|
256
|
+
forkId: this.revision.forkId
|
|
257
|
+
});
|
|
258
|
+
}
|
|
197
259
|
}
|
|
198
260
|
function hydrateLeaf(treeId, leaf) {
|
|
199
261
|
if (leaf instanceof Fr) {
|
|
@@ -211,7 +273,7 @@ export function serializeLeaf(leaf) {
|
|
|
211
273
|
return leaf.toBuffer();
|
|
212
274
|
} else if (leaf instanceof NullifierLeaf) {
|
|
213
275
|
return {
|
|
214
|
-
|
|
276
|
+
nullifier: leaf.nullifier.toBuffer()
|
|
215
277
|
};
|
|
216
278
|
} else {
|
|
217
279
|
return {
|
|
@@ -226,14 +288,14 @@ function deserializeLeafValue(leaf) {
|
|
|
226
288
|
} else if ('slot' in leaf) {
|
|
227
289
|
return new PublicDataTreeLeaf(Fr.fromBuffer(leaf.slot), Fr.fromBuffer(leaf.value));
|
|
228
290
|
} else {
|
|
229
|
-
return new NullifierLeaf(Fr.fromBuffer(leaf.
|
|
291
|
+
return new NullifierLeaf(Fr.fromBuffer(leaf.nullifier));
|
|
230
292
|
}
|
|
231
293
|
}
|
|
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.
|
|
294
|
+
function deserializeIndexedLeaf(leafPreimage) {
|
|
295
|
+
if ('slot' in leafPreimage.leaf) {
|
|
296
|
+
return new PublicDataTreeLeafPreimage(new PublicDataTreeLeaf(Fr.fromBuffer(leafPreimage.leaf.slot), Fr.fromBuffer(leafPreimage.leaf.value)), Fr.fromBuffer(leafPreimage.nextKey), BigInt(leafPreimage.nextIndex));
|
|
297
|
+
} else if ('nullifier' in leafPreimage.leaf) {
|
|
298
|
+
return new NullifierLeafPreimage(new NullifierLeaf(Fr.fromBuffer(leafPreimage.leaf.nullifier)), Fr.fromBuffer(leafPreimage.nextKey), BigInt(leafPreimage.nextIndex));
|
|
237
299
|
} else {
|
|
238
300
|
throw new Error('Invalid leaf type');
|
|
239
301
|
}
|