@aztec/simulator 0.43.0 → 0.45.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.
Files changed (155) hide show
  1. package/dest/acvm/oracle/oracle.d.ts +3 -1
  2. package/dest/acvm/oracle/oracle.d.ts.map +1 -1
  3. package/dest/acvm/oracle/oracle.js +12 -6
  4. package/dest/acvm/oracle/typed_oracle.d.ts +6 -4
  5. package/dest/acvm/oracle/typed_oracle.d.ts.map +1 -1
  6. package/dest/acvm/oracle/typed_oracle.js +8 -2
  7. package/dest/avm/avm_context.d.ts +1 -1
  8. package/dest/avm/avm_context.d.ts.map +1 -1
  9. package/dest/avm/avm_context.js +3 -3
  10. package/dest/avm/{avm_message_call_result.d.ts → avm_contract_call_result.d.ts} +2 -2
  11. package/dest/avm/avm_contract_call_result.d.ts.map +1 -0
  12. package/dest/avm/avm_contract_call_result.js +18 -0
  13. package/dest/avm/avm_execution_environment.d.ts +8 -10
  14. package/dest/avm/avm_execution_environment.d.ts.map +1 -1
  15. package/dest/avm/avm_execution_environment.js +15 -19
  16. package/dest/avm/avm_gas.js +2 -2
  17. package/dest/avm/avm_simulator.d.ts +4 -4
  18. package/dest/avm/avm_simulator.d.ts.map +1 -1
  19. package/dest/avm/avm_simulator.js +7 -8
  20. package/dest/avm/bytecode_utils.d.ts +5 -0
  21. package/dest/avm/bytecode_utils.d.ts.map +1 -0
  22. package/dest/avm/bytecode_utils.js +29 -0
  23. package/dest/avm/errors.js +2 -2
  24. package/dest/avm/fixtures/index.d.ts +10 -6
  25. package/dest/avm/fixtures/index.d.ts.map +1 -1
  26. package/dest/avm/fixtures/index.js +10 -17
  27. package/dest/avm/journal/journal.d.ts +56 -65
  28. package/dest/avm/journal/journal.d.ts.map +1 -1
  29. package/dest/avm/journal/journal.js +80 -117
  30. package/dest/avm/journal/nullifiers.d.ts +21 -8
  31. package/dest/avm/journal/nullifiers.d.ts.map +1 -1
  32. package/dest/avm/journal/nullifiers.js +26 -8
  33. package/dest/avm/journal/public_storage.d.ts +5 -1
  34. package/dest/avm/journal/public_storage.d.ts.map +1 -1
  35. package/dest/avm/journal/public_storage.js +11 -2
  36. package/dest/avm/opcodes/accrued_substate.d.ts +1 -2
  37. package/dest/avm/opcodes/accrued_substate.d.ts.map +1 -1
  38. package/dest/avm/opcodes/accrued_substate.js +8 -17
  39. package/dest/avm/opcodes/environment_getters.d.ts +13 -8
  40. package/dest/avm/opcodes/environment_getters.d.ts.map +1 -1
  41. package/dest/avm/opcodes/environment_getters.js +20 -13
  42. package/dest/avm/opcodes/external_calls.d.ts.map +1 -1
  43. package/dest/avm/opcodes/external_calls.js +11 -27
  44. package/dest/avm/serialization/bytecode_serialization.d.ts.map +1 -1
  45. package/dest/avm/serialization/bytecode_serialization.js +5 -5
  46. package/dest/avm/serialization/instruction_serialization.d.ts +9 -9
  47. package/dest/avm/serialization/instruction_serialization.d.ts.map +1 -1
  48. package/dest/avm/serialization/instruction_serialization.js +10 -10
  49. package/dest/avm/test_utils.d.ts +14 -0
  50. package/dest/avm/test_utils.d.ts.map +1 -0
  51. package/dest/avm/test_utils.js +36 -0
  52. package/dest/client/client_execution_context.d.ts +6 -4
  53. package/dest/client/client_execution_context.d.ts.map +1 -1
  54. package/dest/client/client_execution_context.js +8 -6
  55. package/dest/client/execution_note_cache.d.ts.map +1 -1
  56. package/dest/client/execution_note_cache.js +1 -1
  57. package/dest/client/execution_result.d.ts +2 -1
  58. package/dest/client/execution_result.d.ts.map +1 -1
  59. package/dest/client/execution_result.js +1 -1
  60. package/dest/client/index.d.ts +2 -0
  61. package/dest/client/index.d.ts.map +1 -1
  62. package/dest/client/index.js +3 -1
  63. package/dest/client/simulator.d.ts +3 -3
  64. package/dest/client/simulator.d.ts.map +1 -1
  65. package/dest/client/simulator.js +1 -1
  66. package/dest/client/view_data_oracle.d.ts +5 -1
  67. package/dest/client/view_data_oracle.d.ts.map +1 -1
  68. package/dest/client/view_data_oracle.js +12 -4
  69. package/dest/mocks/fixtures.d.ts +3 -3
  70. package/dest/mocks/fixtures.d.ts.map +1 -1
  71. package/dest/mocks/fixtures.js +6 -5
  72. package/dest/public/abstract_phase_manager.d.ts +1 -0
  73. package/dest/public/abstract_phase_manager.d.ts.map +1 -1
  74. package/dest/public/abstract_phase_manager.js +17 -14
  75. package/dest/public/app_logic_phase_manager.d.ts.map +1 -1
  76. package/dest/public/app_logic_phase_manager.js +2 -1
  77. package/dest/public/execution.d.ts +33 -30
  78. package/dest/public/execution.d.ts.map +1 -1
  79. package/dest/public/execution.js +2 -2
  80. package/dest/public/executor.d.ts +12 -7
  81. package/dest/public/executor.d.ts.map +1 -1
  82. package/dest/public/executor.js +42 -33
  83. package/dest/public/hints_builder.d.ts +1 -1
  84. package/dest/public/index.d.ts +1 -1
  85. package/dest/public/index.d.ts.map +1 -1
  86. package/dest/public/index.js +1 -1
  87. package/dest/public/public_kernel.d.ts +1 -1
  88. package/dest/public/public_kernel.d.ts.map +1 -1
  89. package/dest/public/public_kernel.js +2 -2
  90. package/dest/public/public_processor.d.ts +5 -2
  91. package/dest/public/public_processor.d.ts.map +1 -1
  92. package/dest/public/public_processor.js +142 -123
  93. package/dest/public/side_effect_trace.d.ts +87 -0
  94. package/dest/public/side_effect_trace.d.ts.map +1 -0
  95. package/dest/public/side_effect_trace.js +236 -0
  96. package/dest/public/side_effect_trace_interface.d.ts +36 -0
  97. package/dest/public/side_effect_trace_interface.d.ts.map +1 -0
  98. package/dest/public/side_effect_trace_interface.js +2 -0
  99. package/dest/public/teardown_phase_manager.d.ts.map +1 -1
  100. package/dest/public/teardown_phase_manager.js +2 -1
  101. package/dest/rollup/rollup.d.ts +1 -1
  102. package/dest/rollup/rollup.d.ts.map +1 -1
  103. package/dest/rollup/rollup.js +2 -2
  104. package/package.json +18 -9
  105. package/src/acvm/oracle/oracle.ts +23 -5
  106. package/src/acvm/oracle/typed_oracle.ts +23 -4
  107. package/src/avm/avm_context.ts +2 -2
  108. package/src/avm/{avm_message_call_result.ts → avm_contract_call_result.ts} +1 -1
  109. package/src/avm/avm_execution_environment.ts +16 -26
  110. package/src/avm/avm_gas.ts +1 -1
  111. package/src/avm/avm_simulator.ts +10 -13
  112. package/src/avm/bytecode_utils.ts +32 -0
  113. package/src/avm/errors.ts +1 -1
  114. package/src/avm/fixtures/index.ts +21 -23
  115. package/src/avm/journal/journal.ts +118 -224
  116. package/src/avm/journal/nullifiers.ts +30 -13
  117. package/src/avm/journal/public_storage.ts +12 -2
  118. package/src/avm/opcodes/accrued_substate.ts +12 -21
  119. package/src/avm/opcodes/environment_getters.ts +23 -14
  120. package/src/avm/opcodes/external_calls.ts +13 -36
  121. package/src/avm/serialization/bytecode_serialization.ts +4 -3
  122. package/src/avm/serialization/instruction_serialization.ts +3 -3
  123. package/src/avm/test_utils.ts +53 -0
  124. package/src/client/client_execution_context.ts +22 -7
  125. package/src/client/execution_note_cache.ts +0 -1
  126. package/src/client/execution_result.ts +2 -1
  127. package/src/client/index.ts +2 -0
  128. package/src/client/simulator.ts +8 -2
  129. package/src/client/view_data_oracle.ts +20 -3
  130. package/src/mocks/fixtures.ts +7 -6
  131. package/src/public/abstract_phase_manager.ts +32 -21
  132. package/src/public/app_logic_phase_manager.ts +1 -0
  133. package/src/public/execution.ts +45 -31
  134. package/src/public/executor.ts +71 -49
  135. package/src/public/index.ts +1 -1
  136. package/src/public/public_kernel.ts +2 -1
  137. package/src/public/public_processor.ts +11 -2
  138. package/src/public/side_effect_trace.ts +341 -0
  139. package/src/public/side_effect_trace_interface.ts +41 -0
  140. package/src/public/teardown_phase_manager.ts +1 -0
  141. package/src/rollup/rollup.ts +3 -1
  142. package/dest/avm/avm_message_call_result.d.ts.map +0 -1
  143. package/dest/avm/avm_message_call_result.js +0 -18
  144. package/dest/avm/journal/trace.d.ts +0 -33
  145. package/dest/avm/journal/trace.d.ts.map +0 -1
  146. package/dest/avm/journal/trace.js +0 -152
  147. package/dest/avm/journal/trace_types.d.ts +0 -55
  148. package/dest/avm/journal/trace_types.d.ts.map +0 -1
  149. package/dest/avm/journal/trace_types.js +0 -2
  150. package/dest/public/transitional_adaptors.d.ts +0 -21
  151. package/dest/public/transitional_adaptors.d.ts.map +0 -1
  152. package/dest/public/transitional_adaptors.js +0 -90
  153. package/src/avm/journal/trace.ts +0 -181
  154. package/src/avm/journal/trace_types.ts +0 -91
  155. package/src/public/transitional_adaptors.ts +0 -168
