@aztec/txe 0.0.1-commit.5914bae → 0.0.1-commit.59a0419c6

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 (44) hide show
  1. package/dest/oracle/interfaces.d.ts +5 -2
  2. package/dest/oracle/interfaces.d.ts.map +1 -1
  3. package/dest/oracle/txe_oracle_top_level_context.d.ts +7 -5
  4. package/dest/oracle/txe_oracle_top_level_context.d.ts.map +1 -1
  5. package/dest/oracle/txe_oracle_top_level_context.js +17 -6
  6. package/dest/rpc_translator.d.ts +10 -2
  7. package/dest/rpc_translator.d.ts.map +1 -1
  8. package/dest/rpc_translator.js +98 -21
  9. package/dest/state_machine/archiver.d.ts +1 -1
  10. package/dest/state_machine/archiver.d.ts.map +1 -1
  11. package/dest/state_machine/archiver.js +2 -1
  12. package/dest/state_machine/dummy_p2p_client.d.ts +3 -2
  13. package/dest/state_machine/dummy_p2p_client.d.ts.map +1 -1
  14. package/dest/state_machine/dummy_p2p_client.js +5 -2
  15. package/dest/state_machine/global_variable_builder.d.ts +9 -4
  16. package/dest/state_machine/global_variable_builder.d.ts.map +1 -1
  17. package/dest/state_machine/global_variable_builder.js +9 -3
  18. package/dest/state_machine/index.d.ts +1 -1
  19. package/dest/state_machine/index.d.ts.map +1 -1
  20. package/dest/state_machine/index.js +2 -2
  21. package/dest/state_machine/mock_epoch_cache.d.ts +18 -3
  22. package/dest/state_machine/mock_epoch_cache.d.ts.map +1 -1
  23. package/dest/state_machine/mock_epoch_cache.js +35 -2
  24. package/dest/txe_session.d.ts +48 -4
  25. package/dest/txe_session.d.ts.map +1 -1
  26. package/dest/txe_session.js +66 -13
  27. package/dest/util/encoding.d.ts +89 -18
  28. package/dest/util/encoding.d.ts.map +1 -1
  29. package/dest/util/encoding.js +4 -0
  30. package/dest/util/txe_public_contract_data_source.d.ts +1 -1
  31. package/dest/util/txe_public_contract_data_source.d.ts.map +1 -1
  32. package/dest/util/txe_public_contract_data_source.js +1 -3
  33. package/package.json +15 -15
  34. package/src/oracle/interfaces.ts +1 -1
  35. package/src/oracle/txe_oracle_top_level_context.ts +9 -5
  36. package/src/rpc_translator.ts +113 -33
  37. package/src/state_machine/archiver.ts +1 -0
  38. package/src/state_machine/dummy_p2p_client.ts +6 -2
  39. package/src/state_machine/global_variable_builder.ts +18 -3
  40. package/src/state_machine/index.ts +3 -1
  41. package/src/state_machine/mock_epoch_cache.ts +46 -3
  42. package/src/txe_session.ts +122 -11
  43. package/src/util/encoding.ts +5 -0
  44. package/src/util/txe_public_contract_data_source.ts +0 -2
@@ -1,11 +1,16 @@
1
+ import type { SimulationOverridesPlan } from '@aztec/ethereum/contracts';
1
2
  import { BlockNumber, type SlotNumber } from '@aztec/foundation/branded-types';
2
3
  import type { EthAddress } from '@aztec/foundation/eth-address';
3
4
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
4
5
  import { GasFees } from '@aztec/stdlib/gas';
