@aztec/simulator 3.0.0-canary.a9708bd → 3.0.0-devnet.2
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/private/acvm_native.d.ts +1 -2
- package/dest/private/acvm_native.d.ts.map +1 -1
- package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts +1 -1
- package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts.map +1 -1
- package/dest/public/avm/avm_execution_environment.d.ts +2 -1
- package/dest/public/avm/avm_execution_environment.d.ts.map +1 -1
- package/dest/public/avm/avm_execution_environment.js +5 -2
- package/dest/public/avm/avm_gas.js +2 -2
- package/dest/public/avm/avm_memory_types.d.ts +6 -0
- package/dest/public/avm/avm_memory_types.d.ts.map +1 -1
- package/dest/public/avm/avm_memory_types.js +9 -2
- package/dest/public/avm/avm_simulator.d.ts +1 -1
- package/dest/public/avm/avm_simulator.d.ts.map +1 -1
- package/dest/public/avm/avm_simulator.js +14 -21
- package/dest/public/avm/errors.d.ts +5 -14
- package/dest/public/avm/errors.d.ts.map +1 -1
- package/dest/public/avm/errors.js +7 -20
- package/dest/public/avm/fixtures/avm_simulation_tester.d.ts +2 -1
- package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +1 -1
- package/dest/public/avm/fixtures/avm_simulation_tester.js +2 -3
- package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts +2 -0
- package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +1 -1
- package/dest/public/avm/fixtures/base_avm_simulation_tester.js +22 -0
- package/dest/public/avm/fixtures/initializers.d.ts.map +1 -1
- package/dest/public/avm/fixtures/initializers.js +2 -2
- package/dest/public/avm/opcodes/accrued_substate.d.ts +2 -2
- package/dest/public/avm/opcodes/accrued_substate.d.ts.map +1 -1
- package/dest/public/avm/opcodes/accrued_substate.js +7 -7
- package/dest/public/avm/opcodes/addressing_mode.d.ts.map +1 -1
- package/dest/public/avm/opcodes/addressing_mode.js +2 -3
- package/dest/public/avm/opcodes/conversion.d.ts.map +1 -1
- package/dest/public/avm/opcodes/conversion.js +3 -0
- package/dest/public/avm/opcodes/ec_add.d.ts.map +1 -1
- package/dest/public/avm/opcodes/ec_add.js +3 -2
- package/dest/public/avm/opcodes/environment_getters.d.ts.map +1 -1
- package/dest/public/avm/opcodes/environment_getters.js +5 -7
- package/dest/public/avm/opcodes/instruction.d.ts.map +1 -1
- package/dest/public/avm/opcodes/instruction.js +5 -6
- package/dest/public/avm/opcodes/misc.d.ts +2 -1
- package/dest/public/avm/opcodes/misc.d.ts.map +1 -1
- package/dest/public/avm/opcodes/misc.js +28 -8
- package/dest/public/avm/serialization/instruction_serialization.d.ts +8 -0
- package/dest/public/avm/serialization/instruction_serialization.d.ts.map +1 -1
- package/dest/public/avm/serialization/instruction_serialization.js +10 -0
- package/dest/public/avm/test_utils.d.ts +2 -2
- package/dest/public/avm/test_utils.d.ts.map +1 -1
- package/dest/public/avm/test_utils.js +6 -9
- package/dest/public/fixtures/bulk_test.d.ts.map +1 -1
- package/dest/public/fixtures/bulk_test.js +63 -130
- package/dest/public/fixtures/custom_bytecode_tester.d.ts +12 -0
- package/dest/public/fixtures/custom_bytecode_tester.d.ts.map +1 -0
- package/dest/public/fixtures/custom_bytecode_tester.js +29 -0
- package/dest/public/fixtures/custom_bytecode_tests.d.ts +9 -0
- package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +1 -0
- package/dest/public/fixtures/custom_bytecode_tests.js +109 -0
- package/dest/public/fixtures/index.d.ts +2 -1
- package/dest/public/fixtures/index.d.ts.map +1 -1
- package/dest/public/fixtures/index.js +2 -1
- package/dest/public/fixtures/minimal_public_tx.d.ts +2 -1
- package/dest/public/fixtures/minimal_public_tx.d.ts.map +1 -1
- package/dest/public/fixtures/minimal_public_tx.js +8 -22
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts +4 -2
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
- package/dest/public/fixtures/public_tx_simulation_tester.js +11 -6
- package/dest/public/fixtures/utils.js +1 -1
- package/dest/public/hinting_db_sources.d.ts +2 -0
- package/dest/public/hinting_db_sources.d.ts.map +1 -1
- package/dest/public/hinting_db_sources.js +3 -0
- package/dest/public/index.d.ts +1 -1
- package/dest/public/index.d.ts.map +1 -1
- package/dest/public/public_db_sources.d.ts +2 -2
- package/dest/public/public_db_sources.d.ts.map +1 -1
- package/dest/public/public_db_sources.js +11 -1
- package/dest/public/public_errors.d.ts +12 -0
- package/dest/public/public_errors.d.ts.map +1 -0
- package/dest/public/public_errors.js +13 -0
- package/dest/public/public_processor/guarded_merkle_tree.d.ts +2 -0
- package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -1
- package/dest/public/public_processor/guarded_merkle_tree.js +3 -0
- package/dest/public/public_processor/public_processor.d.ts +9 -4
- package/dest/public/public_processor/public_processor.d.ts.map +1 -1
- package/dest/public/public_processor/public_processor.js +33 -16
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +41 -0
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator.js +89 -0
- package/dest/public/public_tx_simulator/index.d.ts +1 -0
- package/dest/public/public_tx_simulator/index.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts +5 -4
- package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/measured_public_tx_simulator.js +3 -4
- package/dest/public/public_tx_simulator/public_tx_context.d.ts +4 -2
- package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/public_tx_context.js +12 -8
- package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +24 -11
- package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/public_tx_simulator.js +112 -44
- package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts +9 -0
- package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/public_tx_simulator_interface.js +1 -0
- package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts +2 -1
- package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.js +2 -2
- package/dest/public/side_effect_errors.d.ts +41 -1
- package/dest/public/side_effect_errors.d.ts.map +1 -1
- package/dest/public/side_effect_errors.js +70 -1
- package/dest/public/side_effect_trace.d.ts +11 -4
- package/dest/public/side_effect_trace.d.ts.map +1 -1
- package/dest/public/side_effect_trace.js +35 -20
- package/dest/public/side_effect_trace_interface.d.ts +6 -0
- package/dest/public/side_effect_trace_interface.d.ts.map +1 -1
- package/dest/public/state_manager/nullifiers.d.ts +0 -3
- package/dest/public/state_manager/nullifiers.d.ts.map +1 -1
- package/dest/public/state_manager/nullifiers.js +1 -6
- package/dest/public/state_manager/state_manager.d.ts +7 -2
- package/dest/public/state_manager/state_manager.d.ts.map +1 -1
- package/dest/public/state_manager/state_manager.js +54 -15
- package/package.json +21 -17
- package/src/private/acvm_native.ts +1 -2
- package/src/private/circuit_recording/simulator_recorder_wrapper.ts +1 -1
- package/src/public/avm/avm_execution_environment.ts +4 -1
- package/src/public/avm/avm_gas.ts +2 -2
- package/src/public/avm/avm_memory_types.ts +11 -2
- package/src/public/avm/avm_simulator.ts +16 -27
- package/src/public/avm/errors.ts +7 -24
- package/src/public/avm/fixtures/avm_simulation_tester.ts +4 -2
- package/src/public/avm/fixtures/base_avm_simulation_tester.ts +32 -0
- package/src/public/avm/fixtures/initializers.ts +2 -1
- package/src/public/avm/opcodes/accrued_substate.ts +4 -4
- package/src/public/avm/opcodes/addressing_mode.ts +3 -3
- package/src/public/avm/opcodes/conversion.ts +4 -0
- package/src/public/avm/opcodes/ec_add.ts +3 -2
- package/src/public/avm/opcodes/environment_getters.ts +6 -8
- package/src/public/avm/opcodes/instruction.ts +8 -6
- package/src/public/avm/opcodes/misc.ts +41 -7
- package/src/public/avm/serialization/instruction_serialization.ts +12 -0
- package/src/public/avm/test_utils.ts +6 -14
- package/src/public/fixtures/bulk_test.ts +41 -23
- package/src/public/fixtures/custom_bytecode_tester.ts +49 -0
- package/src/public/fixtures/custom_bytecode_tests.ts +135 -0
- package/src/public/fixtures/index.ts +2 -1
- package/src/public/fixtures/minimal_public_tx.ts +8 -31
- package/src/public/fixtures/public_tx_simulation_tester.ts +16 -12
- package/src/public/fixtures/utils.ts +1 -1
- package/src/public/hinting_db_sources.ts +5 -0
- package/src/public/index.ts +6 -1
- package/src/public/public_db_sources.ts +19 -3
- package/src/public/public_errors.ts +14 -0
- package/src/public/public_processor/guarded_merkle_tree.ts +4 -0
- package/src/public/public_processor/public_processor.ts +46 -39
- package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +128 -0
- package/src/public/public_tx_simulator/index.ts +1 -0
- package/src/public/public_tx_simulator/measured_public_tx_simulator.ts +12 -9
- package/src/public/public_tx_simulator/public_tx_context.ts +11 -4
- package/src/public/public_tx_simulator/public_tx_simulator.ts +178 -60
- package/src/public/public_tx_simulator/public_tx_simulator_interface.ts +11 -0
- package/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts +3 -12
- package/src/public/side_effect_errors.ts +91 -1
- package/src/public/side_effect_trace.ts +48 -23
- package/src/public/side_effect_trace_interface.ts +6 -0
- package/src/public/state_manager/nullifiers.ts +1 -7
- package/src/public/state_manager/state_manager.ts +73 -25
- package/dest/public/bytecode_errors.d.ts +0 -4
- package/dest/public/bytecode_errors.d.ts.map +0 -1
- package/dest/public/bytecode_errors.js +0 -6
- package/src/public/bytecode_errors.ts +0 -6
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type { WitnessMap } from '@aztec/noir-acvm_js';
|
|
2
|
-
import type { ForeignCallHandler } from '@aztec/noir-protocol-circuits-types/types';
|
|
1
|
+
import type { ForeignCallHandler, WitnessMap } from '@aztec/noir-acvm_js';
|
|
3
2
|
import type { FunctionArtifactWithContractName } from '@aztec/stdlib/abi';
|
|
4
3
|
import type { NoirCompiledCircuitWithName } from '@aztec/stdlib/noir';
|
|
5
4
|
import type { ACIRCallback, ACIRExecutionResult } from './acvm/acvm.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acvm_native.d.ts","sourceRoot":"","sources":["../../src/private/acvm_native.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"acvm_native.d.ts","sourceRoot":"","sources":["../../src/private/acvm_native.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AAKtE,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAI/D,oBAAY,WAAW;IACrB,OAAO,IAAA;IACP,OAAO,IAAA;CACR;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,WAAW,CAAC;AAmBnD;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CACxC,YAAY,EAAE,UAAU,EACxB,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,EACxB,UAAU,EAAE,MAAM,EAClB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,UAAU,CAAC,CAsErB;AAED,qBAAa,mBAAoB,YAAW,gBAAgB;IAExD,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,eAAe,CAAC;gBAFhB,gBAAgB,EAAE,MAAM,EACxB,UAAU,EAAE,MAAM,EAClB,eAAe,CAAC,EAAE,MAAM,YAAA;IAG5B,sBAAsB,CAC1B,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,2BAA2B,EACrC,QAAQ,EAAE,kBAAkB,GAAG,SAAS,GACvC,OAAO,CAAC,WAAW,CAAC;IA6BvB,kBAAkB,CAChB,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,gCAAgC,EAC3C,SAAS,EAAE,YAAY,GACtB,OAAO,CAAC,mBAAmB,CAAC;CAGhC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ForeignCallHandler } from '@aztec/noir-
|
|
1
|
+
import type { ForeignCallHandler } from '@aztec/noir-acvm_js';
|
|
2
2
|
import type { FunctionArtifactWithContractName } from '@aztec/stdlib/abi';
|
|
3
3
|
import type { NoirCompiledCircuitWithName } from '@aztec/stdlib/noir';
|
|
4
4
|
import type { ACIRCallback, ACIRExecutionResult } from '../acvm/acvm.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simulator_recorder_wrapper.d.ts","sourceRoot":"","sources":["../../../src/private/circuit_recording/simulator_recorder_wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"simulator_recorder_wrapper.d.ts","sourceRoot":"","sources":["../../../src/private/circuit_recording/simulator_recorder_wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AAEtE,OAAO,KAAK,EAAE,YAAY,EAAqB,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAC5F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D;;;GAGG;AACH,qBAAa,wBAAyB,YAAW,gBAAgB;;IAE7D,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,QAAQ;gBADR,SAAS,EAAE,gBAAgB,EAC3B,QAAQ,EAAE,eAAe;IAGnC,sBAAsB,CACpB,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,2BAA2B,EACrC,QAAQ,EAAE,kBAAkB,GAAG,SAAS,GACvC,OAAO,CAAC,WAAW,CAAC;IAavB,kBAAkB,CAChB,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,gCAAgC,EAC1C,QAAQ,EAAE,YAAY,GACrB,OAAO,CAAC,mBAAmB,CAAC;CAiDhC"}
|
|
@@ -14,7 +14,8 @@ export declare class AvmExecutionEnvironment {
|
|
|
14
14
|
readonly isStaticCall: boolean;
|
|
15
15
|
readonly calldata: Fr[];
|
|
16
16
|
readonly clientInitiatedSimulation: boolean;
|
|
17
|
-
|
|
17
|
+
readonly maxDebugLogMemoryReads: number;
|
|
18
|
+
constructor(address: AztecAddress, sender: AztecAddress, contractCallDepth: Fr, transactionFee: Fr, globals: GlobalVariables, isStaticCall: boolean, calldata: Fr[], clientInitiatedSimulation?: boolean, maxDebugLogMemoryReads?: number);
|
|
18
19
|
private deriveEnvironmentForNestedCallInternal;
|
|
19
20
|
deriveEnvironmentForNestedCall(targetAddress: AztecAddress, calldata: Fr[]): AvmExecutionEnvironment;
|
|
20
21
|
deriveEnvironmentForNestedStaticCall(targetAddress: AztecAddress, calldata: Fr[]): AvmExecutionEnvironment;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avm_execution_environment.d.ts","sourceRoot":"","sources":["../../../src/public/avm/avm_execution_environment.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"avm_execution_environment.d.ts","sourceRoot":"","sources":["../../../src/public/avm/avm_execution_environment.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD;;;GAGG;AACH,qBAAa,uBAAuB;aAEhB,OAAO,EAAE,YAAY;aACrB,MAAM,EAAE,YAAY;aACpB,iBAAiB,EAAE,EAAE;aACrB,cAAc,EAAE,EAAE;aAClB,OAAO,EAAE,eAAe;aACxB,YAAY,EAAE,OAAO;aACrB,QAAQ,EAAE,EAAE,EAAE;aACd,yBAAyB,EAAE,OAAO;aAClC,sBAAsB,EAAE,MAAM;gBAR9B,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,YAAY,EACpB,iBAAiB,EAAE,EAAE,EACrB,cAAc,EAAE,EAAE,EAClB,OAAO,EAAE,eAAe,EACxB,YAAY,EAAE,OAAO,EACrB,QAAQ,EAAE,EAAE,EAAE,EACd,yBAAyB,GAAE,OAAe,EAC1C,sBAAsB,GAAE,MAA2C;IAGrF,OAAO,CAAC,sCAAsC;IAkBvC,8BAA8B,CAAC,aAAa,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,uBAAuB;IAIpG,oCAAoC,CAAC,aAAa,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,uBAAuB;CAGlH"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { DEFAULT_MAX_DEBUG_LOG_MEMORY_READS } from '@aztec/constants';
|
|
1
2
|
import { Fr } from '@aztec/foundation/fields';
|
|
2
3
|
/**
|
|
3
4
|
* Contains variables that remain constant during AVM execution
|
|
@@ -11,7 +12,8 @@ import { Fr } from '@aztec/foundation/fields';
|
|
|
11
12
|
isStaticCall;
|
|
12
13
|
calldata;
|
|
13
14
|
clientInitiatedSimulation;
|
|
14
|
-
|
|
15
|
+
maxDebugLogMemoryReads;
|
|
16
|
+
constructor(address, sender, contractCallDepth, transactionFee, globals, isStaticCall, calldata, clientInitiatedSimulation = false, maxDebugLogMemoryReads = DEFAULT_MAX_DEBUG_LOG_MEMORY_READS){
|
|
15
17
|
this.address = address;
|
|
16
18
|
this.sender = sender;
|
|
17
19
|
this.contractCallDepth = contractCallDepth;
|
|
@@ -20,9 +22,10 @@ import { Fr } from '@aztec/foundation/fields';
|
|
|
20
22
|
this.isStaticCall = isStaticCall;
|
|
21
23
|
this.calldata = calldata;
|
|
22
24
|
this.clientInitiatedSimulation = clientInitiatedSimulation;
|
|
25
|
+
this.maxDebugLogMemoryReads = maxDebugLogMemoryReads;
|
|
23
26
|
}
|
|
24
27
|
deriveEnvironmentForNestedCallInternal(targetAddress, calldata, isStaticCall) {
|
|
25
|
-
return new AvmExecutionEnvironment(/*address=*/ targetAddress, /*sender=*/ this.address, this.contractCallDepth.add(Fr.ONE), this.transactionFee, this.globals, isStaticCall, calldata,
|
|
28
|
+
return new AvmExecutionEnvironment(/*address=*/ targetAddress, /*sender=*/ this.address, this.contractCallDepth.add(Fr.ONE), this.transactionFee, this.globals, isStaticCall, calldata, this.clientInitiatedSimulation, this.maxDebugLogMemoryReads);
|
|
26
29
|
}
|
|
27
30
|
deriveEnvironmentForNestedCall(targetAddress, calldata) {
|
|
28
31
|
return this.deriveEnvironmentForNestedCallInternal(targetAddress, calldata, /*isStaticCall=*/ false);
|
|
@@ -101,7 +101,7 @@ function makeCost(l2Gas, daGas) {
|
|
|
101
101
|
[Opcode.NULLIFIEREXISTS]: makeCost(c.AVM_NULLIFIEREXISTS_BASE_L2_GAS, 0),
|
|
102
102
|
[Opcode.EMITNULLIFIER]: makeCost(c.AVM_EMITNULLIFIER_BASE_L2_GAS, c.AVM_EMITNULLIFIER_BASE_DA_GAS),
|
|
103
103
|
[Opcode.L1TOL2MSGEXISTS]: makeCost(c.AVM_L1TOL2MSGEXISTS_BASE_L2_GAS, 0),
|
|
104
|
-
[Opcode.EMITUNENCRYPTEDLOG]: makeCost(c.AVM_EMITUNENCRYPTEDLOG_BASE_L2_GAS,
|
|
104
|
+
[Opcode.EMITUNENCRYPTEDLOG]: makeCost(c.AVM_EMITUNENCRYPTEDLOG_BASE_L2_GAS, c.AVM_EMITUNENCRYPTEDLOG_BASE_DA_GAS),
|
|
105
105
|
[Opcode.SENDL2TOL1MSG]: makeCost(c.AVM_SENDL2TOL1MSG_BASE_L2_GAS, c.AVM_SENDL2TOL1MSG_BASE_DA_GAS),
|
|
106
106
|
[Opcode.GETCONTRACTINSTANCE]: makeCost(c.AVM_GETCONTRACTINSTANCE_BASE_L2_GAS, 0),
|
|
107
107
|
[Opcode.CALL]: makeCost(c.AVM_CALL_BASE_L2_GAS, 0),
|
|
@@ -128,7 +128,7 @@ const DYNAMIC_GAS_COSTS = new Map([
|
|
|
128
128
|
// TODO: Call and static call based on bytecode length
|
|
129
129
|
[
|
|
130
130
|
Opcode.EMITUNENCRYPTEDLOG,
|
|
131
|
-
makeCost(
|
|
131
|
+
makeCost(c.AVM_EMITUNENCRYPTEDLOG_DYN_L2_GAS, c.AVM_EMITUNENCRYPTEDLOG_DYN_DA_GAS)
|
|
132
132
|
],
|
|
133
133
|
[
|
|
134
134
|
Opcode.TORADIXBE,
|
|
@@ -52,6 +52,7 @@ declare const Uint1_base: {
|
|
|
52
52
|
toNumber(): number;
|
|
53
53
|
toString(): string;
|
|
54
54
|
};
|
|
55
|
+
readonly bits: number;
|
|
55
56
|
readonly mod: bigint;
|
|
56
57
|
readonly bitmask: bigint;
|
|
57
58
|
};
|
|
@@ -81,6 +82,7 @@ declare const Uint8_base: {
|
|
|
81
82
|
toNumber(): number;
|
|
82
83
|
toString(): string;
|
|
83
84
|
};
|
|
85
|
+
readonly bits: number;
|
|
84
86
|
readonly mod: bigint;
|
|
85
87
|
readonly bitmask: bigint;
|
|
86
88
|
};
|
|
@@ -110,6 +112,7 @@ declare const Uint16_base: {
|
|
|
110
112
|
toNumber(): number;
|
|
111
113
|
toString(): string;
|
|
112
114
|
};
|
|
115
|
+
readonly bits: number;
|
|
113
116
|
readonly mod: bigint;
|
|
114
117
|
readonly bitmask: bigint;
|
|
115
118
|
};
|
|
@@ -139,6 +142,7 @@ declare const Uint32_base: {
|
|
|
139
142
|
toNumber(): number;
|
|
140
143
|
toString(): string;
|
|
141
144
|
};
|
|
145
|
+
readonly bits: number;
|
|
142
146
|
readonly mod: bigint;
|
|
143
147
|
readonly bitmask: bigint;
|
|
144
148
|
};
|
|
@@ -168,6 +172,7 @@ declare const Uint64_base: {
|
|
|
168
172
|
toNumber(): number;
|
|
169
173
|
toString(): string;
|
|
170
174
|
};
|
|
175
|
+
readonly bits: number;
|
|
171
176
|
readonly mod: bigint;
|
|
172
177
|
readonly bitmask: bigint;
|
|
173
178
|
};
|
|
@@ -197,6 +202,7 @@ declare const Uint128_base: {
|
|
|
197
202
|
toNumber(): number;
|
|
198
203
|
toString(): string;
|
|
199
204
|
};
|
|
205
|
+
readonly bits: number;
|
|
200
206
|
readonly mod: bigint;
|
|
201
207
|
readonly bitmask: bigint;
|
|
202
208
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avm_memory_types.d.ts","sourceRoot":"","sources":["../../../src/public/avm/avm_memory_types.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAM3D,sEAAsE;AACtE,8BAAsB,WAAW;aACf,GAAG,CAAC,GAAG,EAAE,WAAW,GAAG,WAAW;aAClC,GAAG,CAAC,GAAG,EAAE,WAAW,GAAG,WAAW;aAClC,GAAG,CAAC,GAAG,EAAE,WAAW,GAAG,WAAW;aAClC,GAAG,CAAC,GAAG,EAAE,WAAW,GAAG,WAAW;aAElC,MAAM,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO;aACjC,EAAE,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO;aAG7B,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,WAAW;aAG7B,QAAQ,IAAI,MAAM;IAC3B,MAAM,IAAI,OAAO;aAKR,QAAQ,IAAI,MAAM;IAG3B,IAAI,IAAI,EAAE;IAIV,cAAc,IAAI,YAAY;IAK9B,QAAQ,IAAI,MAAM;IAIlB,QAAQ,IAAI,MAAM;CAG1B;AAED,iFAAiF;AACjF,8BAAsB,aAAc,SAAQ,WAAW;aACrC,GAAG,CAAC,GAAG,EAAE,aAAa,GAAG,aAAa;aACtC,GAAG,CAAC,GAAG,EAAE,aAAa,GAAG,aAAa;aACtC,GAAG,CAAC,GAAG,EAAE,aAAa,GAAG,aAAa;aACtC,EAAE,CAAC,GAAG,EAAE,aAAa,GAAG,aAAa;aACrC,GAAG,CAAC,GAAG,EAAE,aAAa,GAAG,aAAa;aACtC,GAAG,IAAI,aAAa;CACrC;;
|
|
1
|
+
{"version":3,"file":"avm_memory_types.d.ts","sourceRoot":"","sources":["../../../src/public/avm/avm_memory_types.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAM3D,sEAAsE;AACtE,8BAAsB,WAAW;aACf,GAAG,CAAC,GAAG,EAAE,WAAW,GAAG,WAAW;aAClC,GAAG,CAAC,GAAG,EAAE,WAAW,GAAG,WAAW;aAClC,GAAG,CAAC,GAAG,EAAE,WAAW,GAAG,WAAW;aAClC,GAAG,CAAC,GAAG,EAAE,WAAW,GAAG,WAAW;aAElC,MAAM,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO;aACjC,EAAE,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO;aAG7B,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,WAAW;aAG7B,QAAQ,IAAI,MAAM;IAC3B,MAAM,IAAI,OAAO;aAKR,QAAQ,IAAI,MAAM;IAG3B,IAAI,IAAI,EAAE;IAIV,cAAc,IAAI,YAAY;IAK9B,QAAQ,IAAI,MAAM;IAIlB,QAAQ,IAAI,MAAM;CAG1B;AAED,iFAAiF;AACjF,8BAAsB,aAAc,SAAQ,WAAW;aACrC,GAAG,CAAC,GAAG,EAAE,aAAa,GAAG,aAAa;aACtC,GAAG,CAAC,GAAG,EAAE,aAAa,GAAG,aAAa;aACtC,GAAG,CAAC,GAAG,EAAE,aAAa,GAAG,aAAa;aACtC,EAAE,CAAC,GAAG,EAAE,aAAa,GAAG,aAAa;aACrC,GAAG,CAAC,GAAG,EAAE,aAAa,GAAG,aAAa;aACtC,GAAG,IAAI,aAAa;CACrC;;YAayB,MAAM,GAAG,MAAM;oBAFlB,MAAM;iBAST,MAAM;;;;;;;;;;;qCAuDY,OAAO;iCAIX,OAAO;oBAIlB,MAAM;oBAIN,MAAM;kBAzHV,OAAO;gBAQT,EAAE;0BAIQ,YAAY;oBAKlB,MAAM;oBAIN,MAAM;;mBAqBD,MAAM;kBACP,MAAM;sBACF,MAAM;;AAyFnC,qBAAa,KAAM,SAAQ,UAA8B;CAAG;;YAtFlC,MAAM,GAAG,MAAM;oBAFlB,MAAM;iBAST,MAAM;;;;;;;;;;;qCAuDY,OAAO;iCAIX,OAAO;oBAIlB,MAAM;oBAIN,MAAM;kBAzHV,OAAO;gBAQT,EAAE;0BAIQ,YAAY;oBAKlB,MAAM;oBAIN,MAAM;;mBAqBD,MAAM;kBACP,MAAM;sBACF,MAAM;;AA0FnC,qBAAa,KAAM,SAAQ,UAA8B;CAAG;;YAvFlC,MAAM,GAAG,MAAM;oBAFlB,MAAM;iBAST,MAAM;;;;;;;;;;;qCAuDY,OAAO;iCAIX,OAAO;oBAIlB,MAAM;oBAIN,MAAM;kBAzHV,OAAO;gBAQT,EAAE;0BAIQ,YAAY;oBAKlB,MAAM;oBAIN,MAAM;;mBAqBD,MAAM;kBACP,MAAM;sBACF,MAAM;;AA2FnC,qBAAa,MAAO,SAAQ,WAA+B;CAAG;;YAxFpC,MAAM,GAAG,MAAM;oBAFlB,MAAM;iBAST,MAAM;;;;;;;;;;;qCAuDY,OAAO;iCAIX,OAAO;oBAIlB,MAAM;oBAIN,MAAM;kBAzHV,OAAO;gBAQT,EAAE;0BAIQ,YAAY;oBAKlB,MAAM;oBAIN,MAAM;;mBAqBD,MAAM;kBACP,MAAM;sBACF,MAAM;;AA4FnC,qBAAa,MAAO,SAAQ,WAA+B;CAAG;;YAzFpC,MAAM,GAAG,MAAM;oBAFlB,MAAM;iBAST,MAAM;;;;;;;;;;;qCAuDY,OAAO;iCAIX,OAAO;oBAIlB,MAAM;oBAIN,MAAM;kBAzHV,OAAO;gBAQT,EAAE;0BAIQ,YAAY;oBAKlB,MAAM;oBAIN,MAAM;;mBAqBD,MAAM;kBACP,MAAM;sBACF,MAAM;;AA6FnC,qBAAa,MAAO,SAAQ,WAA+B;CAAG;;YA1FpC,MAAM,GAAG,MAAM;oBAFlB,MAAM;iBAST,MAAM;;;;;;;;;;;qCAuDY,OAAO;iCAIX,OAAO;oBAIlB,MAAM;oBAIN,MAAM;kBAzHV,OAAO;gBAQT,EAAE;0BAIQ,YAAY;oBAKlB,MAAM;oBAIN,MAAM;;mBAqBD,MAAM;kBACP,MAAM;sBACF,MAAM;;AA8FnC,qBAAa,OAAQ,SAAQ,YAAgC;CAAG;AAEhE,qBAAa,KAAM,SAAQ,WAAW;IACpC,gBAAuB,OAAO,EAAE,MAAM,CAAc;IACpD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAK;gBAEb,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,EAAE,GAAG,MAAM;IAKrC,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK;IAIvB,GAAG,CAAC,GAAG,EAAE,KAAK,GAAG,KAAK;IAItB,GAAG,CAAC,GAAG,EAAE,KAAK,GAAG,KAAK;IAItB,GAAG,CAAC,GAAG,EAAE,KAAK,GAAG,KAAK;IAKtB,GAAG,CAAC,GAAG,EAAE,KAAK,GAAG,KAAK;IAKtB,IAAI,CAAC,GAAG,EAAE,KAAK,GAAG,KAAK;IAIvB,MAAM,CAAC,GAAG,EAAE,KAAK,GAAG,OAAO;IAI3B,EAAE,CAAC,GAAG,EAAE,KAAK,GAAG,OAAO;IAIvB,QAAQ,IAAI,MAAM;IAIlB,QAAQ,IAAI,MAAM;CAG1B;AAED,oBAAY,OAAO;IACjB,KAAK,IAAa;IAClB,KAAK,IAAa;IAClB,KAAK,IAAa;IAClB,MAAM,IAAc;IACpB,MAAM,IAAc;IACpB,MAAM,IAAc;IACpB,OAAO,IAAe;IACtB,OAAO,IAAmB;CAC3B;AAGD,MAAM,MAAM,qBAAqB,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;AAE9D,qBAAa,YAAa,YAAW,qBAAqB;IACxD,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAwC;IAGnE,MAAM,CAAC,QAAQ,CAAC,qBAAqB,UAAmC;IAKxE,MAAM,CAAC,QAAQ,CAAC,eAAe,SAAqB;IACpD,OAAO,CAAC,IAAI,CAA2B;;IAMhC,gBAAgB,IAAI,MAAM;IAI1B,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW;IAIhC,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC;IAW3B,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE;IAiBrD,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,EAAE;IAIhD,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,EAAE;IAIrD,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,WAAW;IAMlC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE;IAa7C,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAKtC;;OAEG;IACI,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM;WAO9B,uBAAuB,CAAC,GAAG,EAAE,OAAO;WAIpC,kBAAkB,CAAC,GAAG,EAAE,OAAO;WAM/B,eAAe,CAAC,SAAS,EAAE,MAAM;IAM/C;;OAEG;IACI,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE;IAMnD;;OAEG;IACI,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAKxD;;OAEG;IACI,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;WAMvD,MAAM,CAAC,CAAC,EAAE,WAAW,GAAG,SAAS,GAAG,OAAO;WAS3C,sBAAsB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,WAAW;CAqBpF"}
|
|
@@ -31,6 +31,7 @@ import { InvalidTagValueError, MemorySliceOutOfRangeError, TagCheckError } from
|
|
|
31
31
|
* In TypeScript terms, it's a class mixin.
|
|
32
32
|
**/ function UnsignedIntegerClassFactory(bits) {
|
|
33
33
|
return class NewUintClass extends IntegralValue {
|
|
34
|
+
static bits = bits;
|
|
34
35
|
static mod = 1n << BigInt(bits);
|
|
35
36
|
static bitmask = this.mod - 1n;
|
|
36
37
|
n;
|
|
@@ -58,11 +59,17 @@ import { InvalidTagValueError, MemorySliceOutOfRangeError, TagCheckError } from
|
|
|
58
59
|
}
|
|
59
60
|
// No sign extension.
|
|
60
61
|
shr(rhs) {
|
|
61
|
-
// Note that this.n is
|
|
62
|
+
// Note that this.n is >= 0 by class invariant.
|
|
62
63
|
return this.build(this.n >> rhs.n);
|
|
63
64
|
}
|
|
64
65
|
shl(rhs) {
|
|
65
|
-
|
|
66
|
+
const shiftAmount = rhs.n;
|
|
67
|
+
const bitSize = BigInt(NewUintClass.bits);
|
|
68
|
+
// Shifting by more than the bit size always results in 0
|
|
69
|
+
if (shiftAmount >= bitSize) {
|
|
70
|
+
return this.build(0n);
|
|
71
|
+
}
|
|
72
|
+
return this.build(this.n << shiftAmount & NewUintClass.bitmask);
|
|
66
73
|
}
|
|
67
74
|
and(rhs) {
|
|
68
75
|
return this.build(this.n & rhs.n);
|
|
@@ -18,7 +18,7 @@ export declare class AvmSimulator implements AvmSimulatorInterface {
|
|
|
18
18
|
private tallyInstructionFunction;
|
|
19
19
|
constructor(context: AvmContext, instructionSet?: InstructionSet, enableTallying?: boolean);
|
|
20
20
|
static build(context: AvmContext): Promise<AvmSimulator>;
|
|
21
|
-
static create(stateManager: PublicPersistableStateManager, address: AztecAddress, sender: AztecAddress, transactionFee: Fr, globals: GlobalVariables, isStaticCall: boolean, calldata: Fr[], allocatedGas: Gas, clientInitiatedSimulation?: boolean): Promise<AvmSimulator>;
|
|
21
|
+
static create(stateManager: PublicPersistableStateManager, address: AztecAddress, sender: AztecAddress, transactionFee: Fr, globals: GlobalVariables, isStaticCall: boolean, calldata: Fr[], allocatedGas: Gas, clientInitiatedSimulation?: boolean, maxDebugLogMemoryReads?: number): Promise<AvmSimulator>;
|
|
22
22
|
/**
|
|
23
23
|
* Fetch the bytecode and execute it in the current context.
|
|
24
24
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avm_simulator.d.ts","sourceRoot":"","sources":["../../../src/public/avm/avm_simulator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAG9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAKxD,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAEtE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAExC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAI1E,OAAO,EAEL,KAAK,cAAc,EAEpB,MAAM,2CAA2C,CAAC;AAOnD,qBAAa,YAAa,YAAW,qBAAqB;IAatD,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,cAAc;IAbxB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,aAAa,CAAuC;IAE5D,OAAO,CAAC,6BAA6B,CAAiD;IAEtF,OAAO,CAAC,kBAAkB,CAAY;IACtC,OAAO,CAAC,wBAAwB,CAA+B;gBAKrD,OAAO,EAAE,UAAU,EACnB,cAAc,GAAE,cAAgC,EACxD,cAAc,UAAQ;WAeJ,KAAK,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC;WAQjD,MAAM,CACxB,YAAY,EAAE,6BAA6B,EAC3C,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,YAAY,EACpB,cAAc,EAAE,EAAE,EAClB,OAAO,EAAE,eAAe,EACxB,YAAY,EAAE,OAAO,EACrB,QAAQ,EAAE,EAAE,EAAE,EACd,YAAY,EAAE,GAAG,EACjB,yBAAyB,GAAE,OAAe;
|
|
1
|
+
{"version":3,"file":"avm_simulator.d.ts","sourceRoot":"","sources":["../../../src/public/avm/avm_simulator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAG9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAKxD,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAEtE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAExC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAI1E,OAAO,EAEL,KAAK,cAAc,EAEpB,MAAM,2CAA2C,CAAC;AAOnD,qBAAa,YAAa,YAAW,qBAAqB;IAatD,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,cAAc;IAbxB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,aAAa,CAAuC;IAE5D,OAAO,CAAC,6BAA6B,CAAiD;IAEtF,OAAO,CAAC,kBAAkB,CAAY;IACtC,OAAO,CAAC,wBAAwB,CAA+B;gBAKrD,OAAO,EAAE,UAAU,EACnB,cAAc,GAAE,cAAgC,EACxD,cAAc,UAAQ;WAeJ,KAAK,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC;WAQjD,MAAM,CACxB,YAAY,EAAE,6BAA6B,EAC3C,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,YAAY,EACpB,cAAc,EAAE,EAAE,EAClB,OAAO,EAAE,eAAe,EACxB,YAAY,EAAE,OAAO,EACrB,QAAQ,EAAE,EAAE,EAAE,EACd,YAAY,EAAE,GAAG,EACjB,yBAAyB,GAAE,OAAe,EAC1C,sBAAsB,CAAC,EAAE,MAAM;IAmBjC;;OAEG;IACU,OAAO,IAAI,OAAO,CAAC,qBAAqB,CAAC;IActD;;OAEG;IACI,WAAW,IAAI,MAAM,GAAG,SAAS;IAIxC;;;OAGG;IACU,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;YA+GhE,+BAA+B;IAoB7C,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,kBAAkB;CAS3B"}
|
|
@@ -2,12 +2,12 @@ import { Fr } from '@aztec/foundation/fields';
|
|
|
2
2
|
import { createLogger } from '@aztec/foundation/log';
|
|
3
3
|
import { Timer } from '@aztec/foundation/timer';
|
|
4
4
|
import { strict as assert } from 'assert';
|
|
5
|
-
import {
|
|
5
|
+
import { CheckedPublicExecutionError } from '../public_errors.js';
|
|
6
6
|
import { AvmContext } from './avm_context.js';
|
|
7
7
|
import { AvmContractCallResult } from './avm_contract_call_result.js';
|
|
8
8
|
import { AvmExecutionEnvironment } from './avm_execution_environment.js';
|
|
9
9
|
import { AvmMachineState } from './avm_machine_state.js';
|
|
10
|
-
import {
|
|
10
|
+
import { AvmRevertReason, InvalidProgramCounterError } from './errors.js';
|
|
11
11
|
import { revertReasonFromExceptionalHalt, revertReasonFromExplicitRevert } from './revert_reason.js';
|
|
12
12
|
import { INSTRUCTION_SET, decodeInstructionFromBytecode } from './serialization/bytecode_serialization.js';
|
|
13
13
|
export class AvmSimulator {
|
|
@@ -47,8 +47,8 @@ export class AvmSimulator {
|
|
|
47
47
|
simulator.log = createLogger(`simulator:avm(f:${fnName})`);
|
|
48
48
|
return simulator;
|
|
49
49
|
}
|
|
50
|
-
static async create(stateManager, address, sender, transactionFee, globals, isStaticCall, calldata, allocatedGas, clientInitiatedSimulation = false) {
|
|
51
|
-
const avmExecutionEnv = new AvmExecutionEnvironment(address, sender, /*contractCallDepth=*/ Fr.zero(), transactionFee, globals, isStaticCall, calldata, clientInitiatedSimulation);
|
|
50
|
+
static async create(stateManager, address, sender, transactionFee, globals, isStaticCall, calldata, allocatedGas, clientInitiatedSimulation = false, maxDebugLogMemoryReads) {
|
|
51
|
+
const avmExecutionEnv = new AvmExecutionEnvironment(address, sender, /*contractCallDepth=*/ Fr.zero(), transactionFee, globals, isStaticCall, calldata, clientInitiatedSimulation, maxDebugLogMemoryReads);
|
|
52
52
|
const avmMachineState = new AvmMachineState(allocatedGas);
|
|
53
53
|
const avmContext = new AvmContext(stateManager, avmExecutionEnv, avmMachineState);
|
|
54
54
|
return await AvmSimulator.build(avmContext);
|
|
@@ -56,18 +56,11 @@ export class AvmSimulator {
|
|
|
56
56
|
/**
|
|
57
57
|
* Fetch the bytecode and execute it in the current context.
|
|
58
58
|
*/ async execute() {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
} catch (err) {
|
|
63
|
-
if (!(err instanceof AvmExecutionError || err instanceof SideEffectLimitReachedError)) {
|
|
64
|
-
this.log.error(`Unknown error thrown by AVM during bytecode retrieval: ${err}`);
|
|
65
|
-
throw err;
|
|
66
|
-
}
|
|
67
|
-
return await this.handleFailureToRetrieveBytecode(`Bytecode retrieval for contract '${this.context.environment.address}' failed with ${err.message}. Reverting...`);
|
|
68
|
-
}
|
|
59
|
+
const bytecode = await this.context.persistableState.getBytecode(this.context.environment.address);
|
|
60
|
+
// getBytecode returns undefined if bytecode is not found or if the limit of contract calls to unique class IDs is reached.
|
|
61
|
+
// If it throws an error that reaches this point, it is a bug.
|
|
69
62
|
if (!bytecode) {
|
|
70
|
-
return await this.handleFailureToRetrieveBytecode(`No bytecode found
|
|
63
|
+
return await this.handleFailureToRetrieveBytecode(`No bytecode found, or limit encountered for max calls to unique contract class IDs. Contract address: ${this.context.environment.address}. Reverting...`);
|
|
71
64
|
}
|
|
72
65
|
return await this.executeBytecode(bytecode);
|
|
73
66
|
}
|
|
@@ -83,6 +76,7 @@ export class AvmSimulator {
|
|
|
83
76
|
const timer = new Timer();
|
|
84
77
|
assert(bytecode.length > 0, "AVM simulator can't execute empty bytecode");
|
|
85
78
|
this.bytecode = bytecode;
|
|
79
|
+
let instructionName = 'NONE'; // This is used for logging purposes
|
|
86
80
|
const { machineState } = this.context;
|
|
87
81
|
const callStartGas = machineState.gasLeft; // Save gas before executing instruction (for profiling)
|
|
88
82
|
try {
|
|
@@ -102,6 +96,7 @@ export class AvmSimulator {
|
|
|
102
96
|
this.log.trace(`[PC:${machineState.pc}] [IC:${machineState.instrCounter}] ${instruction.toString()} (gasLeft l2=${machineState.l2GasLeft} da=${machineState.daGasLeft})`);
|
|
103
97
|
}
|
|
104
98
|
machineState.nextPc = machineState.pc + bytesRead;
|
|
99
|
+
instructionName = instruction.constructor.name;
|
|
105
100
|
// Execute the instruction.
|
|
106
101
|
// Normal returns and reverts will return normally here.
|
|
107
102
|
// "Exceptional halts" will throw.
|
|
@@ -137,12 +132,10 @@ export class AvmSimulator {
|
|
|
137
132
|
// Return results for processing by calling context
|
|
138
133
|
return results;
|
|
139
134
|
} catch (err) {
|
|
140
|
-
this.log.
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
if (!(err.constructor.name == 'OutOfGasError' || err instanceof AvmExecutionError || err instanceof SideEffectLimitReachedError)) {
|
|
145
|
-
this.log.error(`Unknown error thrown by AVM: ${err}`);
|
|
135
|
+
this.log.info(`Exceptional halt (revert by something other than REVERT opcode) for instruction
|
|
136
|
+
${instructionName} at pc ${machineState.pc} and instruction counter ${machineState.instrCounter}`);
|
|
137
|
+
if (!(err instanceof CheckedPublicExecutionError)) {
|
|
138
|
+
this.log.error(`Unchecked/unknown error thrown by AVM. This is a bug. Error: ${err}`);
|
|
146
139
|
throw err;
|
|
147
140
|
}
|
|
148
141
|
const revertReason = await revertReasonFromExceptionalHalt(err, this.context);
|
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
import type { Point } from '@aztec/foundation/fields';
|
|
2
|
-
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
3
2
|
import type { FailingFunction, NoirCallStack } from '@aztec/stdlib/errors';
|
|
4
3
|
import { ExecutionError } from '../../common/errors.js';
|
|
4
|
+
import { CheckedPublicExecutionError } from '../public_errors.js';
|
|
5
5
|
/**
|
|
6
6
|
* Avm-specific errors should derive from this
|
|
7
7
|
*/
|
|
8
|
-
export declare abstract class AvmExecutionError extends
|
|
8
|
+
export declare abstract class AvmExecutionError extends CheckedPublicExecutionError {
|
|
9
9
|
constructor(message: string);
|
|
10
10
|
}
|
|
11
|
-
export declare class NoBytecodeForContractError extends AvmExecutionError {
|
|
12
|
-
constructor(contractAddress: AztecAddress);
|
|
13
|
-
}
|
|
14
11
|
export declare class ArithmeticError extends AvmExecutionError {
|
|
15
12
|
constructor(message: string);
|
|
16
13
|
}
|
|
@@ -73,16 +70,10 @@ export declare class OutOfGasError extends AvmExecutionError {
|
|
|
73
70
|
constructor(dimensions: string[]);
|
|
74
71
|
}
|
|
75
72
|
/**
|
|
76
|
-
* Error is thrown when the supplied points
|
|
77
|
-
*/
|
|
78
|
-
export declare class MSMPointsLengthError extends AvmExecutionError {
|
|
79
|
-
constructor(pointsReadLength: number);
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Error is thrown when one of the supplied points does not lie on the Grumpkin curve. Specific for MSM opcode.
|
|
73
|
+
* Error is thrown when one of the supplied points does not lie on the Grumpkin curve. Specific for ECADD opcode.
|
|
83
74
|
*/
|
|
84
|
-
export declare class
|
|
85
|
-
constructor(point: Point);
|
|
75
|
+
export declare class EcAddPointNotOnCurveError extends AvmExecutionError {
|
|
76
|
+
constructor(pointIndex: number, point: Point);
|
|
86
77
|
}
|
|
87
78
|
/**
|
|
88
79
|
* Error is thrown when some inputs of ToRadixBE are not valid.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/public/avm/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/public/avm/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE3E,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAElE;;GAEG;AACH,8BAAsB,iBAAkB,SAAQ,2BAA2B;gBAC7D,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,eAAgB,SAAQ,iBAAiB;gBACxC,OAAO,EAAE,MAAM;CAI5B;AAED;;;GAGG;AACH,qBAAa,0BAA2B,SAAQ,iBAAiB;gBACnD,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;CAIpC;AAED;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,iBAAiB;gBAC3C,GAAG,EAAE,MAAM;CAIxB;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,iBAAiB;gBACxC,GAAG,EAAE,MAAM;CAIxB;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,iBAAiB;gBAC7C,QAAQ,EAAE,MAAM;CAI7B;AAED;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,iBAAiB;gBAClD,OAAO,EAAE,MAAM;CAI5B;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,iBAAiB;WACpC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,aAAa;WAI7E,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,aAAa;gBAI5D,OAAO,EAAE,MAAM;CAI5B;AAED;;;GAGG;AACH,qBAAa,8BAA+B,SAAQ,iBAAiB;gBACvD,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;CAIhD;AAED;;;GAGG;AACH,qBAAa,0BAA2B,SAAQ,iBAAiB;gBACnD,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CAI3C;AAED,oCAAoC;AACpC,qBAAa,aAAc,SAAQ,iBAAiB;gBACtC,UAAU,EAAE,MAAM,EAAE;CAIjC;AAED;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,iBAAiB;gBAClD,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK;CAI7C;AAED;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,iBAAiB;gBAClD,WAAW,EAAE,MAAM;CAIhC;AAED;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,yBAAyB;;CAKvE;AAED;;;;GAIG;AACH,qBAAa,eAAgB,SAAQ,cAAc;gBACrC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,YAAY;CAGpH"}
|
|
@@ -1,18 +1,13 @@
|
|
|
1
1
|
import { ExecutionError } from '../../common/errors.js';
|
|
2
|
+
import { CheckedPublicExecutionError } from '../public_errors.js';
|
|
2
3
|
/**
|
|
3
4
|
* Avm-specific errors should derive from this
|
|
4
|
-
*/ export class AvmExecutionError extends
|
|
5
|
+
*/ export class AvmExecutionError extends CheckedPublicExecutionError {
|
|
5
6
|
constructor(message){
|
|
6
7
|
super(message);
|
|
7
8
|
this.name = 'AvmExecutionError';
|
|
8
9
|
}
|
|
9
10
|
}
|
|
10
|
-
export class NoBytecodeForContractError extends AvmExecutionError {
|
|
11
|
-
constructor(contractAddress){
|
|
12
|
-
super(`No bytecode found at: ${contractAddress}`);
|
|
13
|
-
this.name = 'NoBytecodeFoundInterpreterError';
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
11
|
export class ArithmeticError extends AvmExecutionError {
|
|
17
12
|
constructor(message){
|
|
18
13
|
super(message);
|
|
@@ -100,19 +95,11 @@ export class ArithmeticError extends AvmExecutionError {
|
|
|
100
95
|
}
|
|
101
96
|
}
|
|
102
97
|
/**
|
|
103
|
-
* Error is thrown when the supplied points
|
|
104
|
-
*/ export class
|
|
105
|
-
constructor(
|
|
106
|
-
super(`
|
|
107
|
-
this.name = '
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Error is thrown when one of the supplied points does not lie on the Grumpkin curve. Specific for MSM opcode.
|
|
112
|
-
*/ export class MSMPointNotOnCurveError extends AvmExecutionError {
|
|
113
|
-
constructor(point){
|
|
114
|
-
super(`Point ${point.toString()} is not on the curve.`);
|
|
115
|
-
this.name = 'MSMPointNotOnCurveError';
|
|
98
|
+
* Error is thrown when one of the supplied points does not lie on the Grumpkin curve. Specific for ECADD opcode.
|
|
99
|
+
*/ export class EcAddPointNotOnCurveError extends AvmExecutionError {
|
|
100
|
+
constructor(pointIndex, point){
|
|
101
|
+
super(`EcAdd point${pointIndex} (${point.toString()}) is not on the curve.`);
|
|
102
|
+
this.name = 'EcAddPointNotOnCurveError';
|
|
116
103
|
}
|
|
117
104
|
}
|
|
118
105
|
/**
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
2
2
|
import type { MerkleTreeWriteOperations } from '@aztec/stdlib/interfaces/server';
|
|
3
|
+
import { NativeWorldStateService } from '@aztec/world-state';
|
|
3
4
|
import type { AvmContractCallResult } from '../../avm/avm_contract_call_result.js';
|
|
4
5
|
import { SimpleContractDataSource } from '../../fixtures/simple_contract_data_source.js';
|
|
5
6
|
import { PublicPersistableStateManager } from '../../state_manager/state_manager.js';
|
|
@@ -12,7 +13,7 @@ import { BaseAvmSimulationTester } from './base_avm_simulation_tester.js';
|
|
|
12
13
|
export declare class AvmSimulationTester extends BaseAvmSimulationTester {
|
|
13
14
|
private stateManager;
|
|
14
15
|
constructor(contractDataSource: SimpleContractDataSource, merkleTrees: MerkleTreeWriteOperations, stateManager: PublicPersistableStateManager);
|
|
15
|
-
static create(): Promise<AvmSimulationTester>;
|
|
16
|
+
static create(worldStateService: NativeWorldStateService): Promise<AvmSimulationTester>;
|
|
16
17
|
/**
|
|
17
18
|
* Simulate a top-level contract call.
|
|
18
19
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avm_simulation_tester.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/fixtures/avm_simulation_tester.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"avm_simulation_tester.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/fixtures/avm_simulation_tester.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAEjF,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAG7D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AACnF,OAAO,EAAE,wBAAwB,EAAE,MAAM,+CAA+C,CAAC;AAEzF,OAAO,EAAE,6BAA6B,EAAE,MAAM,sCAAsC,CAAC;AAErF,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAW1E;;;;GAIG;AACH,qBAAa,mBAAoB,SAAQ,uBAAuB;IAI5D,OAAO,CAAC,YAAY;gBAFpB,kBAAkB,EAAE,wBAAwB,EAC5C,WAAW,EAAE,yBAAyB,EAC9B,YAAY,EAAE,6BAA6B;WAKxC,MAAM,CACjB,iBAAiB,EAAE,uBAAuB,GACzC,OAAO,CAAC,mBAAmB,CAAC;IAmB/B;;OAEG;IACG,YAAY,CAChB,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,GAAG,EAAE,EACX,YAAY,UAAQ,GACnB,OAAO,CAAC,qBAAqB,CAAC;CAsClC"}
|
|
@@ -2,7 +2,6 @@ import { Fr } from '@aztec/foundation/fields';
|
|
|
2
2
|
import { encodeArguments } from '@aztec/stdlib/abi';
|
|
3
3
|
import { GasFees } from '@aztec/stdlib/gas';
|
|
4
4
|
import { GlobalVariables } from '@aztec/stdlib/tx';
|
|
5
|
-
import { NativeWorldStateService } from '@aztec/world-state';
|
|
6
5
|
import { SideEffectTrace } from '../../../public/side_effect_trace.js';
|
|
7
6
|
import { SimpleContractDataSource } from '../../fixtures/simple_contract_data_source.js';
|
|
8
7
|
import { PublicContractsDB, PublicTreesDB } from '../../public_db_sources.js';
|
|
@@ -21,9 +20,9 @@ const DEFAULT_GAS_FEES = new GasFees(2, 3);
|
|
|
21
20
|
constructor(contractDataSource, merkleTrees, stateManager){
|
|
22
21
|
super(contractDataSource, merkleTrees), this.stateManager = stateManager;
|
|
23
22
|
}
|
|
24
|
-
static async create() {
|
|
23
|
+
static async create(worldStateService) {
|
|
25
24
|
const contractDataSource = new SimpleContractDataSource();
|
|
26
|
-
const merkleTrees = await
|
|
25
|
+
const merkleTrees = await worldStateService.fork();
|
|
27
26
|
const treesDB = new PublicTreesDB(merkleTrees);
|
|
28
27
|
const contractsDB = new PublicContractsDB(contractDataSource);
|
|
29
28
|
const trace = new SideEffectTrace();
|
|
@@ -29,6 +29,8 @@ export declare abstract class BaseAvmSimulationTester {
|
|
|
29
29
|
*/
|
|
30
30
|
registerAndDeployContract(constructorArgs: any[], deployer: AztecAddress, contractArtifact: ContractArtifact, skipNullifierInsertion?: boolean, seed?: number, contractClassSeed?: number, originalContractClassId?: Fr): Promise<ContractInstanceWithAddress>;
|
|
31
31
|
registerFeeJuiceContract(): Promise<ContractInstanceWithAddress>;
|
|
32
|
+
registerAuthContract(): Promise<ContractInstanceWithAddress>;
|
|
33
|
+
registerInstanceRegistryContract(): Promise<ContractInstanceWithAddress>;
|
|
32
34
|
addContractInstance(contractInstance: ContractInstanceWithAddress, skipNullifierInsertion?: boolean): Promise<void>;
|
|
33
35
|
private insertContractAddressNullifier;
|
|
34
36
|
insertNullifier(contractThatEmitted: AztecAddress, nullifier: Fr): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base_avm_simulation_tester.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/fixtures/base_avm_simulation_tester.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"base_avm_simulation_tester.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/fixtures/base_avm_simulation_tester.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAM9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAE1E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAGjF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,+CAA+C,CAAC;AAG9F;;;;;;;;;;GAUG;AACH,8BAAsB,uBAAuB;IAIlC,kBAAkB,EAAE,wBAAwB;IAC5C,WAAW,EAAE,yBAAyB;IAC7C,OAAO,CAAC,sBAAsB;IALzB,MAAM,yCAAyC;gBAG7C,kBAAkB,EAAE,wBAAwB,EAC5C,WAAW,EAAE,yBAAyB,EACrC,sBAAsB,KAAmB;IAG7C,kBAAkB,CAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,KAA8B;IAMhF,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;IAOjE;;;OAGG;IACG,yBAAyB,CAC7B,eAAe,EAAE,GAAG,EAAE,EACtB,QAAQ,EAAE,YAAY,EACtB,gBAAgB,EAAE,gBAAgB,EAClC,sBAAsB,UAAQ,EAC9B,IAAI,SAAI,EACR,iBAAiB,SAAO,EACxB,uBAAuB,CAAC,EAAE,EAAE,GAC3B,OAAO,CAAC,2BAA2B,CAAC;IAkBjC,wBAAwB,IAAI,OAAO,CAAC,2BAA2B,CAAC;IAWhE,oBAAoB,IAAI,OAAO,CAAC,2BAA2B,CAAC;IAe5D,gCAAgC,IAAI,OAAO,CAAC,2BAA2B,CAAC;IAexE,mBAAmB,CAAC,gBAAgB,EAAE,2BAA2B,EAAE,sBAAsB,UAAQ;YAOzF,8BAA8B;IAQtC,eAAe,CAAC,mBAAmB,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE;CAIvE"}
|
|
@@ -2,7 +2,9 @@ import { CONTRACT_INSTANCE_REGISTRY_CONTRACT_ADDRESS } from '@aztec/constants';
|
|
|
2
2
|
import { Fr } from '@aztec/foundation/fields';
|
|
3
3
|
import { createLogger } from '@aztec/foundation/log';
|
|
4
4
|
import { ProtocolContractAddress } from '@aztec/protocol-contracts';
|
|
5
|
+
import { getCanonicalAuthRegistry } from '@aztec/protocol-contracts/auth-registry';
|
|
5
6
|
import { computeFeePayerBalanceStorageSlot, getCanonicalFeeJuice } from '@aztec/protocol-contracts/fee-juice';
|
|
7
|
+
import { getCanonicalInstanceRegistry } from '@aztec/protocol-contracts/instance-registry';
|
|
6
8
|
import { PublicDataWrite } from '@aztec/stdlib/avm';
|
|
7
9
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
8
10
|
import { computePublicDataTreeLeafSlot, siloNullifier } from '@aztec/stdlib/hash';
|
|
@@ -63,6 +65,26 @@ import { createContractClassAndInstance } from './utils.js';
|
|
|
63
65
|
await this.contractDataSource.addNewContract(feeJuice.artifact, feeJuiceContractClassPublic, feeJuice.instance);
|
|
64
66
|
return feeJuice.instance;
|
|
65
67
|
}
|
|
68
|
+
async registerAuthContract() {
|
|
69
|
+
const authRegistry = await getCanonicalAuthRegistry();
|
|
70
|
+
const authRegistryContractClassPublic = {
|
|
71
|
+
...authRegistry.contractClass,
|
|
72
|
+
privateFunctions: [],
|
|
73
|
+
utilityFunctions: []
|
|
74
|
+
};
|
|
75
|
+
await this.contractDataSource.addNewContract(authRegistry.artifact, authRegistryContractClassPublic, authRegistry.instance);
|
|
76
|
+
return authRegistry.instance;
|
|
77
|
+
}
|
|
78
|
+
async registerInstanceRegistryContract() {
|
|
79
|
+
const instanceRegistry = await getCanonicalInstanceRegistry();
|
|
80
|
+
const instanceRegistryContractClassPublic = {
|
|
81
|
+
...instanceRegistry.contractClass,
|
|
82
|
+
privateFunctions: [],
|
|
83
|
+
utilityFunctions: []
|
|
84
|
+
};
|
|
85
|
+
await this.contractDataSource.addNewContract(instanceRegistry.artifact, instanceRegistryContractClassPublic, instanceRegistry.instance);
|
|
86
|
+
return instanceRegistry.instance;
|
|
87
|
+
}
|
|
66
88
|
async addContractInstance(contractInstance, skipNullifierInsertion = false) {
|
|
67
89
|
if (!skipNullifierInsertion) {
|
|
68
90
|
await this.insertContractAddressNullifier(contractInstance.address);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initializers.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/fixtures/initializers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAG9C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAIlD,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AACnF,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAC;AAC3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACtE,OAAO,EAAE,6BAA6B,EAAE,MAAM,sCAAsC,CAAC;AACrF,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAI1D;;GAEG;AACH,wBAAgB,WAAW,CAAC,SAAS,CAAC,EAAE;IACtC,gBAAgB,CAAC,EAAE,6BAA6B,CAAC;IACjD,GAAG,CAAC,EAAE,uBAAuB,CAAC;IAC9B,YAAY,CAAC,EAAE,eAAe,CAAC;CAChC,GAAG,UAAU,CAQb;AAED,+DAA+D;AAC/D,wBAAgB,2BAA2B,CAAC,SAAS,CAAC,EAAE;IACtD,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,KAAK,CAAC,EAAE,8BAA8B,CAAC;IACvC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,cAAc,CAAC,EAAE,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,6BAA6B,CAYhC;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,GAAG,uBAAuB,
|
|
1
|
+
{"version":3,"file":"initializers.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/fixtures/initializers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAG9C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAIlD,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AACnF,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAC;AAC3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACtE,OAAO,EAAE,6BAA6B,EAAE,MAAM,sCAAsC,CAAC;AACrF,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAI1D;;GAEG;AACH,wBAAgB,WAAW,CAAC,SAAS,CAAC,EAAE;IACtC,gBAAgB,CAAC,EAAE,6BAA6B,CAAC;IACjD,GAAG,CAAC,EAAE,uBAAuB,CAAC;IAC9B,YAAY,CAAC,EAAE,eAAe,CAAC;CAChC,GAAG,UAAU,CAQb;AAED,+DAA+D;AAC/D,wBAAgB,2BAA2B,CAAC,SAAS,CAAC,EAAE;IACtD,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,KAAK,CAAC,EAAE,8BAA8B,CAAC;IACvC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,cAAc,CAAC,EAAE,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,6BAA6B,CAYhC;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,GAAG,uBAAuB,CAY9G;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,CAWzF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,CAKtF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AVM_MAX_PROCESSABLE_L2_GAS } from '@aztec/constants';
|
|
1
|
+
import { AVM_MAX_PROCESSABLE_L2_GAS, DEFAULT_MAX_DEBUG_LOG_MEMORY_READS } from '@aztec/constants';
|
|
2
2
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
3
3
|
import { Fr } from '@aztec/foundation/fields';
|
|
4
4
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
@@ -25,7 +25,7 @@ import { DEFAULT_TIMESTAMP } from './utils.js';
|
|
|
25
25
|
/**
|
|
26
26
|
* Create an empty instance of the Execution Environment where all values are zero, unless overridden in the overrides object
|
|
27
27
|
*/ export function initExecutionEnvironment(overrides) {
|
|
28
|
-
return new AvmExecutionEnvironment(overrides?.address ?? AztecAddress.zero(), overrides?.sender ?? AztecAddress.zero(), overrides?.contractCallDepth ?? Fr.zero(), overrides?.transactionFee ?? Fr.zero(), overrides?.globals ?? GlobalVariables.empty(), overrides?.isStaticCall ?? false, overrides?.calldata ?? [], overrides?.clientInitiatedSimulation ?? true);
|
|
28
|
+
return new AvmExecutionEnvironment(overrides?.address ?? AztecAddress.zero(), overrides?.sender ?? AztecAddress.zero(), overrides?.contractCallDepth ?? Fr.zero(), overrides?.transactionFee ?? Fr.zero(), overrides?.globals ?? GlobalVariables.empty(), overrides?.isStaticCall ?? false, overrides?.calldata ?? [], overrides?.clientInitiatedSimulation ?? true, overrides?.maxDebugLogMemoryReads ?? DEFAULT_MAX_DEBUG_LOG_MEMORY_READS);
|
|
29
29
|
}
|
|
30
30
|
/**
|
|
31
31
|
* Create an empty instance of the Execution Environment where all values are zero, unless overridden in the overrides object
|
|
@@ -54,12 +54,12 @@ export declare class L1ToL2MessageExists extends Instruction {
|
|
|
54
54
|
}
|
|
55
55
|
export declare class EmitUnencryptedLog extends Instruction {
|
|
56
56
|
private indirect;
|
|
57
|
-
private logOffset;
|
|
58
57
|
private logSizeOffset;
|
|
58
|
+
private logOffset;
|
|
59
59
|
static type: string;
|
|
60
60
|
static readonly opcode: Opcode;
|
|
61
61
|
static readonly wireFormat: OperandType[];
|
|
62
|
-
constructor(indirect: number,
|
|
62
|
+
constructor(indirect: number, logSizeOffset: number, logOffset: number);
|
|
63
63
|
execute(context: AvmContext): Promise<void>;
|
|
64
64
|
}
|
|
65
65
|
export declare class SendL2ToL1Message extends Instruction {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accrued_substate.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/opcodes/accrued_substate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAEpF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,qBAAa,cAAe,SAAQ,WAAW;IAa3C,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,YAAY;IAftB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAoB;IACvC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAyB;IAEvD,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAMxB;gBAGQ,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,EACtB,eAAe,EAAE,MAAM,EACvB,YAAY,EAAE,MAAM;IAKjB,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAmBzD;AAED,qBAAa,YAAa,SAAQ,WAAW;IAOzC,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,cAAc;IAPxB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAkB;IACrC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAuB;IAErD,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAA8D;gBAG9E,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM;IAKnB,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAmBzD;AAED,qBAAa,eAAgB,SAAQ,WAAW;IAa5C,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,YAAY;IAftB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAqB;IACxC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAA0B;IAExD,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAMxB;gBAGQ,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,EACvB,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM;IAKjB,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAkBzD;AAED,qBAAa,aAAc,SAAQ,WAAW;IAO1C,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,eAAe;IAPzB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAmB;IACtC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAwB;IAEtD,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAA8D;gBAG9E,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM;IAKpB,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CA8BzD;AAED,qBAAa,mBAAoB,SAAQ,WAAW;IAahD,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,YAAY;IAftB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAqB;IACxC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAA0B;IAExD,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAMxB;gBAGQ,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,kBAAkB,EAAE,MAAM,EAC1B,YAAY,EAAE,MAAM;IAKjB,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAmBzD;AAED,qBAAa,kBAAmB,SAAQ,WAAW;IAQ/C,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"accrued_substate.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/opcodes/accrued_substate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { NullifierCollisionError } from '../../
|
|
1
|
+
import { NullifierCollisionError } from '../../side_effect_errors.js';
|
|
2
2
|
import { TypeTag, Uint1 } from '../avm_memory_types.js';
|
|
3
3
|
import { InstructionExecutionError, StaticCallAlterationError } from '../errors.js';
|
|
4
4
|
import { Opcode, OperandType } from '../serialization/instruction_serialization.js';
|
|
@@ -183,8 +183,8 @@ export class L1ToL2MessageExists extends Instruction {
|
|
|
183
183
|
}
|
|
184
184
|
export class EmitUnencryptedLog extends Instruction {
|
|
185
185
|
indirect;
|
|
186
|
-
logOffset;
|
|
187
186
|
logSizeOffset;
|
|
187
|
+
logOffset;
|
|
188
188
|
// TODO(#11124): rename unencrypted -> public
|
|
189
189
|
static type = 'EMITUNENCRYPTEDLOG';
|
|
190
190
|
static opcode = Opcode.EMITUNENCRYPTEDLOG;
|
|
@@ -195,8 +195,8 @@ export class EmitUnencryptedLog extends Instruction {
|
|
|
195
195
|
OperandType.UINT16,
|
|
196
196
|
OperandType.UINT16
|
|
197
197
|
];
|
|
198
|
-
constructor(indirect,
|
|
199
|
-
super(), this.indirect = indirect, this.
|
|
198
|
+
constructor(indirect, logSizeOffset, logOffset){
|
|
199
|
+
super(), this.indirect = indirect, this.logSizeOffset = logSizeOffset, this.logOffset = logOffset;
|
|
200
200
|
}
|
|
201
201
|
async execute(context) {
|
|
202
202
|
if (context.environment.isStaticCall) {
|
|
@@ -206,10 +206,10 @@ export class EmitUnencryptedLog extends Instruction {
|
|
|
206
206
|
const addressing = Addressing.fromWire(this.indirect);
|
|
207
207
|
context.machineState.consumeGas(this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()));
|
|
208
208
|
const operands = [
|
|
209
|
-
this.
|
|
210
|
-
this.
|
|
209
|
+
this.logSizeOffset,
|
|
210
|
+
this.logOffset
|
|
211
211
|
];
|
|
212
|
-
const [
|
|
212
|
+
const [logSizeOffset, logOffset] = addressing.resolve(operands, memory);
|
|
213
213
|
memory.checkTag(TypeTag.UINT32, logSizeOffset);
|
|
214
214
|
const logSize = memory.get(logSizeOffset).toNumber();
|
|
215
215
|
memory.checkTagsRange(TypeTag.FIELD, logOffset, logSize);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addressing_mode.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/opcodes/addressing_mode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"addressing_mode.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/opcodes/addressing_mode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAIzD,OAAO,EAA6B,KAAK,qBAAqB,EAAW,MAAM,wBAAwB,CAAC;AAGxG,oBAAY,cAAc;IACxB,MAAM,IAAI;IACV,QAAQ,IAAI;IACZ,QAAQ,IAAI;IACZ,iBAAiB,IAAI;CACtB;AAED,kEAAkE;AAClE,qBAAa,UAAU;IAEnB,qDAAqD;IACrD,OAAO,CAAC,QAAQ,CAAC,cAAc;;IAD/B,qDAAqD;IACpC,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,OAAO,gBAAgB,CAAC;WAGnE,SAAS,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,UAAU;WAK9C,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU;IAa9C,MAAM,IAAI,MAAM;IAehB,qBAAqB,IAAI,MAAM;IAI/B,qBAAqB,IAAI,MAAM;IAItC;;;;;;OAMG;IACI,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,qBAAqB,GAAG,MAAM,EAAE;CAuCxE"}
|