@aztec/simulator 6.0.0-nightly.20260812 → 6.0.0-nightly.20260822
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/public/executor_metrics.d.ts +2 -2
- package/dest/public/executor_metrics.d.ts.map +1 -1
- package/dest/public/executor_metrics.js +1 -1
- package/dest/public/executor_metrics_interface.d.ts +2 -2
- package/dest/public/executor_metrics_interface.d.ts.map +1 -1
- package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts +2 -4
- package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts.map +1 -1
- package/dest/public/fuzzing/avm_fuzzer_simulator.js +2 -6
- package/dest/public/fuzzing/avm_simulator_bin.js +11 -21
- package/dest/public/public_tx_simulator/public_tx_simulator.js +1 -1
- package/dest/public/test_executor_metrics.d.ts +2 -2
- package/dest/public/test_executor_metrics.d.ts.map +1 -1
- package/dest/public/test_executor_metrics.js +3 -5
- package/package.json +16 -18
- package/src/public/executor_metrics.ts +6 -1
- package/src/public/executor_metrics_interface.ts +6 -1
- package/src/public/fuzzing/avm_fuzzer_simulator.ts +0 -4
- package/src/public/fuzzing/avm_simulator_bin.ts +9 -25
- package/src/public/public_tx_simulator/public_tx_simulator.ts +1 -1
- package/src/public/test_executor_metrics.ts +8 -5
|
@@ -13,9 +13,9 @@ export declare class ExecutorMetrics implements ExecutorMetricsInterface {
|
|
|
13
13
|
private privateEffectsInsertions;
|
|
14
14
|
constructor(client: TelemetryClient, name?: string);
|
|
15
15
|
startRecordingTxSimulation(_txLabel: string): void;
|
|
16
|
-
stopRecordingTxSimulation(_txLabel: string, _gasUsed?: GasUsed, _revertedCode?: RevertCode): void;
|
|
16
|
+
stopRecordingTxSimulation(_txLabel: string, _gasUsed?: GasUsed, _revertedCode?: RevertCode, _stats?: Record<string, string>): void;
|
|
17
17
|
recordEnqueuedCallSimulation(fnName: string, durationMs: number, manaUsed: number, totalInstructionsExecuted: number): void;
|
|
18
18
|
recordEnqueuedCallSimulationFailure(_fnName: string, _durationMs: number, _manaUsed: number, _totalInstructionsExecuted: number): void;
|
|
19
19
|
recordPrivateEffectsInsertion(durationUs: number, type: 'revertible' | 'non-revertible'): void;
|
|
20
20
|
}
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0b3JfbWV0cmljcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B1YmxpYy9leGVjdXRvcl9tZXRyaWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFJTCxLQUFLLGVBQWUsRUFDcEIsS0FBSyxNQUFNLEVBR1osTUFBTSx5QkFBeUIsQ0FBQztBQUVqQyxPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRWhGLHFCQUFhLGVBQWdCLFlBQVcsd0JBQXdCO0lBQzlELFNBQWdCLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFDL0IsT0FBTyxDQUFDLE9BQU8sQ0FBZ0I7SUFDL0IsT0FBTyxDQUFDLFVBQVUsQ0FBWTtJQUM5QixPQUFPLENBQUMsYUFBYSxDQUFZO0lBQ2pDLE9BQU8sQ0FBQyxRQUFRLENBQVk7SUFDNUIsT0FBTyxDQUFDLHlCQUF5QixDQUFZO0lBQzdDLE9BQU8sQ0FBQyxTQUFTLENBQVk7SUFDN0IsT0FBTyxDQUFDLHdCQUF3QixDQUFZO0lBRTVDLFlBQVksTUFBTSxFQUFFLGVBQWUsRUFBRSxJQUFJLFNBQW1CLEVBbUIzRDtJQUVELDBCQUEwQixDQUFDLFFBQVEsRUFBRSxNQUFNLFFBRTFDO0lBRUQseUJBQXlCLENBQ3ZCLFFBQVEsRUFBRSxNQUFNLEVBQ2hCLFFBQVEsQ0FBQyxFQUFFLE9BQU8sRUFDbEIsYUFBYSxDQUFDLEVBQUUsVUFBVSxFQUMxQixNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxRQUdoQztJQUVELDRCQUE0QixDQUMxQixNQUFNLEVBQUUsTUFBTSxFQUNkLFVBQVUsRUFBRSxNQUFNLEVBQ2xCLFFBQVEsRUFBRSxNQUFNLEVBQ2hCLHlCQUF5QixFQUFFLE1BQU0sUUFxQmxDO0lBRUQsbUNBQW1DLENBQ2pDLE9BQU8sRUFBRSxNQUFNLEVBQ2YsV0FBVyxFQUFFLE1BQU0sRUFDbkIsU0FBUyxFQUFFLE1BQU0sRUFDakIsMEJBQTBCLEVBQUUsTUFBTSxRQUtuQztJQUVELDZCQUE2QixDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFlBQVksR0FBRyxnQkFBZ0IsUUFJdEY7Q0FDRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor_metrics.d.ts","sourceRoot":"","sources":["../../src/public/executor_metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAIL,KAAK,eAAe,EACpB,KAAK,MAAM,EAGZ,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAEhF,qBAAa,eAAgB,YAAW,wBAAwB;IAC9D,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,aAAa,CAAY;IACjC,OAAO,CAAC,QAAQ,CAAY;IAC5B,OAAO,CAAC,yBAAyB,CAAY;IAC7C,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,wBAAwB,CAAY;IAE5C,YAAY,MAAM,EAAE,eAAe,EAAE,IAAI,SAAmB,EAmB3D;IAED,0BAA0B,CAAC,QAAQ,EAAE,MAAM,QAE1C;IAED,yBAAyB,
|
|
1
|
+
{"version":3,"file":"executor_metrics.d.ts","sourceRoot":"","sources":["../../src/public/executor_metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAIL,KAAK,eAAe,EACpB,KAAK,MAAM,EAGZ,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAEhF,qBAAa,eAAgB,YAAW,wBAAwB;IAC9D,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,aAAa,CAAY;IACjC,OAAO,CAAC,QAAQ,CAAY;IAC5B,OAAO,CAAC,yBAAyB,CAAY;IAC7C,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,wBAAwB,CAAY;IAE5C,YAAY,MAAM,EAAE,eAAe,EAAE,IAAI,SAAmB,EAmB3D;IAED,0BAA0B,CAAC,QAAQ,EAAE,MAAM,QAE1C;IAED,yBAAyB,CACvB,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,OAAO,EAClB,aAAa,CAAC,EAAE,UAAU,EAC1B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAGhC;IAED,4BAA4B,CAC1B,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,yBAAyB,EAAE,MAAM,QAqBlC;IAED,mCAAmC,CACjC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,0BAA0B,EAAE,MAAM,QAKnC;IAED,6BAA6B,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,gBAAgB,QAItF;CACF"}
|
|
@@ -27,7 +27,7 @@ export class ExecutorMetrics {
|
|
|
27
27
|
startRecordingTxSimulation(_txLabel) {
|
|
28
28
|
// do nothing (unimplemented)
|
|
29
29
|
}
|
|
30
|
-
stopRecordingTxSimulation(_txLabel, _gasUsed, _revertedCode) {
|
|
30
|
+
stopRecordingTxSimulation(_txLabel, _gasUsed, _revertedCode, _stats) {
|
|
31
31
|
// do nothing (unimplemented)
|
|
32
32
|
}
|
|
33
33
|
recordEnqueuedCallSimulation(fnName, durationMs, manaUsed, totalInstructionsExecuted) {
|
|
@@ -2,9 +2,9 @@ import type { RevertCode } from '@aztec/stdlib/avm';
|
|
|
2
2
|
import type { GasUsed } from '@aztec/stdlib/gas';
|
|
3
3
|
export interface ExecutorMetricsInterface {
|
|
4
4
|
startRecordingTxSimulation(txLabel: string): void;
|
|
5
|
-
stopRecordingTxSimulation(txLabel: string, gasUsed?: GasUsed, revertedCode?: RevertCode): void;
|
|
5
|
+
stopRecordingTxSimulation(txLabel: string, gasUsed?: GasUsed, revertedCode?: RevertCode, stats?: Record<string, string>): void;
|
|
6
6
|
recordEnqueuedCallSimulation(fnName: string, durationMs: number, manaUsed: number, totalInstructions: number): void;
|
|
7
7
|
recordEnqueuedCallSimulationFailure(fnName: string, durationMs: number, manaUsed: number, totalInstructionsExecuted: number): void;
|
|
8
8
|
recordPrivateEffectsInsertion(durationUs: number, type: 'revertible' | 'non-revertible'): void;
|
|
9
9
|
}
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0b3JfbWV0cmljc19pbnRlcmZhY2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMvZXhlY3V0b3JfbWV0cmljc19pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFakQsTUFBTSxXQUFXLHdCQUF3QjtJQUN2QywwQkFBMEIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FBQztJQUNsRCx5QkFBeUIsQ0FDdkIsT0FBTyxFQUFFLE1BQU0sRUFDZixPQUFPLENBQUMsRUFBRSxPQUFPLEVBQ2pCLFlBQVksQ0FBQyxFQUFFLFVBQVUsRUFDekIsS0FBSyxDQUFDLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsR0FDN0IsSUFBSSxDQUFDO0lBQ1IsNEJBQTRCLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FBQztJQUNwSCxtQ0FBbUMsQ0FDakMsTUFBTSxFQUFFLE1BQU0sRUFDZCxVQUFVLEVBQUUsTUFBTSxFQUNsQixRQUFRLEVBQUUsTUFBTSxFQUNoQix5QkFBeUIsRUFBRSxNQUFNLEdBQ2hDLElBQUksQ0FBQztJQUNSLDZCQUE2QixDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFlBQVksR0FBRyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7Q0FDaEcifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor_metrics_interface.d.ts","sourceRoot":"","sources":["../../src/public/executor_metrics_interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,WAAW,wBAAwB;IACvC,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAClD,yBAAyB,
|
|
1
|
+
{"version":3,"file":"executor_metrics_interface.d.ts","sourceRoot":"","sources":["../../src/public/executor_metrics_interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,WAAW,wBAAwB;IACvC,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAClD,yBAAyB,CACvB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,OAAO,EACjB,YAAY,CAAC,EAAE,UAAU,EACzB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,IAAI,CAAC;IACR,4BAA4B,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpH,mCAAmC,CACjC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,yBAAyB,EAAE,MAAM,GAChC,IAAI,CAAC;IACR,6BAA6B,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,gBAAgB,GAAG,IAAI,CAAC;CAChG"}
|
|
@@ -11,8 +11,6 @@ import { PublicContractsDB } from '../public_db_sources.js';
|
|
|
11
11
|
* Matches the C++ FuzzerSimulationRequest struct
|
|
12
12
|
*/
|
|
13
13
|
export declare class FuzzerSimulationRequest {
|
|
14
|
-
readonly wsDataDir: string;
|
|
15
|
-
readonly wsMapSizeKb: number;
|
|
16
14
|
readonly tx: AvmTxHint;
|
|
17
15
|
readonly globals: GlobalVariables;
|
|
18
16
|
readonly contractClasses: any[];
|
|
@@ -20,7 +18,7 @@ export declare class FuzzerSimulationRequest {
|
|
|
20
18
|
readonly publicDataWrites: any[];
|
|
21
19
|
readonly noteHashes: any[];
|
|
22
20
|
readonly protocolContracts: ProtocolContracts;
|
|
23
|
-
constructor(
|
|
21
|
+
constructor(tx: AvmTxHint, globals: GlobalVariables, contractClasses: any[], contractInstances: [any, any][], publicDataWrites: any[], noteHashes: any[], protocolContracts: ProtocolContracts);
|
|
24
22
|
static fromPlainObject(obj: any): FuzzerSimulationRequest;
|
|
25
23
|
}
|
|
26
24
|
/**
|
|
@@ -64,4 +62,4 @@ export declare class AvmFuzzerSimulator extends BaseAvmSimulationTester {
|
|
|
64
62
|
*/
|
|
65
63
|
applyNoteHashes(rawNoteHashes: any[]): Promise<void>;
|
|
66
64
|
}
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX2Z1enplcl9zaW11bGF0b3IuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wdWJsaWMvZnV6emluZy9hdm1fZnV6emVyX3NpbXVsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFZbkUsT0FBTyxFQUFnQixLQUFLLHlCQUF5QixFQUFzQixNQUFNLHFCQUFxQixDQUFDO0FBQ3ZHLE9BQU8sRUFFTCxlQUFlLEVBRWYsaUJBQWlCLEVBS2xCLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVsRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN2RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUN0RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUc1RDs7O0dBR0c7QUFDSCxxQkFBYSx1QkFBdUI7YUFFaEIsRUFBRSxFQUFFLFNBQVM7YUFDYixPQUFPLEVBQUUsZUFBZTthQUN4QixlQUFlLEVBQUUsR0FBRyxFQUFFO2FBQ3RCLGlCQUFpQixFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFO2FBQy9CLGdCQUFnQixFQUFFLEdBQUcsRUFBRTthQUN2QixVQUFVLEVBQUUsR0FBRyxFQUFFO2FBQ2pCLGlCQUFpQixFQUFFLGlCQUFpQjtJQVB0RCxZQUNrQixFQUFFLEVBQUUsU0FBUyxFQUNiLE9BQU8sRUFBRSxlQUFlLEVBQ3hCLGVBQWUsRUFBRSxHQUFHLEVBQUUsRUFDdEIsaUJBQWlCLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFDL0IsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFLEVBQ3ZCLFVBQVUsRUFBRSxHQUFHLEVBQUUsRUFDakIsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQ2xEO0lBRUosTUFBTSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLHVCQUF1QixDQWF4RDtDQUNGO0FBbUhEOzs7OztHQUtHO0FBQ0gscUJBQWEsa0JBQW1CLFNBQVEsdUJBQXVCO0lBTzNELE9BQU8sQ0FBQyxZQUFZO0lBTnRCLE9BQU8sQ0FBQyxTQUFTLENBQW9CO0lBRXJDLFlBQ0UsV0FBVyxFQUFFLHlCQUF5QixFQUN0QyxrQkFBa0IsRUFBRSx3QkFBd0IsRUFDNUMsT0FBTyxFQUFFLGVBQWUsRUFDaEIsWUFBWSxFQUFFLGdCQUFnQixFQUN0QyxXQUFXLEVBQUUsaUJBQWlCLEVBQzlCLE1BQU0sRUFBRSxNQUFNLEVBb0JmO0lBRUQ7O09BRUc7SUFDSCxPQUFvQixNQUFNLENBQ3hCLGlCQUFpQixFQUFFLHVCQUF1QixFQUMxQyxPQUFPLEVBQUUsZUFBZSxHQUN2QixPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FPN0I7SUFFRCx1RUFBdUU7SUFDMUQsS0FBSyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FFbEM7SUFFRDs7T0FFRztJQUNVLFFBQVEsQ0FBQyxNQUFNLEVBQUUsU0FBUyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FVaEU7SUFFRDs7T0FFRztJQUNVLHVCQUF1QixDQUFDLFFBQVEsRUFBRSxHQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUdqRTtJQUVEOzs7O09BSUc7SUFDVSwwQkFBMEIsQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxHQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQU14RjtJQUVEOzs7T0FHRztJQUNVLHFCQUFxQixDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBS2xFO0lBRUQ7OztPQUdHO0lBQ1UsZUFBZSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBSWhFO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avm_fuzzer_simulator.d.ts","sourceRoot":"","sources":["../../../src/public/fuzzing/avm_fuzzer_simulator.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAYnE,OAAO,EAAgB,KAAK,yBAAyB,EAAsB,MAAM,qBAAqB,CAAC;AACvG,OAAO,EAEL,eAAe,EAEf,iBAAiB,EAKlB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAElE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,4CAA4C,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAG5D;;;GAGG;AACH,qBAAa,uBAAuB;aAEhB,
|
|
1
|
+
{"version":3,"file":"avm_fuzzer_simulator.d.ts","sourceRoot":"","sources":["../../../src/public/fuzzing/avm_fuzzer_simulator.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAYnE,OAAO,EAAgB,KAAK,yBAAyB,EAAsB,MAAM,qBAAqB,CAAC;AACvG,OAAO,EAEL,eAAe,EAEf,iBAAiB,EAKlB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAElE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,4CAA4C,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAG5D;;;GAGG;AACH,qBAAa,uBAAuB;aAEhB,EAAE,EAAE,SAAS;aACb,OAAO,EAAE,eAAe;aACxB,eAAe,EAAE,GAAG,EAAE;aACtB,iBAAiB,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;aAC/B,gBAAgB,EAAE,GAAG,EAAE;aACvB,UAAU,EAAE,GAAG,EAAE;aACjB,iBAAiB,EAAE,iBAAiB;IAPtD,YACkB,EAAE,EAAE,SAAS,EACb,OAAO,EAAE,eAAe,EACxB,eAAe,EAAE,GAAG,EAAE,EACtB,iBAAiB,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAC/B,gBAAgB,EAAE,GAAG,EAAE,EACvB,UAAU,EAAE,GAAG,EAAE,EACjB,iBAAiB,EAAE,iBAAiB,EAClD;IAEJ,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,uBAAuB,CAaxD;CACF;AAmHD;;;;;GAKG;AACH,qBAAa,kBAAmB,SAAQ,uBAAuB;IAO3D,OAAO,CAAC,YAAY;IANtB,OAAO,CAAC,SAAS,CAAoB;IAErC,YACE,WAAW,EAAE,yBAAyB,EACtC,kBAAkB,EAAE,wBAAwB,EAC5C,OAAO,EAAE,eAAe,EAChB,YAAY,EAAE,gBAAgB,EACtC,WAAW,EAAE,iBAAiB,EAC9B,MAAM,EAAE,MAAM,EAoBf;IAED;;OAEG;IACH,OAAoB,MAAM,CACxB,iBAAiB,EAAE,uBAAuB,EAC1C,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,kBAAkB,CAAC,CAO7B;IAED,uEAAuE;IAC1D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAElC;IAED;;OAEG;IACU,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,CAUhE;IAED;;OAEG;IACU,uBAAuB,CAAC,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAGjE;IAED;;;;OAIG;IACU,0BAA0B,CAAC,UAAU,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAMxF;IAED;;;OAGG;IACU,qBAAqB,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAKlE;IAED;;;OAGG;IACU,eAAe,CAAC,aAAa,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAIhE;CACF"}
|
|
@@ -19,8 +19,6 @@ import { PublicTxSimulator } from '../public_tx_simulator/public_tx_simulator.js
|
|
|
19
19
|
* Request structure for fuzzer simulation communication from C++.
|
|
20
20
|
* Matches the C++ FuzzerSimulationRequest struct
|
|
21
21
|
*/ export class FuzzerSimulationRequest {
|
|
22
|
-
wsDataDir;
|
|
23
|
-
wsMapSizeKb;
|
|
24
22
|
tx;
|
|
25
23
|
globals;
|
|
26
24
|
contractClasses;
|
|
@@ -28,9 +26,7 @@ import { PublicTxSimulator } from '../public_tx_simulator/public_tx_simulator.js
|
|
|
28
26
|
publicDataWrites;
|
|
29
27
|
noteHashes;
|
|
30
28
|
protocolContracts;
|
|
31
|
-
constructor(
|
|
32
|
-
this.wsDataDir = wsDataDir;
|
|
33
|
-
this.wsMapSizeKb = wsMapSizeKb;
|
|
29
|
+
constructor(tx, globals, contractClasses, contractInstances, publicDataWrites, noteHashes, protocolContracts){
|
|
34
30
|
this.tx = tx;
|
|
35
31
|
this.globals = globals;
|
|
36
32
|
this.contractClasses = contractClasses;
|
|
@@ -43,7 +39,7 @@ import { PublicTxSimulator } from '../public_tx_simulator/public_tx_simulator.js
|
|
|
43
39
|
if (obj instanceof FuzzerSimulationRequest) {
|
|
44
40
|
return obj;
|
|
45
41
|
}
|
|
46
|
-
return new FuzzerSimulationRequest(
|
|
42
|
+
return new FuzzerSimulationRequest(AvmTxHint.fromPlainObject(obj.tx), GlobalVariables.fromPlainObject(obj.globals), obj.contractClasses, obj.contractInstances, obj.publicDataWrites ?? [], obj.noteHashes ?? [], ProtocolContracts.fromPlainObject(obj.protocolContracts));
|
|
47
43
|
}
|
|
48
44
|
}
|
|
49
45
|
/**
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
2
1
|
import { PublicTxEffect, deserializeFromMessagePack, serializeWithMessagePack } from '@aztec/stdlib/avm';
|
|
3
2
|
import { TreeSnapshots } from '@aztec/stdlib/tx';
|
|
4
3
|
import { NativeWorldStateService } from '@aztec/world-state';
|
|
@@ -15,26 +14,17 @@ import { AvmFuzzerSimulator, FuzzerSimulationRequest } from './avm_fuzzer_simula
|
|
|
15
14
|
});
|
|
16
15
|
});
|
|
17
16
|
}
|
|
18
|
-
//
|
|
19
|
-
//
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
const ws = await NativeWorldStateService.new(EthAddress.ZERO, dataDir, {
|
|
27
|
-
archiveTreeMapSizeKb: mapSizeKb,
|
|
28
|
-
nullifierTreeMapSizeKb: mapSizeKb,
|
|
29
|
-
noteHashTreeMapSizeKb: mapSizeKb,
|
|
30
|
-
messageTreeMapSizeKb: mapSizeKb,
|
|
31
|
-
publicDataTreeMapSizeKb: mapSizeKb
|
|
32
|
-
});
|
|
33
|
-
worldStateCache.set(dataDir, ws);
|
|
34
|
-
return ws;
|
|
17
|
+
// The fuzzer self-bootstraps its own world state instead of reading a shared on-disk database written by
|
|
18
|
+
// the C++ side. A fresh NativeWorldStateService produces a genesis identical to the C++ MemoryMerkleDB by
|
|
19
|
+
// construction (same 128 nullifier/public-data tree prefill and header-generator point), and the dynamic
|
|
20
|
+
// state is applied per-input below. The instance is opened once and reused across inputs; each input forks
|
|
21
|
+
// from it (in AvmFuzzerSimulator.create).
|
|
22
|
+
let worldStatePromise;
|
|
23
|
+
function getWorldState() {
|
|
24
|
+
return worldStatePromise ??= NativeWorldStateService.tmp();
|
|
35
25
|
}
|
|
36
|
-
async function simulateWithFuzzer(
|
|
37
|
-
const worldStateService = await
|
|
26
|
+
async function simulateWithFuzzer(txHint, globals, rawContractClasses, rawContractInstances, rawPublicDataWrites, rawNoteHashes) {
|
|
27
|
+
const worldStateService = await getWorldState();
|
|
38
28
|
const simulator = await AvmFuzzerSimulator.create(worldStateService, globals);
|
|
39
29
|
await simulator.applyNoteHashes(rawNoteHashes);
|
|
40
30
|
// Register contract classes from C++ (must happen before public data writes to match C++ order)
|
|
@@ -65,7 +55,7 @@ async function execute(base64Line) {
|
|
|
65
55
|
const rawRequest = deserializeFromMessagePack(buffer);
|
|
66
56
|
const request = FuzzerSimulationRequest.fromPlainObject(rawRequest);
|
|
67
57
|
// Run the simulation on the C++ AVM simulator
|
|
68
|
-
const result = await simulateWithFuzzer(request.
|
|
58
|
+
const result = await simulateWithFuzzer(request.tx, request.globals, request.contractClasses, request.contractInstances, request.publicDataWrites, request.noteHashes);
|
|
69
59
|
// Serialize the result to msgpack and encode it in base64 for output
|
|
70
60
|
const resultBuffer = serializeWithMessagePack({
|
|
71
61
|
reverted: result.reverted,
|
|
@@ -110,7 +110,7 @@ export class MeasuredPublicTxSimulator extends PublicTxSimulator {
|
|
|
110
110
|
try {
|
|
111
111
|
result = await super.simulate(tx);
|
|
112
112
|
} finally{
|
|
113
|
-
this.metrics.stopRecordingTxSimulation(txLabel, result?.gasUsed, result?.revertCode);
|
|
113
|
+
this.metrics.stopRecordingTxSimulation(txLabel, result?.gasUsed, result?.revertCode, result?.stats);
|
|
114
114
|
}
|
|
115
115
|
return result;
|
|
116
116
|
}
|
|
@@ -43,7 +43,7 @@ export declare class TestExecutorMetrics implements ExecutorMetricsInterface {
|
|
|
43
43
|
private txTimer;
|
|
44
44
|
constructor(bindings?: LoggerBindings);
|
|
45
45
|
startRecordingTxSimulation(txLabel: string): void;
|
|
46
|
-
stopRecordingTxSimulation(txLabel: string, gasUsed?: GasUsed, revertedCode?: RevertCode): void;
|
|
46
|
+
stopRecordingTxSimulation(txLabel: string, gasUsed?: GasUsed, revertedCode?: RevertCode, stats?: Record<string, string>): void;
|
|
47
47
|
recordEnqueuedCallSimulation(fnName: string, durationMs: number, manaUsed: number, totalInstructionsExecuted: number): void;
|
|
48
48
|
recordEnqueuedCallSimulationFailure(fnName: string, durationMs: number, manaUsed: number, totalInstructionsExecuted: number): void;
|
|
49
49
|
recordPrivateEffectsInsertion(durationUs: number, type: 'revertible' | 'non-revertible'): void;
|
|
@@ -53,4 +53,4 @@ export declare class TestExecutorMetrics implements ExecutorMetricsInterface {
|
|
|
53
53
|
toJSON(indent?: number): string;
|
|
54
54
|
toGithubActionBenchmarkJSON(indent?: number): string;
|
|
55
55
|
}
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF9leGVjdXRvcl9tZXRyaWNzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHVibGljL3Rlc3RfZXhlY3V0b3JfbWV0cmljcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsS0FBSyxjQUFjLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFFdkYsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFJakQsT0FBTyxLQUFLLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVoRixNQUFNLFdBQVcseUJBQXlCO0lBQ3hDLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFDZixVQUFVLEVBQUUsTUFBTSxDQUFDO0lBQ25CLFFBQVEsRUFBRSxNQUFNLENBQUM7SUFDakIseUJBQXlCLEVBQUUsTUFBTSxDQUFDO0lBQ2xDLFFBQVEsRUFBRSxPQUFPLENBQUM7Q0FDbkI7QUFFRCxNQUFNLFdBQVcsZUFBZTtJQUU5QixlQUFlLEVBQUUsTUFBTSxDQUFDO0lBQ3hCLFFBQVEsRUFBRSxNQUFNLEdBQUcsU0FBUyxDQUFDO0lBQzdCLHlCQUF5QixFQUFFLE1BQU0sQ0FBQztJQUNsQyxnQ0FBZ0MsRUFBRSxNQUFNLEdBQUcsU0FBUyxDQUFDO0lBQ3JELDZCQUE2QixFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUM7SUFDbEQsYUFBYSxFQUFFLHlCQUF5QixFQUFFLENBQUM7SUFDM0MsWUFBWSxFQUFFLFVBQVUsR0FBRyxTQUFTLENBQUM7SUFFckMsc0JBQXNCLEVBQUUsTUFBTSxHQUFHLFNBQVMsQ0FBQztJQUMzQyxtQkFBbUIsRUFBRSxNQUFNLEdBQUcsU0FBUyxDQUFDO0lBQ3hDLDJCQUEyQixFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUM7SUFFaEQsNkJBQTZCLEVBQUUsTUFBTSxHQUFHLFNBQVMsQ0FBQztJQUNsRCx1QkFBdUIsRUFBRSxNQUFNLEdBQUcsU0FBUyxDQUFDO0lBQzVDLGlCQUFpQixFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUM7SUFDdEMsWUFBWSxFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUM7SUFDakMsNkJBQTZCLEVBQUUsTUFBTSxHQUFHLFNBQVMsQ0FBQztJQUNsRCx3Q0FBd0MsRUFBRSxNQUFNLEdBQUcsU0FBUyxDQUFDO0lBQzdELHdCQUF3QixFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUM7Q0FDOUM7QUFXRCxvQkFBWSxxQkFBcUI7SUFDL0IsR0FBRyxJQUFBO0lBQ0gsTUFBTSxJQUFBO0lBQ04sU0FBUyxJQUFBO0lBQ1QsWUFBWSxJQUFBO0lBQ1osT0FBTyxJQUFBO0NBQ1I7QUEyQkQscUJBQWEsbUJBQW9CLFlBQVcsd0JBQXdCOztJQUNsRSxPQUFPLENBQUMsTUFBTSxDQUFTO0lBRXZCLE9BQU8sQ0FBQyxTQUFTLENBQTJDO0lBQzVELE9BQU8sQ0FBQyxjQUFjLENBQXFCO0lBQzNDLE9BQU8sQ0FBQyxPQUFPLENBQW9CO0lBRW5DLFlBQVksUUFBUSxDQUFDLEVBQUUsY0FBYyxFQUVwQztJQUVELDBCQUEwQixDQUFDLE9BQU8sRUFBRSxNQUFNLFFBTXpDO0lBRUQseUJBQXlCLENBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQ2YsT0FBTyxDQUFDLEVBQUUsT0FBTyxFQUNqQixZQUFZLENBQUMsRUFBRSxVQUFVLEVBQ3pCLEtBQUssQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLFFBZ0IvQjtJQUVELDRCQUE0QixDQUMxQixNQUFNLEVBQUUsTUFBTSxFQUNkLFVBQVUsRUFBRSxNQUFNLEVBQ2xCLFFBQVEsRUFBRSxNQUFNLEVBQ2hCLHlCQUF5QixFQUFFLE1BQU0sUUFHbEM7SUFFRCxtQ0FBbUMsQ0FDakMsTUFBTSxFQUFFLE1BQU0sRUFDZCxVQUFVLEVBQUUsTUFBTSxFQUNsQixRQUFRLEVBQUUsTUFBTSxFQUNoQix5QkFBeUIsRUFBRSxNQUFNLFFBR2xDO0lBb0JELDZCQUE2QixDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFlBQVksR0FBRyxnQkFBZ0IsUUFnQnRGO0lBRUQsbUJBQW1CLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQyxRQVVyRTtJQUVELFdBQVcsQ0FBQyxNQUFNLEdBQUUscUJBQWlELFFBRXBFO0lBRUQsY0FBYyxDQUFDLE1BQU0sR0FBRSxxQkFBaUQsVUErRXZFO0lBMEJELE1BQU0sQ0FBQyxNQUFNLFNBQUksVUFFaEI7SUFFRCwyQkFBMkIsQ0FBQyxNQUFNLFNBQUksVUE0RnJDO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test_executor_metrics.d.ts","sourceRoot":"","sources":["../../src/public/test_executor_metrics.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"test_executor_metrics.d.ts","sourceRoot":"","sources":["../../src/public/test_executor_metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAEvF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAIjD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAEhF,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,yBAAyB,EAAE,MAAM,CAAC;IAClC,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAE9B,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,yBAAyB,EAAE,MAAM,CAAC;IAClC,gCAAgC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrD,6BAA6B,EAAE,MAAM,GAAG,SAAS,CAAC;IAClD,aAAa,EAAE,yBAAyB,EAAE,CAAC;IAC3C,YAAY,EAAE,UAAU,GAAG,SAAS,CAAC;IAErC,sBAAsB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,mBAAmB,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,2BAA2B,EAAE,MAAM,GAAG,SAAS,CAAC;IAEhD,6BAA6B,EAAE,MAAM,GAAG,SAAS,CAAC;IAClD,uBAAuB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,6BAA6B,EAAE,MAAM,GAAG,SAAS,CAAC;IAClD,wCAAwC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7D,wBAAwB,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9C;AAWD,oBAAY,qBAAqB;IAC/B,GAAG,IAAA;IACH,MAAM,IAAA;IACN,SAAS,IAAA;IACT,YAAY,IAAA;IACZ,OAAO,IAAA;CACR;AA2BD,qBAAa,mBAAoB,YAAW,wBAAwB;;IAClE,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO,CAAC,SAAS,CAA2C;IAC5D,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,OAAO,CAAoB;IAEnC,YAAY,QAAQ,CAAC,EAAE,cAAc,EAEpC;IAED,0BAA0B,CAAC,OAAO,EAAE,MAAM,QAMzC;IAED,yBAAyB,CACvB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,OAAO,EACjB,YAAY,CAAC,EAAE,UAAU,EACzB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAgB/B;IAED,4BAA4B,CAC1B,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,yBAAyB,EAAE,MAAM,QAGlC;IAED,mCAAmC,CACjC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,yBAAyB,EAAE,MAAM,QAGlC;IAoBD,6BAA6B,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,gBAAgB,QAgBtF;IAED,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,QAUrE;IAED,WAAW,CAAC,MAAM,GAAE,qBAAiD,QAEpE;IAED,cAAc,CAAC,MAAM,GAAE,qBAAiD,UA+EvE;IA0BD,MAAM,CAAC,MAAM,SAAI,UAEhB;IAED,2BAA2B,CAAC,MAAM,SAAI,UA4FrC;CACF"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { sum } from '@aztec/foundation/collection';
|
|
2
1
|
import { createLogger } from '@aztec/foundation/log';
|
|
3
2
|
import { Timer } from '@aztec/foundation/timer';
|
|
4
3
|
import { strict as assert } from 'assert';
|
|
@@ -58,16 +57,15 @@ export class TestExecutorMetrics {
|
|
|
58
57
|
this.currentTxLabel = txLabel;
|
|
59
58
|
this.txTimer = new Timer();
|
|
60
59
|
}
|
|
61
|
-
stopRecordingTxSimulation(txLabel, gasUsed, revertedCode) {
|
|
60
|
+
stopRecordingTxSimulation(txLabel, gasUsed, revertedCode, stats) {
|
|
62
61
|
assert(this.currentTxLabel === txLabel, 'Cannot stop recording metrics for tx when another is live');
|
|
63
62
|
const txMetrics = this.txMetrics.get(txLabel);
|
|
64
63
|
// total duration of tx
|
|
65
64
|
txMetrics.totalDurationMs = this.txTimer.ms();
|
|
66
65
|
this.logger.debug(`Public TX simulation of ${txLabel} took ${txMetrics.totalDurationMs}ms`);
|
|
67
|
-
//
|
|
66
|
+
// manaUsed and totalInstructionsExecuted are tx-level totals reported by the simulator.
|
|
68
67
|
txMetrics.manaUsed = gasUsed?.publicGas.l2Gas;
|
|
69
|
-
|
|
70
|
-
txMetrics.totalInstructionsExecuted = sum(txMetrics.enqueuedCalls.map((call)=>call.totalInstructionsExecuted));
|
|
68
|
+
txMetrics.totalInstructionsExecuted = Number(stats?.['total_instructions_executed'] ?? 0);
|
|
71
69
|
txMetrics.revertedCode = revertedCode;
|
|
72
70
|
this.currentTxLabel = undefined;
|
|
73
71
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/simulator",
|
|
3
|
-
"version": "6.0.0-nightly.
|
|
3
|
+
"version": "6.0.0-nightly.20260822",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
"./server": "./dest/server.js",
|
|
@@ -63,29 +63,27 @@
|
|
|
63
63
|
]
|
|
64
64
|
},
|
|
65
65
|
"dependencies": {
|
|
66
|
-
"@aztec/bb-avm-sim": "6.0.0-nightly.
|
|
67
|
-
"@aztec/cdb": "6.0.0-nightly.
|
|
68
|
-
"@aztec/constants": "6.0.0-nightly.
|
|
69
|
-
"@aztec/foundation": "6.0.0-nightly.
|
|
70
|
-
"@aztec/ipc-runtime": "6.0.0-nightly.
|
|
71
|
-
"@aztec/
|
|
72
|
-
"@aztec/noir-
|
|
73
|
-
"@aztec/noir-
|
|
74
|
-
"@aztec/
|
|
75
|
-
"@aztec/
|
|
76
|
-
"@aztec/
|
|
77
|
-
"@aztec/
|
|
78
|
-
"@aztec/
|
|
79
|
-
"@aztec/world-state": "6.0.0-nightly.20260812",
|
|
66
|
+
"@aztec/bb-avm-sim": "6.0.0-nightly.20260819",
|
|
67
|
+
"@aztec/cdb": "6.0.0-nightly.20260819",
|
|
68
|
+
"@aztec/constants": "6.0.0-nightly.20260822",
|
|
69
|
+
"@aztec/foundation": "6.0.0-nightly.20260822",
|
|
70
|
+
"@aztec/ipc-runtime": "6.0.0-nightly.20260819",
|
|
71
|
+
"@aztec/noir-acvm_js": "6.0.0-nightly.20260819",
|
|
72
|
+
"@aztec/noir-noirc_abi": "6.0.0-nightly.20260819",
|
|
73
|
+
"@aztec/noir-types": "6.0.0-nightly.20260819",
|
|
74
|
+
"@aztec/protocol-contracts": "6.0.0-nightly.20260822",
|
|
75
|
+
"@aztec/standard-contracts": "6.0.0-nightly.20260822",
|
|
76
|
+
"@aztec/stdlib": "6.0.0-nightly.20260822",
|
|
77
|
+
"@aztec/telemetry-client": "6.0.0-nightly.20260822",
|
|
78
|
+
"@aztec/world-state": "6.0.0-nightly.20260822",
|
|
80
79
|
"lodash.clonedeep": "^4.5.0",
|
|
81
80
|
"lodash.merge": "^4.6.2",
|
|
82
81
|
"msgpackr": "^1.11.2",
|
|
83
82
|
"tslib": "^2.4.0"
|
|
84
83
|
},
|
|
85
84
|
"devDependencies": {
|
|
86
|
-
"@aztec/
|
|
87
|
-
"@aztec/noir-contracts.js": "6.0.0-nightly.
|
|
88
|
-
"@aztec/noir-test-contracts.js": "6.0.0-nightly.20260812",
|
|
85
|
+
"@aztec/noir-contracts.js": "6.0.0-nightly.20260822",
|
|
86
|
+
"@aztec/noir-test-contracts.js": "6.0.0-nightly.20260822",
|
|
89
87
|
"@jest/globals": "^30.0.0",
|
|
90
88
|
"@types/jest": "^30.0.0",
|
|
91
89
|
"@types/lodash.clonedeep": "^4.5.7",
|
|
@@ -47,7 +47,12 @@ export class ExecutorMetrics implements ExecutorMetricsInterface {
|
|
|
47
47
|
// do nothing (unimplemented)
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
stopRecordingTxSimulation(
|
|
50
|
+
stopRecordingTxSimulation(
|
|
51
|
+
_txLabel: string,
|
|
52
|
+
_gasUsed?: GasUsed,
|
|
53
|
+
_revertedCode?: RevertCode,
|
|
54
|
+
_stats?: Record<string, string>,
|
|
55
|
+
) {
|
|
51
56
|
// do nothing (unimplemented)
|
|
52
57
|
}
|
|
53
58
|
|
|
@@ -3,7 +3,12 @@ import type { GasUsed } from '@aztec/stdlib/gas';
|
|
|
3
3
|
|
|
4
4
|
export interface ExecutorMetricsInterface {
|
|
5
5
|
startRecordingTxSimulation(txLabel: string): void;
|
|
6
|
-
stopRecordingTxSimulation(
|
|
6
|
+
stopRecordingTxSimulation(
|
|
7
|
+
txLabel: string,
|
|
8
|
+
gasUsed?: GasUsed,
|
|
9
|
+
revertedCode?: RevertCode,
|
|
10
|
+
stats?: Record<string, string>,
|
|
11
|
+
): void;
|
|
7
12
|
recordEnqueuedCallSimulation(fnName: string, durationMs: number, manaUsed: number, totalInstructions: number): void;
|
|
8
13
|
recordEnqueuedCallSimulationFailure(
|
|
9
14
|
fnName: string,
|
|
@@ -45,8 +45,6 @@ import { PublicTxSimulator } from '../public_tx_simulator/public_tx_simulator.js
|
|
|
45
45
|
*/
|
|
46
46
|
export class FuzzerSimulationRequest {
|
|
47
47
|
constructor(
|
|
48
|
-
public readonly wsDataDir: string,
|
|
49
|
-
public readonly wsMapSizeKb: number,
|
|
50
48
|
public readonly tx: AvmTxHint,
|
|
51
49
|
public readonly globals: GlobalVariables,
|
|
52
50
|
public readonly contractClasses: any[], // Raw, processed by addContractClassFromCpp
|
|
@@ -61,8 +59,6 @@ export class FuzzerSimulationRequest {
|
|
|
61
59
|
return obj;
|
|
62
60
|
}
|
|
63
61
|
return new FuzzerSimulationRequest(
|
|
64
|
-
obj.wsDataDir,
|
|
65
|
-
obj.wsMapSizeKb,
|
|
66
62
|
AvmTxHint.fromPlainObject(obj.tx),
|
|
67
63
|
GlobalVariables.fromPlainObject(obj.globals),
|
|
68
64
|
obj.contractClasses,
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
-
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
3
2
|
import {
|
|
4
3
|
AvmCircuitPublicInputs,
|
|
5
4
|
type AvmTxHint,
|
|
@@ -27,31 +26,18 @@ function writeOutput(data: string): Promise<void> {
|
|
|
27
26
|
});
|
|
28
27
|
}
|
|
29
28
|
|
|
30
|
-
//
|
|
31
|
-
//
|
|
32
|
-
|
|
29
|
+
// The fuzzer self-bootstraps its own world state instead of reading a shared on-disk database written by
|
|
30
|
+
// the C++ side. A fresh NativeWorldStateService produces a genesis identical to the C++ MemoryMerkleDB by
|
|
31
|
+
// construction (same 128 nullifier/public-data tree prefill and header-generator point), and the dynamic
|
|
32
|
+
// state is applied per-input below. The instance is opened once and reused across inputs; each input forks
|
|
33
|
+
// from it (in AvmFuzzerSimulator.create).
|
|
34
|
+
let worldStatePromise: Promise<NativeWorldStateService> | undefined;
|
|
33
35
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
if (cached) {
|
|
37
|
-
return cached;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
const ws = await NativeWorldStateService.new(EthAddress.ZERO, dataDir, {
|
|
41
|
-
archiveTreeMapSizeKb: mapSizeKb,
|
|
42
|
-
nullifierTreeMapSizeKb: mapSizeKb,
|
|
43
|
-
noteHashTreeMapSizeKb: mapSizeKb,
|
|
44
|
-
messageTreeMapSizeKb: mapSizeKb,
|
|
45
|
-
publicDataTreeMapSizeKb: mapSizeKb,
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
worldStateCache.set(dataDir, ws);
|
|
49
|
-
return ws;
|
|
36
|
+
function getWorldState(): Promise<NativeWorldStateService> {
|
|
37
|
+
return (worldStatePromise ??= NativeWorldStateService.tmp());
|
|
50
38
|
}
|
|
51
39
|
|
|
52
40
|
async function simulateWithFuzzer(
|
|
53
|
-
dataDir: string,
|
|
54
|
-
mapSizeKb: number,
|
|
55
41
|
txHint: AvmTxHint,
|
|
56
42
|
globals: GlobalVariables,
|
|
57
43
|
rawContractClasses: any[], // Replace these when we are moving contract classes to TS
|
|
@@ -65,7 +51,7 @@ async function simulateWithFuzzer(
|
|
|
65
51
|
publicInputs: AvmCircuitPublicInputs;
|
|
66
52
|
publicTxEffect: PublicTxEffect;
|
|
67
53
|
}> {
|
|
68
|
-
const worldStateService = await
|
|
54
|
+
const worldStateService = await getWorldState();
|
|
69
55
|
|
|
70
56
|
const simulator = await AvmFuzzerSimulator.create(worldStateService, globals);
|
|
71
57
|
|
|
@@ -109,8 +95,6 @@ async function execute(base64Line: string): Promise<void> {
|
|
|
109
95
|
|
|
110
96
|
// Run the simulation on the C++ AVM simulator
|
|
111
97
|
const result = await simulateWithFuzzer(
|
|
112
|
-
request.wsDataDir,
|
|
113
|
-
request.wsMapSizeKb,
|
|
114
98
|
request.tx,
|
|
115
99
|
request.globals,
|
|
116
100
|
request.contractClasses,
|
|
@@ -161,7 +161,7 @@ export class MeasuredPublicTxSimulator extends PublicTxSimulator implements Meas
|
|
|
161
161
|
try {
|
|
162
162
|
result = await super.simulate(tx);
|
|
163
163
|
} finally {
|
|
164
|
-
this.metrics.stopRecordingTxSimulation(txLabel, result?.gasUsed, result?.revertCode);
|
|
164
|
+
this.metrics.stopRecordingTxSimulation(txLabel, result?.gasUsed, result?.revertCode, result?.stats);
|
|
165
165
|
}
|
|
166
166
|
return result;
|
|
167
167
|
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { sum } from '@aztec/foundation/collection';
|
|
2
1
|
import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
|
|
3
2
|
import { Timer } from '@aztec/foundation/timer';
|
|
4
3
|
import type { RevertCode } from '@aztec/stdlib/avm';
|
|
@@ -100,7 +99,12 @@ export class TestExecutorMetrics implements ExecutorMetricsInterface {
|
|
|
100
99
|
this.txTimer = new Timer();
|
|
101
100
|
}
|
|
102
101
|
|
|
103
|
-
stopRecordingTxSimulation(
|
|
102
|
+
stopRecordingTxSimulation(
|
|
103
|
+
txLabel: string,
|
|
104
|
+
gasUsed?: GasUsed,
|
|
105
|
+
revertedCode?: RevertCode,
|
|
106
|
+
stats?: Record<string, string>,
|
|
107
|
+
) {
|
|
104
108
|
assert(this.currentTxLabel === txLabel, 'Cannot stop recording metrics for tx when another is live');
|
|
105
109
|
|
|
106
110
|
const txMetrics = this.txMetrics.get(txLabel)!;
|
|
@@ -109,10 +113,9 @@ export class TestExecutorMetrics implements ExecutorMetricsInterface {
|
|
|
109
113
|
txMetrics.totalDurationMs = this.txTimer!.ms();
|
|
110
114
|
this.logger.debug(`Public TX simulation of ${txLabel} took ${txMetrics.totalDurationMs}ms`);
|
|
111
115
|
|
|
112
|
-
//
|
|
116
|
+
// manaUsed and totalInstructionsExecuted are tx-level totals reported by the simulator.
|
|
113
117
|
txMetrics.manaUsed = gasUsed?.publicGas.l2Gas;
|
|
114
|
-
|
|
115
|
-
txMetrics.totalInstructionsExecuted = sum(txMetrics.enqueuedCalls.map(call => call.totalInstructionsExecuted));
|
|
118
|
+
txMetrics.totalInstructionsExecuted = Number(stats?.['total_instructions_executed'] ?? 0);
|
|
116
119
|
txMetrics.revertedCode = revertedCode;
|
|
117
120
|
|
|
118
121
|
this.currentTxLabel = undefined;
|