@@ -1,15 +1,15 @@
1
- import { FunctionSelector, type GasSettings, type GlobalVariables, type Header } from '@aztec/circuits.js';
1
+ import { FunctionSelector, type GlobalVariables, type Header } from '@aztec/circuits.js';
2
2
  import { computeVarArgsHash } from '@aztec/circuits.js/hash';
3
3
  import { type AztecAddress } from '@aztec/foundation/aztec-address';
4
4
  import { Fr } from '@aztec/foundation/fields';
5
5
 
6
6
  export class AvmContextInputs {
7
- static readonly SIZE = 3;
7
+ static readonly SIZE = 2;
8
8
 
9
- constructor(private selector: Fr, private argsHash: Fr, private isStaticCall: boolean) {}
9
+ constructor(private argsHash: Fr, private isStaticCall: boolean) {}
10
10
 
11
11
  public toFields(): Fr[] {
12
- return [this.selector, this.argsHash, new Fr(this.isStaticCall)];
12
+ return [this.argsHash, new Fr(this.isStaticCall)];
13
13
  }
14
14
  }
15
15
 
@@ -17,36 +17,24 @@ export class AvmContextInputs {
17
17
  * Contains variables that remain constant during AVM execution
18
18
  * These variables are provided by the public kernel circuit
19
19
  */
20
- // TODO(https://github.com/AztecProtocol/aztec-packages/issues/3992): gas not implemented
21
20
  export class AvmExecutionEnvironment {
22
21
  constructor(
23
22
  public readonly address: AztecAddress,
24
23
  public readonly storageAddress: AztecAddress,
25
24
  public readonly sender: AztecAddress,
26
- public readonly feePerL2Gas: Fr,
27
- public readonly feePerDaGas: Fr,
25
+ public readonly functionSelector: FunctionSelector, // may be temporary (#7224)
28
26
  public readonly contractCallDepth: Fr,
27
+ public readonly transactionFee: Fr,
29
28
  public readonly header: Header,
30
29
  public readonly globals: GlobalVariables,
31
30
  public readonly isStaticCall: boolean,
32
31
  public readonly isDelegateCall: boolean,
33
32
  public readonly calldata: Fr[],
34
- public readonly gasSettings: GasSettings,
35
- public readonly transactionFee: Fr,
36
-
37
- // Function selector is temporary since eventually public contract bytecode will be one blob
38
- // containing all functions, and function selector will become an application-level mechanism
39
- // (e.g. first few bytes of calldata + compiler-generated jump table)
40
- public readonly temporaryFunctionSelector: FunctionSelector,
41
33
  ) {
42
34
  // We encode some extra inputs (AvmContextInputs) in calldata.
43
35
  // This will have to go once we move away from one proof per call.
44
- const inputs = new AvmContextInputs(
45
- temporaryFunctionSelector.toField(),
46
- computeVarArgsHash(calldata),
47
- isStaticCall,
48
- );
49
- this.calldata = [...inputs.toFields(), ...calldata];
36
+ const inputs = new AvmContextInputs(computeVarArgsHash(calldata), isStaticCall).toFields();
37
+ this.calldata = [...inputs, ...calldata];
50
38
  }
51
39
 
52
40
  private deriveEnvironmentForNestedCallInternal(
@@ -60,17 +48,14 @@ export class AvmExecutionEnvironment {
60
48
  /*address=*/ targetAddress,
61
49
  /*storageAddress=*/ targetAddress,
62
50
  /*sender=*/ this.address,
63
- this.feePerL2Gas,
64
- this.feePerDaGas,
65
- this.contractCallDepth,
51
+ functionSelector,
52
+ this.contractCallDepth.add(Fr.ONE),
53
+ this.transactionFee,
66
54
  this.header,
67
55
  this.globals,
68
56
  isStaticCall,
69
57
  isDelegateCall,
70
58
  calldata,
71
- this.gasSettings,
72
- this.transactionFee,
73
- functionSelector,
74
59
  );
75
60
  }
76
61
 
@@ -109,4 +94,9 @@ export class AvmExecutionEnvironment {
109
94
  ): AvmExecutionEnvironment {
110
95
  throw new Error('Delegate calls not supported!');
111
96
  }
97
+
98
+ public getCalldataWithoutPrefix(): Fr[] {
99
+ // clip off the first few entries
100
+ return this.calldata.slice(AvmContextInputs.SIZE);
101
+ }
112
102
  }
@@ -76,7 +76,7 @@ const BaseGasCosts: Record<Opcode, Gas> = {
76
76
  [Opcode.FEEPERL2GAS]: DefaultBaseGasCost,
77
77
  [Opcode.FEEPERDAGAS]: DefaultBaseGasCost,
78
78
  [Opcode.TRANSACTIONFEE]: DefaultBaseGasCost,
79
- [Opcode.CONTRACTCALLDEPTH]: DefaultBaseGasCost,
79
+ [Opcode.FUNCTIONSELECTOR]: DefaultBaseGasCost,
80
80
  [Opcode.CHAINID]: DefaultBaseGasCost,
81
81
  [Opcode.VERSION]: DefaultBaseGasCost,
82
82
  [Opcode.BLOCKNUMBER]: DefaultBaseGasCost,
@@ -2,9 +2,9 @@ import { type DebugLogger, createDebugLogger } from '@aztec/foundation/log';
2
2
 
3
3
  import { strict as assert } from 'assert';
4
4
 
5
- import { decompressBytecodeIfCompressed, isAvmBytecode } from '../public/transitional_adaptors.js';
6
5
  import type { AvmContext } from './avm_context.js';
7
- import { AvmContractCallResults } from './avm_message_call_result.js';
6
+ import { AvmContractCallResult } from './avm_contract_call_result.js';
7
+ import { decompressBytecodeIfCompressed, isAvmBytecode } from './bytecode_utils.js';
8
8
  import {
9
9
  AvmExecutionError,
10
10
  InvalidProgramCounterError,
@@ -20,19 +20,16 @@ export class AvmSimulator {
20
20
  private bytecode: Buffer | undefined;
21
21
 
22
22
  constructor(private context: AvmContext) {
23
- this.log = createDebugLogger(
24
- `aztec:avm_simulator:core(f:${context.environment.temporaryFunctionSelector.toString()})`,
25
- );
23
+ this.log = createDebugLogger(`aztec:avm_simulator:core(f:${context.environment.functionSelector.toString()})`);
26
24
  }
27
25
 
28
26
  /**
29
27
  * Fetch the bytecode and execute it in the current context.
30
28
  */
31
- public async execute(): Promise<AvmContractCallResults> {
32
- const selector = this.context.environment.temporaryFunctionSelector;
33
- const bytecode = await this.context.persistableState.hostStorage.contractsDb.getBytecode(
29
+ public async execute(): Promise<AvmContractCallResult> {
30
+ const bytecode = await this.context.persistableState.getBytecode(
34
31
  this.context.environment.address,
35
- selector,
32
+ this.context.environment.functionSelector,
36
33
  );
37
34
 
38
35
  // This assumes that we will not be able to send messages to accounts without code
@@ -55,7 +52,7 @@ export class AvmSimulator {
55
52
  * Executes the provided bytecode in the current context.
56
53
  * This method is useful for testing and debugging.
57
54
  */
58
- public async executeBytecode(bytecode: Buffer): Promise<AvmContractCallResults> {
55
+ public async executeBytecode(bytecode: Buffer): Promise<AvmContractCallResult> {
59
56
  const decompressedBytecode = await decompressBytecodeIfCompressed(bytecode);
60
57
  assert(isAvmBytecode(decompressedBytecode), "AVM simulator can't execute non-AVM bytecode");
61
58
 
@@ -67,7 +64,7 @@ export class AvmSimulator {
67
64
  * Executes the provided instructions in the current context.
68
65
  * This method is useful for testing and debugging.
69
66
  */
70
- public async executeInstructions(instructions: Instruction[]): Promise<AvmContractCallResults> {
67
+ public async executeInstructions(instructions: Instruction[]): Promise<AvmContractCallResult> {
71
68
  assert(instructions.length > 0);
72
69
  const { machineState } = this.context;
73
70
  try {
@@ -96,7 +93,7 @@ export class AvmSimulator {
96
93
  const output = machineState.getOutput();
97
94
  const reverted = machineState.getReverted();
98
95
  const revertReason = reverted ? revertReasonFromExplicitRevert(output, this.context) : undefined;
99
- const results = new AvmContractCallResults(reverted, output, revertReason);
96
+ const results = new AvmContractCallResult(reverted, output, revertReason);
100
97
  this.log.debug(`Context execution results: ${results.toString()}`);
101
98
  // Return results for processing by calling context
102
99
  return results;
@@ -109,7 +106,7 @@ export class AvmSimulator {
109
106
 
110
107
  const revertReason = revertReasonFromExceptionalHalt(err, this.context);
111
108
  // Note: "exceptional halts" cannot return data, hence []
112
- const results = new AvmContractCallResults(/*reverted=*/ true, /*output=*/ [], revertReason);
109
+ const results = new AvmContractCallResult(/*reverted=*/ true, /*output=*/ [], revertReason);
113
110
  this.log.debug(`Context execution results: ${results.toString()}`);
114
111
  // Return results for processing by calling context
115
112
  return results;
@@ -0,0 +1,32 @@
1
+ import { promisify } from 'util';
2
+ import { gunzip } from 'zlib';
3
+
4
+ import { Mov } from '../avm/opcodes/memory.js';
5
+
6
+ const AVM_MAGIC_SUFFIX = Buffer.from([
7
+ Mov.opcode, // opcode
8
+ 0x00, // indirect
9
+ ...Buffer.from('000018ca', 'hex'), // srcOffset
10
+ ...Buffer.from('000018ca', 'hex'), // dstOffset
11
+ ]);
12
+
13
+ export function markBytecodeAsAvm(bytecode: Buffer): Buffer {
14
+ return Buffer.concat([bytecode, AVM_MAGIC_SUFFIX]);
15
+ }
16
+
17
+ // This is just a helper function for the AVM simulator
18
+ export async function decompressBytecodeIfCompressed(bytecode: Buffer): Promise<Buffer> {
19
+ try {
20
+ return await promisify(gunzip)(bytecode);
21
+ } catch {
22
+ // If the bytecode is not compressed, the gunzip call will throw an error
23
+ // In this case, we assume the bytecode is not compressed and continue.
24
+ return Promise.resolve(bytecode);
25
+ }
26
+ }
27
+
28
+ export async function isAvmBytecode(bytecode: Buffer): Promise<boolean> {
29
+ const decompressedBytecode = await decompressBytecodeIfCompressed(bytecode);
30
+ const magicSize = AVM_MAGIC_SUFFIX.length;
31
+ return decompressedBytecode.subarray(-magicSize).equals(AVM_MAGIC_SUFFIX);
32
+ }
package/src/avm/errors.ts CHANGED
@@ -113,7 +113,7 @@ function createRevertReason(message: string, context: AvmContext, nestedError?:
113
113
  message,
114
114
  /*failingFunction=*/ {
115
115
  contractAddress: context.environment.address,
116
- functionSelector: context.environment.temporaryFunctionSelector,
116
+ functionSelector: context.environment.functionSelector,
117
117
  },
118
118
  /*noirCallStack=*/ [...context.machineState.internalCallStack, context.machineState.pc].map(pc => `0.${pc}`),
119
119
  /*options=*/ { cause: nestedError },
@@ -1,23 +1,24 @@
1
- import { GasFees, GasSettings, GlobalVariables, Header } from '@aztec/circuits.js';
1
+ import { GasFees, GlobalVariables, Header } from '@aztec/circuits.js';
2
2
  import { FunctionSelector } from '@aztec/foundation/abi';
3
3
  import { AztecAddress } from '@aztec/foundation/aztec-address';
4
4
  import { EthAddress } from '@aztec/foundation/eth-address';
5
5
  import { Fr } from '@aztec/foundation/fields';
6
6
  import { AvmTestContractArtifact } from '@aztec/noir-contracts.js';
7
- import { SerializableContractInstance } from '@aztec/types/contracts';
8
7
 
9
8
  import { strict as assert } from 'assert';
10
9
  import { mock } from 'jest-mock-extended';
11
10
  import merge from 'lodash.merge';
12
11
 
13
12
  import { type CommitmentsDB, type PublicContractsDB, type PublicStateDB } from '../../index.js';
13
+ import { type PublicSideEffectTraceInterface } from '../../public/side_effect_trace_interface.js';
14
14
  import { AvmContext } from '../avm_context.js';
15
15
  import { AvmContextInputs, AvmExecutionEnvironment } from '../avm_execution_environment.js';
16
16
  import { AvmMachineState } from '../avm_machine_state.js';
17
17
  import { Field, Uint8 } from '../avm_memory_types.js';
18
18
  import { HostStorage } from '../journal/host_storage.js';
19
19
  import { AvmPersistableStateManager } from '../journal/journal.js';
20
- import { type TracedContractInstance } from '../journal/trace_types.js';
20
+ import { NullifierManager } from '../journal/nullifiers.js';
21
+ import { PublicStorage } from '../journal/public_storage.js';
21
22
 
22
23
  /**
23
24
  * Create a new AVM context with default values.
@@ -28,7 +29,7 @@ export function initContext(overrides?: {
28
29
  machineState?: AvmMachineState;
29
30
  }): AvmContext {
30
31
  return new AvmContext(
31
- overrides?.persistableState || initMockPersistableStateManager(),
32
+ overrides?.persistableState || initPersistableStateManager(),
32
33
  overrides?.env || initExecutionEnvironment(),
33
34
  overrides?.machineState || initMachineState(),
34
35
  );
@@ -47,9 +48,20 @@ export function initHostStorage(overrides?: {
47
48
  );
48
49
  }
49
50
 
50
- /** Creates an empty state manager with mocked storage. */
51
- export function initMockPersistableStateManager(): AvmPersistableStateManager {
52
- return new AvmPersistableStateManager(initHostStorage());
51
+ /** Creates an empty state manager with mocked host storage. */
52
+ export function initPersistableStateManager(overrides?: {
53
+ hostStorage?: HostStorage;
54
+ trace?: PublicSideEffectTraceInterface;
55
+ publicStorage?: PublicStorage;
56
+ nullifiers?: NullifierManager;
57
+ }): AvmPersistableStateManager {
58
+ const hostStorage = overrides?.hostStorage || initHostStorage();
59
+ return new AvmPersistableStateManager(
60
+ hostStorage,
61
+ overrides?.trace || mock<PublicSideEffectTraceInterface>(),
62
+ overrides?.publicStorage || new PublicStorage(hostStorage.publicStateDb),
63
+ overrides?.nullifiers || new NullifierManager(hostStorage.commitmentsDb),
64
+ );
53
65
  }
54
66
 
55
67
  /**
@@ -60,17 +72,14 @@ export function initExecutionEnvironment(overrides?: Partial<AvmExecutionEnviron
60
72
  overrides?.address ?? AztecAddress.zero(),
61
73
  overrides?.storageAddress ?? AztecAddress.zero(),
62
74
  overrides?.sender ?? AztecAddress.zero(),
63
- overrides?.feePerL2Gas ?? Fr.zero(),
64
- overrides?.feePerDaGas ?? Fr.zero(),
75
+ overrides?.functionSelector ?? FunctionSelector.empty(),
65
76
  overrides?.contractCallDepth ?? Fr.zero(),
77
+ overrides?.transactionFee ?? Fr.zero(),
66
78
  overrides?.header ?? Header.empty(),
67
79
  overrides?.globals ?? GlobalVariables.empty(),
68
80
  overrides?.isStaticCall ?? false,
69
81
  overrides?.isDelegateCall ?? false,
70
82
  overrides?.calldata ?? [],
71
- overrides?.gasSettings ?? GasSettings.empty(),
72
- overrides?.transactionFee ?? Fr.ZERO,
73
- overrides?.temporaryFunctionSelector ?? FunctionSelector.empty(),
74
83
  );
75
84
  }
76
85
 
@@ -138,14 +147,3 @@ export function getAvmTestContractBytecode(functionName: string): Buffer {
138
147
  );
139
148
  return artifact.bytecode;
140
149
  }
141
-
142
- export function randomTracedContractInstance(): TracedContractInstance {
143
- const instance = SerializableContractInstance.random();
144
- const address = AztecAddress.random();
145
- return { exists: true, ...instance, address };
146
- }
147
-
148
- export function emptyTracedContractInstance(withAddress?: AztecAddress): TracedContractInstance {
149
- const instance = SerializableContractInstance.empty().withAddress(withAddress ?? AztecAddress.zero());
150
- return { exists: false, ...instance };
151
- }