5
- import { type CheckpointGlobalVariables, type GlobalVariableBuilder, GlobalVariables } from '@aztec/stdlib/tx';
6
- export declare class TXEGlobalVariablesBuilder implements GlobalVariableBuilder {
6
+ import { type CheckpointGlobalVariables, type FeeProvider, type GlobalVariableBuilder, GlobalVariables } from '@aztec/stdlib/tx';
7
+ /** Simple FeeProvider for TXE that returns zero fees. */
8
+ export declare class TXEFeeProvider implements FeeProvider {
7
9
  getCurrentMinFees(): Promise<GasFees>;
10
+ getPredictedMinFees(): Promise<GasFees[]>;
11
+ }
12
+ export declare class TXEGlobalVariablesBuilder implements GlobalVariableBuilder {
8
13
  buildGlobalVariables(_blockNumber: BlockNumber, _coinbase: EthAddress, _feeRecipient: AztecAddress, _slotNumber?: SlotNumber): Promise<GlobalVariables>;
9
- buildCheckpointGlobalVariables(_coinbase: EthAddress, _feeRecipient: AztecAddress, _slotNumber: SlotNumber): Promise<CheckpointGlobalVariables>;
14
+ buildCheckpointGlobalVariables(_coinbase: EthAddress, _feeRecipient: AztecAddress, _slotNumber: SlotNumber, _simulationOverridesPlan?: SimulationOverridesPlan): Promise<CheckpointGlobalVariables>;
10
15
  }
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsX3ZhcmlhYmxlX2J1aWxkZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdGF0ZV9tYWNoaW5lL2dsb2JhbF92YXJpYWJsZV9idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsS0FBSyxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFNUMsT0FBTyxFQUFFLEtBQUsseUJBQXlCLEVBQUUsS0FBSyxxQkFBcUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUvRyxxQkFBYSx5QkFBMEIsWUFBVyxxQkFBcUI7SUFDOUQsaUJBQWlCLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUUzQztJQUVNLG9CQUFvQixDQUN6QixZQUFZLEVBQUUsV0FBVyxFQUN6QixTQUFTLEVBQUUsVUFBVSxFQUNyQixhQUFhLEVBQUUsWUFBWSxFQUMzQixXQUFXLENBQUMsRUFBRSxVQUFVLEdBQ3ZCLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FFMUI7SUFFTSw4QkFBOEIsQ0FDbkMsU0FBUyxFQUFFLFVBQVUsRUFDckIsYUFBYSxFQUFFLFlBQVksRUFDM0IsV0FBVyxFQUFFLFVBQVUsR0FDdEIsT0FBTyxDQUFDLHlCQUF5QixDQUFDLENBV3BDO0NBQ0YifQ==
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsX3ZhcmlhYmxlX2J1aWxkZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdGF0ZV9tYWNoaW5lL2dsb2JhbF92YXJpYWJsZV9idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekUsT0FBTyxFQUFFLFdBQVcsRUFBRSxLQUFLLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRS9FLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sRUFBa0IsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFNUQsT0FBTyxFQUNMLEtBQUsseUJBQXlCLEVBQzlCLEtBQUssV0FBVyxFQUNoQixLQUFLLHFCQUFxQixFQUMxQixlQUFlLEVBQ2hCLE1BQU0sa0JBQWtCLENBQUM7QUFFMUIseURBQXlEO0FBQ3pELHFCQUFhLGNBQWUsWUFBVyxXQUFXO0lBQ3pDLGlCQUFpQixJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FFM0M7SUFFTSxtQkFBbUIsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FFL0M7Q0FDRjtBQUVELHFCQUFhLHlCQUEwQixZQUFXLHFCQUFxQjtJQUM5RCxvQkFBb0IsQ0FDekIsWUFBWSxFQUFFLFdBQVcsRUFDekIsU0FBUyxFQUFFLFVBQVUsRUFDckIsYUFBYSxFQUFFLFlBQVksRUFDM0IsV0FBVyxDQUFDLEVBQUUsVUFBVSxHQUN2QixPQUFPLENBQUMsZUFBZSxDQUFDLENBRTFCO0lBRU0sOEJBQThCLENBQ25DLFNBQVMsRUFBRSxVQUFVLEVBQ3JCLGFBQWEsRUFBRSxZQUFZLEVBQzNCLFdBQVcsRUFBRSxVQUFVLEVBQ3ZCLHdCQUF3QixDQUFDLEVBQUUsdUJBQXVCLEdBQ2pELE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQyxDQVdwQztDQUNGIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"global_variable_builder.d.ts","sourceRoot":"","sources":["../../src/state_machine/global_variable_builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAAE,KAAK,yBAAyB,EAAE,KAAK,qBAAqB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAE/G,qBAAa,yBAA0B,YAAW,qBAAqB;IAC9D,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,CAE3C;IAEM,oBAAoB,CACzB,YAAY,EAAE,WAAW,EACzB,SAAS,EAAE,UAAU,EACrB,aAAa,EAAE,YAAY,EAC3B,WAAW,CAAC,EAAE,UAAU,GACvB,OAAO,CAAC,eAAe,CAAC,CAE1B;IAEM,8BAA8B,CACnC,SAAS,EAAE,UAAU,EACrB,aAAa,EAAE,YAAY,EAC3B,WAAW,EAAE,UAAU,GACtB,OAAO,CAAC,yBAAyB,CAAC,CAWpC;CACF"}
1
+ {"version":3,"file":"global_variable_builder.d.ts","sourceRoot":"","sources":["../../src/state_machine/global_variable_builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE/E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAkB,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EACL,KAAK,yBAAyB,EAC9B,KAAK,WAAW,EAChB,KAAK,qBAAqB,EAC1B,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAE1B,yDAAyD;AACzD,qBAAa,cAAe,YAAW,WAAW;IACzC,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,CAE3C;IAEM,mBAAmB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAE/C;CACF;AAED,qBAAa,yBAA0B,YAAW,qBAAqB;IAC9D,oBAAoB,CACzB,YAAY,EAAE,WAAW,EACzB,SAAS,EAAE,UAAU,EACrB,aAAa,EAAE,YAAY,EAC3B,WAAW,CAAC,EAAE,UAAU,GACvB,OAAO,CAAC,eAAe,CAAC,CAE1B;IAEM,8BAA8B,CACnC,SAAS,EAAE,UAAU,EACrB,aAAa,EAAE,YAAY,EAC3B,WAAW,EAAE,UAAU,EACvB,wBAAwB,CAAC,EAAE,uBAAuB,GACjD,OAAO,CAAC,yBAAyB,CAAC,CAWpC;CACF"}
@@ -1,13 +1,19 @@
1
- import { GasFees } from '@aztec/stdlib/gas';
1
+ import { times } from '@aztec/foundation/collection';
2
+ import { FEE_ORACLE_LAG, GasFees } from '@aztec/stdlib/gas';
2
3
  import { makeGlobalVariables } from '@aztec/stdlib/testing';
3
- export class TXEGlobalVariablesBuilder {
4
+ /** Simple FeeProvider for TXE that returns zero fees. */ export class TXEFeeProvider {
4
5
  getCurrentMinFees() {
5
6
  return Promise.resolve(new GasFees(0, 0));
6
7
  }
8
+ getPredictedMinFees() {
9
+ return Promise.resolve(times(FEE_ORACLE_LAG, ()=>new GasFees(0, 0)));
10
+ }
11
+ }
12
+ export class TXEGlobalVariablesBuilder {
7
13
  buildGlobalVariables(_blockNumber, _coinbase, _feeRecipient, _slotNumber) {
8
14
  return Promise.resolve(makeGlobalVariables());
9
15
  }
10
- buildCheckpointGlobalVariables(_coinbase, _feeRecipient, _slotNumber) {
16
+ buildCheckpointGlobalVariables(_coinbase, _feeRecipient, _slotNumber, _simulationOverridesPlan) {
11
17
  const vars = makeGlobalVariables();
12
18
  return Promise.resolve({
13
19
  chainId: vars.chainId,
@@ -15,4 +15,4 @@ export declare class TXEStateMachine {
15
15
  static create(archiver: TXEArchiver, anchorBlockStore: AnchorBlockStore, contractStore: ContractStore, noteStore: NoteStore): Promise<TXEStateMachine>;
16
16
  handleL2Block(block: L2Block): Promise<void>;
17
17
  }
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdGF0ZV9tYWNoaW5lL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sRUFBRSxLQUFLLGdCQUFnQixFQUFFLEtBQUssYUFBYSxFQUFFLG1CQUFtQixFQUFFLEtBQUssU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkgsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTlDLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBSWpFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBS3BELHFCQUFhLGVBQWU7SUFFakIsSUFBSSxFQUFFLFNBQVM7SUFDZixZQUFZLEVBQUUsZUFBZTtJQUM3QixRQUFRLEVBQUUsV0FBVztJQUNyQixnQkFBZ0IsRUFBRSxnQkFBZ0I7SUFDbEMsbUJBQW1CLEVBQUUsbUJBQW1CO0lBQ3hDLHFCQUFxQixFQUFFLHFCQUFxQjtJQU5yRCxZQUNTLElBQUksRUFBRSxTQUFTLEVBQ2YsWUFBWSxFQUFFLGVBQWUsRUFDN0IsUUFBUSxFQUFFLFdBQVcsRUFDckIsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQ2xDLG1CQUFtQixFQUFFLG1CQUFtQixFQUN4QyxxQkFBcUIsRUFBRSxxQkFBcUIsRUFDakQ7SUFFSixPQUFvQixNQUFNLENBQ3hCLFFBQVEsRUFBRSxXQUFXLEVBQ3JCLGdCQUFnQixFQUFFLGdCQUFnQixFQUNsQyxhQUFhLEVBQUUsYUFBYSxFQUM1QixTQUFTLEVBQUUsU0FBUyw0QkF1Q3JCO0lBRVksYUFBYSxDQUFDLEtBQUssRUFBRSxPQUFPLGlCQXlDeEM7Q0FDRiJ9
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdGF0ZV9tYWNoaW5lL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sRUFBRSxLQUFLLGdCQUFnQixFQUFFLEtBQUssYUFBYSxFQUFFLG1CQUFtQixFQUFFLEtBQUssU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkgsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTlDLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBSWpFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBS3BELHFCQUFhLGVBQWU7SUFFakIsSUFBSSxFQUFFLFNBQVM7SUFDZixZQUFZLEVBQUUsZUFBZTtJQUM3QixRQUFRLEVBQUUsV0FBVztJQUNyQixnQkFBZ0IsRUFBRSxnQkFBZ0I7SUFDbEMsbUJBQW1CLEVBQUUsbUJBQW1CO0lBQ3hDLHFCQUFxQixFQUFFLHFCQUFxQjtJQU5yRCxZQUNTLElBQUksRUFBRSxTQUFTLEVBQ2YsWUFBWSxFQUFFLGVBQWUsRUFDN0IsUUFBUSxFQUFFLFdBQVcsRUFDckIsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQ2xDLG1CQUFtQixFQUFFLG1CQUFtQixFQUN4QyxxQkFBcUIsRUFBRSxxQkFBcUIsRUFDakQ7SUFFSixPQUFvQixNQUFNLENBQ3hCLFFBQVEsRUFBRSxXQUFXLEVBQ3JCLGdCQUFnQixFQUFFLGdCQUFnQixFQUNsQyxhQUFhLEVBQUUsYUFBYSxFQUM1QixTQUFTLEVBQUUsU0FBUyw0QkF5Q3JCO0lBRVksYUFBYSxDQUFDLEtBQUssRUFBRSxPQUFPLGlCQXlDeEM7Q0FDRiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/state_machine/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,mBAAmB,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnH,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAIjE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAI5C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAKpD,qBAAa,eAAe;IAEjB,IAAI,EAAE,SAAS;IACf,YAAY,EAAE,eAAe;IAC7B,QAAQ,EAAE,WAAW;IACrB,gBAAgB,EAAE,gBAAgB;IAClC,mBAAmB,EAAE,mBAAmB;IACxC,qBAAqB,EAAE,qBAAqB;IANrD,YACS,IAAI,EAAE,SAAS,EACf,YAAY,EAAE,eAAe,EAC7B,QAAQ,EAAE,WAAW,EACrB,gBAAgB,EAAE,gBAAgB,EAClC,mBAAmB,EAAE,mBAAmB,EACxC,qBAAqB,EAAE,qBAAqB,EACjD;IAEJ,OAAoB,MAAM,CACxB,QAAQ,EAAE,WAAW,EACrB,gBAAgB,EAAE,gBAAgB,EAClC,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,SAAS,4BAuCrB;IAEY,aAAa,CAAC,KAAK,EAAE,OAAO,iBAyCxC;CACF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/state_machine/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,mBAAmB,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnH,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAIjE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAI5C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAKpD,qBAAa,eAAe;IAEjB,IAAI,EAAE,SAAS;IACf,YAAY,EAAE,eAAe;IAC7B,QAAQ,EAAE,WAAW;IACrB,gBAAgB,EAAE,gBAAgB;IAClC,mBAAmB,EAAE,mBAAmB;IACxC,qBAAqB,EAAE,qBAAqB;IANrD,YACS,IAAI,EAAE,SAAS,EACf,YAAY,EAAE,eAAe,EAC7B,QAAQ,EAAE,WAAW,EACrB,gBAAgB,EAAE,gBAAgB,EAClC,mBAAmB,EAAE,mBAAmB,EACxC,qBAAqB,EAAE,qBAAqB,EACjD;IAEJ,OAAoB,MAAM,CACxB,QAAQ,EAAE,WAAW,EACrB,gBAAgB,EAAE,gBAAgB,EAClC,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,SAAS,4BAyCrB;IAEY,aAAa,CAAC,KAAK,EAAE,OAAO,iBAyCxC;CACF"}
@@ -9,7 +9,7 @@ import { Checkpoint, L1PublishedData, PublishedCheckpoint } from '@aztec/stdlib/
9
9
  import { CheckpointHeader } from '@aztec/stdlib/rollup';
10
10
  import { getPackageVersion } from '@aztec/stdlib/update-checker';
11
11
  import { DummyP2P } from './dummy_p2p_client.js';
12
- import { TXEGlobalVariablesBuilder } from './global_variable_builder.js';
12
+ import { TXEFeeProvider, TXEGlobalVariablesBuilder } from './global_variable_builder.js';
13
13
  import { MockEpochCache } from './mock_epoch_cache.js';
14
14
  import { TXESynchronizer } from './synchronizer.js';
15
15
  const VERSION = 1;
@@ -33,7 +33,7 @@ export class TXEStateMachine {
33
33
  const synchronizer = await TXESynchronizer.create();
34
34
  const aztecNodeConfig = {};
35
35
  const log = createLogger('txe_node');
36
- const node = new AztecNodeService(aztecNodeConfig, new DummyP2P(), archiver, archiver, archiver, archiver, synchronizer, undefined, undefined, undefined, undefined, undefined, VERSION, CHAIN_ID, new TXEGlobalVariablesBuilder(), new MockEpochCache(), getPackageVersion() ?? '', new TestCircuitVerifier(), undefined, log);
36
+ const node = new AztecNodeService(aztecNodeConfig, new DummyP2P(), archiver, archiver, archiver, archiver, synchronizer, undefined, undefined, undefined, undefined, undefined, VERSION, CHAIN_ID, new TXEGlobalVariablesBuilder(), new TXEFeeProvider(), new MockEpochCache(), getPackageVersion() ?? '', new TestCircuitVerifier(), new TestCircuitVerifier(), undefined, log);
37
37
  const contractSyncService = new ContractSyncService(node, contractStore, noteStore, createLogger('txe:contract_sync'));
38
38
  const messageContextService = new MessageContextService(node);
39
39
  return new this(node, synchronizer, archiver, anchorBlockStore, contractSyncService, messageContextService);
@@ -7,23 +7,38 @@ import { type L1RollupConstants } from '@aztec/stdlib/epoch-helpers';
7
7
  * Since in TXE we don't validate transactions, mock suffices here.
8
8
  */
9
9
  export declare class MockEpochCache implements EpochCacheInterface {
10
- getCommittee(): Promise<EpochCommitteeInfo>;
10
+ getCommittee(_slot?: SlotTag): Promise<EpochCommitteeInfo>;
11
+ getSlotNow(): SlotNumber;
12
+ getTargetSlot(): SlotNumber;
13
+ getEpochNow(): EpochNumber;
14
+ getTargetEpoch(): EpochNumber;
11
15
  getEpochAndSlotNow(): EpochAndSlot & {
12
16
  nowMs: bigint;
13
17
  };
14
18
  getEpochAndSlotInNextL1Slot(): EpochAndSlot & {
15
- now: bigint;
19
+ nowSeconds: bigint;
16
20
  };
21
+ getTargetEpochAndSlotInNextL1Slot(): EpochAndSlot & {
22
+ nowSeconds: bigint;
23
+ };
24
+ isProposerPipeliningEnabled(): boolean;
25
+ pipeliningOffset(): number;
17
26
  getProposerIndexEncoding(_epoch: EpochNumber, _slot: SlotNumber, _seed: bigint): `0x${string}`;
18
27
  computeProposerIndex(_slot: SlotNumber, _epoch: EpochNumber, _seed: bigint, _size: bigint): bigint;
19
28
  getCurrentAndNextSlot(): {
20
29
  currentSlot: SlotNumber;
21
30
  nextSlot: SlotNumber;
22
31
  };
32
+ getTargetAndNextSlot(): {
33
+ targetSlot: SlotNumber;
34
+ nextSlot: SlotNumber;
35
+ };
23
36
  getProposerAttesterAddressInSlot(_slot: SlotNumber): Promise<EthAddress | undefined>;
24
37
  isInCommittee(_slot: SlotTag, _validator: EthAddress): Promise<boolean>;
25
38
  getRegisteredValidators(): Promise<EthAddress[]>;
26
39
  filterInCommittee(_slot: SlotTag, _validators: EthAddress[]): Promise<EthAddress[]>;
40
+ isEscapeHatchOpen(_epoch: EpochNumber): Promise<boolean>;
41
+ isEscapeHatchOpenAtSlot(_slot: SlotTag): Promise<boolean>;
27
42
  getL1Constants(): L1RollupConstants;
28
43
  }
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19lcG9jaF9jYWNoZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0YXRlX21hY2hpbmUvbW9ja19lcG9jaF9jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekcsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUEwQixLQUFLLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFN0Y7OztHQUdHO0FBQ0gscUJBQWEsY0FBZSxZQUFXLG1CQUFtQjtJQUN4RCxZQUFZLElBQUksT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBTzFDO0lBRUQsa0JBQWtCLElBQUksWUFBWSxHQUFHO1FBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQTtLQUFFLENBT3JEO0lBRUQsMkJBQTJCLElBQUksWUFBWSxHQUFHO1FBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQTtLQUFFLENBTzVEO0lBRUQsd0JBQXdCLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLEdBQUcsS0FBSyxNQUFNLEVBQUUsQ0FFN0Y7SUFFRCxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxHQUFHLE1BQU0sQ0FFakc7SUFFRCxxQkFBcUIsSUFBSTtRQUFFLFdBQVcsRUFBRSxVQUFVLENBQUM7UUFBQyxRQUFRLEVBQUUsVUFBVSxDQUFBO0tBQUUsQ0FLekU7SUFFRCxnQ0FBZ0MsQ0FBQyxLQUFLLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLENBRW5GO0lBRUQsYUFBYSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBRXRFO0lBRUQsdUJBQXVCLElBQUksT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBRS9DO0lBRUQsaUJBQWlCLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLEdBQUcsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBRWxGO0lBRUQsY0FBYyxJQUFJLGlCQUFpQixDQUVsQztDQUNGIn0=
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19lcG9jaF9jYWNoZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0YXRlX21hY2hpbmUvbW9ja19lcG9jaF9jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekcsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUEwQixLQUFLLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFN0Y7OztHQUdHO0FBQ0gscUJBQWEsY0FBZSxZQUFXLG1CQUFtQjtJQUN4RCxZQUFZLENBQUMsS0FBSyxHQUFFLE9BQWUsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FPaEU7SUFFRCxVQUFVLElBQUksVUFBVSxDQUV2QjtJQUVELGFBQWEsSUFBSSxVQUFVLENBRTFCO0lBRUQsV0FBVyxJQUFJLFdBQVcsQ0FFekI7SUFFRCxjQUFjLElBQUksV0FBVyxDQUU1QjtJQUVELGtCQUFrQixJQUFJLFlBQVksR0FBRztRQUFFLEtBQUssRUFBRSxNQUFNLENBQUE7S0FBRSxDQU9yRDtJQUVELDJCQUEyQixJQUFJLFlBQVksR0FBRztRQUFFLFVBQVUsRUFBRSxNQUFNLENBQUE7S0FBRSxDQU9uRTtJQUVELGlDQUFpQyxJQUFJLFlBQVksR0FBRztRQUFFLFVBQVUsRUFBRSxNQUFNLENBQUE7S0FBRSxDQUV6RTtJQUVELDJCQUEyQixJQUFJLE9BQU8sQ0FFckM7SUFFRCxnQkFBZ0IsSUFBSSxNQUFNLENBRXpCO0lBRUQsd0JBQXdCLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLEdBQUcsS0FBSyxNQUFNLEVBQUUsQ0FFN0Y7SUFFRCxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxHQUFHLE1BQU0sQ0FFakc7SUFFRCxxQkFBcUIsSUFBSTtRQUFFLFdBQVcsRUFBRSxVQUFVLENBQUM7UUFBQyxRQUFRLEVBQUUsVUFBVSxDQUFBO0tBQUUsQ0FLekU7SUFFRCxvQkFBb0IsSUFBSTtRQUFFLFVBQVUsRUFBRSxVQUFVLENBQUM7UUFBQyxRQUFRLEVBQUUsVUFBVSxDQUFBO0tBQUUsQ0FLdkU7SUFFRCxnQ0FBZ0MsQ0FBQyxLQUFLLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLENBRW5GO0lBRUQsYUFBYSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBRXRFO0lBRUQsdUJBQXVCLElBQUksT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBRS9DO0lBRUQsaUJBQWlCLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLEdBQUcsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBRWxGO0lBRUQsaUJBQWlCLENBQUMsTUFBTSxFQUFFLFdBQVcsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBRXZEO0lBRUQsdUJBQXVCLENBQUMsS0FBSyxFQUFFLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBRXhEO0lBRUQsY0FBYyxJQUFJLGlCQUFpQixDQUVsQztDQUNGIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"mock_epoch_cache.d.ts","sourceRoot":"","sources":["../../src/state_machine/mock_epoch_cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACzG,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAA0B,KAAK,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAE7F;;;GAGG;AACH,qBAAa,cAAe,YAAW,mBAAmB;IACxD,YAAY,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAO1C;IAED,kBAAkB,IAAI,YAAY,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAOrD;IAED,2BAA2B,IAAI,YAAY,GAAG;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAO5D;IAED,wBAAwB,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,MAAM,EAAE,CAE7F;IAED,oBAAoB,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEjG;IAED,qBAAqB,IAAI;QAAE,WAAW,EAAE,UAAU,CAAC;QAAC,QAAQ,EAAE,UAAU,CAAA;KAAE,CAKzE;IAED,gCAAgC,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAEnF;IAED,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAEtE;IAED,uBAAuB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,CAE/C;IAED,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAElF;IAED,cAAc,IAAI,iBAAiB,CAElC;CACF"}
1
+ {"version":3,"file":"mock_epoch_cache.d.ts","sourceRoot":"","sources":["../../src/state_machine/mock_epoch_cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACzG,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAA0B,KAAK,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAE7F;;;GAGG;AACH,qBAAa,cAAe,YAAW,mBAAmB;IACxD,YAAY,CAAC,KAAK,GAAE,OAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAOhE;IAED,UAAU,IAAI,UAAU,CAEvB;IAED,aAAa,IAAI,UAAU,CAE1B;IAED,WAAW,IAAI,WAAW,CAEzB;IAED,cAAc,IAAI,WAAW,CAE5B;IAED,kBAAkB,IAAI,YAAY,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAOrD;IAED,2BAA2B,IAAI,YAAY,GAAG;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAOnE;IAED,iCAAiC,IAAI,YAAY,GAAG;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAEzE;IAED,2BAA2B,IAAI,OAAO,CAErC;IAED,gBAAgB,IAAI,MAAM,CAEzB;IAED,wBAAwB,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,MAAM,EAAE,CAE7F;IAED,oBAAoB,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEjG;IAED,qBAAqB,IAAI;QAAE,WAAW,EAAE,UAAU,CAAC;QAAC,QAAQ,EAAE,UAAU,CAAA;KAAE,CAKzE;IAED,oBAAoB,IAAI;QAAE,UAAU,EAAE,UAAU,CAAC;QAAC,QAAQ,EAAE,UAAU,CAAA;KAAE,CAKvE;IAED,gCAAgC,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAEnF;IAED,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAEtE;IAED,uBAAuB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,CAE/C;IAED,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAElF;IAED,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAEvD;IAED,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAExD;IAED,cAAc,IAAI,iBAAiB,CAElC;CACF"}
@@ -4,7 +4,7 @@ import { EmptyL1RollupConstants } from '@aztec/stdlib/epoch-helpers';
4
4
  * Mock implementation of the EpochCacheInterface used to satisfy dependencies of AztecNodeService.
5
5
  * Since in TXE we don't validate transactions, mock suffices here.
6
6
  */ export class MockEpochCache {
7
- getCommittee() {
7
+ getCommittee(_slot = 'now') {
8
8
  return Promise.resolve({
9
9
  committee: undefined,
10
10
  seed: 0n,
@@ -12,6 +12,18 @@ import { EmptyL1RollupConstants } from '@aztec/stdlib/epoch-helpers';
12
12
  isEscapeHatchOpen: false
13
13
  });
14
14
  }
15
+ getSlotNow() {
16
+ return SlotNumber(0);
17
+ }
18
+ getTargetSlot() {
19
+ return SlotNumber(0);
20
+ }
21
+ getEpochNow() {
22
+ return EpochNumber.ZERO;
23
+ }
24
+ getTargetEpoch() {
25
+ return EpochNumber.ZERO;
26
+ }
15
27
  getEpochAndSlotNow() {
16
28
  return {
17
29
  epoch: EpochNumber.ZERO,
@@ -25,9 +37,18 @@ import { EmptyL1RollupConstants } from '@aztec/stdlib/epoch-helpers';
25
37
  epoch: EpochNumber.ZERO,
26
38
  slot: SlotNumber(0),
27
39
  ts: 0n,
28
- now: 0n
40
+ nowSeconds: 0n
29
41
  };
30
42
  }
43
+ getTargetEpochAndSlotInNextL1Slot() {
44
+ return this.getEpochAndSlotInNextL1Slot();
45
+ }
46
+ isProposerPipeliningEnabled() {
47
+ return false;
48
+ }
49
+ pipeliningOffset() {
50
+ return 0;
51
+ }
31
52
  getProposerIndexEncoding(_epoch, _slot, _seed) {
32
53
  return '0x00';
33
54
  }
@@ -40,6 +61,12 @@ import { EmptyL1RollupConstants } from '@aztec/stdlib/epoch-helpers';
40
61
  nextSlot: SlotNumber(0)
41
62
  };
42
63
  }
64
+ getTargetAndNextSlot() {
65
+ return {
66
+ targetSlot: SlotNumber(0),
67
+ nextSlot: SlotNumber(0)
68
+ };
69
+ }
43
70
  getProposerAttesterAddressInSlot(_slot) {
44
71
  return Promise.resolve(undefined);
45
72
  }
@@ -52,6 +79,12 @@ import { EmptyL1RollupConstants } from '@aztec/stdlib/epoch-helpers';
52
79
  filterInCommittee(_slot, _validators) {
53
80
  return Promise.resolve([]);
54
81
  }
82
+ isEscapeHatchOpen(_epoch) {
83
+ return Promise.resolve(false);
84
+ }
85
+ isEscapeHatchOpenAtSlot(_slot) {
86
+ return Promise.resolve(false);
87
+ }
55
88
  getL1Constants() {
56
89
  return EmptyL1RollupConstants;
57
90
  }
@@ -2,7 +2,7 @@ import { BlockNumber } from '@aztec/foundation/branded-types';
2
2
  import { Fr } from '@aztec/foundation/curves/bn254';
3
3
  import { type Logger } from '@aztec/foundation/log';
4
4
  import { KeyStore } from '@aztec/key-store';
5
- import { AddressStore, CapsuleStore, ContractStore, ContractSyncService, JobCoordinator, NoteStore, PrivateEventStore, RecipientTaggingStore, SenderAddressBookStore, SenderTaggingStore } from '@aztec/pxe/server';
5
+ import { AddressStore, CapsuleStore, ContractStore, JobCoordinator, NoteStore, PrivateEventStore, RecipientTaggingStore, SenderAddressBookStore, SenderTaggingStore } from '@aztec/pxe/server';
6
6
  import { type IPrivateExecutionOracle, type IUtilityExecutionOracle } from '@aztec/pxe/simulator';
7
7
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
8
8
  import { PrivateContextInputs } from '@aztec/stdlib/kernel';
@@ -26,6 +26,36 @@ export interface TXESessionStateHandler {
26
26
  enterUtilityState(contractAddress?: AztecAddress): Promise<void>;
27
27
  cycleJob(): Promise<string>;
28
28
  getCurrentJob(): string;
29
+ /**
30
+ * Runs an executor-style top-level call (private/public call, utility execution) with last-call tracking.
31
+ */
32
+ withTopLevelCallTracking<T>(work: () => Promise<{
33
+ result: T;
34
+ txHash?: Fr;
35
+ }>): Promise<T>;
36
+ /**
37
+ * Captures a raw offchain effect payload for consumption from test environment. Called by the `emit_offchain_effect`
38
+ * oracle handler whenever a contract function emits an offchain message, at any call depth.
39
+ */
40
+ recordOffchainEffect(data: Fr[]): void;
41
+ /**
42
+ * Returns the raw offchain effect payloads emitted by the last top-level call. Each payload follows the protocol
43
+ * convention documented on `OFFCHAIN_MESSAGE_IDENTIFIER`, i.e. `[identifier, recipient, ...ciphertext]`. Decoding into
44
+ * `OffchainMessage` structs happens on the Noir side of the test helper. Marks the buffer as queried so the
45
+ * unqueried-messages warning doesn't fire on the next reset.
46
+ */
47
+ getLastCallOffchainEffects(): {
48
+ effects: Fr[][];
49
+ };
50
+ /**
51
+ * Returns the context of the last top-level call: its tx hash (`Fr.ZERO` if the call was tx-less) and the anchor
52
+ * block timestamp captured at the start of the call. Does *not* mark the buffer as queried — context reads are
53
+ * metadata, not effect consumption.
54
+ */
55
+ getLastCallContext(): {
56
+ txHash: Fr;
57
+ anchorBlockTimestamp: bigint;
58
+ };
29
59
  }
30
60
  /**
31
61
  * A `TXESession` corresponds to a Noir `#[test]` function, and handles all of its oracle calls, stores test-specific
@@ -50,10 +80,10 @@ export declare class TXESession implements TXESessionStateHandler {
50
80
  private chainId;
51
81
  private version;
52
82
  private nextBlockTimestamp;
53
- private contractSyncService;
54
83
  private state;
55
84
  private authwits;
56
- constructor(logger: Logger, stateMachine: TXEStateMachine, oracleHandler: IUtilityExecutionOracle | IPrivateExecutionOracle | IAvmExecutionOracle | ITxeExecutionOracle, contractStore: ContractStore, noteStore: NoteStore, keyStore: KeyStore, addressStore: AddressStore, accountStore: TXEAccountStore, senderTaggingStore: SenderTaggingStore, recipientTaggingStore: RecipientTaggingStore, senderAddressBookStore: SenderAddressBookStore, capsuleStore: CapsuleStore, privateEventStore: PrivateEventStore, jobCoordinator: JobCoordinator, currentJobId: string, chainId: Fr, version: Fr, nextBlockTimestamp: bigint, contractSyncService: ContractSyncService);
85
+ private lastCallInfo;
86
+ constructor(logger: Logger, stateMachine: TXEStateMachine, oracleHandler: IUtilityExecutionOracle | IPrivateExecutionOracle | IAvmExecutionOracle | ITxeExecutionOracle, contractStore: ContractStore, noteStore: NoteStore, keyStore: KeyStore, addressStore: AddressStore, accountStore: TXEAccountStore, senderTaggingStore: SenderTaggingStore, recipientTaggingStore: RecipientTaggingStore, senderAddressBookStore: SenderAddressBookStore, capsuleStore: CapsuleStore, privateEventStore: PrivateEventStore, jobCoordinator: JobCoordinator, currentJobId: string, chainId: Fr, version: Fr, nextBlockTimestamp: bigint);
57
87
  static init(contractStore: ContractStore): Promise<TXESession>;
58
88
  /**
59
89
  * Processes an oracle function invoked by the Noir test associated to this session.
@@ -65,6 +95,20 @@ export declare class TXESession implements TXESessionStateHandler {
65
95
  getCurrentJob(): string;
66
96
  /** Commits the current job and begins a new one. Returns the new job ID. */
67
97
  cycleJob(): Promise<string>;
98
+ private resetLastCall;
99
+ recordOffchainEffect(data: Fr[]): void;
100
+ private setLastCallContext;
101
+ withTopLevelCallTracking<T>(work: () => Promise<{
102
+ result: T;
103
+ txHash?: Fr;
104
+ }>): Promise<T>;
105
+ getLastCallOffchainEffects(): {
106
+ effects: Fr[][];
107
+ };
108
+ getLastCallContext(): {
109
+ txHash: Fr;
110
+ anchorBlockTimestamp: bigint;
111
+ };
68
112
  enterTopLevelState(): Promise<void>;
69
113
  enterPrivateState(contractAddress?: AztecAddress, anchorBlockNumber?: BlockNumber): Promise<PrivateContextInputs>;
70
114
  enterPublicState(contractAddress?: AztecAddress): Promise<void>;
@@ -76,4 +120,4 @@ export declare class TXESession implements TXESessionStateHandler {
76
120
  private utilityExecutorForContractSync;
77
121
  }
78
122
  export {};
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhlX3Nlc3Npb24uZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90eGVfc2Vzc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFNUMsT0FBTyxFQUNMLFlBQVksRUFHWixZQUFZLEVBQ1osYUFBYSxFQUNiLG1CQUFtQixFQUNuQixjQUFjLEVBRWQsU0FBUyxFQUNULGlCQUFpQixFQUNqQixxQkFBcUIsRUFDckIsc0JBQXNCLEVBQ3RCLGtCQUFrQixFQUNuQixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFJTCxLQUFLLHVCQUF1QixFQUM1QixLQUFLLHVCQUF1QixFQUk3QixNQUFNLHNCQUFzQixDQUFDO0FBVzlCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUczRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQU81RCxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBR3ZGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDN0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBeUM5RCxLQUFLLFdBQVcsQ0FBQyxDQUFDLElBQUk7S0FDbkIsQ0FBQyxJQUFJLE1BQU0s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
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhlX3Nlc3Npb24uZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90eGVfc2Vzc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFNUMsT0FBTyxFQUNMLFlBQVksRUFHWixZQUFZLEVBQ1osYUFBYSxFQUNiLGNBQWMsRUFFZCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUNyQixzQkFBc0IsRUFDdEIsa0JBQWtCLEVBQ25CLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUlMLEtBQUssdUJBQXVCLEVBQzVCLEtBQUssdUJBQXVCLEVBSTdCLE1BQU0sc0JBQXNCLENBQUM7QUFXOUIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRzNELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBTzVELE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHdkYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXBELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUF5QzlELEtBQUssV0FBVyxDQUFDLENBQUMsSUFBSTtLQUNuQixDQUFDLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FB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
@@ -1 +1 @@
1
- {"version":3,"file":"txe_session.d.ts","sourceRoot":"","sources":["../src/txe_session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EACL,YAAY,EAGZ,YAAY,EACZ,aAAa,EACb,mBAAmB,EACnB,cAAc,EAEd,SAAS,EACT,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAIL,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAI7B,MAAM,sBAAsB,CAAC;AAW9B,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAG3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAO5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAGvF,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAyC9D,KAAK,WAAW,CAAC,CAAC,IAAI;KACnB,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GAAG,CAAC,GAAG,KAAK;CACjE,CAAC,MAAM,CAAC,CAAC,CAAC;AAEX;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAAG,OAAO,CACzC,WAAW,CAAC,aAAa,CAAC,EAC1B,aAAa,GAAG,eAAe,GAAG,kBAAkB,GAAG,kBAAkB,GAAG,cAAc,GAAG,cAAc,CAC5G,CAAC;AAEF,MAAM,WAAW,sBAAsB;IACrC,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,gBAAgB,CAAC,eAAe,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,iBAAiB,CAAC,eAAe,CAAC,EAAE,YAAY,EAAE,iBAAiB,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAClH,iBAAiB,CAAC,eAAe,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAGjE,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5B,aAAa,IAAI,MAAM,CAAC;CACzB;AAED;;;GAGG;AACH,qBAAa,UAAW,YAAW,sBAAsB;IAKrD,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,qBAAqB;IAC7B,OAAO,CAAC,sBAAsB;IAC9B,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,iBAAiB;IACzB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,mBAAmB;IA1B7B,OAAO,CAAC,KAAK,CAAuC;IACpD,OAAO,CAAC,QAAQ,CAAuC;IAEvD,YACU,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,eAAe,EAC7B,aAAa,EACjB,uBAAuB,GACvB,uBAAuB,GACvB,mBAAmB,GACnB,mBAAmB,EACf,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,eAAe,EAC7B,kBAAkB,EAAE,kBAAkB,EACtC,qBAAqB,EAAE,qBAAqB,EAC5C,sBAAsB,EAAE,sBAAsB,EAC9C,YAAY,EAAE,YAAY,EAC1B,iBAAiB,EAAE,iBAAiB,EACpC,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,EAAE,EACX,OAAO,EAAE,EAAE,EACX,kBAAkB,EAAE,MAAM,EAC1B,mBAAmB,EAAE,mBAAmB,EAC9C;IAEJ,OAAa,IAAI,CAAC,aAAa,EAAE,aAAa,uBA6E7C;IAED;;;;;OAKG;IACH,eAAe,CAAC,YAAY,EAAE,qBAAqB,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAuBxG;IAED,aAAa,IAAI,MAAM,CAEtB;IAED,4EAA4E;IACtE,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,CAIhC;IAEK,kBAAkB,kBA8CvB;IAEK,iBAAiB,CACrB,eAAe,GAAE,YAA8B,EAC/C,iBAAiB,CAAC,EAAE,WAAW,GAC9B,OAAO,CAAC,oBAAoB,CAAC,CAgE/B;IAEK,gBAAgB,CAAC,eAAe,CAAC,EAAE,YAAY,iBAsBpD;IAEK,iBAAiB,CAAC,eAAe,GAAE,YAA8B,iBAwCtE;IAED,OAAO,CAAC,iBAAiB;YAiBX,gBAAgB;YA6BhB,eAAe;IAS7B,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,8BAA8B;CA+CvC"}
1
+ {"version":3,"file":"txe_session.d.ts","sourceRoot":"","sources":["../src/txe_session.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import { Fr } from '@aztec/foundation/curves/bn254';
3
3
  import { createLogger } from '@aztec/foundation/log';
4
4
  import { KeyStore } from '@aztec/key-store';
5
5
  import { openTmpStore } from '@aztec/kv-store/lmdb-v2';
6
- import { AddressStore, AnchorBlockStore, CapsuleService, CapsuleStore, ContractSyncService, JobCoordinator, NoteService, NoteStore, PrivateEventStore, RecipientTaggingStore, SenderAddressBookStore, SenderTaggingStore } from '@aztec/pxe/server';
6
+ import { AddressStore, AnchorBlockStore, CapsuleService, CapsuleStore, JobCoordinator, NoteService, NoteStore, PrivateEventStore, RecipientTaggingStore, SenderAddressBookStore, SenderTaggingStore } from '@aztec/pxe/server';
7
7
  import { ExecutionNoteCache, ExecutionTaggingIndexCache, HashedValuesCache, Oracle, PrivateExecutionOracle, UtilityExecutionOracle } from '@aztec/pxe/simulator';
8
8
  import { ExecutionError, WASMSimulator, createSimulationError, extractCallStack, resolveAssertionMessageFromError, toACVMWitness } from '@aztec/simulator/client';
9
9
  import { FunctionSelector, FunctionType } from '@aztec/stdlib/abi';
@@ -11,7 +11,7 @@ import { AztecAddress } from '@aztec/stdlib/aztec-address';
11
11
  import { GasSettings } from '@aztec/stdlib/gas';
12
12
  import { computeProtocolNullifier } from '@aztec/stdlib/hash';
13
13
  import { makeGlobalVariables } from '@aztec/stdlib/testing';
14
- import { CallContext, TxContext } from '@aztec/stdlib/tx';
14
+ import { CallContext, OFFCHAIN_MESSAGE_IDENTIFIER, TxContext } from '@aztec/stdlib/tx';
15
15
  import { z } from 'zod';
16
16
  import { DEFAULT_ADDRESS } from './constants.js';
17
17
  import { TXEOraclePublicContext } from './oracle/txe_oracle_public_context.js';
@@ -22,6 +22,14 @@ import { TXEStateMachine } from './state_machine/index.js';
22
22
  import { TXEAccountStore } from './util/txe_account_store.js';
23
23
  import { getSingleTxBlockRequestHash, insertTxEffectIntoWorldTrees, makeTXEBlock } from './utils/block_creation.js';
24
24
  import { makeTxEffect } from './utils/tx_effect_creation.js';
25
+ function emptyLastCallState() {
26
+ return {
27
+ offchainEffects: [],
28
+ queried: false,
29
+ txHash: Fr.ZERO,
30
+ anchorBlockTimestamp: 0n
31
+ };
32
+ }
25
33
  /**
26
34
  * A `TXESession` corresponds to a Noir `#[test]` function, and handles all of its oracle calls, stores test-specific
27
35
  * state, etc., independent of all other tests running in parallel.
@@ -44,10 +52,10 @@ import { makeTxEffect } from './utils/tx_effect_creation.js';
44
52
  chainId;
45
53
  version;
46
54
  nextBlockTimestamp;
47
- contractSyncService;
48
55
  state;
49
56
  authwits;
50
- constructor(logger, stateMachine, oracleHandler, contractStore, noteStore, keyStore, addressStore, accountStore, senderTaggingStore, recipientTaggingStore, senderAddressBookStore, capsuleStore, privateEventStore, jobCoordinator, currentJobId, chainId, version, nextBlockTimestamp, contractSyncService){
57
+ lastCallInfo;
58
+ constructor(logger, stateMachine, oracleHandler, contractStore, noteStore, keyStore, addressStore, accountStore, senderTaggingStore, recipientTaggingStore, senderAddressBookStore, capsuleStore, privateEventStore, jobCoordinator, currentJobId, chainId, version, nextBlockTimestamp){
51
59
  this.logger = logger;
52
60
  this.stateMachine = stateMachine;
53
61
  this.oracleHandler = oracleHandler;
@@ -66,11 +74,11 @@ import { makeTxEffect } from './utils/tx_effect_creation.js';
66
74
  this.chainId = chainId;
67
75
  this.version = version;
68
76
  this.nextBlockTimestamp = nextBlockTimestamp;
69
- this.contractSyncService = contractSyncService;
70
77
  this.state = {
71
78
  name: 'TOP_LEVEL'
72
79
  };
73
80
  this.authwits = new Map();
81
+ this.lastCallInfo = emptyLastCallState();
74
82
  }
75
83
  static async init(contractStore) {
76
84
  const store = await openTmpStore('txe-session');
@@ -100,10 +108,9 @@ import { makeTxEffect } from './utils/tx_effect_creation.js';
100
108
  const chainId = new Fr(await stateMachine.node.getChainId());
101
109
  const initialJobId = jobCoordinator.beginJob();
102
110
  const logger = createLogger('txe:session');
103
- const contractSyncService = new ContractSyncService(stateMachine.node, contractStore, noteStore, logger);
104
- const topLevelOracleHandler = new TXEOracleTopLevelContext(stateMachine, contractStore, noteStore, keyStore, addressStore, accountStore, senderTaggingStore, recipientTaggingStore, senderAddressBookStore, capsuleStore, privateEventStore, nextBlockTimestamp, version, chainId, new Map(), contractSyncService);
111
+ const topLevelOracleHandler = new TXEOracleTopLevelContext(stateMachine, contractStore, noteStore, keyStore, addressStore, accountStore, senderTaggingStore, recipientTaggingStore, senderAddressBookStore, capsuleStore, privateEventStore, nextBlockTimestamp, version, chainId, new Map());
105
112
  await topLevelOracleHandler.advanceBlocksBy(1);
106
- return new TXESession(logger, stateMachine, topLevelOracleHandler, contractStore, noteStore, keyStore, addressStore, accountStore, senderTaggingStore, recipientTaggingStore, senderAddressBookStore, capsuleStore, privateEventStore, jobCoordinator, initialJobId, version, chainId, nextBlockTimestamp, contractSyncService);
113
+ return new TXESession(logger, stateMachine, topLevelOracleHandler, contractStore, noteStore, keyStore, addressStore, accountStore, senderTaggingStore, recipientTaggingStore, senderAddressBookStore, capsuleStore, privateEventStore, jobCoordinator, initialJobId, version, chainId, nextBlockTimestamp);
107
114
  }
108
115
  /**
109
116
  * Processes an oracle function invoked by the Noir test associated to this session.
@@ -134,6 +141,42 @@ import { makeTxEffect } from './utils/tx_effect_creation.js';
134
141
  this.currentJobId = this.jobCoordinator.beginJob();
135
142
  return this.currentJobId;
136
143
  }
144
+ resetLastCall() {
145
+ const notQueriedMessageCount = this.lastCallInfo.queried ? 0 : this.lastCallInfo.offchainEffects.filter((payload)=>payload[0]?.equals(OFFCHAIN_MESSAGE_IDENTIFIER)).length;
146
+ if (notQueriedMessageCount > 0) {
147
+ this.logger.warn(`Dropping ${notQueriedMessageCount} unqueried offchain message(s) from the previous top-level call. ` + `To deliver them, call \`env.offchain_messages()\` and forward the result to the recipient contract's ` + `\`offchain_receive\` utility before issuing another top-level call. To intentionally discard, assign ` + `to \`let _ = env.offchain_messages()\` to silence this warning.`);
148
+ }
149
+ this.lastCallInfo = emptyLastCallState();
150
+ }
151
+ recordOffchainEffect(data) {
152
+ this.lastCallInfo.offchainEffects.push(data);
153
+ }
154
+ setLastCallContext(txHash, anchorBlockTimestamp) {
155
+ this.lastCallInfo.txHash = txHash;
156
+ this.lastCallInfo.anchorBlockTimestamp = anchorBlockTimestamp;
157
+ }
158
+ async withTopLevelCallTracking(work) {
159
+ this.resetLastCall();
160
+ // Capture the anchor *before* `work` runs: private/public executor calls mine a new block as a
161
+ // side effect, and that block's timestamp should not be attributed to this call's anchor.
162
+ const anchorBlockTimestamp = (await this.stateMachine.node.getBlockHeader('latest')).globalVariables.timestamp;
163
+ const { result, txHash } = await work();
164
+ this.setLastCallContext(txHash ?? Fr.ZERO, anchorBlockTimestamp);
165
+ return result;
166
+ }
167
+ getLastCallOffchainEffects() {
168
+ this.lastCallInfo.queried = true;
169
+ return {
170
+ effects: this.lastCallInfo.offchainEffects
171
+ };
172
+ }
173
+ getLastCallContext() {
174
+ const { txHash, anchorBlockTimestamp } = this.lastCallInfo;
175
+ return {
176
+ txHash,
177
+ anchorBlockTimestamp
178
+ };
179
+ }
137
180
  async enterTopLevelState() {
138
181
  switch(this.state.name){
139
182
  case 'PRIVATE':
@@ -162,7 +205,7 @@ import { makeTxEffect } from './utils/tx_effect_creation.js';
162
205
  }
163
206
  // Commit all staged stores from the job that was just completed, then begin a new job
164
207
  await this.cycleJob();
165
- this.oracleHandler = new TXEOracleTopLevelContext(this.stateMachine, this.contractStore, this.noteStore, this.keyStore, this.addressStore, this.accountStore, this.senderTaggingStore, this.recipientTaggingStore, this.senderAddressBookStore, this.capsuleStore, this.privateEventStore, this.nextBlockTimestamp, this.version, this.chainId, this.authwits, this.contractSyncService);
208
+ this.oracleHandler = new TXEOracleTopLevelContext(this.stateMachine, this.contractStore, this.noteStore, this.keyStore, this.addressStore, this.accountStore, this.senderTaggingStore, this.recipientTaggingStore, this.senderAddressBookStore, this.capsuleStore, this.privateEventStore, this.nextBlockTimestamp, this.version, this.chainId, this.authwits);
166
209
  this.state = {
167
210
  name: 'TOP_LEVEL'
168
211
  };
@@ -170,6 +213,7 @@ import { makeTxEffect } from './utils/tx_effect_creation.js';
170
213
  }
171
214
  async enterPrivateState(contractAddress = DEFAULT_ADDRESS, anchorBlockNumber) {
172
215
  this.exitTopLevelState();
216
+ this.resetLastCall();
173
217
  // Private execution has two associated block numbers: the anchor block (i.e. the historical block that is used to
174
218
  // build the proof), and the *next* block, i.e. the one we'll create once the execution ends, and which will contain
175
219
  // a single transaction with the effects of what was done in the test.
@@ -226,15 +270,19 @@ import { makeTxEffect } from './utils/tx_effect_creation.js';
226
270
  taggingIndexCache
227
271
  };
228
272
  this.logger.debug(`Entered state ${this.state.name}`);
273
+ // Record the *resolved* anchor's timestamp — if the caller pinned the anchor to a past block
274
+ // via `anchorBlockNumber`, "latest" would be the wrong anchor for offchain-message semantics.
275
+ this.setLastCallContext(Fr.ZERO, anchorBlock.globalVariables.timestamp);
229
276
  return this.oracleHandler.getPrivateContextInputs();
230
277
  }
231
278
  async enterPublicState(contractAddress) {
232
279
  this.exitTopLevelState();
280
+ this.resetLastCall();
233
281
  // The PublicContext will create a block with a single transaction in it, containing the effects of what was done in
234
282
  // the test. The block therefore gets the *next* block number and timestamp.
235
- const latestBlockNumber = (await this.stateMachine.node.getBlockHeader('latest')).globalVariables.blockNumber;
283
+ const latestHeader = await this.stateMachine.node.getBlockHeader('latest');
236
284
  const globalVariables = makeGlobalVariables(undefined, {
237
- blockNumber: BlockNumber(latestBlockNumber + 1),
285
+ blockNumber: BlockNumber(latestHeader.globalVariables.blockNumber + 1),
238
286
  timestamp: this.nextBlockTimestamp,
239
287
  version: this.version,
240
288
  chainId: this.chainId
@@ -244,9 +292,12 @@ import { makeTxEffect } from './utils/tx_effect_creation.js';
244
292
  name: 'PUBLIC'
245
293
  };
246
294
  this.logger.debug(`Entered state ${this.state.name}`);
295
+ // Public state is anchored at the latest block.
296
+ this.setLastCallContext(Fr.ZERO, latestHeader.globalVariables.timestamp);
247
297
  }
248
298
  async enterUtilityState(contractAddress = DEFAULT_ADDRESS) {
249
299
  this.exitTopLevelState();
300
+ this.resetLastCall();
250
301
  const anchorBlockHeader = await this.stateMachine.anchorBlockStore.getBlockHeader();
251
302
  // There is no automatic message discovery and contract-driven syncing process in inlined private or utility
252
303
  // contexts, which means that known nullifiers are also not searched for, since it is during the tagging sync that
@@ -269,7 +320,7 @@ import { makeTxEffect } from './utils/tx_effect_creation.js';
269
320
  capsuleService: new CapsuleService(this.capsuleStore, await this.keyStore.getAccounts()),
270
321
  privateEventStore: this.privateEventStore,
271
322
  messageContextService: this.stateMachine.messageContextService,
272
- contractSyncService: this.contractSyncService,
323
+ contractSyncService: this.stateMachine.contractSyncService,
273
324
  l2TipsStore: this.stateMachine.node,
274
325
  jobId: this.currentJobId,
275
326
  scopes: await this.keyStore.getAccounts()
@@ -278,6 +329,8 @@ import { makeTxEffect } from './utils/tx_effect_creation.js';
278
329
  name: 'UTILITY'
279
330
  };
280
331
  this.logger.debug(`Entered state ${this.state.name}`);
332
+ // Utility state anchors at whatever the anchor block store is pointing to (tracked as latest).
333
+ this.setLastCallContext(Fr.ZERO, anchorBlockHeader.globalVariables.timestamp);
281
334
  }
282
335
  exitTopLevelState() {
283
336
  if (this.state.name != 'TOP_LEVEL') {
@@ -351,7 +404,7 @@ import { makeTxEffect } from './utils/tx_effect_creation.js';
351
404
  capsuleService: new CapsuleService(this.capsuleStore, scopes),
352
405
  privateEventStore: this.privateEventStore,
353
406
  messageContextService: this.stateMachine.messageContextService,
354
- contractSyncService: this.contractSyncService,
407
+ contractSyncService: this.stateMachine.contractSyncService,
355
408
  l2TipsStore: this.stateMachine.node,
356
409
  jobId: this.currentJobId,
357
410
  scopes