@aztec/simulator 1.0.0 → 1.1.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.
Files changed (35) hide show
  1. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +1 -1
  2. package/dest/public/avm/fixtures/avm_simulation_tester.js +3 -4
  3. package/dest/public/avm/fixtures/initializers.d.ts +2 -1
  4. package/dest/public/avm/fixtures/initializers.d.ts.map +1 -1
  5. package/dest/public/avm/fixtures/initializers.js +2 -2
  6. package/dest/public/avm/fixtures/utils.d.ts +2 -0
  7. package/dest/public/avm/fixtures/utils.d.ts.map +1 -1
  8. package/dest/public/avm/fixtures/utils.js +1 -0
  9. package/dest/public/avm/opcodes/control_flow.d.ts.map +1 -1
  10. package/dest/public/avm/opcodes/control_flow.js +5 -3
  11. package/dest/public/db_interfaces.d.ts +4 -3
  12. package/dest/public/db_interfaces.d.ts.map +1 -1
  13. package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
  14. package/dest/public/fixtures/public_tx_simulation_tester.js +2 -3
  15. package/dest/public/hinting_db_sources.d.ts +2 -1
  16. package/dest/public/hinting_db_sources.d.ts.map +1 -1
  17. package/dest/public/hinting_db_sources.js +2 -2
  18. package/dest/public/public_db_sources.d.ts +2 -1
  19. package/dest/public/public_db_sources.d.ts.map +1 -1
  20. package/dest/public/public_db_sources.js +4 -2
  21. package/dest/public/public_tx_simulator/public_tx_context.js +1 -1
  22. package/dest/public/state_manager/state_manager.d.ts +4 -3
  23. package/dest/public/state_manager/state_manager.d.ts.map +1 -1
  24. package/dest/public/state_manager/state_manager.js +8 -8
  25. package/package.json +15 -15
  26. package/src/public/avm/fixtures/avm_simulation_tester.ts +3 -4
  27. package/src/public/avm/fixtures/initializers.ts +4 -3
  28. package/src/public/avm/fixtures/utils.ts +2 -0
  29. package/src/public/avm/opcodes/control_flow.ts +6 -4
  30. package/src/public/db_interfaces.ts +4 -3
  31. package/src/public/fixtures/public_tx_simulation_tester.ts +7 -3
  32. package/src/public/hinting_db_sources.ts +3 -2
  33. package/src/public/public_db_sources.ts +5 -2
  34. package/src/public/public_tx_simulator/public_tx_context.ts +1 -1
  35. package/src/public/state_manager/state_manager.ts +7 -6
@@ -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;AAKjF,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;AAY1E;;;;GAIG;AACH,qBAAa,mBAAoB,SAAQ,uBAAuB;IAI5D,OAAO,CAAC,YAAY;gBAFpB,kBAAkB,EAAE,wBAAwB,EAC5C,WAAW,EAAE,yBAAyB,EAC9B,YAAY,EAAE,6BAA6B;WAKxC,MAAM,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAmBnD;;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"}
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;AAKjF,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,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAmBnD;;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"}
@@ -10,8 +10,7 @@ import { PublicPersistableStateManager } from '../../state_manager/state_manager
10
10
  import { AvmSimulator } from '../avm_simulator.js';
11
11
  import { BaseAvmSimulationTester } from './base_avm_simulation_tester.js';
12
12
  import { initContext, initExecutionEnvironment } from './initializers.js';
13
- import { DEFAULT_BLOCK_NUMBER, getContractFunctionAbi, getFunctionSelector, resolveContractAssertionMessage } from './utils.js';
14
- const TIMESTAMP = 99833n;
13
+ import { DEFAULT_TIMESTAMP, getContractFunctionAbi, getFunctionSelector, resolveContractAssertionMessage } from './utils.js';
15
14
  const DEFAULT_GAS_FEES = new GasFees(2, 3);
16
15
  /**
17
16
  * A test class that extends the BaseAvmSimulationTester to enable real-app testing of the core AvmSimulator.
@@ -29,7 +28,7 @@ const DEFAULT_GAS_FEES = new GasFees(2, 3);
29
28
  const contractsDB = new PublicContractsDB(contractDataSource);
30
29
  const trace = new SideEffectTrace();
31
30
  const firstNullifier = new Fr(420000);
32
- const stateManager = PublicPersistableStateManager.create(treesDB, contractsDB, trace, /*doMerkleOperations=*/ false, firstNullifier, DEFAULT_BLOCK_NUMBER);
31
+ const stateManager = PublicPersistableStateManager.create(treesDB, contractsDB, trace, /*doMerkleOperations=*/ false, firstNullifier, DEFAULT_TIMESTAMP);
33
32
  return new AvmSimulationTester(contractDataSource, merkleTrees, stateManager);
34
33
  }
35
34
  /**
@@ -47,7 +46,7 @@ const DEFAULT_GAS_FEES = new GasFees(2, 3);
47
46
  ...encodedArgs
48
47
  ];
49
48
  const globals = GlobalVariables.empty();
50
- globals.timestamp = TIMESTAMP;
49
+ globals.timestamp = DEFAULT_TIMESTAMP;
51
50
  globals.gasFees = DEFAULT_GAS_FEES;
52
51
  const environment = initExecutionEnvironment({
53
52
  calldata,
@@ -1,5 +1,6 @@
1
1
  import { Fr } from '@aztec/foundation/fields';
2
2
  import { GlobalVariables } from '@aztec/stdlib/tx';
3
+ import type { UInt64 } from '@aztec/stdlib/types';
3
4
  import type { PublicContractsDB, PublicTreesDB } from '../../public_db_sources.js';
4
5
  import type { PublicSideEffectTraceInterface } from '../../side_effect_trace_interface.js';
5
6
  import { NullifierManager } from '../../state_manager/nullifiers.js';
@@ -25,7 +26,7 @@ export declare function initPersistableStateManager(overrides?: {
25
26
  nullifiers?: NullifierManager;
26
27
  doMerkleOperations?: boolean;
27
28
  firstNullifier?: Fr;
28
- blockNumber?: number;
29
+ timestamp?: UInt64;
29
30
  }): PublicPersistableStateManager;
30
31
  /**
31
32
  * Create an empty instance of the Execution Environment where all values are zero, unless overridden in the overrides object
@@ -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;AAInD,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,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,6BAA6B,CAYhC;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,GAAG,uBAAuB,CAW9G;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
+ {"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,CAW9G;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"}
@@ -10,7 +10,7 @@ import { AvmContext } from '../avm_context.js';
10
10
  import { AvmExecutionEnvironment } from '../avm_execution_environment.js';
11
11
  import { AvmMachineState } from '../avm_machine_state.js';
12
12
  import { AvmSimulator } from '../avm_simulator.js';
13
- import { DEFAULT_BLOCK_NUMBER } from './utils.js';
13
+ import { DEFAULT_TIMESTAMP } from './utils.js';
14
14
  /**
15
15
  * Create a new AVM context with default values.
16
16
  */ export function initContext(overrides) {
@@ -20,7 +20,7 @@ import { DEFAULT_BLOCK_NUMBER } from './utils.js';
20
20
  }
