@aztec/simulator 0.69.1-devnet → 0.70.0
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/acvm/acvm.d.ts +1 -2
- package/dest/acvm/acvm.d.ts.map +1 -1
- package/dest/acvm/index.d.ts +1 -1
- package/dest/acvm/index.d.ts.map +1 -1
- package/dest/acvm/index.js +2 -2
- package/dest/acvm/oracle/oracle.d.ts +4 -4
- package/dest/acvm/oracle/oracle.d.ts.map +1 -1
- package/dest/acvm/oracle/oracle.js +14 -14
- package/dest/acvm/oracle/typed_oracle.d.ts +6 -16
- package/dest/acvm/oracle/typed_oracle.d.ts.map +1 -1
- package/dest/acvm/oracle/typed_oracle.js +10 -20
- package/dest/avm/avm_simulator.d.ts.map +1 -1
- package/dest/avm/avm_simulator.js +7 -2
- package/dest/avm/fixtures/index.d.ts +1 -1
- package/dest/avm/fixtures/index.d.ts.map +1 -1
- package/dest/avm/fixtures/index.js +2 -2
- package/dest/avm/journal/nullifiers.d.ts +1 -1
- package/dest/avm/journal/nullifiers.d.ts.map +1 -1
- package/dest/avm/journal/public_storage.d.ts +1 -1
- package/dest/avm/journal/public_storage.d.ts.map +1 -1
- package/dest/client/client_execution_context.d.ts +29 -18
- package/dest/client/client_execution_context.d.ts.map +1 -1
- package/dest/client/client_execution_context.js +42 -29
- package/dest/client/execution_note_cache.d.ts +27 -4
- package/dest/client/execution_note_cache.d.ts.map +1 -1
- package/dest/client/execution_note_cache.js +62 -12
- package/dest/client/index.d.ts +11 -3
- package/dest/client/index.d.ts.map +1 -1
- package/dest/client/index.js +11 -4
- package/dest/client/private_execution.d.ts +3 -2
- package/dest/client/private_execution.d.ts.map +1 -1
- package/dest/client/private_execution.js +9 -7
- package/dest/client/simulator.d.ts +4 -2
- package/dest/client/simulator.d.ts.map +1 -1
- package/dest/client/simulator.js +13 -8
- package/dest/client/unconstrained_execution.d.ts +2 -1
- package/dest/client/unconstrained_execution.d.ts.map +1 -1
- package/dest/client/unconstrained_execution.js +6 -4
- package/dest/client/view_data_oracle.d.ts +1 -1
- package/dest/common/hashed_values_cache.d.ts +28 -0
- package/dest/common/hashed_values_cache.d.ts.map +1 -0
- package/dest/common/{packed_values_cache.js → hashed_values_cache.js} +22 -22
- package/dest/common/index.d.ts +1 -1
- package/dest/common/index.js +1 -1
- package/dest/common/message_load_oracle_inputs.d.ts +15 -0
- package/dest/common/message_load_oracle_inputs.d.ts.map +1 -0
- package/dest/common/message_load_oracle_inputs.js +15 -0
- package/dest/common/simulation_provider.d.ts +19 -0
- package/dest/common/simulation_provider.d.ts.map +1 -0
- package/dest/common/simulation_provider.js +27 -0
- package/dest/common.d.ts +2 -0
- package/dest/common.d.ts.map +1 -0
- package/dest/common.js +2 -0
- package/dest/providers/acvm_native.d.ts +5 -2
- package/dest/providers/acvm_native.d.ts.map +1 -1
- package/dest/providers/acvm_native.js +5 -2
- package/dest/providers/acvm_wasm.d.ts +8 -2
- package/dest/providers/acvm_wasm.d.ts.map +1 -1
- package/dest/providers/acvm_wasm.js +31 -5
- package/dest/providers/acvm_wasm_with_blobs.d.ts +14 -2
- package/dest/providers/acvm_wasm_with_blobs.d.ts.map +1 -1
- package/dest/providers/acvm_wasm_with_blobs.js +24 -4
- package/dest/providers/factory.d.ts +1 -1
- package/dest/providers/factory.d.ts.map +1 -1
- package/dest/providers/factory.js +1 -1
- package/dest/providers/index.d.ts +1 -1
- package/dest/providers/index.d.ts.map +1 -1
- package/dest/providers/index.js +2 -2
- package/dest/public/db_interfaces.d.ts +1 -1
- package/dest/public/db_interfaces.d.ts.map +1 -1
- package/dest/public/fixtures/index.d.ts +3 -3
- package/dest/public/fixtures/index.d.ts.map +1 -1
- package/dest/public/fixtures/index.js +48 -18
- package/dest/public/public_db_sources.d.ts +2 -1
- package/dest/public/public_db_sources.d.ts.map +1 -1
- package/dest/public/public_db_sources.js +2 -2
- package/dest/public/public_tx_simulator.js +2 -2
- package/{src/index.ts → dest/server.d.ts} +1 -2
- package/dest/server.d.ts.map +1 -0
- package/dest/server.js +6 -0
- package/package.json +11 -12
- package/src/acvm/acvm.ts +1 -1
- package/src/acvm/index.ts +1 -1
- package/src/acvm/oracle/oracle.ts +14 -14
- package/src/acvm/oracle/typed_oracle.ts +12 -20
- package/src/avm/avm_simulator.ts +6 -1
- package/src/avm/fixtures/index.ts +2 -1
- package/src/avm/journal/nullifiers.ts +1 -1
- package/src/avm/journal/public_storage.ts +1 -1
- package/src/client/client_execution_context.ts +47 -30
- package/src/client/execution_note_cache.ts +67 -14
- package/src/client/index.ts +11 -3
- package/src/client/private_execution.ts +21 -17
- package/src/client/simulator.ts +20 -7
- package/src/client/unconstrained_execution.ts +17 -13
- package/src/common/hashed_values_cache.ts +55 -0
- package/src/common/index.ts +1 -1
- package/src/common/message_load_oracle_inputs.ts +15 -0
- package/src/common/simulation_provider.ts +45 -0
- package/src/common.ts +1 -0
- package/src/providers/acvm_native.ts +12 -2
- package/src/providers/acvm_wasm.ts +36 -9
- package/src/providers/acvm_wasm_with_blobs.ts +34 -9
- package/src/providers/factory.ts +1 -1
- package/src/providers/index.ts +1 -1
- package/src/public/db_interfaces.ts +1 -1
- package/src/public/fixtures/index.ts +62 -26
- package/src/public/public_db_sources.ts +3 -6
- package/src/public/public_tx_simulator.ts +1 -1
- package/{dest/index.d.ts → src/server.ts} +0 -3
- package/dest/common/packed_values_cache.d.ts +0 -28
- package/dest/common/packed_values_cache.d.ts.map +0 -1
- package/dest/index.d.ts.map +0 -1
- package/dest/index.js +0 -8
- package/dest/providers/simulation_provider.d.ts +0 -9
- package/dest/providers/simulation_provider.d.ts.map +0 -1
- package/dest/providers/simulation_provider.js +0 -2
- package/src/common/packed_values_cache.ts +0 -55
- package/src/providers/simulation_provider.ts +0 -10
|
@@ -203,7 +203,7 @@ let PublicTxSimulator = (() => {
|
|
|
203
203
|
/*transactionFee=*/ context.getTransactionFee(phase), fnName);
|
|
204
204
|
const gasUsed = allocatedGas.sub(result.gasLeft); // by enqueued call
|
|
205
205
|
context.consumeGas(phase, gasUsed);
|
|
206
|
-
this.log.debug(`Simulated enqueued public call consumed ${gasUsed.l2Gas} L2 gas ending with ${result.gasLeft.l2Gas} L2 gas left.`);
|
|
206
|
+
this.log.debug(`Simulated enqueued public call (${fnName}) consumed ${gasUsed.l2Gas} L2 gas ending with ${result.gasLeft.l2Gas} L2 gas left.`);
|
|
207
207
|
stateManager.traceEnqueuedCall(callRequest, executionRequest.args, result.reverted);
|
|
208
208
|
if (result.reverted) {
|
|
209
209
|
const culprit = `${executionRequest.callContext.contractAddress}:${executionRequest.callContext.functionSelector}`;
|
|
@@ -333,4 +333,4 @@ let PublicTxSimulator = (() => {
|
|
|
333
333
|
_a;
|
|
334
334
|
})();
|
|
335
335
|
export { PublicTxSimulator };
|
|
336
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX3R4X3NpbXVsYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMvcHVibGljX3R4X3NpbXVsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUlMLHlCQUF5QixFQUl6QixnQkFBZ0IsRUFDaEIseUJBQXlCLEdBQzFCLE1BQU0sc0JBQXNCLENBQUM7QUFHOUIsT0FBTyxFQUFlLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsVUFBVSxFQUFxQyxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRyxPQUFPLEVBQUUsTUFBTSxJQUFJLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUcxQyxPQUFPLEVBQW1DLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7SUFvQjVDLGlCQUFpQjs7Ozs7c0JBQWpCLGlCQUFpQjtZQUs1QixZQUNVLEVBQTRCLEVBQzVCLFlBQTBCLEVBQ2xDLGVBQWdDLEVBQ3hCLGVBQWdDLEVBQ2hDLHFCQUE4QixLQUFLLEVBQ25DLG9CQUE2QixJQUFJO2dCQUxqQyxPQUFFLElBTkQsbURBQWlCLEVBTWxCLEVBQUUsRUFBMEI7Z0JBQzVCLGlCQUFZLEdBQVosWUFBWSxDQUFj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
|
|
336
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX3R4X3NpbXVsYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMvcHVibGljX3R4X3NpbXVsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUlMLHlCQUF5QixFQUl6QixnQkFBZ0IsRUFDaEIseUJBQXlCLEdBQzFCLE1BQU0sc0JBQXNCLENBQUM7QUFHOUIsT0FBTyxFQUFlLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsVUFBVSxFQUFxQyxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRyxPQUFPLEVBQUUsTUFBTSxJQUFJLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUcxQyxPQUFPLEVBQW1DLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7SUFvQjVDLGlCQUFpQjs7Ozs7c0JBQWpCLGlCQUFpQjtZQUs1QixZQUNVLEVBQTRCLEVBQzVCLFlBQTBCLEVBQ2xDLGVBQWdDLEVBQ3hCLGVBQWdDLEVBQ2hDLHFCQUE4QixLQUFLLEVBQ25DLG9CQUE2QixJQUFJO2dCQUxqQyxPQUFFLElBTkQsbURBQWlCLEVBTWxCLEVBQUUsRUFBMEI7Z0JBQzVCLGlCQUFZLEdBQVosWUFBWSxDQUFj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
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
export * from './acvm/index.js';
|
|
2
1
|
export * from './avm/index.js';
|
|
3
|
-
export * from './client/index.js';
|
|
4
2
|
export * from './common/index.js';
|
|
5
3
|
export * from './public/index.js';
|
|
6
4
|
export * from './providers/index.js';
|
|
7
5
|
export * from './stats/index.js';
|
|
6
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC"}
|
package/dest/server.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export * from './avm/index.js';
|
|
2
|
+
export * from './common/index.js';
|
|
3
|
+
export * from './public/index.js';
|
|
4
|
+
export * from './providers/index.js';
|
|
5
|
+
export * from './stats/index.js';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3NlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsa0JBQWtCLENBQUMifQ==
|
package/package.json
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/simulator",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.70.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
|
-
"
|
|
6
|
+
"./common": "./dest/common.js",
|
|
7
|
+
"./server": "./dest/server.js",
|
|
7
8
|
"./client": "./dest/client/index.js",
|
|
8
|
-
"./acvm": "./dest/acvm/index.js",
|
|
9
|
-
"./errors": "./dest/common/errors.js",
|
|
10
9
|
"./public/fixtures": "./dest/public/fixtures/index.js"
|
|
11
10
|
},
|
|
12
11
|
"typedocOptions": {
|
|
@@ -61,14 +60,14 @@
|
|
|
61
60
|
]
|
|
62
61
|
},
|
|
63
62
|
"dependencies": {
|
|
64
|
-
"@aztec/circuit-types": "0.
|
|
65
|
-
"@aztec/circuits.js": "0.
|
|
66
|
-
"@aztec/foundation": "0.
|
|
67
|
-
"@aztec/noir-protocol-circuits-types": "0.
|
|
68
|
-
"@aztec/protocol-contracts": "0.
|
|
69
|
-
"@aztec/telemetry-client": "0.
|
|
70
|
-
"@aztec/types": "0.
|
|
71
|
-
"@aztec/world-state": "0.
|
|
63
|
+
"@aztec/circuit-types": "0.70.0",
|
|
64
|
+
"@aztec/circuits.js": "0.70.0",
|
|
65
|
+
"@aztec/foundation": "0.70.0",
|
|
66
|
+
"@aztec/noir-protocol-circuits-types": "0.70.0",
|
|
67
|
+
"@aztec/protocol-contracts": "0.70.0",
|
|
68
|
+
"@aztec/telemetry-client": "0.70.0",
|
|
69
|
+
"@aztec/types": "0.70.0",
|
|
70
|
+
"@aztec/world-state": "0.70.0",
|
|
72
71
|
"@noir-lang/acvm_js": "portal:../../noir/packages/acvm_js",
|
|
73
72
|
"@noir-lang/noirc_abi": "portal:../../noir/packages/noirc_abi",
|
|
74
73
|
"@noir-lang/types": "portal:../../noir/packages/types",
|
package/src/acvm/acvm.ts
CHANGED
package/src/acvm/index.ts
CHANGED
|
@@ -22,25 +22,20 @@ export class Oracle {
|
|
|
22
22
|
return toACVMField(val);
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
async
|
|
26
|
-
const
|
|
27
|
-
return toACVMField(
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
async packArguments(_length: ACVMField[], values: ACVMField[]): Promise<ACVMField> {
|
|
31
|
-
const packed = await this.typedOracle.packArgumentsArray(values.map(fromACVMField));
|
|
32
|
-
return toACVMField(packed);
|
|
25
|
+
async storeArrayInExecutionCache(values: ACVMField[]): Promise<ACVMField> {
|
|
26
|
+
const hash = await this.typedOracle.storeArrayInExecutionCache(values.map(fromACVMField));
|
|
27
|
+
return toACVMField(hash);
|
|
33
28
|
}
|
|
34
29
|
|
|
35
30
|
// Since the argument is a slice, noir automatically adds a length field to oracle call.
|
|
36
|
-
async
|
|
37
|
-
const
|
|
38
|
-
return toACVMField(
|
|
31
|
+
async storeInExecutionCache(_length: ACVMField[], values: ACVMField[]): Promise<ACVMField> {
|
|
32
|
+
const hash = await this.typedOracle.storeInExecutionCache(values.map(fromACVMField));
|
|
33
|
+
return toACVMField(hash);
|
|
39
34
|
}
|
|
40
35
|
|
|
41
|
-
async
|
|
42
|
-
const
|
|
43
|
-
return
|
|
36
|
+
async loadFromExecutionCache([returnsHash]: ACVMField[]): Promise<ACVMField[]> {
|
|
37
|
+
const values = await this.typedOracle.loadFromExecutionCache(fromACVMField(returnsHash));
|
|
38
|
+
return values.map(toACVMField);
|
|
44
39
|
}
|
|
45
40
|
|
|
46
41
|
async getBlockNumber(): Promise<ACVMField> {
|
|
@@ -258,6 +253,11 @@ export class Oracle {
|
|
|
258
253
|
return toACVMField(0);
|
|
259
254
|
}
|
|
260
255
|
|
|
256
|
+
async notifyCreatedNullifier([innerNullifier]: ACVMField[]): Promise<ACVMField> {
|
|
257
|
+
await this.typedOracle.notifyCreatedNullifier(fromACVMField(innerNullifier));
|
|
258
|
+
return toACVMField(0);
|
|
259
|
+
}
|
|
260
|
+
|
|
261
261
|
async checkNullifierExists([innerNullifier]: ACVMField[]): Promise<ACVMField> {
|
|
262
262
|
const exists = await this.typedOracle.checkNullifierExists(fromACVMField(innerNullifier));
|
|
263
263
|
return toACVMField(exists);
|
|
@@ -5,7 +5,6 @@ import {
|
|
|
5
5
|
type NoteStatus,
|
|
6
6
|
type NullifierMembershipWitness,
|
|
7
7
|
type PublicDataWitness,
|
|
8
|
-
type SiblingPath,
|
|
9
8
|
type UnencryptedL2Log,
|
|
10
9
|
} from '@aztec/circuit-types';
|
|
11
10
|
import {
|
|
@@ -19,6 +18,8 @@ import { type FunctionSelector, type NoteSelector } from '@aztec/foundation/abi'
|
|
|
19
18
|
import { type AztecAddress } from '@aztec/foundation/aztec-address';
|
|
20
19
|
import { Fr } from '@aztec/foundation/fields';
|
|
21
20
|
|
|
21
|
+
import { type MessageLoadOracleInputs } from '../../common/message_load_oracle_inputs.js';
|
|
22
|
+
|
|
22
23
|
/**
|
|
23
24
|
* Information about a note needed during execution.
|
|
24
25
|
*/
|
|
@@ -39,19 +40,6 @@ export interface NoteData {
|
|
|
39
40
|
index?: bigint;
|
|
40
41
|
}
|
|
41
42
|
|
|
42
|
-
export class MessageLoadOracleInputs<N extends number> {
|
|
43
|
-
constructor(
|
|
44
|
-
/** The index of the message commitment in the merkle tree. */
|
|
45
|
-
public index: bigint,
|
|
46
|
-
/** The path in the merkle tree to the message. */
|
|
47
|
-
public siblingPath: SiblingPath<N>,
|
|
48
|
-
) {}
|
|
49
|
-
|
|
50
|
-
toFields(): Fr[] {
|
|
51
|
-
return [new Fr(this.index), ...this.siblingPath.toFields()];
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
43
|
class OracleMethodNotAvailableError extends Error {
|
|
56
44
|
constructor(methodName: string) {
|
|
57
45
|
super(`Oracle method ${methodName} is not available.`);
|
|
@@ -68,16 +56,16 @@ export abstract class TypedOracle {
|
|
|
68
56
|
return Fr.random();
|
|
69
57
|
}
|
|
70
58
|
|
|
71
|
-
|
|
72
|
-
throw new OracleMethodNotAvailableError('
|
|
59
|
+
storeArrayInExecutionCache(_args: Fr[]): Promise<Fr> {
|
|
60
|
+
throw new OracleMethodNotAvailableError('storeArrayInExecutionCache');
|
|
73
61
|
}
|
|
74
62
|
|
|
75
|
-
|
|
76
|
-
throw new OracleMethodNotAvailableError('
|
|
63
|
+
storeInExecutionCache(_values: Fr[]): Promise<Fr> {
|
|
64
|
+
throw new OracleMethodNotAvailableError('storeInExecutionCache');
|
|
77
65
|
}
|
|
78
66
|
|
|
79
|
-
|
|
80
|
-
throw new OracleMethodNotAvailableError('
|
|
67
|
+
loadFromExecutionCache(_hash: Fr): Promise<Fr[]> {
|
|
68
|
+
throw new OracleMethodNotAvailableError('loadFromExecutionCache');
|
|
81
69
|
}
|
|
82
70
|
|
|
83
71
|
getBlockNumber(): Promise<number> {
|
|
@@ -166,6 +154,10 @@ export abstract class TypedOracle {
|
|
|
166
154
|
throw new OracleMethodNotAvailableError('notifyNullifiedNote');
|
|
167
155
|
}
|
|
168
156
|
|
|
157
|
+
notifyCreatedNullifier(_innerNullifier: Fr): Promise<void> {
|
|
158
|
+
throw new OracleMethodNotAvailableError('notifyCreatedNullifier');
|
|
159
|
+
}
|
|
160
|
+
|
|
169
161
|
checkNullifierExists(_innerNullifier: Fr): Promise<boolean> {
|
|
170
162
|
throw new OracleMethodNotAvailableError('checkNullifierExists');
|
|
171
163
|
}
|
package/src/avm/avm_simulator.ts
CHANGED
|
@@ -137,6 +137,7 @@ export class AvmSimulator {
|
|
|
137
137
|
this.bytecode = bytecode;
|
|
138
138
|
|
|
139
139
|
const { machineState } = this.context;
|
|
140
|
+
const callStartGas = machineState.gasLeft; // Save gas before executing instruction (for profiling)
|
|
140
141
|
try {
|
|
141
142
|
// Execute instruction pointed to by the current program counter
|
|
142
143
|
// continuing until the machine state signifies a halt
|
|
@@ -180,7 +181,11 @@ export class AvmSimulator {
|
|
|
180
181
|
const revertReason = reverted ? await revertReasonFromExplicitRevert(output, this.context) : undefined;
|
|
181
182
|
const results = new AvmContractCallResult(reverted, output, machineState.gasLeft, revertReason);
|
|
182
183
|
this.log.debug(`Context execution results: ${results.toString()}`);
|
|
183
|
-
|
|
184
|
+
const totalGasUsed: Gas = {
|
|
185
|
+
l2Gas: callStartGas.l2Gas - machineState.l2GasLeft,
|
|
186
|
+
daGas: callStartGas.daGas - machineState.daGasLeft,
|
|
187
|
+
};
|
|
188
|
+
this.log.debug(`Executed ${instrCounter} instructions and consumed ${totalGasUsed.l2Gas} L2 Gas`);
|
|
184
189
|
|
|
185
190
|
this.tallyPrintFunction();
|
|
186
191
|
// Return results for processing by calling context
|
|
@@ -10,8 +10,9 @@ import { strict as assert } from 'assert';
|
|
|
10
10
|
import { mock } from 'jest-mock-extended';
|
|
11
11
|
import merge from 'lodash.merge';
|
|
12
12
|
|
|
13
|
-
import {
|
|
13
|
+
import { resolveAssertionMessageFromRevertData, traverseCauseChain } from '../../common.js';
|
|
14
14
|
import { type PublicSideEffectTraceInterface } from '../../public/side_effect_trace_interface.js';
|
|
15
|
+
import { type WorldStateDB } from '../../server.js';
|
|
15
16
|
import { AvmContext } from '../avm_context.js';
|
|
16
17
|
import { AvmExecutionEnvironment } from '../avm_execution_environment.js';
|
|
17
18
|
import { AvmMachineState } from '../avm_machine_state.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Fr } from '@aztec/foundation/fields';
|
|
2
2
|
|
|
3
|
-
import type { CommitmentsDB } from '../../
|
|
3
|
+
import type { CommitmentsDB } from '../../server.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* A class to manage new nullifier staging and existence checks during a contract call's AVM simulation.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type AztecAddress } from '@aztec/circuits.js';
|
|
2
2
|
import { Fr } from '@aztec/foundation/fields';
|
|
3
3
|
|
|
4
|
-
import type { PublicStateDB } from '../../
|
|
4
|
+
import type { PublicStateDB } from '../../server.js';
|
|
5
5
|
|
|
6
6
|
type PublicStorageReadResult = {
|
|
7
7
|
value: Fr;
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
Note,
|
|
7
7
|
NoteAndSlot,
|
|
8
8
|
type NoteStatus,
|
|
9
|
-
type
|
|
9
|
+
type PrivateCallExecutionResult,
|
|
10
10
|
PublicExecutionRequest,
|
|
11
11
|
type UnencryptedL2Log,
|
|
12
12
|
} from '@aztec/circuit-types';
|
|
@@ -26,7 +26,8 @@ import { Fr } from '@aztec/foundation/fields';
|
|
|
26
26
|
import { createLogger } from '@aztec/foundation/log';
|
|
27
27
|
|
|
28
28
|
import { type NoteData, toACVMWitness } from '../acvm/index.js';
|
|
29
|
-
import { type
|
|
29
|
+
import { type HashedValuesCache } from '../common/hashed_values_cache.js';
|
|
30
|
+
import { type SimulationProvider } from '../server.js';
|
|
30
31
|
import { type DBOracle } from './db_oracle.js';
|
|
31
32
|
import { type ExecutionNoteCache } from './execution_note_cache.js';
|
|
32
33
|
import { pickNotes } from './pick_notes.js';
|
|
@@ -57,7 +58,7 @@ export class ClientExecutionContext extends ViewDataOracle {
|
|
|
57
58
|
private noteHashLeafIndexMap: Map<bigint, bigint> = new Map();
|
|
58
59
|
private noteHashNullifierCounterMap: Map<number, number> = new Map();
|
|
59
60
|
private contractClassLogs: CountedContractClassLog[] = [];
|
|
60
|
-
private nestedExecutions:
|
|
61
|
+
private nestedExecutions: PrivateCallExecutionResult[] = [];
|
|
61
62
|
private enqueuedPublicFunctionCalls: CountedPublicExecutionRequest[] = [];
|
|
62
63
|
private publicTeardownFunctionCall: PublicExecutionRequest = PublicExecutionRequest.empty();
|
|
63
64
|
|
|
@@ -69,10 +70,11 @@ export class ClientExecutionContext extends ViewDataOracle {
|
|
|
69
70
|
protected readonly historicalHeader: BlockHeader,
|
|
70
71
|
/** List of transient auth witnesses to be used during this simulation */
|
|
71
72
|
authWitnesses: AuthWitness[],
|
|
72
|
-
private readonly
|
|
73
|
+
private readonly executionCache: HashedValuesCache,
|
|
73
74
|
private readonly noteCache: ExecutionNoteCache,
|
|
74
75
|
db: DBOracle,
|
|
75
76
|
private node: AztecNode,
|
|
77
|
+
private provider: SimulationProvider,
|
|
76
78
|
protected sideEffectCounter: number = 0,
|
|
77
79
|
log = createLogger('simulator:client_execution_context'),
|
|
78
80
|
scopes?: AztecAddress[],
|
|
@@ -90,7 +92,7 @@ export class ClientExecutionContext extends ViewDataOracle {
|
|
|
90
92
|
public getInitialWitness(abi: FunctionAbi) {
|
|
91
93
|
const argumentsSize = countArgumentsSize(abi);
|
|
92
94
|
|
|
93
|
-
const args = this.
|
|
95
|
+
const args = this.executionCache.getPreimage(this.argsHash);
|
|
94
96
|
|
|
95
97
|
if (args.length !== argumentsSize) {
|
|
96
98
|
throw new Error('Invalid arguments size');
|
|
@@ -159,27 +161,29 @@ export class ClientExecutionContext extends ViewDataOracle {
|
|
|
159
161
|
}
|
|
160
162
|
|
|
161
163
|
/**
|
|
162
|
-
*
|
|
163
|
-
* @param
|
|
164
|
+
* Store values in the execution cache.
|
|
165
|
+
* @param values - Values to store.
|
|
164
166
|
*/
|
|
165
|
-
public override
|
|
166
|
-
return Promise.resolve(this.
|
|
167
|
+
public override storeArrayInExecutionCache(args: Fr[]): Promise<Fr> {
|
|
168
|
+
return Promise.resolve(this.executionCache.store(args));
|
|
167
169
|
}
|
|
168
170
|
|
|
169
171
|
/**
|
|
170
|
-
*
|
|
171
|
-
* @param
|
|
172
|
+
* Store values in the execution cache.
|
|
173
|
+
* @param values - Values to store.
|
|
174
|
+
* @returns The hash of the values.
|
|
172
175
|
*/
|
|
173
|
-
public override
|
|
174
|
-
return Promise.resolve(this.
|
|
176
|
+
public override storeInExecutionCache(values: Fr[]): Promise<Fr> {
|
|
177
|
+
return Promise.resolve(this.executionCache.store(values));
|
|
175
178
|
}
|
|
176
179
|
|
|
177
180
|
/**
|
|
178
|
-
*
|
|
179
|
-
* @param
|
|
181
|
+
* Gets values from the execution cache.
|
|
182
|
+
* @param hash - Hash of the values.
|
|
183
|
+
* @returns The values.
|
|
180
184
|
*/
|
|
181
|
-
public override
|
|
182
|
-
return Promise.resolve(this.
|
|
185
|
+
public override loadFromExecutionCache(hash: Fr): Promise<Fr[]> {
|
|
186
|
+
return Promise.resolve(this.executionCache.getPreimage(hash));
|
|
183
187
|
}
|
|
184
188
|
|
|
185
189
|
/**
|
|
@@ -307,6 +311,17 @@ export class ClientExecutionContext extends ViewDataOracle {
|
|
|
307
311
|
return Promise.resolve();
|
|
308
312
|
}
|
|
309
313
|
|
|
314
|
+
/**
|
|
315
|
+
* Adding a siloed nullifier into the current set of all pending nullifiers created
|
|
316
|
+
* within the current transaction/execution.
|
|
317
|
+
* @param innerNullifier - The pending nullifier to add in the list (not yet siloed by contract address).
|
|
318
|
+
* @param noteHash - A hash of the new note.
|
|
319
|
+
*/
|
|
320
|
+
public override notifyCreatedNullifier(innerNullifier: Fr) {
|
|
321
|
+
this.noteCache.nullifierCreated(this.callContext.contractAddress, innerNullifier);
|
|
322
|
+
return Promise.resolve();
|
|
323
|
+
}
|
|
324
|
+
|
|
310
325
|
/**
|
|
311
326
|
* Emit a contract class unencrypted log.
|
|
312
327
|
* This fn exists because sha hashing the preimage
|
|
@@ -323,7 +338,7 @@ export class ClientExecutionContext extends ViewDataOracle {
|
|
|
323
338
|
return Fr.fromBuffer(log.hash());
|
|
324
339
|
}
|
|
325
340
|
|
|
326
|
-
#checkValidStaticCall(childExecutionResult:
|
|
341
|
+
#checkValidStaticCall(childExecutionResult: PrivateCallExecutionResult) {
|
|
327
342
|
if (
|
|
328
343
|
childExecutionResult.publicInputs.noteHashes.some(item => !item.isEmpty()) ||
|
|
329
344
|
childExecutionResult.publicInputs.nullifiers.some(item => !item.isEmpty()) ||
|
|
@@ -339,7 +354,7 @@ export class ClientExecutionContext extends ViewDataOracle {
|
|
|
339
354
|
* Calls a private function as a nested execution.
|
|
340
355
|
* @param targetContractAddress - The address of the contract to call.
|
|
341
356
|
* @param functionSelector - The function selector of the function to call.
|
|
342
|
-
* @param argsHash - The
|
|
357
|
+
* @param argsHash - The arguments hash to pass to the function.
|
|
343
358
|
* @param sideEffectCounter - The side effect counter at the start of the call.
|
|
344
359
|
* @param isStaticCall - Whether the call is a static call.
|
|
345
360
|
* @returns The execution result.
|
|
@@ -369,16 +384,18 @@ export class ClientExecutionContext extends ViewDataOracle {
|
|
|
369
384
|
derivedCallContext,
|
|
370
385
|
this.historicalHeader,
|
|
371
386
|
this.authWitnesses,
|
|
372
|
-
this.
|
|
387
|
+
this.executionCache,
|
|
373
388
|
this.noteCache,
|
|
374
389
|
this.db,
|
|
375
390
|
this.node,
|
|
391
|
+
this.provider,
|
|
376
392
|
sideEffectCounter,
|
|
377
393
|
this.log,
|
|
378
394
|
this.scopes,
|
|
379
395
|
);
|
|
380
396
|
|
|
381
397
|
const childExecutionResult = await executePrivateFunction(
|
|
398
|
+
this.provider,
|
|
382
399
|
context,
|
|
383
400
|
targetArtifact,
|
|
384
401
|
targetContractAddress,
|
|
@@ -402,7 +419,7 @@ export class ClientExecutionContext extends ViewDataOracle {
|
|
|
402
419
|
* Creates a PublicExecutionRequest object representing the request to call a public function.
|
|
403
420
|
* @param targetContractAddress - The address of the contract to call.
|
|
404
421
|
* @param functionSelector - The function selector of the function to call.
|
|
405
|
-
* @param argsHash - The
|
|
422
|
+
* @param argsHash - The arguments hash to pass to the function.
|
|
406
423
|
* @param sideEffectCounter - The side effect counter at the start of the call.
|
|
407
424
|
* @param isStaticCall - Whether the call is a static call.
|
|
408
425
|
* @returns The public call stack item with the request information.
|
|
@@ -417,7 +434,7 @@ export class ClientExecutionContext extends ViewDataOracle {
|
|
|
417
434
|
) {
|
|
418
435
|
const targetArtifact = await this.db.getFunctionArtifact(targetContractAddress, functionSelector);
|
|
419
436
|
const derivedCallContext = this.deriveCallContext(targetContractAddress, targetArtifact, isStaticCall);
|
|
420
|
-
const args = this.
|
|
437
|
+
const args = this.executionCache.getPreimage(argsHash);
|
|
421
438
|
|
|
422
439
|
this.log.verbose(
|
|
423
440
|
`Created ${callType} public execution request to ${targetArtifact.name}@${targetContractAddress}`,
|
|
@@ -448,7 +465,7 @@ export class ClientExecutionContext extends ViewDataOracle {
|
|
|
448
465
|
* of the execution are empty.
|
|
449
466
|
* @param targetContractAddress - The address of the contract to call.
|
|
450
467
|
* @param functionSelector - The function selector of the function to call.
|
|
451
|
-
* @param argsHash - The
|
|
468
|
+
* @param argsHash - The arguments hash to pass to the function.
|
|
452
469
|
* @param sideEffectCounter - The side effect counter at the start of the call.
|
|
453
470
|
* @param isStaticCall - Whether the call is a static call.
|
|
454
471
|
* @returns The public call stack item with the request information.
|
|
@@ -462,13 +479,13 @@ export class ClientExecutionContext extends ViewDataOracle {
|
|
|
462
479
|
): Promise<Fr> {
|
|
463
480
|
// TODO(https://github.com/AztecProtocol/aztec-packages/issues/8985): Fix this.
|
|
464
481
|
// WARNING: This is insecure and should be temporary!
|
|
465
|
-
// The oracle
|
|
482
|
+
// The oracle re-hashes the arguments and returns a new args_hash.
|
|
466
483
|
// new_args = [selector, ...old_args], so as to make it suitable to call the public dispatch function.
|
|
467
484
|
// We don't validate or compute it in the circuit because a) it's harder to do with slices, and
|
|
468
485
|
// b) this is only temporary.
|
|
469
|
-
const newArgsHash = this.
|
|
486
|
+
const newArgsHash = this.executionCache.store([
|
|
470
487
|
functionSelector.toField(),
|
|
471
|
-
...this.
|
|
488
|
+
...this.executionCache.getPreimage(argsHash),
|
|
472
489
|
]);
|
|
473
490
|
await this.createPublicExecutionRequest(
|
|
474
491
|
'enqueued',
|
|
@@ -487,7 +504,7 @@ export class ClientExecutionContext extends ViewDataOracle {
|
|
|
487
504
|
* of the execution are empty.
|
|
488
505
|
* @param targetContractAddress - The address of the contract to call.
|
|
489
506
|
* @param functionSelector - The function selector of the function to call.
|
|
490
|
-
* @param argsHash - The
|
|
507
|
+
* @param argsHash - The arguments hash to pass to the function.
|
|
491
508
|
* @param sideEffectCounter - The side effect counter at the start of the call.
|
|
492
509
|
* @param isStaticCall - Whether the call is a static call.
|
|
493
510
|
* @returns The public call stack item with the request information.
|
|
@@ -501,13 +518,13 @@ export class ClientExecutionContext extends ViewDataOracle {
|
|
|
501
518
|
): Promise<Fr> {
|
|
502
519
|
// TODO(https://github.com/AztecProtocol/aztec-packages/issues/8985): Fix this.
|
|
503
520
|
// WARNING: This is insecure and should be temporary!
|
|
504
|
-
// The oracle
|
|
521
|
+
// The oracle rehashes the arguments and returns a new args_hash.
|
|
505
522
|
// new_args = [selector, ...old_args], so as to make it suitable to call the public dispatch function.
|
|
506
523
|
// We don't validate or compute it in the circuit because a) it's harder to do with slices, and
|
|
507
524
|
// b) this is only temporary.
|
|
508
|
-
const newArgsHash = this.
|
|
525
|
+
const newArgsHash = this.executionCache.store([
|
|
509
526
|
functionSelector.toField(),
|
|
510
|
-
...this.
|
|
527
|
+
...this.executionCache.getPreimage(argsHash),
|
|
511
528
|
]);
|
|
512
529
|
await this.createPublicExecutionRequest(
|
|
513
530
|
'teardown',
|