@aztec/txe 0.0.1-commit.d3ec352c → 0.0.1-commit.d58ff9d0

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 (175) hide show
  1. package/dest/AuthRegistry-QVGDDH5X.js +3 -0
  2. package/dest/AuthRegistry-QVGDDH5X.js.map +7 -0
  3. package/dest/ContractClassRegistry-VWR3F42P.js +3 -0
  4. package/dest/ContractClassRegistry-VWR3F42P.js.map +7 -0
  5. package/dest/ContractInstanceRegistry-FHIWE33X.js +3 -0
  6. package/dest/ContractInstanceRegistry-FHIWE33X.js.map +7 -0
  7. package/dest/FeeJuice-SAOWVGG7.js +3 -0
  8. package/dest/FeeJuice-SAOWVGG7.js.map +7 -0
  9. package/dest/HandshakeRegistry-GY5CPEPS.js +3 -0
  10. package/dest/HandshakeRegistry-GY5CPEPS.js.map +7 -0
  11. package/dest/MultiCallEntrypoint-QG5H33ZZ.js +3 -0
  12. package/dest/MultiCallEntrypoint-QG5H33ZZ.js.map +7 -0
  13. package/dest/SchnorrAccount-NME3E45O.js +3 -0
  14. package/dest/SchnorrAccount-NME3E45O.js.map +7 -0
  15. package/dest/SchnorrInitializerlessAccount-WTGXU6SW.js +3 -0
  16. package/dest/SchnorrInitializerlessAccount-WTGXU6SW.js.map +7 -0
  17. package/dest/bin/check_txe_oracle_version.d.ts +2 -0
  18. package/dest/bin/check_txe_oracle_version.d.ts.map +1 -0
  19. package/dest/bin/check_txe_oracle_version.js +53 -0
  20. package/dest/bin/index.js +3 -30
  21. package/dest/bin/index.js.map +7 -0
  22. package/dest/bin/oracle_test_server.d.ts +3 -0
  23. package/dest/bin/oracle_test_server.d.ts.map +1 -0
  24. package/dest/bin/oracle_test_server.js +41 -0
  25. package/dest/chunk-32UHX7YY.js +3 -0
  26. package/dest/chunk-32UHX7YY.js.map +7 -0
  27. package/dest/chunk-GSUKUCKV.js +260 -0
  28. package/dest/chunk-GSUKUCKV.js.map +7 -0
  29. package/dest/chunk-UP4KKUVA.js +304 -0
  30. package/dest/chunk-UP4KKUVA.js.map +7 -0
  31. package/dest/constants.d.ts +7 -0
  32. package/dest/constants.d.ts.map +1 -0
  33. package/dest/constants.js +10 -0
  34. package/dest/dispatcher_pool.d.ts +67 -0
  35. package/dest/dispatcher_pool.d.ts.map +1 -0
  36. package/dest/dispatcher_pool.js +286 -0
  37. package/dest/index.d.ts +51 -7
  38. package/dest/index.d.ts.map +1 -1
  39. package/dest/index.js +75 -158
  40. package/dest/metafile.json +38759 -0
  41. package/dest/msgpackr_fr_extension.d.ts +2 -0
  42. package/dest/msgpackr_fr_extension.d.ts.map +1 -0
  43. package/dest/msgpackr_fr_extension.js +21 -0
  44. package/dest/oracle/interfaces.d.ts +71 -30
  45. package/dest/oracle/interfaces.d.ts.map +1 -1
  46. package/dest/oracle/tagging_secret_strategy.d.ts +12 -0
  47. package/dest/oracle/tagging_secret_strategy.d.ts.map +1 -0
  48. package/dest/oracle/tagging_secret_strategy.js +12 -0
  49. package/dest/oracle/test-resolver/default_fixtures.d.ts +16 -0
  50. package/dest/oracle/test-resolver/default_fixtures.d.ts.map +1 -0
  51. package/dest/oracle/test-resolver/default_fixtures.js +200 -0
  52. package/dest/oracle/test-resolver/index.d.ts +9 -0
  53. package/dest/oracle/test-resolver/index.d.ts.map +1 -0
  54. package/dest/oracle/test-resolver/index.js +32 -0
  55. package/dest/oracle/test-resolver/resolver.d.ts +48 -0
  56. package/dest/oracle/test-resolver/resolver.d.ts.map +1 -0
  57. package/dest/oracle/test-resolver/resolver.js +181 -0
  58. package/dest/oracle/txe_oracle_public_context.d.ts +40 -16
  59. package/dest/oracle/txe_oracle_public_context.d.ts.map +1 -1
  60. package/dest/oracle/txe_oracle_public_context.js +69 -23
  61. package/dest/oracle/txe_oracle_registry.d.ts +172 -0
  62. package/dest/oracle/txe_oracle_registry.d.ts.map +1 -0
  63. package/dest/oracle/txe_oracle_registry.js +767 -0
  64. package/dest/oracle/txe_oracle_top_level_context.d.ts +79 -30
  65. package/dest/oracle/txe_oracle_top_level_context.d.ts.map +1 -1
  66. package/dest/oracle/txe_oracle_top_level_context.js +653 -285
  67. package/dest/oracle/txe_oracle_version.d.ts +17 -0
  68. package/dest/oracle/txe_oracle_version.d.ts.map +1 -0
  69. package/dest/oracle/txe_oracle_version.js +14 -0
  70. package/dest/oracle/txe_private_execution_oracle.d.ts +17 -0
  71. package/dest/oracle/txe_private_execution_oracle.d.ts.map +1 -0
  72. package/dest/oracle/txe_private_execution_oracle.js +15 -0
  73. package/dest/rpc_server.d.ts +14 -0
  74. package/dest/rpc_server.d.ts.map +1 -0
  75. package/dest/rpc_server.js +78 -0
  76. package/dest/rpc_translator.d.ts +115 -216
  77. package/dest/rpc_translator.d.ts.map +1 -1
  78. package/dest/rpc_translator.js +901 -560
  79. package/dest/server.bundle.js +3 -0
  80. package/dest/server.bundle.js.map +7 -0
  81. package/dest/state_machine/archiver.d.ts +23 -58
  82. package/dest/state_machine/archiver.d.ts.map +1 -1
  83. package/dest/state_machine/archiver.js +76 -112
  84. package/dest/state_machine/dummy_p2p_client.d.ts +31 -17
  85. package/dest/state_machine/dummy_p2p_client.d.ts.map +1 -1
  86. package/dest/state_machine/dummy_p2p_client.js +63 -25
  87. package/dest/state_machine/global_variable_builder.d.ts +10 -5
  88. package/dest/state_machine/global_variable_builder.d.ts.map +1 -1
  89. package/dest/state_machine/global_variable_builder.js +20 -5
  90. package/dest/state_machine/index.d.ts +14 -8
  91. package/dest/state_machine/index.d.ts.map +1 -1
  92. package/dest/state_machine/index.js +84 -27
  93. package/dest/state_machine/mock_epoch_cache.d.ts +24 -8
  94. package/dest/state_machine/mock_epoch_cache.d.ts.map +1 -1
  95. package/dest/state_machine/mock_epoch_cache.js +43 -9
  96. package/dest/state_machine/synchronizer.d.ts +14 -6
  97. package/dest/state_machine/synchronizer.d.ts.map +1 -1
  98. package/dest/state_machine/synchronizer.js +23 -10
  99. package/dest/txe_session.d.ts +102 -20
  100. package/dest/txe_session.d.ts.map +1 -1
  101. package/dest/txe_session.js +442 -75
  102. package/dest/utils/block_creation.d.ts +20 -6
  103. package/dest/utils/block_creation.d.ts.map +1 -1
  104. package/dest/utils/block_creation.js +40 -6
  105. package/dest/utils/encoding.d.ts +192 -0
  106. package/dest/utils/encoding.d.ts.map +1 -0
  107. package/dest/{util → utils}/encoding.js +8 -3
  108. package/dest/{util → utils}/expected_failure_error.d.ts +1 -1
  109. package/dest/utils/expected_failure_error.d.ts.map +1 -0
  110. package/dest/utils/tx_effect_creation.d.ts +2 -3
  111. package/dest/utils/tx_effect_creation.d.ts.map +1 -1
  112. package/dest/utils/tx_effect_creation.js +3 -7
  113. package/dest/utils/txe_account_store.d.ts +10 -0
  114. package/dest/utils/txe_account_store.d.ts.map +1 -0
  115. package/dest/{util/txe_account_data_provider.js → utils/txe_account_store.js} +1 -1
  116. package/dest/utils/txe_artifact_resolver.d.ts +37 -0
  117. package/dest/utils/txe_artifact_resolver.d.ts.map +1 -0
  118. package/dest/utils/txe_artifact_resolver.js +161 -0
  119. package/dest/utils/txe_public_contract_data_source.d.ts +20 -0
  120. package/dest/utils/txe_public_contract_data_source.d.ts.map +1 -0
  121. package/dest/utils/txe_public_contract_data_source.js +51 -0
  122. package/dest/worker.bundle.js +3 -0
  123. package/dest/worker.bundle.js.map +7 -0
  124. package/dest/worker.d.ts +2 -0
  125. package/dest/worker.d.ts.map +1 -0
  126. package/dest/worker.js +92 -0
  127. package/package.json +39 -22
  128. package/src/bin/check_txe_oracle_version.ts +67 -0
  129. package/src/bin/index.ts +11 -2
  130. package/src/bin/oracle_test_server.ts +51 -0
  131. package/src/constants.ts +13 -0
  132. package/src/dispatcher_pool.ts +317 -0
  133. package/src/index.ts +113 -201
  134. package/src/msgpackr_fr_extension.ts +23 -0
  135. package/src/oracle/interfaces.ts +77 -35
  136. package/src/oracle/tagging_secret_strategy.ts +25 -0
  137. package/src/oracle/test-resolver/default_fixtures.ts +271 -0
  138. package/src/oracle/test-resolver/index.ts +44 -0
  139. package/src/oracle/test-resolver/resolver.ts +245 -0
  140. package/src/oracle/txe_oracle_public_context.ts +82 -27
  141. package/src/oracle/txe_oracle_registry.ts +556 -0
  142. package/src/oracle/txe_oracle_top_level_context.ts +555 -189
  143. package/src/oracle/txe_oracle_version.ts +17 -0
  144. package/src/oracle/txe_private_execution_oracle.ts +30 -0
  145. package/src/rpc_server.ts +87 -0
  146. package/src/rpc_translator.ts +1115 -923
  147. package/src/state_machine/archiver.ts +81 -132
  148. package/src/state_machine/dummy_p2p_client.ts +96 -38
  149. package/src/state_machine/global_variable_builder.ts +28 -10
  150. package/src/state_machine/index.ts +118 -44
  151. package/src/state_machine/mock_epoch_cache.ts +53 -14
  152. package/src/state_machine/synchronizer.ts +32 -12
  153. package/src/txe_session.ts +727 -123
  154. package/src/utils/block_creation.ts +50 -16
  155. package/src/{util → utils}/encoding.ts +9 -3
  156. package/src/utils/tx_effect_creation.ts +3 -13
  157. package/src/{util/txe_account_data_provider.ts → utils/txe_account_store.ts} +1 -1
  158. package/src/utils/txe_artifact_resolver.ts +217 -0
  159. package/src/utils/txe_public_contract_data_source.ts +60 -0
  160. package/src/worker.ts +98 -0
  161. package/dest/util/encoding.d.ts +0 -121
  162. package/dest/util/encoding.d.ts.map +0 -1
  163. package/dest/util/expected_failure_error.d.ts.map +0 -1
  164. package/dest/util/txe_account_data_provider.d.ts +0 -10
  165. package/dest/util/txe_account_data_provider.d.ts.map +0 -1
  166. package/dest/util/txe_contract_data_provider.d.ts +0 -12
  167. package/dest/util/txe_contract_data_provider.d.ts.map +0 -1
  168. package/dest/util/txe_contract_data_provider.js +0 -22
  169. package/dest/util/txe_public_contract_data_source.d.ts +0 -21
  170. package/dest/util/txe_public_contract_data_source.d.ts.map +0 -1
  171. package/dest/util/txe_public_contract_data_source.js +0 -67
  172. package/src/util/txe_contract_data_provider.ts +0 -36
  173. package/src/util/txe_public_contract_data_source.ts +0 -86
  174. /package/dest/{util → utils}/expected_failure_error.js +0 -0
  175. /package/src/{util → utils}/expected_failure_error.ts +0 -0