21
21
  /** Creates an empty state manager with mocked host storage. */ export function initPersistableStateManager(overrides) {
22
22
  const treesDB = overrides?.treesDB || mock();
23
- return new PublicPersistableStateManager(treesDB, overrides?.contractsDB || mock(), overrides?.trace || mock(), overrides?.firstNullifier || new Fr(27), overrides?.blockNumber || DEFAULT_BLOCK_NUMBER, overrides?.doMerkleOperations || false, overrides?.publicStorage, overrides?.nullifiers);
23
+ return new PublicPersistableStateManager(treesDB, overrides?.contractsDB || mock(), overrides?.trace || mock(), overrides?.firstNullifier || new Fr(27), overrides?.timestamp || DEFAULT_TIMESTAMP, overrides?.doMerkleOperations || false, overrides?.publicStorage, overrides?.nullifiers);
24
24
  }
25
25
  /**
26
26
  * Create an empty instance of the Execution Environment where all values are zero, unless overridden in the overrides object
@@ -2,9 +2,11 @@ import { Fr } from '@aztec/foundation/fields';
2
2
  import { type ContractArtifact, type FunctionAbi, type FunctionArtifact, FunctionSelector } from '@aztec/stdlib/abi';
3
3
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
4
4
  import { type ContractClassPublic, type ContractInstanceWithAddress } from '@aztec/stdlib/contract';
5
+ import type { UInt64 } from '@aztec/stdlib/types';
5
6
  import { Field, Uint8, Uint32, Uint64 } from '../avm_memory_types.js';
6
7
  import type { AvmRevertReason } from '../errors.js';
7
8
  export declare const PUBLIC_DISPATCH_FN_NAME = "public_dispatch";
9
+ export declare const DEFAULT_TIMESTAMP: UInt64;
8
10
  export declare const DEFAULT_BLOCK_NUMBER = 42;
9
11
  /**
10
12
  * Create a new object with all the same properties as the original, except for the ones in the overrides object.
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/fixtures/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,gBAAgB,EAEjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,2BAA2B,EAEjC,MAAM,wBAAwB,CAAC;AAUhC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,eAAO,MAAM,uBAAuB,oBAAoB,CAAC;AACzD,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAEvC;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,GAAG,GAAG,CAEhE;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,CAEzD;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAE5D;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAE5D;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,CAE1D;AAED,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,gBAAgB,GACjC,OAAO,CAAC,gBAAgB,CAAC,CAK3B;AAED,wBAAgB,2BAA2B,CACzC,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,gBAAgB,GACjC,gBAAgB,GAAG,SAAS,CAE9B;AAED,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,gBAAgB,GACjC,WAAW,GAAG,SAAS,CAKzB;AAED,wBAAgB,+BAA+B,CAC7C,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,eAAe,EAC7B,MAAM,EAAE,EAAE,EAAE,EACZ,gBAAgB,EAAE,gBAAgB,GACjC,MAAM,GAAG,SAAS,CAWpB;AAED;;;;;;;;;GASG;AACH,wBAAsB,8BAA8B,CAClD,eAAe,EAAE,GAAG,EAAE,EACtB,QAAQ,EAAE,YAAY,EACtB,gBAAgB,EAAE,gBAAgB,EAClC,IAAI,SAAI,EACR,uBAAuB,CAAC,EAAE,EAAE,GAC3B,OAAO,CAAC;IACT,aAAa,EAAE,mBAAmB,CAAC;IACnC,gBAAgB,EAAE,2BAA2B,CAAC;IAC9C,wBAAwB,EAAE,EAAE,CAAC;CAC9B,CAAC,CA4BD"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/fixtures/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,gBAAgB,EAEjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,2BAA2B,EAEjC,MAAM,wBAAwB,CAAC;AAKhC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAMlD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,eAAO,MAAM,uBAAuB,oBAAoB,CAAC;AACzD,eAAO,MAAM,iBAAiB,EAAE,MAAe,CAAC;AAChD,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAEvC;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,GAAG,GAAG,CAEhE;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,CAEzD;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAE5D;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAE5D;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,CAE1D;AAED,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,gBAAgB,GACjC,OAAO,CAAC,gBAAgB,CAAC,CAK3B;AAED,wBAAgB,2BAA2B,CACzC,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,gBAAgB,GACjC,gBAAgB,GAAG,SAAS,CAE9B;AAED,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,gBAAgB,GACjC,WAAW,GAAG,SAAS,CAKzB;AAED,wBAAgB,+BAA+B,CAC7C,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,eAAe,EAC7B,MAAM,EAAE,EAAE,EAAE,EACZ,gBAAgB,EAAE,gBAAgB,GACjC,MAAM,GAAG,SAAS,CAWpB;AAED;;;;;;;;;GASG;AACH,wBAAsB,8BAA8B,CAClD,eAAe,EAAE,GAAG,EAAE,EACtB,QAAQ,EAAE,YAAY,EACtB,gBAAgB,EAAE,gBAAgB,EAClC,IAAI,SAAI,EACR,uBAAuB,CAAC,EAAE,EAAE,GAC3B,OAAO,CAAC;IACT,aAAa,EAAE,mBAAmB,CAAC;IACnC,gBAAgB,EAAE,2BAA2B,CAAC;IAC9C,wBAAwB,EAAE,EAAE,CAAC;CAC9B,CAAC,CA4BD"}
@@ -12,6 +12,7 @@ import merge from 'lodash.merge';
12
12
  import { resolveAssertionMessageFromRevertData, traverseCauseChain } from '../../../common/index.js';
13
13
  import { Field, Uint8, Uint32, Uint64 } from '../avm_memory_types.js';
14
14
  export const PUBLIC_DISPATCH_FN_NAME = 'public_dispatch';
15
+ export const DEFAULT_TIMESTAMP = 99833n;
15
16
  export const DEFAULT_BLOCK_NUMBER = 42;
16
17
  /**
17
18
  * Create a new object with all the same properties as the original, except for the ones in the overrides object.
@@ -1 +1 @@
1
- {"version":3,"file":"control_flow.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/opcodes/control_flow.ts"],"names":[],"mappings":"AAAA,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,IAAK,SAAQ,WAAW;IAMvB,OAAO,CAAC,UAAU;IAL9B,MAAM,CAAC,IAAI,EAAE,MAAM,CAAU;IAC7B,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAkB;IAEhD,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAA2C;gBAEhE,UAAU,EAAE,MAAM;IAIzB,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxC,SAAS,IAAI,OAAO;CAGrC;AAED,qBAAa,KAAM,SAAQ,WAAW;IAalC,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,GAAG;IAdb,MAAM,CAAC,IAAI,EAAE,MAAM,CAAW;IAC9B,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAmB;IAGjD,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAKvC;gBAGQ,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM;IAKR,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBxC,SAAS,IAAI,OAAO;CAGrC;AAED,qBAAa,YAAa,SAAQ,WAAW;IAM/B,OAAO,CAAC,GAAG;IALvB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAkB;IAC9C,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAuB;IAErD,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAA2C;gBAEhE,GAAG,EAAE,MAAM;IAIlB,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAUxC,SAAS,IAAI,OAAO;CAGrC;AAED,qBAAa,cAAe,SAAQ,WAAW;IAC7C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAoB;IAChD,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAyB;IAEvD,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAAuB;;IAMnD,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAUxC,SAAS,IAAI,OAAO;CAGrC"}
1
+ {"version":3,"file":"control_flow.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/opcodes/control_flow.ts"],"names":[],"mappings":"AAAA,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,IAAK,SAAQ,WAAW;IAMvB,OAAO,CAAC,UAAU;IAL9B,MAAM,CAAC,IAAI,EAAE,MAAM,CAAU;IAC7B,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAkB;IAEhD,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAA2C;gBAEhE,UAAU,EAAE,MAAM;IAIzB,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxC,SAAS,IAAI,OAAO;CAGrC;AAED,qBAAa,KAAM,SAAQ,WAAW;IAalC,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,GAAG;IAdb,MAAM,CAAC,IAAI,EAAE,MAAM,CAAW;IAC9B,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAmB;IAGjD,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAKvC;gBAGQ,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM;IAKR,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBxC,SAAS,IAAI,OAAO;CAGrC;AAED,qBAAa,YAAa,SAAQ,WAAW;IAM/B,OAAO,CAAC,GAAG;IALvB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAkB;IAC9C,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAuB;IAErD,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAA2C;gBAEhE,GAAG,EAAE,MAAM;IAIlB,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAUxC,SAAS,IAAI,OAAO;CAGrC;AAED,qBAAa,cAAe,SAAQ,WAAW;IAC7C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAoB;IAChD,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAyB;IAEvD,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAAuB;;IAMnD,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAUxC,SAAS,IAAI,OAAO;CAGrC"}
@@ -1,3 +1,4 @@
1
+ import { TypeTag } from '../avm_memory_types.js';
1
2
  import { InstructionExecutionError } from '../errors.js';
2
3
  import { Opcode, OperandType } from '../serialization/instruction_serialization.js';
3
4
  import { Addressing } from './addressing_mode.js';
@@ -45,9 +46,10 @@ export class JumpI extends Instruction {
45
46
  const operands = [
46
47
  this.condOffset
47
48
  ];
48
- const [condOffset] = addressing.resolve(operands, memory);
49
- const condition = memory.getAs(condOffset);
50
- if (condition.toBigInt() == 0n) {
49
+ const [resolvedCondOffset] = addressing.resolve(operands, memory);
50
+ memory.checkTag(TypeTag.UINT1, resolvedCondOffset);
51
+ const condition = memory.getAs(resolvedCondOffset);
52
+ if (condition.toNumber() == 0) {
51
53
  context.machineState.pc = context.machineState.nextPc;
52
54
  } else {
53
55
  context.machineState.pc = this.loc;
@@ -2,6 +2,7 @@ import type { Fr } from '@aztec/foundation/fields';
2
2
  import type { FunctionSelector } from '@aztec/stdlib/abi';
3
3
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
4
4
  import type { ContractClassPublic, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
5
+ import type { UInt64 } from '@aztec/stdlib/types';
5
6
  /**
6
7
  * Database interface for providing access to public state.
7
8
  */
