@aztec/simulator 3.0.0-nightly.20251122 → 3.0.0-nightly.20251124
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/fixtures/public_tx_simulation_tester.d.ts +3 -3
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
- package/dest/public/fixtures/public_tx_simulation_tester.js +10 -9
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator.js +4 -2
- package/package.json +16 -16
- package/src/public/fixtures/public_tx_simulation_tester.ts +11 -7
- package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +4 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type ContractArtifact } from '@aztec/stdlib/abi';
|
|
2
|
-
import { type PublicTxResult } from '@aztec/stdlib/avm';
|
|
2
|
+
import { PublicSimulatorConfig, type PublicTxResult } from '@aztec/stdlib/avm';
|
|
3
3
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
4
4
|
import type { MerkleTreeWriteOperations } from '@aztec/stdlib/interfaces/server';
|
|
5
5
|
import { GlobalVariables, type Tx } from '@aztec/stdlib/tx';
|
|
@@ -27,9 +27,9 @@ export declare class PublicTxSimulationTester extends BaseAvmSimulationTester {
|
|
|
27
27
|
protected txCount: number;
|
|
28
28
|
private simulator;
|
|
29
29
|
private metricsPrefix?;
|
|
30
|
-
constructor(merkleTree: MerkleTreeWriteOperations, contractDataSource: SimpleContractDataSource, globals?: GlobalVariables, metrics?: TestExecutorMetrics, useCppSimulator?: boolean);
|
|
30
|
+
constructor(merkleTree: MerkleTreeWriteOperations, contractDataSource: SimpleContractDataSource, globals?: GlobalVariables, metrics?: TestExecutorMetrics, useCppSimulator?: boolean, config?: PublicSimulatorConfig);
|
|
31
31
|
static create(worldStateService: NativeWorldStateService, // make sure to close this later
|
|
32
|
-
globals?: GlobalVariables, metrics?: TestExecutorMetrics, useCppSimulator?: boolean): Promise<PublicTxSimulationTester>;
|
|
32
|
+
globals?: GlobalVariables, metrics?: TestExecutorMetrics, useCppSimulator?: boolean, config?: PublicSimulatorConfig): Promise<PublicTxSimulationTester>;
|
|
33
33
|
setMetricsPrefix(prefix: string): void;
|
|
34
34
|
createTx(sender: AztecAddress, setupCalls?: TestEnqueuedCall[], appCalls?: TestEnqueuedCall[], teardownCall?: TestEnqueuedCall, feePayer?: AztecAddress, privateInsertions?: TestPrivateInsertions): Promise<Tx>;
|
|
35
35
|
simulateTx(sender: AztecAddress, setupCalls?: TestEnqueuedCall[], appCalls?: TestEnqueuedCall[], teardownCall?: TestEnqueuedCall, feePayer?: AztecAddress, privateInsertions?: TestPrivateInsertions, txLabel?: string): Promise<PublicTxResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public_tx_simulation_tester.d.ts","sourceRoot":"","sources":["../../../src/public/fixtures/public_tx_simulation_tester.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,gBAAgB,EAAmB,MAAM,mBAAmB,CAAC;AAC3E,OAAO,
|
|
1
|
+
{"version":3,"file":"public_tx_simulation_tester.d.ts","sourceRoot":"","sources":["../../../src/public/fixtures/public_tx_simulation_tester.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,13 @@ import { TestExecutorMetrics } from '../test_executor_metrics.js';
|
|
|
15
15
|
import { SimpleContractDataSource } from './simple_contract_data_source.js';
|
|
16
16
|
import { createTxForPublicCalls } from './utils.js';
|
|
17
17
|
const DEFAULT_GAS_FEES = new GasFees(2, 3);
|
|
18
|
+
const defaultConfig = PublicSimulatorConfig.from({
|
|
19
|
+
skipFeeEnforcement: false,
|
|
20
|
+
collectCallMetadata: true,
|
|
21
|
+
collectDebugLogs: true,
|
|
22
|
+
collectHints: false,
|
|
23
|
+
collectStatistics: false
|
|
24
|
+
});
|
|
18
25
|
/**
|
|
19
26
|
* A test class that extends the BaseAvmSimulationTester to enable real-app testing of the PublicTxSimulator.
|
|
20
27
|
* It provides an interface for simulating one transaction at a time and maintains state between subsequent
|
|
@@ -24,21 +31,15 @@ const DEFAULT_GAS_FEES = new GasFees(2, 3);
|
|
|
24
31
|
txCount;
|
|
25
32
|
simulator;
|
|
26
33
|
metricsPrefix;
|
|
27
|
-
constructor(merkleTree, contractDataSource, globals = defaultGlobals(), metrics = new TestExecutorMetrics(), useCppSimulator = false){
|
|
34
|
+
constructor(merkleTree, contractDataSource, globals = defaultGlobals(), metrics = new TestExecutorMetrics(), useCppSimulator = false, config = defaultConfig){
|
|
28
35
|
super(contractDataSource, merkleTree), this.metrics = metrics, this.txCount = 0;
|
|
29
36
|
const contractsDB = new PublicContractsDB(contractDataSource);
|
|
30
|
-
const config = PublicSimulatorConfig.from({
|
|
31
|
-
skipFeeEnforcement: false,
|
|
32
|
-
collectDebugLogs: true,
|
|
33
|
-
collectHints: false,
|
|
34
|
-
collectStatistics: false
|
|
35
|
-
});
|
|
36
37
|
this.simulator = useCppSimulator ? new MeasuredCppPublicTxSimulator(merkleTree, contractsDB, globals, this.metrics, config) : new MeasuredPublicTxSimulator(merkleTree, contractsDB, globals, this.metrics, config);
|
|
37
38
|
}
|
|
38
|
-
static async create(worldStateService, globals = defaultGlobals(), metrics = new TestExecutorMetrics(), useCppSimulator = false) {
|
|
39
|
+
static async create(worldStateService, globals = defaultGlobals(), metrics = new TestExecutorMetrics(), useCppSimulator = false, config = defaultConfig) {
|
|
39
40
|
const contractDataSource = new SimpleContractDataSource();
|
|
40
41
|
const merkleTree = await worldStateService.fork();
|
|
41
|
-
return new PublicTxSimulationTester(merkleTree, contractDataSource, globals, metrics, useCppSimulator);
|
|
42
|
+
return new PublicTxSimulationTester(merkleTree, contractDataSource, globals, metrics, useCppSimulator, config);
|
|
42
43
|
}
|
|
43
44
|
setMetricsPrefix(prefix) {
|
|
44
45
|
this.metricsPrefix = prefix;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cpp_public_tx_simulator.d.ts","sourceRoot":"","sources":["../../../src/public/public_tx_simulator/cpp_public_tx_simulator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAIlE,OAAO,EAIL,KAAK,qBAAqB,EAC1B,cAAc,EAEf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAkB,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAK5E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AACjF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EACV,kCAAkC,EAClC,0BAA0B,EAC3B,MAAM,oCAAoC,CAAC;AAE5C;;;;;;;GAOG;AACH,qBAAa,oBAAqB,SAAQ,iBAAkB,YAAW,0BAA0B;IAC/F,UAAmB,GAAG,EAAE,MAAM,CAAC;gBAG7B,UAAU,EAAE,yBAAyB,EACrC,WAAW,EAAE,iBAAiB,EAC9B,eAAe,EAAE,eAAe,EAChC,MAAM,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC;IAMzC;;;;;OAKG;IACmB,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"cpp_public_tx_simulator.d.ts","sourceRoot":"","sources":["../../../src/public/public_tx_simulator/cpp_public_tx_simulator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAIlE,OAAO,EAIL,KAAK,qBAAqB,EAC1B,cAAc,EAEf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAkB,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAK5E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AACjF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EACV,kCAAkC,EAClC,0BAA0B,EAC3B,MAAM,oCAAoC,CAAC;AAE5C;;;;;;;GAOG;AACH,qBAAa,oBAAqB,SAAQ,iBAAkB,YAAW,0BAA0B;IAC/F,UAAmB,GAAG,EAAE,MAAM,CAAC;gBAG7B,UAAU,EAAE,yBAAyB,EACrC,WAAW,EAAE,iBAAiB,EAC9B,eAAe,EAAE,eAAe,EAChC,MAAM,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC;IAMzC;;;;;OAKG;IACmB,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC;CAoHhE;AAED,qBAAa,4BAA6B,SAAQ,oBAAqB,YAAW,kCAAkC;IAKhH,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,wBAAwB;gBAHpD,UAAU,EAAE,yBAAyB,EACrC,WAAW,EAAE,iBAAiB,EAC9B,eAAe,EAAE,eAAe,EACb,OAAO,EAAE,wBAAwB,EACpD,MAAM,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC;IAKnB,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,GAAE,MAAsB,GAAG,OAAO,CAAC,cAAc,CAAC;CAUjG;AAED;;;;;GAKG;AACH,qBAAa,6BAA8B,SAAQ,iBAAkB,YAAW,0BAA0B;IACxG,UAAmB,GAAG,EAAE,MAAM,CAAC;gBAG7B,UAAU,EAAE,yBAAyB,EACrC,WAAW,EAAE,iBAAiB,EAC9B,eAAe,EAAE,eAAe,EAChC,MAAM,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC;IAMzC;;;;;;;;;OASG;IACmB,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC;CA+ChE;AAED;;;;;;GAMG;AACH,qBAAa,qCACX,SAAQ,6BACR,YAAW,kCAAkC;IAM3C,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,wBAAwB;gBAHpD,UAAU,EAAE,yBAAyB,EACrC,WAAW,EAAE,iBAAiB,EAC9B,eAAe,EAAE,eAAe,EACb,OAAO,EAAE,wBAAwB,EACpD,MAAM,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC;IAKnB,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,GAAE,MAAsB,GAAG,OAAO,CAAC,cAAc,CAAC;CAUjG"}
|
|
@@ -95,8 +95,10 @@ import { PublicTxSimulator } from './public_tx_simulator.js';
|
|
|
95
95
|
assert(cppResult.gasUsed.teardownGas.equals(tsResult.gasUsed.teardownGas));
|
|
96
96
|
assert(cppResult.gasUsed.billedGas.equals(tsResult.gasUsed.billedGas));
|
|
97
97
|
assert(cppResult.publicInputs.toBuffer().equals(tsResult.publicInputs.toBuffer()));
|
|
98
|
-
|
|
99
|
-
|
|
98
|
+
if (this.config?.collectCallMetadata) {
|
|
99
|
+
assert(cppResult.appLogicReturnValues.length == tsResult.appLogicReturnValues.length);
|
|
100
|
+
assert(cppResult.appLogicReturnValues.every((v, i)=>v.equals(tsResult.appLogicReturnValues[i])));
|
|
101
|
+
}
|
|
100
102
|
// Confirm that tree roots match
|
|
101
103
|
const cppStateRef = await this.merkleTree.getStateReference();
|
|
102
104
|
assert(cppStateRef.equals(tsStateRef), `Tree roots mismatch between TS and C++ public simulations for tx ${txHash}`);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/simulator",
|
|
3
|
-
"version": "3.0.0-nightly.
|
|
3
|
+
"version": "3.0.0-nightly.20251124",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
"./server": "./dest/server.js",
|
|
@@ -64,26 +64,26 @@
|
|
|
64
64
|
]
|
|
65
65
|
},
|
|
66
66
|
"dependencies": {
|
|
67
|
-
"@aztec/constants": "3.0.0-nightly.
|
|
68
|
-
"@aztec/foundation": "3.0.0-nightly.
|
|
69
|
-
"@aztec/native": "3.0.0-nightly.
|
|
70
|
-
"@aztec/noir-acvm_js": "3.0.0-nightly.
|
|
71
|
-
"@aztec/noir-noirc_abi": "3.0.0-nightly.
|
|
72
|
-
"@aztec/noir-protocol-circuits-types": "3.0.0-nightly.
|
|
73
|
-
"@aztec/noir-types": "3.0.0-nightly.
|
|
74
|
-
"@aztec/protocol-contracts": "3.0.0-nightly.
|
|
75
|
-
"@aztec/stdlib": "3.0.0-nightly.
|
|
76
|
-
"@aztec/telemetry-client": "3.0.0-nightly.
|
|
77
|
-
"@aztec/world-state": "3.0.0-nightly.
|
|
67
|
+
"@aztec/constants": "3.0.0-nightly.20251124",
|
|
68
|
+
"@aztec/foundation": "3.0.0-nightly.20251124",
|
|
69
|
+
"@aztec/native": "3.0.0-nightly.20251124",
|
|
70
|
+
"@aztec/noir-acvm_js": "3.0.0-nightly.20251124",
|
|
71
|
+
"@aztec/noir-noirc_abi": "3.0.0-nightly.20251124",
|
|
72
|
+
"@aztec/noir-protocol-circuits-types": "3.0.0-nightly.20251124",
|
|
73
|
+
"@aztec/noir-types": "3.0.0-nightly.20251124",
|
|
74
|
+
"@aztec/protocol-contracts": "3.0.0-nightly.20251124",
|
|
75
|
+
"@aztec/stdlib": "3.0.0-nightly.20251124",
|
|
76
|
+
"@aztec/telemetry-client": "3.0.0-nightly.20251124",
|
|
77
|
+
"@aztec/world-state": "3.0.0-nightly.20251124",
|
|
78
78
|
"lodash.clonedeep": "^4.5.0",
|
|
79
79
|
"lodash.merge": "^4.6.2",
|
|
80
80
|
"tslib": "^2.4.0"
|
|
81
81
|
},
|
|
82
82
|
"devDependencies": {
|
|
83
|
-
"@aztec/kv-store": "3.0.0-nightly.
|
|
84
|
-
"@aztec/merkle-tree": "3.0.0-nightly.
|
|
85
|
-
"@aztec/noir-contracts.js": "3.0.0-nightly.
|
|
86
|
-
"@aztec/noir-test-contracts.js": "3.0.0-nightly.
|
|
83
|
+
"@aztec/kv-store": "3.0.0-nightly.20251124",
|
|
84
|
+
"@aztec/merkle-tree": "3.0.0-nightly.20251124",
|
|
85
|
+
"@aztec/noir-contracts.js": "3.0.0-nightly.20251124",
|
|
86
|
+
"@aztec/noir-test-contracts.js": "3.0.0-nightly.20251124",
|
|
87
87
|
"@jest/globals": "^30.0.0",
|
|
88
88
|
"@types/jest": "^30.0.0",
|
|
89
89
|
"@types/lodash.clonedeep": "^4.5.7",
|
|
@@ -36,6 +36,14 @@ export type TestEnqueuedCall = {
|
|
|
36
36
|
contractArtifact?: ContractArtifact;
|
|
37
37
|
};
|
|
38
38
|
|
|
39
|
+
const defaultConfig: PublicSimulatorConfig = PublicSimulatorConfig.from({
|
|
40
|
+
skipFeeEnforcement: false,
|
|
41
|
+
collectCallMetadata: true,
|
|
42
|
+
collectDebugLogs: true,
|
|
43
|
+
collectHints: false,
|
|
44
|
+
collectStatistics: false,
|
|
45
|
+
});
|
|
46
|
+
|
|
39
47
|
/**
|
|
40
48
|
* A test class that extends the BaseAvmSimulationTester to enable real-app testing of the PublicTxSimulator.
|
|
41
49
|
* It provides an interface for simulating one transaction at a time and maintains state between subsequent
|
|
@@ -52,16 +60,11 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
|
|
|
52
60
|
globals: GlobalVariables = defaultGlobals(),
|
|
53
61
|
private metrics: TestExecutorMetrics = new TestExecutorMetrics(),
|
|
54
62
|
useCppSimulator: boolean = false,
|
|
63
|
+
config: PublicSimulatorConfig = defaultConfig,
|
|
55
64
|
) {
|
|
56
65
|
super(contractDataSource, merkleTree);
|
|
57
66
|
|
|
58
67
|
const contractsDB = new PublicContractsDB(contractDataSource);
|
|
59
|
-
const config = PublicSimulatorConfig.from({
|
|
60
|
-
skipFeeEnforcement: false,
|
|
61
|
-
collectDebugLogs: true,
|
|
62
|
-
collectHints: false,
|
|
63
|
-
collectStatistics: false,
|
|
64
|
-
});
|
|
65
68
|
this.simulator = useCppSimulator
|
|
66
69
|
? new MeasuredCppPublicTxSimulator(merkleTree, contractsDB, globals, this.metrics, config)
|
|
67
70
|
: new MeasuredPublicTxSimulator(merkleTree, contractsDB, globals, this.metrics, config);
|
|
@@ -72,10 +75,11 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
|
|
|
72
75
|
globals: GlobalVariables = defaultGlobals(),
|
|
73
76
|
metrics: TestExecutorMetrics = new TestExecutorMetrics(),
|
|
74
77
|
useCppSimulator = false,
|
|
78
|
+
config: PublicSimulatorConfig = defaultConfig,
|
|
75
79
|
): Promise<PublicTxSimulationTester> {
|
|
76
80
|
const contractDataSource = new SimpleContractDataSource();
|
|
77
81
|
const merkleTree = await worldStateService.fork();
|
|
78
|
-
return new PublicTxSimulationTester(merkleTree, contractDataSource, globals, metrics, useCppSimulator);
|
|
82
|
+
return new PublicTxSimulationTester(merkleTree, contractDataSource, globals, metrics, useCppSimulator, config);
|
|
79
83
|
}
|
|
80
84
|
|
|
81
85
|
public setMetricsPrefix(prefix: string) {
|
|
@@ -147,8 +147,10 @@ export class CppPublicTxSimulator extends PublicTxSimulator implements PublicTxS
|
|
|
147
147
|
assert(cppResult.gasUsed.teardownGas.equals(tsResult.gasUsed.teardownGas));
|
|
148
148
|
assert(cppResult.gasUsed.billedGas.equals(tsResult.gasUsed.billedGas));
|
|
149
149
|
assert(cppResult.publicInputs.toBuffer().equals(tsResult.publicInputs.toBuffer()));
|
|
150
|
-
|
|
151
|
-
|
|
150
|
+
if (this.config?.collectCallMetadata) {
|
|
151
|
+
assert(cppResult.appLogicReturnValues.length == tsResult.appLogicReturnValues.length);
|
|
152
|
+
assert(cppResult.appLogicReturnValues.every((v, i) => v.equals(tsResult.appLogicReturnValues[i])));
|
|
153
|
+
}
|
|
152
154
|
|
|
153
155
|
// Confirm that tree roots match
|
|
154
156
|
const cppStateRef = await this.merkleTree.getStateReference();
|