@@ -1,10 +1,15 @@
1
- import { BlockNumber, type SlotNumber } from '@aztec/foundation/branded-types';
1
+ import type { SimulationOverridesPlan } from '@aztec/ethereum/contracts';
2
+ import 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 GlobalVariableBuilder, GlobalVariables } from '@aztec/stdlib/tx';
6
+ import type { CheckpointGlobalVariables, FeeProvider, GlobalVariableBuilder } from '@aztec/stdlib/tx';
7
+ /** Simple FeeProvider for TXE that returns zero fees. */
8
+ export declare class TXEFeeProvider implements FeeProvider {
9
+ getCurrentMinFees(): Promise<GasFees>;
10
+ getPredictedMinFees(): Promise<GasFees[]>;
11
+ }
6
12
  export declare class TXEGlobalVariablesBuilder implements GlobalVariableBuilder {
7
- getCurrentBaseFees(): Promise<GasFees>;
8
- buildGlobalVariables(_blockNumber: BlockNumber, _coinbase: EthAddress, _feeRecipient: AztecAddress, _slotNumber?: SlotNumber): Promise<GlobalVariables>;
13
+ buildCheckpointGlobalVariables(_coinbase: EthAddress, _feeRecipient: AztecAddress, _slotNumber: SlotNumber, _simulationOverridesPlan?: SimulationOverridesPlan): Promise<CheckpointGlobalVariables>;
9
14
  }
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsX3ZhcmlhYmxlX2J1aWxkZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdGF0ZV9tYWNoaW5lL2dsb2JhbF92YXJpYWJsZV9idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsS0FBSyxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFNUMsT0FBTyxFQUFFLEtBQUsscUJBQXFCLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFL0UscUJBQWEseUJBQTBCLFlBQVcscUJBQXFCO0lBQzlELGtCQUFrQixJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FFNUM7SUFFTSxvQkFBb0IsQ0FDekIsWUFBWSxFQUFFLFdBQVcsRUFDekIsU0FBUyxFQUFFLFVBQVUsRUFDckIsYUFBYSxFQUFFLFlBQVksRUFDM0IsV0FBVyxDQUFDLEVBQUUsVUFBVSxHQUN2QixPQUFPLENBQUMsZUFBZSxDQUFDLENBRTFCO0NBQ0YifQ==
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsX3ZhcmlhYmxlX2J1aWxkZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdGF0ZV9tYWNoaW5lL2dsb2JhbF92YXJpYWJsZV9idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekUsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFbEUsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUFrQixPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU1RCxPQUFPLEtBQUssRUFBRSx5QkFBeUIsRUFBRSxXQUFXLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUV0Ryx5REFBeUQ7QUFDekQscUJBQWEsY0FBZSxZQUFXLFdBQVc7SUFDekMsaUJBQWlCLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUUzQztJQUVNLG1CQUFtQixJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUUvQztDQUNGO0FBRUQscUJBQWEseUJBQTBCLFlBQVcscUJBQXFCO0lBQzlELDhCQUE4QixDQUNuQyxTQUFTLEVBQUUsVUFBVSxFQUNyQixhQUFhLEVBQUUsWUFBWSxFQUMzQixXQUFXLEVBQUUsVUFBVSxFQUN2Qix3QkFBd0IsQ0FBQyxFQUFFLHVCQUF1QixHQUNqRCxPQUFPLENBQUMseUJBQXlCLENBQUMsQ0FXcEM7Q0FDRiJ9
@@ -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,qBAAqB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAE/E,qBAAa,yBAA0B,YAAW,qBAAqB;IAC9D,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC,CAE5C;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;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,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAElE,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,KAAK,EAAE,yBAAyB,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAEtG,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,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,10 +1,25 @@
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
- getCurrentBaseFees() {
4
+ /** Simple FeeProvider for TXE that returns zero fees. */ export class TXEFeeProvider {
5
+ getCurrentMinFees() {
5
6
  return Promise.resolve(new GasFees(0, 0));
6
7
  }
7
- buildGlobalVariables(_blockNumber, _coinbase, _feeRecipient, _slotNumber) {
8
- return Promise.resolve(makeGlobalVariables());
8
+ getPredictedMinFees() {
9
+ return Promise.resolve(times(FEE_ORACLE_LAG, ()=>new GasFees(0, 0)));
10
+ }
11
+ }
12
+ export class TXEGlobalVariablesBuilder {
13
+ buildCheckpointGlobalVariables(_coinbase, _feeRecipient, _slotNumber, _simulationOverridesPlan) {
14
+ const vars = makeGlobalVariables();
15
+ return Promise.resolve({
16
+ chainId: vars.chainId,
17
+ version: vars.version,
18
+ slotNumber: vars.slotNumber,
19
+ timestamp: vars.timestamp,
20
+ coinbase: vars.coinbase,
21
+ feeRecipient: vars.feeRecipient,
22
+ gasFees: vars.gasFees
23
+ });
9
24
  }
10
25
  }
@@ -1,6 +1,7 @@
1
- import type { AztecAsyncKVStore } from '@aztec/kv-store';
2
- import { SyncDataProvider } from '@aztec/pxe/server';
3
- import { type L2Block } from '@aztec/stdlib/block';
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
+ import { type AnchorBlockStore, ContractClassService, type ContractStore, ContractSyncService, type NoteStore } from '@aztec/pxe/server';
3
+ import { TxResolverService } from '@aztec/pxe/simulator';
4
+ import { L2Block, type L2TipsProvider } from '@aztec/stdlib/block';
4
5
  import type { AztecNode } from '@aztec/stdlib/interfaces/client';
5
6
  import { TXEArchiver } from './archiver.js';
6
7
  import { TXESynchronizer } from './synchronizer.js';
@@ -8,9 +9,14 @@ export declare class TXEStateMachine {
8
9
  node: AztecNode;
9
10
  synchronizer: TXESynchronizer;
10
11
  archiver: TXEArchiver;
11
- syncDataProvider: SyncDataProvider;
12
- constructor(node: AztecNode, synchronizer: TXESynchronizer, archiver: TXEArchiver, syncDataProvider: SyncDataProvider);
13
- static create(db: AztecAsyncKVStore): Promise<TXEStateMachine>;
14
- handleL2Block(block: L2Block): Promise<void>;
12
+ anchorBlockStore: AnchorBlockStore;
13
+ contractSyncService: ContractSyncService;
14
+ contractClassService: ContractClassService;
15
+ txResolver: TxResolverService;
16
+ constructor(node: AztecNode, synchronizer: TXESynchronizer, archiver: TXEArchiver, anchorBlockStore: AnchorBlockStore, contractSyncService: ContractSyncService, contractClassService: ContractClassService, txResolver: TxResolverService);
17
+ static create(archiver: TXEArchiver, anchorBlockStore: AnchorBlockStore, contractStore: ContractStore, noteStore: NoteStore): Promise<TXEStateMachine>;
18
+ /** Returns an {@link L2TipsProvider} backed by this node's chain tips. */
19
+ get l2TipsProvider(): L2TipsProvider;
20
+ handleL2Block(block: L2Block, l1ToL2Messages?: Fr[]): Promise<void>;
15
21
  }
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdGF0ZV9tYWNoaW5lL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDckQsT0FBTyxFQUFFLEtBQUssT0FBTyxFQUFvQixNQUFNLHFCQUFxQixDQUFDO0FBQ3JFLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBR2pFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBS3BELHFCQUFhLGVBQWU7SUFFakIsSUFBSSxFQUFFLFNBQVM7SUFDZixZQUFZLEVBQUUsZUFBZTtJQUM3QixRQUFRLEVBQUUsV0FBVztJQUNyQixnQkFBZ0IsRUFBRSxnQkFBZ0I7SUFKM0MsWUFDUyxJQUFJLEVBQUUsU0FBUyxFQUNmLFlBQVksRUFBRSxlQUFlLEVBQzdCLFFBQVEsRUFBRSxXQUFXLEVBQ3JCLGdCQUFnQixFQUFFLGdCQUFnQixFQUN2QztJQUVKLE9BQW9CLE1BQU0sQ0FBQyxFQUFFLEVBQUUsaUJBQWlCLDRCQStCL0M7SUFFWSxhQUFhLENBQUMsS0FBSyxFQUFFLE9BQU8saUJBZ0J4QztDQUNGIn0=
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdGF0ZV9tYWNoaW5lL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVwRCxPQUFPLEVBQ0wsS0FBSyxnQkFBZ0IsRUFDckIsb0JBQW9CLEVBQ3BCLEtBQUssYUFBYSxFQUNsQixtQkFBbUIsRUFDbkIsS0FBSyxTQUFTLEVBQ2YsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFbkUsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUk1QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFRcEQscUJBQWEsZUFBZTtJQUVqQixJQUFJLEVBQUUsU0FBUztJQUNmLFlBQVksRUFBRSxlQUFlO0lBQzdCLFFBQVEsRUFBRSxXQUFXO0lBQ3JCLGdCQUFnQixFQUFFLGdCQUFnQjtJQUNsQyxtQkFBbUIsRUFBRSxtQkFBbUI7SUFDeEMsb0JBQW9CLEVBQUUsb0JBQW9CO0lBQzFDLFVBQVUsRUFBRSxpQkFBaUI7SUFQdEMsWUFDUyxJQUFJLEVBQUUsU0FBUyxFQUNmLFlBQVksRUFBRSxlQUFlLEVBQzdCLFFBQVEsRUFBRSxXQUFXLEVBQ3JCLGdCQUFnQixFQUFFLGdCQUFnQixFQUNsQyxtQkFBbUIsRUFBRSxtQkFBbUIsRUFDeEMsb0JBQW9CLEVBQUUsb0JBQW9CLEVBQzFDLFVBQVUsRUFBRSxpQkFBaUIsRUFDbEM7SUFFSixPQUFvQixNQUFNLENBQ3hCLFFBQVEsRUFBRSxXQUFXLEVBQ3JCLGdCQUFnQixFQUFFLGdCQUFnQixFQUNsQyxhQUFhLEVBQUUsYUFBYSxFQUM1QixTQUFTLEVBQUUsU0FBUyw0QkFvRHJCO0lBRUQsMEVBQTBFO0lBQzFFLElBQVcsY0FBYyxJQUFJLGNBQWMsQ0FLMUM7SUFFWSxhQUFhLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxjQUFjLEdBQUUsRUFBRSxFQUFPLGlCQTBDbkU7Q0FDRiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/state_machine/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,KAAK,OAAO,EAAoB,MAAM,qBAAqB,CAAC;AACrE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAGjE,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;IAJ3C,YACS,IAAI,EAAE,SAAS,EACf,YAAY,EAAE,eAAe,EAC7B,QAAQ,EAAE,WAAW,EACrB,gBAAgB,EAAE,gBAAgB,EACvC;IAEJ,OAAoB,MAAM,CAAC,EAAE,EAAE,iBAAiB,4BA+B/C;IAEY,aAAa,CAAC,KAAK,EAAE,OAAO,iBAgBxC;CACF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/state_machine/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEpD,OAAO,EACL,KAAK,gBAAgB,EACrB,oBAAoB,EACpB,KAAK,aAAa,EAClB,mBAAmB,EACnB,KAAK,SAAS,EACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAGjE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAI5C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAQpD,qBAAa,eAAe;IAEjB,IAAI,EAAE,SAAS;IACf,YAAY,EAAE,eAAe;IAC7B,QAAQ,EAAE,WAAW;IACrB,gBAAgB,EAAE,gBAAgB;IAClC,mBAAmB,EAAE,mBAAmB;IACxC,oBAAoB,EAAE,oBAAoB;IAC1C,UAAU,EAAE,iBAAiB;IAPtC,YACS,IAAI,EAAE,SAAS,EACf,YAAY,EAAE,eAAe,EAC7B,QAAQ,EAAE,WAAW,EACrB,gBAAgB,EAAE,gBAAgB,EAClC,mBAAmB,EAAE,mBAAmB,EACxC,oBAAoB,EAAE,oBAAoB,EAC1C,UAAU,EAAE,iBAAiB,EAClC;IAEJ,OAAoB,MAAM,CACxB,QAAQ,EAAE,WAAW,EACrB,gBAAgB,EAAE,gBAAgB,EAClC,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,SAAS,4BAoDrB;IAED,0EAA0E;IAC1E,IAAW,cAAc,IAAI,cAAc,CAK1C;IAEY,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,cAAc,GAAE,EAAE,EAAO,iBA0CnE;CACF"}
@@ -1,51 +1,108 @@
1
1
  import { AztecNodeService } from '@aztec/aztec-node';
2
2
  import { TestCircuitVerifier } from '@aztec/bb-prover/test';
3
+ import { CheckpointNumber } from '@aztec/foundation/branded-types';
4
+ import { Fr } from '@aztec/foundation/curves/bn254';
3
5
  import { createLogger } from '@aztec/foundation/log';
4
- import { SyncDataProvider } from '@aztec/pxe/server';
5
- import { PublishedL2Block } from '@aztec/stdlib/block';
6
- import { getPackageVersion } from '@aztec/stdlib/update-checker';
7
- import { TXEArchiver } from './archiver.js';
6
+ import { ContractClassService, ContractSyncService } from '@aztec/pxe/server';
7
+ import { TxResolverService } from '@aztec/pxe/simulator';
8
+ import { Checkpoint, L1PublishedData, PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
9
+ import { CheckpointHeader } from '@aztec/stdlib/rollup';
8
10
  import { DummyP2P } from './dummy_p2p_client.js';
9
- import { TXEGlobalVariablesBuilder } from './global_variable_builder.js';
11
+ import { TXEFeeProvider, TXEGlobalVariablesBuilder } from './global_variable_builder.js';
10
12
  import { MockEpochCache } from './mock_epoch_cache.js';
11
13
  import { TXESynchronizer } from './synchronizer.js';
12
14
  const VERSION = 1;
13
15
  const CHAIN_ID = 1;
16
+ // Hardcoded so the bundled TXE doesn't try to read stdlib's package.json at a relative path
17
+ // that becomes invalid once bundled
18
+ const PACKAGE_VERSION = 'txe';
14
19
  export class TXEStateMachine {
15
20
  node;
16
21
  synchronizer;
17
22
  archiver;
18
- syncDataProvider;
19
- constructor(node, synchronizer, archiver, syncDataProvider){
23
+ anchorBlockStore;
24
+ contractSyncService;
25
+ contractClassService;
26
+ txResolver;
27
+ constructor(node, synchronizer, archiver, anchorBlockStore, contractSyncService, contractClassService, txResolver){
20
28
  this.node = node;
21
29
  this.synchronizer = synchronizer;
22
30
  this.archiver = archiver;
23
- this.syncDataProvider = syncDataProvider;
31
+ this.anchorBlockStore = anchorBlockStore;
32
+ this.contractSyncService = contractSyncService;
33
+ this.contractClassService = contractClassService;
34
+ this.txResolver = txResolver;
24
35
  }
25
- static async create(db) {
26
- const archiver = new TXEArchiver(db);
36
+ static async create(archiver, anchorBlockStore, contractStore, noteStore) {
27
37
  const synchronizer = await TXESynchronizer.create();
28
- const syncDataProvider = new SyncDataProvider(db);
29
38
  const aztecNodeConfig = {};
30
39
  const log = createLogger('txe_node');
31
- const node = new AztecNodeService(aztecNodeConfig, new DummyP2P(), archiver, archiver, archiver, archiver, synchronizer, undefined, undefined, undefined, undefined, VERSION, CHAIN_ID, new TXEGlobalVariablesBuilder(), new MockEpochCache(), getPackageVersion() ?? '', new TestCircuitVerifier(), undefined, log);
32
- return new this(node, synchronizer, archiver, syncDataProvider);
40
+ const node = new AztecNodeService({
41
+ config: aztecNodeConfig,
42
+ p2pClient: new DummyP2P(),
43
+ blockSource: archiver,
44
+ logsSource: archiver,
45
+ contractDataSource: archiver,
46
+ l1ToL2MessageSource: archiver,
47
+ worldStateSynchronizer: synchronizer,
48
+ sequencer: undefined,
49
+ proverNode: undefined,
50
+ slasherClient: undefined,
51
+ validatorsSentinel: undefined,
52
+ stopStartedWatchers: async ()=>{},
53
+ l1ChainId: CHAIN_ID,
54
+ version: VERSION,
55
+ globalVariableBuilder: new TXEGlobalVariablesBuilder(),
56
+ rollupContract: undefined,
57
+ feeProvider: new TXEFeeProvider(),
58
+ epochCache: new MockEpochCache(),
59
+ packageVersion: PACKAGE_VERSION,
60
+ peerProofVerifier: new TestCircuitVerifier(),
61
+ rpcProofVerifier: new TestCircuitVerifier(),
62
+ telemetry: undefined,
63
+ log
64
+ });
65
+ const contractClassService = new ContractClassService(node, contractStore);
66
+ const contractSyncService = new ContractSyncService(node, contractStore, contractClassService, noteStore, createLogger('txe:contract_sync'));
67
+ const txResolver = new TxResolverService(node);
68
+ return new this(node, synchronizer, archiver, anchorBlockStore, contractSyncService, contractClassService, txResolver);
33
69
  }
34
- async handleL2Block(block) {
70
+ /** Returns an {@link L2TipsProvider} backed by this node's chain tips. */ get l2TipsProvider() {
71
+ const node = this.node;
72
+ return {
73
+ getL2Tips: ()=>node.getChainTips()
74
+ };
75
+ }
76
+ async handleL2Block(block, l1ToL2Messages = []) {
77
+ // Create a checkpoint from the block manually.
78
+ // TXE uses 1-block-per-checkpoint for testing simplicity, so we can use block number as checkpoint number.
79
+ // This uses the deprecated fromBlockNumber method intentionally for the TXE testing environment.
80
+ const checkpointNumber = CheckpointNumber.fromBlockNumber(block.number);
81
+ const checkpoint = new Checkpoint(block.archive, CheckpointHeader.from({
82
+ lastArchiveRoot: block.header.lastArchive.root,
83
+ inHash: Fr.ZERO,
84
+ blobsHash: Fr.ZERO,
85
+ blockHeadersHash: Fr.ZERO,
86
+ epochOutHash: Fr.ZERO,
87
+ slotNumber: block.header.globalVariables.slotNumber,
88
+ timestamp: block.header.globalVariables.timestamp,
89
+ coinbase: block.header.globalVariables.coinbase,
90
+ feeRecipient: block.header.globalVariables.feeRecipient,
91
+ gasFees: block.header.globalVariables.gasFees,
92
+ totalManaUsed: block.header.totalManaUsed,
93
+ accumulatedFees: block.header.totalFees
94
+ }), [
95
+ block
96
+ ], checkpointNumber);
97
+ const publishedCheckpoint = new PublishedCheckpoint(checkpoint, new L1PublishedData(BigInt(block.header.globalVariables.blockNumber), block.header.globalVariables.timestamp, block.header.globalVariables.blockNumber.toString()), []);
98
+ // Wipe contract sync cache when anchor block changes (mirrors BlockSynchronizer behavior)
99
+ this.contractSyncService.wipe();
35
100
  await Promise.all([
36
- this.synchronizer.handleL2Block(block.toL2Block()),
37
- this.archiver.addBlocks([
38
- PublishedL2Block.fromFields({
39
- block,
40
- l1: {
41
- blockHash: block.header.globalVariables.blockNumber.toString(),
42
- blockNumber: BigInt(block.header.globalVariables.blockNumber),
43
- timestamp: block.header.globalVariables.timestamp
44
- },
45
- attestations: []
46
- })
47
- ]),
48
- this.syncDataProvider.setHeader(block.getBlockHeader())
101
+ this.synchronizer.handleL2Block(block, l1ToL2Messages),
102
+ this.archiver.addCheckpoints([
103
+ publishedCheckpoint
104
+ ], undefined),
105
+ this.anchorBlockStore.setHeader(block.header)
49
106
  ]);
50
107
  }
51
108
  }
@@ -1,26 +1,42 @@
1
1
  import type { EpochAndSlot, EpochCacheInterface, EpochCommitteeInfo, SlotTag } from '@aztec/epoch-cache';
2
2
  import { EpochNumber, SlotNumber } from '@aztec/foundation/branded-types';
3
3
  import { EthAddress } from '@aztec/foundation/eth-address';
4
+ import { type L1RollupConstants } from '@aztec/stdlib/epoch-helpers';
4
5
  /**
5
6
  * Mock implementation of the EpochCacheInterface used to satisfy dependencies of AztecNodeService.
6
7
  * Since in TXE we don't validate transactions, mock suffices here.
7
8
  */
8
9
  export declare class MockEpochCache implements EpochCacheInterface {
9
- getCommittee(): Promise<EpochCommitteeInfo>;
10
- getEpochAndSlotNow(): EpochAndSlot;
10
+ getCommittee(_slot?: SlotTag): Promise<EpochCommitteeInfo>;
11
+ getSlotNow(): SlotNumber;
12
+ getTargetSlot(): SlotNumber;
13
+ getEpochNow(): EpochNumber;
14
+ getTargetEpoch(): EpochNumber;
15
+ getEpochAndSlotNow(): EpochAndSlot & {
16
+ nowMs: bigint;
17
+ };
11
18
  getEpochAndSlotInNextL1Slot(): EpochAndSlot & {
12
- now: bigint;
19
+ nowSeconds: bigint;
20
+ };
21
+ getTargetEpochAndSlotInNextL1Slot(): EpochAndSlot & {
22
+ nowSeconds: bigint;
13
23
  };
14
24
  getProposerIndexEncoding(_epoch: EpochNumber, _slot: SlotNumber, _seed: bigint): `0x${string}`;
15
25
  computeProposerIndex(_slot: SlotNumber, _epoch: EpochNumber, _seed: bigint, _size: bigint): bigint;
16
- getProposerAttesterAddressInCurrentOrNextSlot(): Promise<{
17
- currentProposer: EthAddress | undefined;
18
- nextProposer: EthAddress | undefined;
26
+ getCurrentAndNextSlot(): {
19
27
  currentSlot: SlotNumber;
20
28
  nextSlot: SlotNumber;
21
- }>;
29
+ };
30
+ getTargetAndNextSlot(): {
31
+ targetSlot: SlotNumber;
32
+ nextSlot: SlotNumber;
33
+ };
34
+ getProposerAttesterAddressInSlot(_slot: SlotNumber): Promise<EthAddress | undefined>;
22
35
  isInCommittee(_slot: SlotTag, _validator: EthAddress): Promise<boolean>;
23
36
  getRegisteredValidators(): Promise<EthAddress[]>;
24
37
  filterInCommittee(_slot: SlotTag, _validators: EthAddress[]): Promise<EthAddress[]>;
38
+ isEscapeHatchOpen(_epoch: EpochNumber): Promise<boolean>;
39
+ isEscapeHatchOpenAtSlot(_slot: SlotTag): Promise<boolean>;
40
+ getL1Constants(): L1RollupConstants;
25
41
  }
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19lcG9jaF9jYWNoZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0YXRlX21hY2hpbmUvbW9ja19lcG9jaF9jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekcsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFM0Q7OztHQUdHO0FBQ0gscUJBQWEsY0FBZSxZQUFXLG1CQUFtQjtJQUN4RCxZQUFZLElBQUksT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBTTFDO0lBRUQsa0JBQWtCLElBQUksWUFBWSxDQU1qQztJQUVELDJCQUEyQixJQUFJLFlBQVksR0FBRztRQUFFLEdBQUcsRUFBRSxNQUFNLENBQUE7S0FBRSxDQU81RDtJQUVELHdCQUF3QixDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxHQUFHLEtBQUssTUFBTSxFQUFFLENBRTdGO0lBRUQsb0JBQW9CLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sR0FBRyxNQUFNLENBRWpHO0lBRUQsNkNBQTZDLElBQUksT0FBTyxDQUFDO1FBQ3ZELGVBQWUsRUFBRSxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQ3hDLFlBQVksRUFBRSxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQ3JDLFdBQVcsRUFBRSxVQUFVLENBQUM7UUFDeEIsUUFBUSxFQUFFLFVBQVUsQ0FBQztLQUN0QixDQUFDLENBT0Q7SUFFRCxhQUFhLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FFdEU7SUFFRCx1QkFBdUIsSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FFL0M7SUFFRCxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsR0FBRyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FFbEY7Q0FDRiJ9
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19lcG9jaF9jYWNoZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0YXRlX21hY2hpbmUvbW9ja19lcG9jaF9jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekcsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUEwQixLQUFLLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFN0Y7OztHQUdHO0FBQ0gscUJBQWEsY0FBZSxZQUFXLG1CQUFtQjtJQUN4RCxZQUFZLENBQUMsS0FBSyxHQUFFLE9BQWUsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FPaEU7SUFFRCxVQUFVLElBQUksVUFBVSxDQUV2QjtJQUVELGFBQWEsSUFBSSxVQUFVLENBRTFCO0lBRUQsV0FBVyxJQUFJLFdBQVcsQ0FFekI7SUFFRCxjQUFjLElBQUksV0FBVyxDQUU1QjtJQUVELGtCQUFrQixJQUFJLFlBQVksR0FBRztRQUFFLEtBQUssRUFBRSxNQUFNLENBQUE7S0FBRSxDQU9yRDtJQUVELDJCQUEyQixJQUFJLFlBQVksR0FBRztRQUFFLFVBQVUsRUFBRSxNQUFNLENBQUE7S0FBRSxDQU9uRTtJQUVELGlDQUFpQyxJQUFJLFlBQVksR0FBRztRQUFFLFVBQVUsRUFBRSxNQUFNLENBQUE7S0FBRSxDQUV6RTtJQUVELHdCQUF3QixDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxHQUFHLEtBQUssTUFBTSxFQUFFLENBRTdGO0lBRUQsb0JBQW9CLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sR0FBRyxNQUFNLENBRWpHO0lBRUQscUJBQXFCLElBQUk7UUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDO1FBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQTtLQUFFLENBS3pFO0lBRUQsb0JBQW9CLElBQUk7UUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDO1FBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQTtLQUFFLENBS3ZFO0lBRUQsZ0NBQWdDLENBQUMsS0FBSyxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQyxDQUVuRjtJQUVELGFBQWEsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUV0RTtJQUVELHVCQUF1QixJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUUvQztJQUVELGlCQUFpQixDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUVsRjtJQUVELGlCQUFpQixDQUFDLE1BQU0sRUFBRSxXQUFXLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUV2RDtJQUVELHVCQUF1QixDQUFDLEtBQUssRUFBRSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUV4RDtJQUVELGNBQWMsSUFBSSxpQkFBaUIsQ0FFbEM7Q0FDRiJ9
@@ -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;AAE3D;;;GAGG;AACH,qBAAa,cAAe,YAAW,mBAAmB;IACxD,YAAY,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAM1C;IAED,kBAAkB,IAAI,YAAY,CAMjC;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,6CAA6C,IAAI,OAAO,CAAC;QACvD,eAAe,EAAE,UAAU,GAAG,SAAS,CAAC;QACxC,YAAY,EAAE,UAAU,GAAG,SAAS,CAAC;QACrC,WAAW,EAAE,UAAU,CAAC;QACxB,QAAQ,EAAE,UAAU,CAAC;KACtB,CAAC,CAOD;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;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,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"}
@@ -1,20 +1,35 @@
1
1
  import { EpochNumber, SlotNumber } from '@aztec/foundation/branded-types';
2
+ import { EmptyL1RollupConstants } from '@aztec/stdlib/epoch-helpers';
2
3
  /**
3
4
  * Mock implementation of the EpochCacheInterface used to satisfy dependencies of AztecNodeService.
4
5
  * Since in TXE we don't validate transactions, mock suffices here.
5
6
  */ export class MockEpochCache {
6
- getCommittee() {
7
+ getCommittee(_slot = 'now') {
7
8
  return Promise.resolve({
8
9
  committee: undefined,
9
10
  seed: 0n,
10
- epoch: EpochNumber.ZERO
11
+ epoch: EpochNumber.ZERO,
12
+ isEscapeHatchOpen: false
11
13
  });
12
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
+ }
13
27
  getEpochAndSlotNow() {
14
28
  return {
15
29
  epoch: EpochNumber.ZERO,
16
30
  slot: SlotNumber(0),
17
- ts: 0n
31
+ ts: 0n,
32
+ nowMs: 0n
18
33
  };
19
34
  }
20
35
  getEpochAndSlotInNextL1Slot() {
@@ -22,22 +37,32 @@ import { EpochNumber, SlotNumber } from '@aztec/foundation/branded-types';
22
37
  epoch: EpochNumber.ZERO,
23
38
  slot: SlotNumber(0),
24
39
  ts: 0n,
25
- now: 0n
40
+ nowSeconds: 0n
26
41
  };
27
42
  }
43
+ getTargetEpochAndSlotInNextL1Slot() {
44
+ return this.getEpochAndSlotInNextL1Slot();
45
+ }
28
46
  getProposerIndexEncoding(_epoch, _slot, _seed) {
29
47
  return '0x00';
30
48
  }
31
49
  computeProposerIndex(_slot, _epoch, _seed, _size) {
32
50
  return 0n;
33
51
  }
34
- getProposerAttesterAddressInCurrentOrNextSlot() {
35
- return Promise.resolve({
36
- currentProposer: undefined,
37
- nextProposer: undefined,
52
+ getCurrentAndNextSlot() {
53
+ return {
38
54
  currentSlot: SlotNumber(0),
39
55
  nextSlot: SlotNumber(0)
40
- });
56
+ };
57
+ }
58
+ getTargetAndNextSlot() {
59
+ return {
60
+ targetSlot: SlotNumber(0),
61
+ nextSlot: SlotNumber(0)
62
+ };
63
+ }
64
+ getProposerAttesterAddressInSlot(_slot) {
65
+ return Promise.resolve(undefined);
41
66
  }
42
67
  isInCommittee(_slot, _validator) {
43
68
  return Promise.resolve(false);
@@ -48,4 +73,13 @@ import { EpochNumber, SlotNumber } from '@aztec/foundation/branded-types';
48
73
  filterInCommittee(_slot, _validators) {
49
74
  return Promise.resolve([]);
50
75
  }
76
+ isEscapeHatchOpen(_epoch) {
77
+ return Promise.resolve(false);
78
+ }
79
+ isEscapeHatchOpenAtSlot(_slot) {
80
+ return Promise.resolve(false);
81
+ }
82
+ getL1Constants() {
83
+ return EmptyL1RollupConstants;
84
+ }
51
85
  }
@@ -1,26 +1,32 @@
1
1
  import { BlockNumber } from '@aztec/foundation/branded-types';
2
- import type { L2BlockNew } from '@aztec/stdlib/block';
2
+ import { Fr } from '@aztec/foundation/curves/bn254';
3
+ import { AvmSimulatorPool } from '@aztec/simulator/server';
4
+ import type { BlockHash, L2Block } from '@aztec/stdlib/block';
3
5
  import type { MerkleTreeReadOperations, MerkleTreeWriteOperations, SnapshotDataKeys, WorldStateSynchronizer, WorldStateSynchronizerStatus } from '@aztec/stdlib/interfaces/server';
4
6
  import { NativeWorldStateService } from '@aztec/world-state/native';
5
7
  export declare class TXESynchronizer implements WorldStateSynchronizer {
6
8
  nativeWorldStateService: NativeWorldStateService;
7
9
  private blockNumber;
10
+ /** AVM execution backend (simulator pool + CDB server) shared across all public simulations. */
11
+ avmSimulator: AvmSimulatorPool;
8
12
  constructor(nativeWorldStateService: NativeWorldStateService);
9
13
  static create(): Promise<TXESynchronizer>;
10
- handleL2Block(block: L2BlockNew): Promise<void>;
14
+ handleL2Block(block: L2Block, l1ToL2Messages?: Fr[]): Promise<void>;
11
15
  /**
12
- * Forces an immediate sync to an optionally provided minimum block number
16
+ * Forces an immediate sync to an optionally provided minimum block number.
13
17
  * @param targetBlockNumber - The target block number that we must sync to. Will download unproven blocks if needed to reach it.
14
- * @param skipThrowIfTargetNotReached - Whether to skip throwing if the target block number is not reached.
18
+ * @param blockHash - If provided, verifies the block at targetBlockNumber matches this hash.
15
19
  * @returns A promise that resolves with the block number the world state was synced to
16
20
  */
17
- syncImmediate(_minBlockNumber?: BlockNumber, _skipThrowIfTargetNotReached?: boolean): Promise<BlockNumber>;
21
+ syncImmediate(_minBlockNumber?: BlockNumber, _blockHash?: BlockHash): Promise<BlockNumber>;
18
22
  /** Returns an instance of MerkleTreeAdminOperations that will not include uncommitted data. */
19
23
  getCommitted(): MerkleTreeReadOperations;
20
24
  /** Forks the world state at the given block number, defaulting to the latest one. */
21
25
  fork(block?: number): Promise<MerkleTreeWriteOperations>;
22
26
  /** Gets a handle that allows reading the state as it was at the given block number. */
23
27
  getSnapshot(blockNumber: number): MerkleTreeReadOperations;
28
+ /** Gets a snapshot at the given block number. The TXE has no reorgs, so the fork hash is not verified. */
29
+ getVerifiedSnapshot(blockNumber: number, _blockHash: BlockHash): Promise<MerkleTreeReadOperations>;
24
30
  /** Backups the db to the target path. */
25
31
  backupTo(dstPath: string, compact?: boolean): Promise<Record<Exclude<SnapshotDataKeys, 'archiver'>, string>>;
26
32
  start(): Promise<void>;
@@ -29,5 +35,7 @@ export declare class TXESynchronizer implements WorldStateSynchronizer {
29
35
  stopSync(): Promise<void>;
30
36
  resumeSync(): void;
31
37
  clear(): Promise<void>;
38
+ /** Clean up IPC resources. */
39
+ closeIpc(): Promise<void>;
32
40
  }
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luY2hyb25pemVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RhdGVfbWFjaGluZS9zeW5jaHJvbml6ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRTlELE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sS0FBSyxFQUNWLHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDekIsZ0JBQWdCLEVBQ2hCLHNCQUFzQixFQUN0Qiw0QkFBNEIsRUFDN0IsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVwRSxxQkFBYSxlQUFnQixZQUFXLHNCQUFzQjtJQUl6Qyx1QkFBdUIsRUFBRSx1QkFBdUI7SUFGbkUsT0FBTyxDQUFDLFdBQVcsQ0FBb0I7SUFFdkMsWUFBbUIsdUJBQXVCLEVBQUUsdUJBQXVCLEVBQUk7SUFFdkUsT0FBYSxNQUFNLDZCQUlsQjtJQUVZLGFBQWEsQ0FBQyxLQUFLLEVBQUUsVUFBVSxpQkFRM0M7SUFFRDs7Ozs7T0FLRztJQUNJLGFBQWEsQ0FBQyxlQUFlLENBQUMsRUFBRSxXQUFXLEVBQUUsNEJBQTRCLENBQUMsRUFBRSxPQUFPLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUVoSDtJQUVELCtGQUErRjtJQUN4RixZQUFZLElBQUksd0JBQXdCLENBRTlDO0lBRUQscUZBQXFGO0lBQzlFLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLHlCQUF5QixDQUFDLENBRTlEO0lBRUQsdUZBQXVGO0lBQ2hGLFdBQVcsQ0FBQyxXQUFXLEVBQUUsTUFBTSxHQUFHLHdCQUF3QixDQUVoRTtJQUVELHlDQUF5QztJQUNsQyxRQUFRLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsRUFBRSxPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsVUFBVSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FFbEg7SUFFTSxLQUFLLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUU1QjtJQUVNLE1BQU0sSUFBSSxPQUFPLENBQUMsNEJBQTRCLENBQUMsQ0FFckQ7SUFFTSxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUUzQjtJQUVNLFFBQVEsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBRS9CO0lBRU0sVUFBVSxJQUFJLElBQUksQ0FFeEI7SUFFTSxLQUFLLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUU1QjtDQUNGIn0=
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luY2hyb25pemVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RhdGVfbWFjaGluZS9zeW5jaHJvbml6ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRTlELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRCxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUQsT0FBTyxLQUFLLEVBQ1Ysd0JBQXdCLEVBQ3hCLHlCQUF5QixFQUN6QixnQkFBZ0IsRUFDaEIsc0JBQXNCLEVBQ3RCLDRCQUE0QixFQUM3QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXBFLHFCQUFhLGVBQWdCLFlBQVcsc0JBQXNCO0lBT3pDLHVCQUF1QixFQUFFLHVCQUF1QjtJQUxuRSxPQUFPLENBQUMsV0FBVyxDQUFvQjtJQUV2QyxnR0FBZ0c7SUFDekYsWUFBWSxFQUFHLGdCQUFnQixDQUFDO0lBRXZDLFlBQW1CLHVCQUF1QixFQUFFLHVCQUF1QixFQUFJO0lBRXZFLE9BQWEsTUFBTSw2QkFVbEI7SUFFWSxhQUFhLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxjQUFjLEdBQUUsRUFBRSxFQUFPLGlCQU9uRTtJQUVEOzs7OztPQUtHO0lBQ0ksYUFBYSxDQUFDLGVBQWUsQ0FBQyxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsRUFBRSxTQUFTLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUVoRztJQUVELCtGQUErRjtJQUN4RixZQUFZLElBQUksd0JBQXdCLENBRTlDO0lBRUQscUZBQXFGO0lBQzlFLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLHlCQUF5QixDQUFDLENBRTlEO0lBRUQsdUZBQXVGO0lBQ2hGLFdBQVcsQ0FBQyxXQUFXLEVBQUUsTUFBTSxHQUFHLHdCQUF3QixDQUVoRTtJQUVELDBHQUEwRztJQUNuRyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxTQUFTLEdBQUcsT0FBTyxDQUFDLHdCQUF3QixDQUFDLENBRXhHO0lBRUQseUNBQXlDO0lBQ2xDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxFQUFFLE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxVQUFVLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUVsSDtJQUVNLEtBQUssSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBRTVCO0lBRU0sTUFBTSxJQUFJLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBQyxDQUVyRDtJQUVZLElBQUksSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBRWpDO0lBRU0sUUFBUSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FFL0I7SUFFTSxVQUFVLElBQUksSUFBSSxDQUV4QjtJQUVNLEtBQUssSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBRTVCO0lBRUQsOEJBQThCO0lBQ2pCLFFBQVEsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBRXJDO0NBQ0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"synchronizer.d.ts","sourceRoot":"","sources":["../../src/state_machine/synchronizer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EACzB,gBAAgB,EAChB,sBAAsB,EACtB,4BAA4B,EAC7B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,qBAAa,eAAgB,YAAW,sBAAsB;IAIzC,uBAAuB,EAAE,uBAAuB;IAFnE,OAAO,CAAC,WAAW,CAAoB;IAEvC,YAAmB,uBAAuB,EAAE,uBAAuB,EAAI;IAEvE,OAAa,MAAM,6BAIlB;IAEY,aAAa,CAAC,KAAK,EAAE,UAAU,iBAQ3C;IAED;;;;;OAKG;IACI,aAAa,CAAC,eAAe,CAAC,EAAE,WAAW,EAAE,4BAA4B,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAEhH;IAED,+FAA+F;IACxF,YAAY,IAAI,wBAAwB,CAE9C;IAED,qFAAqF;IAC9E,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAE9D;IAED,uFAAuF;IAChF,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,wBAAwB,CAEhE;IAED,yCAAyC;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC,CAElH;IAEM,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAE5B;IAEM,MAAM,IAAI,OAAO,CAAC,4BAA4B,CAAC,CAErD;IAEM,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAE3B;IAEM,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAE/B;IAEM,UAAU,IAAI,IAAI,CAExB;IAEM,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAE5B;CACF"}
1
+ {"version":3,"file":"synchronizer.d.ts","sourceRoot":"","sources":["../../src/state_machine/synchronizer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EACzB,gBAAgB,EAChB,sBAAsB,EACtB,4BAA4B,EAC7B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,qBAAa,eAAgB,YAAW,sBAAsB;IAOzC,uBAAuB,EAAE,uBAAuB;IALnE,OAAO,CAAC,WAAW,CAAoB;IAEvC,gGAAgG;IACzF,YAAY,EAAG,gBAAgB,CAAC;IAEvC,YAAmB,uBAAuB,EAAE,uBAAuB,EAAI;IAEvE,OAAa,MAAM,6BAUlB;IAEY,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,cAAc,GAAE,EAAE,EAAO,iBAOnE;IAED;;;;;OAKG;IACI,aAAa,CAAC,eAAe,CAAC,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAEhG;IAED,+FAA+F;IACxF,YAAY,IAAI,wBAAwB,CAE9C;IAED,qFAAqF;IAC9E,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAE9D;IAED,uFAAuF;IAChF,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,wBAAwB,CAEhE;IAED,0GAA0G;IACnG,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAExG;IAED,yCAAyC;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC,CAElH;IAEM,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAE5B;IAEM,MAAM,IAAI,OAAO,CAAC,4BAA4B,CAAC,CAErD;IAEY,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAEjC;IAEM,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAE/B;IAEM,UAAU,IAAI,IAAI,CAExB;IAEM,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAE5B;IAED,8BAA8B;IACjB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAErC;CACF"}
@@ -1,29 +1,36 @@
1
1
  import { NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP } from '@aztec/constants';
2
2
  import { BlockNumber } from '@aztec/foundation/branded-types';
3
- import { Fr } from '@aztec/foundation/fields';
3
+ import { padArrayEnd } from '@aztec/foundation/collection';
4
+ import { Fr } from '@aztec/foundation/curves/bn254';
5
+ import { AvmSimulatorPool } from '@aztec/simulator/server';
4
6
  import { NativeWorldStateService } from '@aztec/world-state/native';
5
7
  export class TXESynchronizer {
6
8
  nativeWorldStateService;
7
9
  // This works when set to 1 as well.
8
10
  blockNumber;
11
+ /** AVM execution backend (simulator pool + CDB server) shared across all public simulations. */ avmSimulator;
9
12
  constructor(nativeWorldStateService){
10
13
  this.nativeWorldStateService = nativeWorldStateService;
11
14
  this.blockNumber = BlockNumber.ZERO;
12
15
  }
13
16
  static async create() {
14
- const nativeWorldStateService = await NativeWorldStateService.tmp();
15
- return new this(nativeWorldStateService);
17
+ const nativeWorldStateService = await NativeWorldStateService.ephemeral();
18
+ const synchronizer = new this(nativeWorldStateService);
19
+ synchronizer.avmSimulator = await AvmSimulatorPool.spawn({
20
+ wsdbIpcPath: nativeWorldStateService.getIpcPath()
21
+ });
22
+ return synchronizer;
16
23
  }
17
- async handleL2Block(block) {
18
- await this.nativeWorldStateService.handleL2BlockAndMessages(block, Array(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP).fill(0).map(Fr.zero), true);
24
+ async handleL2Block(block, l1ToL2Messages = []) {
25
+ await this.nativeWorldStateService.handleL2BlockAndMessages(block, padArrayEnd(l1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP));
19
26
  this.blockNumber = block.header.globalVariables.blockNumber;
20
27
  }
21
28
  /**
22
- * Forces an immediate sync to an optionally provided minimum block number
29
+ * Forces an immediate sync to an optionally provided minimum block number.
23
30
  * @param targetBlockNumber - The target block number that we must sync to. Will download unproven blocks if needed to reach it.
24
- * @param skipThrowIfTargetNotReached - Whether to skip throwing if the target block number is not reached.
31
+ * @param blockHash - If provided, verifies the block at targetBlockNumber matches this hash.
25
32
  * @returns A promise that resolves with the block number the world state was synced to
26
- */ syncImmediate(_minBlockNumber, _skipThrowIfTargetNotReached) {
33
+ */ syncImmediate(_minBlockNumber, _blockHash) {
27
34
  return Promise.resolve(this.blockNumber);
28
35
  }
29
36
  /** Returns an instance of MerkleTreeAdminOperations that will not include uncommitted data. */ getCommitted() {
@@ -35,6 +42,9 @@ export class TXESynchronizer {
35
42
  /** Gets a handle that allows reading the state as it was at the given block number. */ getSnapshot(blockNumber) {
36
43
  return this.nativeWorldStateService.getSnapshot(BlockNumber(blockNumber));
37
44
  }
45
+ /** Gets a snapshot at the given block number. The TXE has no reorgs, so the fork hash is not verified. */ getVerifiedSnapshot(blockNumber, _blockHash) {
46
+ return Promise.resolve(this.getSnapshot(blockNumber));
47
+ }
38
48
  /** Backups the db to the target path. */ backupTo(dstPath, compact) {
39
49
  return this.nativeWorldStateService.backupTo(dstPath, compact);
40
50
  }
@@ -44,8 +54,8 @@ export class TXESynchronizer {
44
54
  status() {
45
55
  throw new Error('TXE Synchronizer does not implement "status"');
46
56
  }
47
- stop() {
48
- throw new Error('TXE Synchronizer does not implement "stop"');
57
+ async stop() {
58
+ await this.closeIpc();
49
59
  }
50
60
  stopSync() {
51
61
  throw new Error('TXE Synchronizer does not implement "stopSync"');
@@ -56,4 +66,7 @@ export class TXESynchronizer {
56
66
  clear() {
57
67
  throw new Error('TXE Synchronizer does not implement "clear"');
58
68
  }
69
+ /** Clean up IPC resources. */ async closeIpc() {
70
+ await this.avmSimulator?.[Symbol.asyncDispose]();
71
+ }
59
72
  }