@@ -26,12 +27,12 @@ export interface PublicStateDBInterface {
26
27
  */
27
28
  export interface PublicContractsDBInterface {
28
29
  /**
29
- * Returns a publicly deployed contract instance.
30
+ * Returns a contract instance given its address and the given timestamp, or undefined if not exists.
30
31
  * @param address - Address of the contract.
31
- * @param blockNumber - The block number at which to retrieve the contract instance.
32
+ * @param timestamp - Timestamp to get the contract instance at. Contract updates might change the instance.
32
33
  * @returns The contract instance or undefined if not found.
33
34
  */
34
- getContractInstance(address: AztecAddress, blockNumber: number): Promise<ContractInstanceWithAddress | undefined>;
35
+ getContractInstance(address: AztecAddress, timestamp: UInt64): Promise<ContractInstanceWithAddress | undefined>;
35
36
  /**
36
37
  * Returns a publicly deployed contract class.
37
38
  * @param contractClassId - ID of the contract class.
@@ -1 +1 @@
1
- {"version":3,"file":"db_interfaces.d.ts","sourceRoot":"","sources":["../../src/public/db_interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAE/F;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;;OAKG;IACH,WAAW,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;IAE3D;;;;;OAKG;IACH,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7E;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC;;;;;OAKG;IACH,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC,CAAC;IAElH;;;;OAIG;IACH,gBAAgB,CAAC,eAAe,EAAE,EAAE,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAAC;IAEhF;;;;OAIG;IACH,qBAAqB,CAAC,eAAe,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC;IAEpE;;;;;OAKG;IACH,oBAAoB,CAAC,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CAC9G"}
1
+ {"version":3,"file":"db_interfaces.d.ts","sourceRoot":"","sources":["../../src/public/db_interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC/F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;;OAKG;IACH,WAAW,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;IAE3D;;;;;OAKG;IACH,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7E;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC;;;;;OAKG;IACH,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC,CAAC;IAEhH;;;;OAIG;IACH,gBAAgB,CAAC,eAAe,EAAE,EAAE,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAAC;IAEhF;;;;OAIG;IACH,qBAAqB,CAAC,eAAe,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC;IAEpE;;;;;OAKG;IACH,oBAAoB,CAAC,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CAC9G"}
@@ -1 +1 @@
1
- {"version":3,"file":"public_tx_simulation_tester.d.ts","sourceRoot":"","sources":["../../../src/public/fixtures/public_tx_simulation_tester.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,gBAAgB,EAAmB,MAAM,mBAAmB,CAAC;AAC3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAEjF,OAAO,EAAE,eAAe,EAAiC,KAAK,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAG3F,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AAIxF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+CAA+C,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,KAAK,qBAAqB,EAA0B,MAAM,YAAY,CAAC;AAKhF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC,CAAC;AAEF;;;;GAIG;AACH,qBAAa,wBAAyB,SAAQ,uBAAuB;;IASjE,OAAO,CAAC,OAAO;IARjB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,aAAa,CAAC,CAAS;gBAG7B,UAAU,EAAE,yBAAyB,EACrC,kBAAkB,EAAE,wBAAwB,EAC5C,OAAO,GAAE,eAAkC,EACnC,OAAO,GAAE,mBAA+C;WAgB9C,MAAM,CACxB,OAAO,GAAE,eAAkC,EAC3C,OAAO,GAAE,mBAA+C,GACvD,OAAO,CAAC,wBAAwB,CAAC;IAM7B,gBAAgB,CAAC,MAAM,EAAE,MAAM;IAIzB,QAAQ,CACnB,MAAM,EAAE,YAAY,EACpB,UAAU,GAAE,gBAAgB,EAAO,EACnC,QAAQ,GAAE,gBAAgB,EAAO,EACjC,YAAY,CAAC,EAAE,gBAAgB,EAC/B,QAAQ,GAAE,YAAqB,EAE/B,iBAAiB,GAAE,qBAA4F,GAC9G,OAAO,CAAC,EAAE,CAAC;IAsBD,UAAU,CACrB,MAAM,EAAE,YAAY,EACpB,UAAU,GAAE,gBAAgB,EAAO,EACnC,QAAQ,GAAE,gBAAgB,EAAO,EACjC,YAAY,CAAC,EAAE,gBAAgB,EAC/B,QAAQ,GAAE,YAAqB,EAE/B,iBAAiB,CAAC,EAAE,qBAAqB,EACzC,OAAO,GAAE,MAAsB,GAC9B,OAAO,CAAC,cAAc,CAAC;IAyBb,mBAAmB,CAC9B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,YAAY,EACpB,UAAU,CAAC,EAAE,gBAAgB,EAAE,EAC/B,QAAQ,CAAC,EAAE,gBAAgB,EAAE,EAC7B,YAAY,CAAC,EAAE,gBAAgB,EAC/B,QAAQ,CAAC,EAAE,YAAY,EACvB,iBAAiB,CAAC,EAAE,qBAAqB,GACxC,OAAO,CAAC,cAAc,CAAC;IAInB,kBAAkB;CAuB1B;AAED,wBAAgB,cAAc,oBAM7B"}
1
+ {"version":3,"file":"public_tx_simulation_tester.d.ts","sourceRoot":"","sources":["../../../src/public/fixtures/public_tx_simulation_tester.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,gBAAgB,EAAmB,MAAM,mBAAmB,CAAC;AAC3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAEjF,OAAO,EAAE,eAAe,EAAiC,KAAK,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAG3F,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AASxF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+CAA+C,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,KAAK,qBAAqB,EAA0B,MAAM,YAAY,CAAC;AAIhF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC,CAAC;AAEF;;;;GAIG;AACH,qBAAa,wBAAyB,SAAQ,uBAAuB;;IASjE,OAAO,CAAC,OAAO;IARjB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,aAAa,CAAC,CAAS;gBAG7B,UAAU,EAAE,yBAAyB,EACrC,kBAAkB,EAAE,wBAAwB,EAC5C,OAAO,GAAE,eAAkC,EACnC,OAAO,GAAE,mBAA+C;WAgB9C,MAAM,CACxB,OAAO,GAAE,eAAkC,EAC3C,OAAO,GAAE,mBAA+C,GACvD,OAAO,CAAC,wBAAwB,CAAC;IAM7B,gBAAgB,CAAC,MAAM,EAAE,MAAM;IAIzB,QAAQ,CACnB,MAAM,EAAE,YAAY,EACpB,UAAU,GAAE,gBAAgB,EAAO,EACnC,QAAQ,GAAE,gBAAgB,EAAO,EACjC,YAAY,CAAC,EAAE,gBAAgB,EAC/B,QAAQ,GAAE,YAAqB,EAE/B,iBAAiB,GAAE,qBAA4F,GAC9G,OAAO,CAAC,EAAE,CAAC;IAsBD,UAAU,CACrB,MAAM,EAAE,YAAY,EACpB,UAAU,GAAE,gBAAgB,EAAO,EACnC,QAAQ,GAAE,gBAAgB,EAAO,EACjC,YAAY,CAAC,EAAE,gBAAgB,EAC/B,QAAQ,GAAE,YAAqB,EAE/B,iBAAiB,CAAC,EAAE,qBAAqB,EACzC,OAAO,GAAE,MAAsB,GAC9B,OAAO,CAAC,cAAc,CAAC;IAyBb,mBAAmB,CAC9B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,YAAY,EACpB,UAAU,CAAC,EAAE,gBAAgB,EAAE,EAC/B,QAAQ,CAAC,EAAE,gBAAgB,EAAE,EAC7B,YAAY,CAAC,EAAE,gBAAgB,EAC/B,QAAQ,CAAC,EAAE,YAAY,EACvB,iBAAiB,CAAC,EAAE,qBAAqB,GACxC,OAAO,CAAC,cAAc,CAAC;IAInB,kBAAkB;CAuB1B;AAED,wBAAgB,cAAc,oBAM7B"}
@@ -6,13 +6,12 @@ import { PublicCallRequest } from '@aztec/stdlib/kernel';
6
6
  import { GlobalVariables, PublicCallRequestWithCalldata } from '@aztec/stdlib/tx';
7
7
  import { NativeWorldStateService } from '@aztec/world-state';
8
8
  import { BaseAvmSimulationTester } from '../avm/fixtures/base_avm_simulation_tester.js';
9
- import { DEFAULT_BLOCK_NUMBER, getContractFunctionAbi, getFunctionSelector } from '../avm/fixtures/utils.js';
9
+ import { DEFAULT_BLOCK_NUMBER, DEFAULT_TIMESTAMP, getContractFunctionAbi, getFunctionSelector } from '../avm/fixtures/utils.js';
10
10
  import { PublicContractsDB } from '../public_db_sources.js';
11
11
  import { MeasuredPublicTxSimulator } from '../public_tx_simulator/measured_public_tx_simulator.js';
12
12
  import { TestExecutorMetrics } from '../test_executor_metrics.js';
13
13
  import { SimpleContractDataSource } from './simple_contract_data_source.js';
14
14
  import { createTxForPublicCalls } from './utils.js';
15
- const TIMESTAMP = 99833n;
16
15
  const DEFAULT_GAS_FEES = new GasFees(2, 3);
17
16
  /**
18
17
  * A test class that extends the BaseAvmSimulationTester to enable real-app testing of the PublicTxSimulator.
@@ -92,7 +91,7 @@ const DEFAULT_GAS_FEES = new GasFees(2, 3);
92
91
  }
93
92
  export function defaultGlobals() {
94
93
  const globals = GlobalVariables.empty();
95
- globals.timestamp = TIMESTAMP;
94
+ globals.timestamp = DEFAULT_TIMESTAMP;
96
95
  globals.gasFees = DEFAULT_GAS_FEES; // apply some nonzero default gas fees
97
96
  globals.blockNumber = DEFAULT_BLOCK_NUMBER;
98
97
  return globals;
@@ -5,6 +5,7 @@ import { type AvmExecutionHints } from '@aztec/stdlib/avm';
5
5
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
6
6
  import type { ContractClassPublic, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
7
7
  import { type BatchInsertionResult, type IndexedTreeId, MerkleTreeId, type MerkleTreeLeafType, type MerkleTreeWriteOperations, type SequentialInsertionResult, type TreeHeights } from '@aztec/stdlib/trees';
8
+ import type { UInt64 } from '@aztec/stdlib/types';
8
9
  import type { PublicContractsDBInterface } from './db_interfaces.js';
9
10
  /**
10
11
  * A public contracts database that forwards requests and collects AVM hints.
@@ -14,7 +15,7 @@ export declare class HintingPublicContractsDB implements PublicContractsDBInterf
14
15
  private hints;
15
16
  private contractClassIds;
16
17
  constructor(db: PublicContractsDBInterface, hints: AvmExecutionHints);
17
- getContractInstance(address: AztecAddress, blockNumber: number): Promise<ContractInstanceWithAddress | undefined>;
18
+ getContractInstance(address: AztecAddress, timestamp: UInt64): Promise<ContractInstanceWithAddress | undefined>;
18
19
  getContractClass(contractClassId: Fr): Promise<ContractClassPublic | undefined>;
19
20
  getBytecodeCommitment(contractClassId: Fr): Promise<Fr | undefined>;
20
21
  getDebugFunctionName(contractAddress: AztecAddress, selector: FunctionSelector): Promise<string | undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"hinting_db_sources.d.ts","sourceRoot":"","sources":["../../src/public/hinting_db_sources.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hinting_db_sources.d.ts","sourceRoot":"","sources":["../../src/public/hinting_db_sources.ts"],"names":[],"mappings":"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"}
@@ -17,8 +17,8 @@ import { strict as assert } from 'assert';
17
17
  this.hints = hints;
18
18
  this.contractClassIds = new Set();
19
19
  }
20
- async getContractInstance(address, blockNumber) {
21
- const instance = await this.db.getContractInstance(address, blockNumber);
20
+ async getContractInstance(address, timestamp) {
21
+ const instance = await this.db.getContractInstance(address, timestamp);
22
22
  if (instance) {
23
23
  // We don't need to hint the block number because it doesn't change.
24
24
  this.hints.contractInstances.push(new AvmContractInstanceHint(instance.address, instance.salt, instance.deployer, instance.currentContractClassId, instance.originalContractClassId, instance.initializationHash, instance.publicKeys));
@@ -5,6 +5,7 @@ import { type ContractClassPublic, type ContractDataSource, type ContractInstanc
5
5
  import type { MerkleTreeWriteOperations } from '@aztec/stdlib/interfaces/server';
6
6
  import { MerkleTreeId } from '@aztec/stdlib/trees';
7
7
  import { TreeSnapshots, type Tx } from '@aztec/stdlib/tx';
8
+ import type { UInt64 } from '@aztec/stdlib/types';
8
9
  import type { PublicContractsDBInterface, PublicStateDBInterface } from './db_interfaces.js';
9
10
  /**
10
11
  * Implements the PublicContractsDBInterface using a ContractDataSource.
@@ -82,7 +83,7 @@ export declare class PublicContractsDB implements PublicContractsDBInterface {
82
83
  * Then, clears the tx cache.
83
84
  */
84
85
  commitContractsForTx(onlyNonRevertibles?: boolean): void;
85
- getContractInstance(address: AztecAddress, blockNumber: number): Promise<ContractInstanceWithAddress | undefined>;
86
+ getContractInstance(address: AztecAddress, timestamp: UInt64): Promise<ContractInstanceWithAddress | undefined>;
86
87
  getContractClass(contractClassId: Fr): Promise<ContractClassPublic | undefined>;
87
88
  getBytecodeCommitment(contractClassId: Fr): Promise<Fr | undefined>;
88
89
  getDebugFunctionName(address: AztecAddress, selector: FunctionSelector): Promise<string | undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"public_db_sources.d.ts","sourceRoot":"","sources":["../../src/public/public_db_sources.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"public_db_sources.d.ts","sourceRoot":"","sources":["../../src/public/public_db_sources.ts"],"names":[],"mappings":"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"}
@@ -148,9 +148,11 @@ import { TxContractCache } from './tx_contract_cache.js';
148
148
  // to the constructor right now. If we can make this class more private, we should
149
149
  // reconsider this. A litmus test is in how many places we need to initialize with a
150
150
  // dummy block number (tests or not) and pass block numbers to `super`.
151
- async getContractInstance(address, blockNumber) {
151
+ // Note: Block number got changed to timestamp so this comment ^ is outdated. Keeping
152
+ // the comment as is as I am not part of the AVM cabal.
153
+ async getContractInstance(address, timestamp) {
152
154
  // Check caches in order: tx revertible -> tx non-revertible -> block -> data source
153
- return this.currentTxRevertibleCache.getInstance(address) ?? this.currentTxNonRevertibleCache.getInstance(address) ?? this.blockCache.getInstance(address) ?? await this.dataSource.getContract(address, blockNumber);
155
+ return this.currentTxRevertibleCache.getInstance(address) ?? this.currentTxNonRevertibleCache.getInstance(address) ?? this.blockCache.getInstance(address) ?? await this.dataSource.getContract(address, timestamp);
154
156
  }
155
157
  async getContractClass(contractClassId) {
156
158
  // Check caches in order: tx revertible -> tx non-revertible -> block -> data source
@@ -68,7 +68,7 @@ import { getCallRequestsWithCalldataByPhase } from '../utils.js';
68
68
  const trace = new SideEffectTrace();
69
69
  const firstNullifier = nonRevertibleAccumulatedDataFromPrivate.nullifiers[0];
70
70
  // Transaction level state manager that will be forked for revertible phases.
71
- const txStateManager = PublicPersistableStateManager.create(treesDB, contractsDB, trace, doMerkleOperations, firstNullifier, globalVariables.blockNumber);
71
+ const txStateManager = PublicPersistableStateManager.create(treesDB, contractsDB, trace, doMerkleOperations, firstNullifier, globalVariables.timestamp);
72
72
  const gasSettings = tx.data.constants.txContext.gasSettings;
73
73
  const gasUsedByPrivate = tx.data.gasUsed;
74
74
  // Gas allocated to public is "whatever's left" after private, but with some max applied.
@@ -5,6 +5,7 @@ import { SerializableContractInstance } from '@aztec/stdlib/contract';
5
5
  import { ScopedL2ToL1Message } from '@aztec/stdlib/messaging';
6
6
  import { MerkleTreeId } from '@aztec/stdlib/trees';
7
7
  import type { TreeSnapshots } from '@aztec/stdlib/tx';
8
+ import type { UInt64 } from '@aztec/stdlib/types';
8
9
  import type { AvmExecutionEnvironment } from '../avm/avm_execution_environment.js';
9
10
  import type { PublicContractsDBInterface } from '../db_interfaces.js';
10
11
  import type { PublicTreesDB } from '../public_db_sources.js';
@@ -25,7 +26,7 @@ export declare class PublicPersistableStateManager {
25
26
  private readonly contractsDB;
26
27
  private readonly trace;
27
28
  private readonly firstNullifier;
28
- private readonly blockNumber;
29
+ private readonly timestamp;
29
30
  private readonly doMerkleOperations;
30
31
  private readonly publicStorage;
31
32
  private readonly nullifiers;
@@ -33,12 +34,12 @@ export declare class PublicPersistableStateManager {
33
34
  /** Make sure a forked state is never merged twice. */
34
35
  private alreadyMergedIntoParent;
35
36
  constructor(treesDB: PublicTreesDB, contractsDB: PublicContractsDBInterface, trace: PublicSideEffectTraceInterface, firstNullifier: Fr, // Needed for note hashes.
36
- blockNumber: number, // Needed for contract updates.
37
+ timestamp: UInt64, // Needed for contract updates.
37
38
  doMerkleOperations?: boolean, publicStorage?: PublicStorage, nullifiers?: NullifierManager);
38
39
  /**
39
40
  * Create a new state manager
40
41
  */
41
- static create(treesDB: PublicTreesDB, contractsDB: PublicContractsDBInterface, trace: PublicSideEffectTraceInterface, doMerkleOperations: boolean | undefined, firstNullifier: Fr, blockNumber: number): PublicPersistableStateManager;
42
+ static create(treesDB: PublicTreesDB, contractsDB: PublicContractsDBInterface, trace: PublicSideEffectTraceInterface, doMerkleOperations: boolean | undefined, firstNullifier: Fr, timestamp: UInt64): PublicPersistableStateManager;
42
43
  /**
43
44
  * Create a new state manager forked from this one
44
45
  */
@@ -1 +1 @@
1
- {"version":3,"file":"state_manager.d.ts","sourceRoot":"","sources":["../../../src/public/state_manager/state_manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state_manager.d.ts","sourceRoot":"","sources":["../../../src/public/state_manager/state_manager.ts"],"names":[],"mappings":"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"}
@@ -24,18 +24,18 @@ import { PublicStorage } from './public_storage.js';
24
24
  contractsDB;
25
25
  trace;
26
26
  firstNullifier;
27
- blockNumber;
27
+ timestamp;
28
28
  doMerkleOperations;
29
29
  publicStorage;
30
30
  nullifiers;
31
31
  log;
32
32
  /** Make sure a forked state is never merged twice. */ alreadyMergedIntoParent;
33
- constructor(treesDB, contractsDB, trace, firstNullifier, blockNumber, doMerkleOperations = false, publicStorage = new PublicStorage(treesDB), nullifiers = new NullifierManager(treesDB)){
33
+ constructor(treesDB, contractsDB, trace, firstNullifier, timestamp, doMerkleOperations = false, publicStorage = new PublicStorage(treesDB), nullifiers = new NullifierManager(treesDB)){
34
34
  this.treesDB = treesDB;
35
35
  this.contractsDB = contractsDB;
36
36
  this.trace = trace;
37
37
  this.firstNullifier = firstNullifier;
38
- this.blockNumber = blockNumber;
38
+ this.timestamp = timestamp;
39
39
  this.doMerkleOperations = doMerkleOperations;
40
40
  this.publicStorage = publicStorage;
41
41
  this.nullifiers = nullifiers;
@@ -44,14 +44,14 @@ import { PublicStorage } from './public_storage.js';
44
44
  }
45
45
  /**
46
46
  * Create a new state manager
47
- */ static create(treesDB, contractsDB, trace, doMerkleOperations = false, firstNullifier, blockNumber) {
48
- return new PublicPersistableStateManager(treesDB, contractsDB, trace, firstNullifier, blockNumber, doMerkleOperations);
47
+ */ static create(treesDB, contractsDB, trace, doMerkleOperations = false, firstNullifier, timestamp) {
48
+ return new PublicPersistableStateManager(treesDB, contractsDB, trace, firstNullifier, timestamp, doMerkleOperations);
49
49
  }
50
50
  /**
51
51
  * Create a new state manager forked from this one
52
52
  */ async fork() {
53
53
  await this.treesDB.createCheckpoint();
54
- return new PublicPersistableStateManager(this.treesDB, this.contractsDB, this.trace.fork(), this.firstNullifier, this.blockNumber, this.doMerkleOperations, this.publicStorage.fork(), this.nullifiers.fork());
54
+ return new PublicPersistableStateManager(this.treesDB, this.contractsDB, this.trace.fork(), this.firstNullifier, this.timestamp, this.doMerkleOperations, this.publicStorage.fork(), this.nullifiers.fork());
55
55
  }
56
56
  /**
57
57
  * Accept forked world state modifications & traced side effects / hints
@@ -240,7 +240,7 @@ import { PublicStorage } from './public_storage.js';
240
240
  * @returns the contract instance or undefined if it does not exist.
241
241
  */ async getContractInstance(contractAddress) {
242
242
  this.log.trace(`Getting contract instance for address ${contractAddress}`);
243
- const instanceWithAddress = await this.contractsDB.getContractInstance(contractAddress, this.blockNumber);
243
+ const instanceWithAddress = await this.contractsDB.getContractInstance(contractAddress, this.timestamp);
244
244
  const exists = instanceWithAddress !== undefined;
245
245
  const instance = exists ? new SerializableContractInstance(instanceWithAddress) : undefined;
246
246
  if (!exists) {
@@ -290,7 +290,7 @@ import { PublicStorage } from './public_storage.js';
290
290
  const computedHash = await poseidon2Hash(preImage);
291
291
  assert(hash.equals(computedHash), `Shared mutable values hash mismatch for contract instance ${instance.address}. Expected: ${hash}, computed: ${computedHash}`);
292
292
  // We now check that, depending on the current block, the current class id is correct.
293
- const expectedClassIdRaw = sharedMutableValues.svc.getCurrentAt(this.blockNumber).at(0);
293
+ const expectedClassIdRaw = sharedMutableValues.svc.getCurrentAt(this.timestamp).at(0);
294
294
  const expectedClassId = expectedClassIdRaw.isZero() ? instance.originalContractClassId : expectedClassIdRaw;
295
295
  assert(instance.currentContractClassId.equals(expectedClassId), `Current class id mismatch
296
296
  for contract instance ${instance.address}. Expected: ${expectedClassId}, current: ${instance.currentContractClassId}`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/simulator",
3
- "version": "1.0.0",
3
+ "version": "1.1.2",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "./server": "./dest/server.js",
@@ -62,25 +62,25 @@
62
62
  ]
63
63
  },
64
64
  "dependencies": {
65
- "@aztec/constants": "1.0.0",
66
- "@aztec/foundation": "1.0.0",
67
- "@aztec/noir-acvm_js": "1.0.0",
68
- "@aztec/noir-noirc_abi": "1.0.0",
69
- "@aztec/noir-protocol-circuits-types": "1.0.0",
70
- "@aztec/noir-types": "1.0.0",
71
- "@aztec/protocol-contracts": "1.0.0",
72
- "@aztec/stdlib": "1.0.0",
73
- "@aztec/telemetry-client": "1.0.0",
74
- "@aztec/world-state": "1.0.0",
65
+ "@aztec/constants": "1.1.2",
66
+ "@aztec/foundation": "1.1.2",
67
+ "@aztec/noir-acvm_js": "1.1.2",
68
+ "@aztec/noir-noirc_abi": "1.1.2",
69
+ "@aztec/noir-protocol-circuits-types": "1.1.2",
70
+ "@aztec/noir-types": "1.1.2",
71
+ "@aztec/protocol-contracts": "1.1.2",
72
+ "@aztec/stdlib": "1.1.2",
73
+ "@aztec/telemetry-client": "1.1.2",
74
+ "@aztec/world-state": "1.1.2",
75
75
  "lodash.clonedeep": "^4.5.0",
76
76
  "lodash.merge": "^4.6.2",
77
77
  "tslib": "^2.4.0"
78
78
  },
79
79
  "devDependencies": {
80
- "@aztec/kv-store": "1.0.0",
81
- "@aztec/merkle-tree": "1.0.0",
82
- "@aztec/noir-contracts.js": "1.0.0",
83
- "@aztec/noir-test-contracts.js": "1.0.0",
80
+ "@aztec/kv-store": "1.1.2",
81
+ "@aztec/merkle-tree": "1.1.2",
82
+ "@aztec/noir-contracts.js": "1.1.2",
83
+ "@aztec/noir-test-contracts.js": "1.1.2",
84
84
  "@jest/globals": "^30.0.0",
85
85
  "@types/jest": "^30.0.0",
86
86
  "@types/lodash.clonedeep": "^4.5.7",
@@ -15,13 +15,12 @@ import { AvmSimulator } from '../avm_simulator.js';
15
15
  import { BaseAvmSimulationTester } from './base_avm_simulation_tester.js';
16
16
  import { initContext, initExecutionEnvironment } from './initializers.js';
17
17
  import {
18
- DEFAULT_BLOCK_NUMBER,
18
+ DEFAULT_TIMESTAMP,
19
19
  getContractFunctionAbi,
20
20
  getFunctionSelector,
21
21
  resolveContractAssertionMessage,
22
22
  } from './utils.js';
23
23
 
24
- const TIMESTAMP = 99833n;
25
24
  const DEFAULT_GAS_FEES = new GasFees(2, 3);
26
25
 
27
26
  /**
@@ -52,7 +51,7 @@ export class AvmSimulationTester extends BaseAvmSimulationTester {
52
51
  trace,
53
52
  /*doMerkleOperations=*/ false,
54
53
  firstNullifier,
55
- DEFAULT_BLOCK_NUMBER,
54
+ DEFAULT_TIMESTAMP,
56
55
  );
57
56
  return new AvmSimulationTester(contractDataSource, merkleTrees, stateManager);
58
57
  }
@@ -77,7 +76,7 @@ export class AvmSimulationTester extends BaseAvmSimulationTester {
77
76
  const calldata = [fnSelector.toField(), ...encodedArgs];
78
77
 
79
78
  const globals = GlobalVariables.empty();
80
- globals.timestamp = TIMESTAMP;
79
+ globals.timestamp = DEFAULT_TIMESTAMP;
81
80
  globals.gasFees = DEFAULT_GAS_FEES;
82
81
 
83
82
  const environment = initExecutionEnvironment({
@@ -4,6 +4,7 @@ import { Fr } from '@aztec/foundation/fields';
4
4
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
5
5
  import { GasFees } from '@aztec/stdlib/gas';
6
6
  import { GlobalVariables } from '@aztec/stdlib/tx';
7
+ import type { UInt64 } from '@aztec/stdlib/types';
7
8
 
8
9
  import { mock } from 'jest-mock-extended';
9
10
 
@@ -16,7 +17,7 @@ import { AvmContext } from '../avm_context.js';
16
17
  import { AvmExecutionEnvironment } from '../avm_execution_environment.js';
17
18
  import { AvmMachineState } from '../avm_machine_state.js';
18
19
  import { AvmSimulator } from '../avm_simulator.js';
19
- import { DEFAULT_BLOCK_NUMBER } from './utils.js';
20
+ import { DEFAULT_TIMESTAMP } from './utils.js';
20
21
 
21
22
  /**
22
23
  * Create a new AVM context with default values.
@@ -44,7 +45,7 @@ export function initPersistableStateManager(overrides?: {
44
45
  nullifiers?: NullifierManager;
45
46
  doMerkleOperations?: boolean;
46
47
  firstNullifier?: Fr;
47
- blockNumber?: number;
48
+ timestamp?: UInt64;
48
49
  }): PublicPersistableStateManager {
49
50
  const treesDB = overrides?.treesDB || mock<PublicTreesDB>();
50
51
  return new PublicPersistableStateManager(
@@ -52,7 +53,7 @@ export function initPersistableStateManager(overrides?: {
52
53
  overrides?.contractsDB || mock<PublicContractsDB>(),
53
54
  overrides?.trace || mock<PublicSideEffectTraceInterface>(),
54
55
  overrides?.firstNullifier || new Fr(27),
55
- overrides?.blockNumber || DEFAULT_BLOCK_NUMBER,
56
+ overrides?.timestamp || DEFAULT_TIMESTAMP,
56
57
  overrides?.doMerkleOperations || false,
57
58
  overrides?.publicStorage,
58
59
  overrides?.nullifiers,
@@ -17,6 +17,7 @@ import { isNoirCallStackUnresolved } from '@aztec/stdlib/errors';
17
17
  import { siloNullifier } from '@aztec/stdlib/hash';
18
18
  import { deriveKeys } from '@aztec/stdlib/keys';
19
19
  import { makeContractClassPublic, makeContractInstanceFromClassId } from '@aztec/stdlib/testing';
20
+ import type { UInt64 } from '@aztec/stdlib/types';
20
21
 
21
22
  import { strict as assert } from 'assert';
22
23
  import merge from 'lodash.merge';
@@ -26,6 +27,7 @@ import { Field, Uint8, Uint32, Uint64 } from '../avm_memory_types.js';
26
27
  import type { AvmRevertReason } from '../errors.js';
27
28
 
28
29
  export const PUBLIC_DISPATCH_FN_NAME = 'public_dispatch';
30
+ export const DEFAULT_TIMESTAMP: UInt64 = 99833n;
29
31
  export const DEFAULT_BLOCK_NUMBER = 42;
30
32
 
31
33
  /**
@@ -1,5 +1,5 @@
1
1
  import type { AvmContext } from '../avm_context.js';
2
- import type { IntegralValue } from '../avm_memory_types.js';
2
+ import { TypeTag, type Uint1 } from '../avm_memory_types.js';
3
3
  import { InstructionExecutionError } from '../errors.js';
4
4
  import { Opcode, OperandType } from '../serialization/instruction_serialization.js';
5
5
  import { Addressing } from './addressing_mode.js';
@@ -55,10 +55,12 @@ export class JumpI extends Instruction {
55
55
  );
56
56
 
57
57
  const operands = [this.condOffset];
58
- const [condOffset] = addressing.resolve(operands, memory);
59
- const condition = memory.getAs<IntegralValue>(condOffset);
58
+ const [resolvedCondOffset] = addressing.resolve(operands, memory);
60
59
 
61
- if (condition.toBigInt() == 0n) {
60
+ memory.checkTag(TypeTag.UINT1, resolvedCondOffset);
61
+ const condition = memory.getAs<Uint1>(resolvedCondOffset);
62
+
63
+ if (condition.toNumber() == 0) {
62
64
  context.machineState.pc = context.machineState.nextPc;
63
65
  } else {
64
66
  context.machineState.pc = this.loc;
@@ -2,6 +2,7 @@ import type { Fr } from '@aztec/foundation/fields';
2
2
  import type { FunctionSelector } from '@aztec/stdlib/abi';
3
3
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
4
4
  import type { ContractClassPublic, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
5
+ import type { UInt64 } from '@aztec/stdlib/types';
5
6
 
6
7
  /**
7
8
  * Database interface for providing access to public state.
@@ -29,12 +30,12 @@ export interface PublicStateDBInterface {
29
30
  */
30
31
  export interface PublicContractsDBInterface {
31
32
  /**
32
- * Returns a publicly deployed contract instance.
33
+ * Returns a contract instance given its address and the given timestamp, or undefined if not exists.
33
34
  * @param address - Address of the contract.
34
- * @param blockNumber - The block number at which to retrieve the contract instance.
35
+ * @param timestamp - Timestamp to get the contract instance at. Contract updates might change the instance.
35
36
  * @returns The contract instance or undefined if not found.
36
37
  */
37
- getContractInstance(address: AztecAddress, blockNumber: number): Promise<ContractInstanceWithAddress | undefined>;
38
+ getContractInstance(address: AztecAddress, timestamp: UInt64): Promise<ContractInstanceWithAddress | undefined>;
38
39
 
39
40
  /**
40
41
  * Returns a publicly deployed contract class.
@@ -9,7 +9,12 @@ import { GlobalVariables, PublicCallRequestWithCalldata, type Tx } from '@aztec/
9
9
  import { NativeWorldStateService } from '@aztec/world-state';
10
10
 
11
11
  import { BaseAvmSimulationTester } from '../avm/fixtures/base_avm_simulation_tester.js';
12
- import { DEFAULT_BLOCK_NUMBER, getContractFunctionAbi, getFunctionSelector } from '../avm/fixtures/utils.js';
12
+ import {
13
+ DEFAULT_BLOCK_NUMBER,
14
+ DEFAULT_TIMESTAMP,
15
+ getContractFunctionAbi,
16
+ getFunctionSelector,
17
+ } from '../avm/fixtures/utils.js';
13
18
  import { PublicContractsDB } from '../public_db_sources.js';
14
19
  import { MeasuredPublicTxSimulator } from '../public_tx_simulator/measured_public_tx_simulator.js';
15
20
  import type { PublicTxResult } from '../public_tx_simulator/public_tx_simulator.js';
@@ -17,7 +22,6 @@ import { TestExecutorMetrics } from '../test_executor_metrics.js';
17
22
  import { SimpleContractDataSource } from './simple_contract_data_source.js';
18
23
  import { type TestPrivateInsertions, createTxForPublicCalls } from './utils.js';
19
24
 
20
- const TIMESTAMP = 99833n;
21
25
  const DEFAULT_GAS_FEES = new GasFees(2, 3);
22
26
 
23
27
  export type TestEnqueuedCall = {
@@ -175,7 +179,7 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
175
179
 
176
180
  export function defaultGlobals() {
177
181
  const globals = GlobalVariables.empty();
178
- globals.timestamp = TIMESTAMP;
182
+ globals.timestamp = DEFAULT_TIMESTAMP;
179
183
  globals.gasFees = DEFAULT_GAS_FEES; // apply some nonzero default gas fees
180
184
  globals.blockNumber = DEFAULT_BLOCK_NUMBER;
181
185
  return globals;
@@ -39,6 +39,7 @@ import {
39
39
  merkleTreeIds,
40
40
  } from '@aztec/stdlib/trees';
41
41
  import { TreeSnapshots } from '@aztec/stdlib/tx';
42
+ import type { UInt64 } from '@aztec/stdlib/types';
42
43
 
43
44
  import { strict as assert } from 'assert';
44
45
 
@@ -58,9 +59,9 @@ export class HintingPublicContractsDB implements PublicContractsDBInterface {
58
59
 
59
60
  public async getContractInstance(
60
61
  address: AztecAddress,
61
- blockNumber: number,
62
+ timestamp: UInt64,
62
63
  ): Promise<ContractInstanceWithAddress | undefined> {
63
- const instance = await this.db.getContractInstance(address, blockNumber);
64
+ const instance = await this.db.getContractInstance(address, timestamp);
64
65
  if (instance) {
65
66
  // We don't need to hint the block number because it doesn't change.
66
67
  this.hints.contractInstances.push(
@@ -25,6 +25,7 @@ import {
25
25
  getTreeName,
26
26
  } from '@aztec/stdlib/trees';
27
27
  import { TreeSnapshots, type Tx } from '@aztec/stdlib/tx';
28
+ import type { UInt64 } from '@aztec/stdlib/types';
28
29
 
29
30
  import type { PublicContractsDBInterface, PublicStateDBInterface } from './db_interfaces.js';
30
31
  import { TxContractCache } from './tx_contract_cache.js';
@@ -210,16 +211,18 @@ export class PublicContractsDB implements PublicContractsDBInterface {
210
211
  // to the constructor right now. If we can make this class more private, we should
211
212
  // reconsider this. A litmus test is in how many places we need to initialize with a
212
213
  // dummy block number (tests or not) and pass block numbers to `super`.
214
+ // Note: Block number got changed to timestamp so this comment ^ is outdated. Keeping
215
+ // the comment as is as I am not part of the AVM cabal.
213
216
  public async getContractInstance(
214
217
  address: AztecAddress,
215
- blockNumber: number,
218
+ timestamp: UInt64,
216
219
  ): Promise<ContractInstanceWithAddress | undefined> {
217
220
  // Check caches in order: tx revertible -> tx non-revertible -> block -> data source
218
221
  return (
219
222
  this.currentTxRevertibleCache.getInstance(address) ??
220
223
  this.currentTxNonRevertibleCache.getInstance(address) ??
221
224
  this.blockCache.getInstance(address) ??
222
- (await this.dataSource.getContract(address, blockNumber))
225
+ (await this.dataSource.getContract(address, timestamp))
223
226
  );
224
227
  }
225
228
 
@@ -108,7 +108,7 @@ export class PublicTxContext {
108
108
  trace,
109
109
  doMerkleOperations,
110
110
  firstNullifier,
111
- globalVariables.blockNumber,
111
+ globalVariables.timestamp,
112
112
  );
113
113
 
114
114
  const gasSettings = tx.data.constants.txContext.gasSettings;
@@ -19,6 +19,7 @@ import { ScopedL2ToL1Message } from '@aztec/stdlib/messaging';
19
19
  import { SharedMutableValues, SharedMutableValuesWithHash } from '@aztec/stdlib/shared-mutable';
20
20
  import { MerkleTreeId } from '@aztec/stdlib/trees';
21
21
  import type { TreeSnapshots } from '@aztec/stdlib/tx';
22
+ import type { UInt64 } from '@aztec/stdlib/types';
22
23
 
23
24
  import { strict as assert } from 'assert';
24
25
 
@@ -50,7 +51,7 @@ export class PublicPersistableStateManager {
50
51
  private readonly contractsDB: PublicContractsDBInterface,
51
52
  private readonly trace: PublicSideEffectTraceInterface,
52
53
  private readonly firstNullifier: Fr, // Needed for note hashes.
53
- private readonly blockNumber: number, // Needed for contract updates.
54
+ private readonly timestamp: UInt64, // Needed for contract updates.
54
55
  private readonly doMerkleOperations: boolean = false,
55
56
  private readonly publicStorage: PublicStorage = new PublicStorage(treesDB),
56
57
  private readonly nullifiers: NullifierManager = new NullifierManager(treesDB),
@@ -65,14 +66,14 @@ export class PublicPersistableStateManager {
65
66
  trace: PublicSideEffectTraceInterface,
66
67
  doMerkleOperations: boolean = false,
67
68
  firstNullifier: Fr,
68
- blockNumber: number,
69
+ timestamp: UInt64,
69
70
  ): PublicPersistableStateManager {
70
71
  return new PublicPersistableStateManager(
71
72
  treesDB,
72
73
  contractsDB,
73
74
  trace,
74
75
  firstNullifier,
75
- blockNumber,
76
+ timestamp,
76
77
  doMerkleOperations,
77
78
  );
78
79
  }
@@ -87,7 +88,7 @@ export class PublicPersistableStateManager {
87
88
  this.contractsDB,
88
89
  this.trace.fork(),
89
90
  this.firstNullifier,
90
- this.blockNumber,
91
+ this.timestamp,
91
92
  this.doMerkleOperations,
92
93
  this.publicStorage.fork(),
93
94
  this.nullifiers.fork(),
@@ -335,7 +336,7 @@ export class PublicPersistableStateManager {
335
336
  */
336
337
  public async getContractInstance(contractAddress: AztecAddress): Promise<SerializableContractInstance | undefined> {
337
338
  this.log.trace(`Getting contract instance for address ${contractAddress}`);
338
- const instanceWithAddress = await this.contractsDB.getContractInstance(contractAddress, this.blockNumber);
339
+ const instanceWithAddress = await this.contractsDB.getContractInstance(contractAddress, this.timestamp);
339
340
  const exists = instanceWithAddress !== undefined;
340
341
 
341
342
  const instance = exists ? new SerializableContractInstance(instanceWithAddress) : undefined;
@@ -413,7 +414,7 @@ export class PublicPersistableStateManager {
413
414
  );
414
415
 
415
416
  // We now check that, depending on the current block, the current class id is correct.
416
- const expectedClassIdRaw = sharedMutableValues.svc.getCurrentAt(this.blockNumber).at(0)!;
417
+ const expectedClassIdRaw = sharedMutableValues.svc.getCurrentAt(this.timestamp).at(0)!;
417
418
  const expectedClassId = expectedClassIdRaw.isZero() ? instance.originalContractClassId : expectedClassIdRaw;
418
419
  assert(
419
420
  instance.currentContractClassId.equals(expectedClassId),