@aztec/txe 5.0.0-rc.1 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/dest/AuthRegistry-FSRZIMX6.js +3 -0
  2. package/dest/AuthRegistry-FSRZIMX6.js.map +7 -0
  3. package/dest/ContractClassRegistry-N6NA3SFA.js +3 -0
  4. package/dest/ContractClassRegistry-N6NA3SFA.js.map +7 -0
  5. package/dest/ContractInstanceRegistry-NADDSLGL.js +3 -0
  6. package/dest/ContractInstanceRegistry-NADDSLGL.js.map +7 -0
  7. package/dest/FeeJuice-QBH5JWJV.js +3 -0
  8. package/dest/FeeJuice-QBH5JWJV.js.map +7 -0
  9. package/dest/HandshakeRegistry-KKUEU7XW.js +3 -0
  10. package/dest/HandshakeRegistry-KKUEU7XW.js.map +7 -0
  11. package/dest/MultiCallEntrypoint-TGICA67H.js +3 -0
  12. package/dest/MultiCallEntrypoint-TGICA67H.js.map +7 -0
  13. package/dest/SchnorrAccount-J5T6OKR3.js +3 -0
  14. package/dest/SchnorrAccount-J5T6OKR3.js.map +7 -0
  15. package/dest/SchnorrInitializerlessAccount-OOES6Q4F.js +3 -0
  16. package/dest/SchnorrInitializerlessAccount-OOES6Q4F.js.map +7 -0
  17. package/dest/bin/index.js +1 -1
  18. package/dest/bin/oracle_test_server.js +2 -2
  19. package/dest/{chunk-UPW55EJX.js → chunk-PDOEF22H.js} +2 -2
  20. package/dest/{chunk-UPW55EJX.js.map → chunk-PDOEF22H.js.map} +3 -3
  21. package/dest/chunk-YP4ODNMQ.js +268 -0
  22. package/dest/chunk-YP4ODNMQ.js.map +7 -0
  23. package/dest/constants.d.ts +1 -1
  24. package/dest/constants.d.ts.map +1 -1
  25. package/dest/constants.js +1 -1
  26. package/dest/index.d.ts +1 -1
  27. package/dest/index.d.ts.map +1 -1
  28. package/dest/index.js +5 -3
  29. package/dest/metafile.json +9768 -8714
  30. package/dest/oracle/interfaces.d.ts +19 -10
  31. package/dest/oracle/interfaces.d.ts.map +1 -1
  32. package/dest/oracle/tagging_secret_strategy.d.ts +12 -0
  33. package/dest/oracle/tagging_secret_strategy.d.ts.map +1 -0
  34. package/dest/oracle/tagging_secret_strategy.js +12 -0
  35. package/dest/oracle/test-resolver/default_fixtures.d.ts +9 -0
  36. package/dest/oracle/test-resolver/default_fixtures.d.ts.map +1 -0
  37. package/dest/oracle/test-resolver/default_fixtures.js +207 -0
  38. package/dest/oracle/test-resolver/index.d.ts +1 -1
  39. package/dest/oracle/test-resolver/index.d.ts.map +1 -1
  40. package/dest/oracle/test-resolver/index.js +1 -2
  41. package/dest/oracle/test-resolver/resolver.d.ts +22 -8
  42. package/dest/oracle/test-resolver/resolver.d.ts.map +1 -1
  43. package/dest/oracle/test-resolver/resolver.js +100 -33
  44. package/dest/oracle/txe_oracle_public_context.d.ts +9 -9
  45. package/dest/oracle/txe_oracle_public_context.d.ts.map +1 -1
  46. package/dest/oracle/txe_oracle_public_context.js +15 -9
  47. package/dest/oracle/txe_oracle_registry.d.ts +159 -3
  48. package/dest/oracle/txe_oracle_registry.d.ts.map +1 -1
  49. package/dest/oracle/txe_oracle_registry.js +221 -34
  50. package/dest/oracle/txe_oracle_top_level_context.d.ts +22 -8
  51. package/dest/oracle/txe_oracle_top_level_context.d.ts.map +1 -1
  52. package/dest/oracle/txe_oracle_top_level_context.js +107 -49
  53. package/dest/oracle/txe_oracle_version.d.ts +3 -3
  54. package/dest/oracle/txe_oracle_version.js +3 -3
  55. package/dest/rpc_translator.d.ts +14 -4
  56. package/dest/rpc_translator.d.ts.map +1 -1
  57. package/dest/rpc_translator.js +91 -11
  58. package/dest/server.bundle.js +1 -1
  59. package/dest/state_machine/archiver.d.ts +1 -1
  60. package/dest/state_machine/archiver.d.ts.map +1 -1
  61. package/dest/state_machine/archiver.js +1 -2
  62. package/dest/state_machine/dummy_p2p_client.d.ts +4 -2
  63. package/dest/state_machine/dummy_p2p_client.d.ts.map +1 -1
  64. package/dest/state_machine/dummy_p2p_client.js +6 -0
  65. package/dest/state_machine/global_variable_builder.d.ts +3 -4
  66. package/dest/state_machine/global_variable_builder.d.ts.map +1 -1
  67. package/dest/state_machine/global_variable_builder.js +0 -3
  68. package/dest/state_machine/index.d.ts +8 -6
  69. package/dest/state_machine/index.d.ts.map +1 -1
  70. package/dest/state_machine/index.js +40 -12
  71. package/dest/state_machine/synchronizer.d.ts +5 -2
  72. package/dest/state_machine/synchronizer.d.ts.map +1 -1
  73. package/dest/state_machine/synchronizer.js +6 -2
  74. package/dest/txe_session.d.ts +8 -6
  75. package/dest/txe_session.d.ts.map +1 -1
  76. package/dest/txe_session.js +72 -32
  77. package/dest/utils/block_creation.d.ts +2 -2
  78. package/dest/utils/block_creation.d.ts.map +1 -1
  79. package/dest/utils/block_creation.js +2 -2
  80. package/dest/utils/encoding.d.ts +4 -3
  81. package/dest/utils/encoding.d.ts.map +1 -1
  82. package/dest/utils/tx_effect_creation.d.ts +1 -1
  83. package/dest/utils/tx_effect_creation.d.ts.map +1 -1
  84. package/dest/utils/tx_effect_creation.js +0 -1
  85. package/dest/utils/txe_public_contract_data_source.d.ts +1 -1
  86. package/dest/utils/txe_public_contract_data_source.d.ts.map +1 -1
  87. package/dest/utils/txe_public_contract_data_source.js +7 -4
  88. package/dest/worker.bundle.js +1 -1
  89. package/package.json +17 -17
  90. package/src/bin/oracle_test_server.ts +2 -2
  91. package/src/constants.ts +1 -1
  92. package/src/index.ts +5 -3
  93. package/src/oracle/interfaces.ts +21 -8
  94. package/src/oracle/tagging_secret_strategy.ts +25 -0
  95. package/src/oracle/test-resolver/default_fixtures.ts +282 -0
  96. package/src/oracle/test-resolver/index.ts +1 -2
  97. package/src/oracle/test-resolver/resolver.ts +122 -42
  98. package/src/oracle/txe_oracle_public_context.ts +16 -14
  99. package/src/oracle/txe_oracle_registry.ts +156 -18
  100. package/src/oracle/txe_oracle_top_level_context.ts +147 -50
  101. package/src/oracle/txe_oracle_version.ts +3 -3
  102. package/src/rpc_translator.ts +119 -11
  103. package/src/state_machine/archiver.ts +0 -1
  104. package/src/state_machine/dummy_p2p_client.ts +9 -0
  105. package/src/state_machine/global_variable_builder.ts +2 -16
  106. package/src/state_machine/index.ts +49 -30
  107. package/src/state_machine/synchronizer.ts +8 -2
  108. package/src/txe_session.ts +104 -27
  109. package/src/utils/block_creation.ts +2 -1
  110. package/src/utils/tx_effect_creation.ts +0 -2
  111. package/src/utils/txe_public_contract_data_source.ts +6 -4
  112. package/dest/AuthRegistry-CPGFQR26.js +0 -3
  113. package/dest/AuthRegistry-CPGFQR26.js.map +0 -7
  114. package/dest/ContractClassRegistry-EHVIHGEK.js +0 -3
  115. package/dest/ContractClassRegistry-EHVIHGEK.js.map +0 -7
  116. package/dest/ContractInstanceRegistry-DWZDXHRG.js +0 -3
  117. package/dest/ContractInstanceRegistry-DWZDXHRG.js.map +0 -7
  118. package/dest/FeeJuice-MI32ZO7B.js +0 -3
  119. package/dest/FeeJuice-MI32ZO7B.js.map +0 -7
  120. package/dest/HandshakeRegistry-3KSP3ITH.js +0 -3
  121. package/dest/HandshakeRegistry-3KSP3ITH.js.map +0 -7
  122. package/dest/MultiCallEntrypoint-IU7HYFYE.js +0 -3
  123. package/dest/MultiCallEntrypoint-IU7HYFYE.js.map +0 -7
  124. package/dest/SchnorrAccount-6TUE7JX4.js +0 -3
  125. package/dest/SchnorrAccount-6TUE7JX4.js.map +0 -7
  126. package/dest/SchnorrInitializerlessAccount-S3DU2DJK.js +0 -3
  127. package/dest/SchnorrInitializerlessAccount-S3DU2DJK.js.map +0 -7
  128. package/dest/chunk-5U25VAFR.js +0 -265
  129. package/dest/chunk-5U25VAFR.js.map +0 -7
  130. package/dest/oracle/test-resolver/fixtures.d.ts +0 -43
  131. package/dest/oracle/test-resolver/fixtures.d.ts.map +0 -1
  132. package/dest/oracle/test-resolver/fixtures.js +0 -39
  133. package/src/oracle/test-resolver/fixtures.ts +0 -84
@@ -210,6 +210,26 @@ export class RPCTranslator {
210
210
  });
211
211
  }
212
212
 
213
+ // eslint-disable-next-line camelcase
214
+ aztec_txe_sendL1ToL2Message(...inputs: ForeignCallArgs) {
215
+ return callTxeHandler({
216
+ oracle: 'aztec_txe_sendL1ToL2Message',
217
+ inputs,
218
+ handler: ([content, secretHash, sender, recipient]) =>
219
+ this.handlerAsTxe().sendL1ToL2Message(content, secretHash, sender, recipient),
220
+ });
221
+ }
222
+
223
+ // eslint-disable-next-line camelcase
224
+ aztec_txe_setTaggingSecretStrategies(...inputs: ForeignCallArgs) {
225
+ return callTxeHandler({
226
+ oracle: 'aztec_txe_setTaggingSecretStrategies',
227
+ inputs,
228
+ handler: ([unconstrainedStrategy, constrainedStrategy]) =>
229
+ this.handlerAsTxe().setTaggingSecretStrategies(unconstrainedStrategy, constrainedStrategy),
230
+ });
231
+ }
232
+
213
233
  // PXE oracles
214
234
 
215
235
  // eslint-disable-next-line camelcase
@@ -439,7 +459,7 @@ export class RPCTranslator {
439
459
  return callTxeHandler({
440
460
  oracle: 'aztec_utl_getKeyValidationRequest',
441
461
  inputs,
442
- handler: ([pkMHash]) => this.handlerAsUtility().getKeyValidationRequest(pkMHash),
462
+ handler: ([pkMHash, keyIndex]) => this.handlerAsUtility().getKeyValidationRequest(pkMHash, keyIndex),
443
463
  });
444
464
  }
445
465
 
@@ -468,6 +488,16 @@ export class RPCTranslator {
468
488
  });
469
489
  }
470
490
 
491
+ // eslint-disable-next-line camelcase
492
+ aztec_utl_getL1ToL2MembershipWitnessV2(...inputs: ForeignCallArgs) {
493
+ return callTxeHandler({
494
+ oracle: 'aztec_utl_getL1ToL2MembershipWitnessV2',
495
+ inputs,
496
+ handler: ([messageHash, nullifier]) =>
497
+ this.handlerAsUtility().getL1ToL2MembershipWitnessV2(messageHash, nullifier),
498
+ });
499
+ }
500
+
471
501
  // eslint-disable-next-line camelcase
472
502
  aztec_utl_getAuthWitness(...inputs: ForeignCallArgs) {
473
503
  return callTxeHandler({
@@ -542,6 +572,16 @@ export class RPCTranslator {
542
572
  });
543
573
  }
544
574
 
575
+ // eslint-disable-next-line camelcase
576
+ aztec_utl_areBlockHashesInArchive(...inputs: ForeignCallArgs) {
577
+ return callTxeHandler({
578
+ oracle: 'aztec_utl_areBlockHashesInArchive',
579
+ inputs,
580
+ handler: ([anchorBlockHash, blockHashes]) =>
581
+ this.handlerAsUtility().areBlockHashesInArchive(anchorBlockHash, blockHashes),
582
+ });
583
+ }
584
+
545
585
  // eslint-disable-next-line camelcase
546
586
  aztec_utl_getLowNullifierMembershipWitness(...inputs: ForeignCallArgs) {
547
587
  return callTxeHandler({
@@ -553,11 +593,11 @@ export class RPCTranslator {
553
593
  }
554
594
 
555
595
  // eslint-disable-next-line camelcase
556
- aztec_utl_getPendingTaggedLogs(...inputs: ForeignCallArgs) {
596
+ aztec_utl_getPendingTaggedLogsV2(...inputs: ForeignCallArgs) {
557
597
  return callTxeHandler({
558
- oracle: 'aztec_utl_getPendingTaggedLogs',
598
+ oracle: 'aztec_utl_getPendingTaggedLogsV2',
559
599
  inputs,
560
- handler: ([scope, providedSecrets]) => this.handlerAsUtility().getPendingTaggedLogs(scope, providedSecrets),
600
+ handler: ([scope, providedSecrets]) => this.handlerAsUtility().getPendingTaggedLogsV2(scope, providedSecrets),
561
601
  });
562
602
  }
563
603
 
@@ -576,20 +616,20 @@ export class RPCTranslator {
576
616
  }
577
617
 
578
618
  // eslint-disable-next-line camelcase
579
- aztec_utl_getLogsByTag(...inputs: ForeignCallArgs) {
619
+ aztec_utl_getLogsByTagV2(...inputs: ForeignCallArgs) {
580
620
  return callTxeHandler({
581
- oracle: 'aztec_utl_getLogsByTag',
621
+ oracle: 'aztec_utl_getLogsByTagV2',
582
622
  inputs,
583
- handler: ([requestArrayBaseSlot]) => this.handlerAsUtility().getLogsByTag(requestArrayBaseSlot),
623
+ handler: ([requestArrayBaseSlot]) => this.handlerAsUtility().getLogsByTagV2(requestArrayBaseSlot),
584
624
  });
585
625
  }
586
626
 
587
627
  // eslint-disable-next-line camelcase
588
- aztec_utl_getMessageContextsByTxHash(...inputs: ForeignCallArgs) {
628
+ aztec_utl_getResolvedTxs(...inputs: ForeignCallArgs) {
589
629
  return callTxeHandler({
590
- oracle: 'aztec_utl_getMessageContextsByTxHash',
630
+ oracle: 'aztec_utl_getResolvedTxs',
591
631
  inputs,
592
- handler: ([requestArrayBaseSlot]) => this.handlerAsUtility().getMessageContextsByTxHash(requestArrayBaseSlot),
632
+ handler: ([requestArrayBaseSlot]) => this.handlerAsUtility().getResolvedTxs(requestArrayBaseSlot),
593
633
  });
594
634
  }
595
635
 
@@ -806,6 +846,54 @@ export class RPCTranslator {
806
846
  });
807
847
  }
808
848
 
849
+ // eslint-disable-next-line camelcase
850
+ aztec_utl_recordFact(...inputs: ForeignCallArgs) {
851
+ return callTxeHandler({
852
+ oracle: 'aztec_utl_recordFact',
853
+ inputs,
854
+ handler: ([contractAddress, scope, factCollectionTypeId, factCollectionId, factTypeId, payload, originBlock]) =>
855
+ this.handlerAsUtility().recordFact(
856
+ contractAddress,
857
+ scope,
858
+ factCollectionTypeId,
859
+ factCollectionId,
860
+ factTypeId,
861
+ payload,
862
+ originBlock,
863
+ ),
864
+ });
865
+ }
866
+
867
+ // eslint-disable-next-line camelcase
868
+ aztec_utl_deleteFactCollection(...inputs: ForeignCallArgs) {
869
+ return callTxeHandler({
870
+ oracle: 'aztec_utl_deleteFactCollection',
871
+ inputs,
872
+ handler: ([contractAddress, scope, factCollectionTypeId, factCollectionId]) =>
873
+ this.handlerAsUtility().deleteFactCollection(contractAddress, scope, factCollectionTypeId, factCollectionId),
874
+ });
875
+ }
876
+
877
+ // eslint-disable-next-line camelcase
878
+ aztec_utl_getFactCollection(...inputs: ForeignCallArgs) {
879
+ return callTxeHandler({
880
+ oracle: 'aztec_utl_getFactCollection',
881
+ inputs,
882
+ handler: ([contractAddress, scope, factCollectionTypeId, factCollectionId]) =>
883
+ this.handlerAsUtility().getFactCollection(contractAddress, scope, factCollectionTypeId, factCollectionId),
884
+ });
885
+ }
886
+
887
+ // eslint-disable-next-line camelcase
888
+ aztec_utl_getFactCollectionsByType(...inputs: ForeignCallArgs) {
889
+ return callTxeHandler({
890
+ oracle: 'aztec_utl_getFactCollectionsByType',
891
+ inputs,
892
+ handler: ([contractAddress, scope, factCollectionTypeId]) =>
893
+ this.handlerAsUtility().getFactCollectionsByType(contractAddress, scope, factCollectionTypeId),
894
+ });
895
+ }
896
+
809
897
  // AVM opcodes
810
898
 
811
899
  // eslint-disable-next-line camelcase
@@ -1044,8 +1132,9 @@ export class RPCTranslator {
1044
1132
  return callTxeHandler({
1045
1133
  oracle: 'aztec_txe_executeUtilityFunction',
1046
1134
  inputs,
1047
- handler: ([targetContractAddress, functionSelector, args, authorizedUtilityCallTargets]) =>
1135
+ handler: ([from, targetContractAddress, functionSelector, args, authorizedUtilityCallTargets]) =>
1048
1136
  this.stateHandler.executeUtilityFunction(
1137
+ from,
1049
1138
  targetContractAddress,
1050
1139
  functionSelector,
1051
1140
  args,
@@ -1073,6 +1162,25 @@ export class RPCTranslator {
1073
1162
  });
1074
1163
  }
1075
1164
 
1165
+ // eslint-disable-next-line camelcase
1166
+ aztec_prv_resolveTaggingStrategy(...inputs: ForeignCallArgs) {
1167
+ return callTxeHandler({
1168
+ oracle: 'aztec_prv_resolveTaggingStrategy',
1169
+ inputs,
1170
+ handler: ([sender, recipient, deliveryMode]) =>
1171
+ this.handlerAsPrivate().resolveTaggingStrategy(sender, recipient, deliveryMode),
1172
+ });
1173
+ }
1174
+
1175
+ // eslint-disable-next-line camelcase
1176
+ aztec_prv_resolveCustomRequest(...inputs: ForeignCallArgs) {
1177
+ return callTxeHandler({
1178
+ oracle: 'aztec_prv_resolveCustomRequest',
1179
+ inputs,
1180
+ handler: ([kind, payload]) => this.handlerAsPrivate().resolveCustomRequest(kind, payload),
1181
+ });
1182
+ }
1183
+
1076
1184
  // eslint-disable-next-line camelcase
1077
1185
  aztec_prv_getAppTaggingSecret(...inputs: ForeignCallArgs) {
1078
1186
  return callTxeHandler({
@@ -92,7 +92,6 @@ export class TXEArchiver extends ArchiverDataSourceBase {
92
92
  proven: tipId,
93
93
  finalized: tipId,
94
94
  checkpointed: tipId,
95
- proposedCheckpoint: tipId,
96
95
  };
97
96
  }
98
97
 
@@ -9,6 +9,7 @@ import type {
9
9
  P2PConfig,
10
10
  P2PDuplicateAttestationCallback,
11
11
  P2PDuplicateProposalCallback,
12
+ P2POversizedProposalCallback,
12
13
  P2PSyncState,
13
14
  PeerId,
14
15
  ReqRespSubProtocol,
@@ -121,6 +122,10 @@ export class DummyP2P implements P2P {
121
122
  throw new Error('DummyP2P does not implement "getPendingTxCount"');
122
123
  }
123
124
 
125
+ public hasEligiblePendingTxs(_minCount: number): Promise<boolean> {
126
+ throw new Error('DummyP2P does not implement "hasEligiblePendingTxs"');
127
+ }
128
+
124
129
  public start(): Promise<void> {
125
130
  throw new Error('DummyP2P does not implement "start"');
126
131
  }
@@ -237,6 +242,10 @@ export class DummyP2P implements P2P {
237
242
  throw new Error('DummyP2P does not implement "registerDuplicateProposalCallback"');
238
243
  }
239
244
 
245
+ public registerOversizedProposalCallback(_callback: P2POversizedProposalCallback): void {
246
+ throw new Error('DummyP2P does not implement "registerOversizedProposalCallback"');
247
+ }
248
+
240
249
  public registerDuplicateAttestationCallback(_callback: P2PDuplicateAttestationCallback): void {
241
250
  throw new Error('DummyP2P does not implement "registerDuplicateAttestationCallback"');
242
251
  }
@@ -1,16 +1,11 @@
1
1
  import type { SimulationOverridesPlan } from '@aztec/ethereum/contracts';
2
- import { BlockNumber, type SlotNumber } from '@aztec/foundation/branded-types';
2
+ import type { SlotNumber } from '@aztec/foundation/branded-types';
3
3
  import { times } from '@aztec/foundation/collection';
4
4
  import type { EthAddress } from '@aztec/foundation/eth-address';
5
5
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
6
6
  import { FEE_ORACLE_LAG, GasFees } from '@aztec/stdlib/gas';
7
7
  import { makeGlobalVariables } from '@aztec/stdlib/testing';
8
- import {
9
- type CheckpointGlobalVariables,
10
- type FeeProvider,
11
- type GlobalVariableBuilder,
12
- GlobalVariables,
13
- } from '@aztec/stdlib/tx';
8
+ import type { CheckpointGlobalVariables, FeeProvider, GlobalVariableBuilder } from '@aztec/stdlib/tx';
14
9
 
15
10
  /** Simple FeeProvider for TXE that returns zero fees. */
16
11
  export class TXEFeeProvider implements FeeProvider {
@@ -24,15 +19,6 @@ export class TXEFeeProvider implements FeeProvider {
24
19
  }
25
20
 
26
21
  export class TXEGlobalVariablesBuilder implements GlobalVariableBuilder {
27
- public buildGlobalVariables(
28
- _blockNumber: BlockNumber,
29
- _coinbase: EthAddress,
30
- _feeRecipient: AztecAddress,
31
- _slotNumber?: SlotNumber,
32
- ): Promise<GlobalVariables> {
33
- return Promise.resolve(makeGlobalVariables());
34
- }
35
-
36
22
  public buildCheckpointGlobalVariables(
37
23
  _coinbase: EthAddress,
38
24
  _feeRecipient: AztecAddress,
@@ -3,8 +3,14 @@ import { TestCircuitVerifier } from '@aztec/bb-prover/test';
3
3
  import { CheckpointNumber } from '@aztec/foundation/branded-types';
4
4
  import { Fr } from '@aztec/foundation/curves/bn254';
5
5
  import { createLogger } from '@aztec/foundation/log';
6
- import { type AnchorBlockStore, type ContractStore, ContractSyncService, type NoteStore } from '@aztec/pxe/server';
7
- import { MessageContextService } from '@aztec/pxe/simulator';
6
+ import {
7
+ type AnchorBlockStore,
8
+ ContractClassService,
9
+ type ContractStore,
10
+ ContractSyncService,
11
+ type NoteStore,
12
+ } from '@aztec/pxe/server';
13
+ import { TxResolverService } from '@aztec/pxe/simulator';
8
14
  import { L2Block, type L2TipsProvider } from '@aztec/stdlib/block';
9
15
  import { Checkpoint, L1PublishedData, PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
10
16
  import type { AztecNode } from '@aztec/stdlib/interfaces/client';
@@ -29,7 +35,8 @@ export class TXEStateMachine {
29
35
  public archiver: TXEArchiver,
30
36
  public anchorBlockStore: AnchorBlockStore,
31
37
  public contractSyncService: ContractSyncService,
32
- public messageContextService: MessageContextService,
38
+ public contractClassService: ContractClassService,
39
+ public txResolver: TxResolverService,
33
40
  ) {}
34
41
 
35
42
  public static async create(
@@ -42,41 +49,52 @@ export class TXEStateMachine {
42
49
  const aztecNodeConfig = {} as AztecNodeConfig;
43
50
 
44
51
  const log = createLogger('txe_node');
45
- const node = new AztecNodeService(
46
- aztecNodeConfig,
47
- new DummyP2P(),
48
- archiver,
49
- archiver,
50
- archiver,
51
- archiver,
52
- synchronizer,
53
- undefined,
54
- undefined,
55
- undefined,
56
- undefined,
57
- async () => {},
58
- VERSION,
59
- CHAIN_ID,
60
- new TXEGlobalVariablesBuilder(),
61
- new TXEFeeProvider(),
62
- new MockEpochCache(),
63
- PACKAGE_VERSION,
64
- new TestCircuitVerifier(),
65
- new TestCircuitVerifier(),
66
- undefined,
52
+ const node = new AztecNodeService({
53
+ config: aztecNodeConfig,
54
+ p2pClient: new DummyP2P(),
55
+ blockSource: archiver,
56
+ logsSource: archiver,
57
+ contractDataSource: archiver,
58
+ l1ToL2MessageSource: archiver,
59
+ worldStateSynchronizer: synchronizer,
60
+ sequencer: undefined,
61
+ proverNode: undefined,
62
+ slasherClient: undefined,
63
+ validatorsSentinel: undefined,
64
+ stopStartedWatchers: async () => {},
65
+ l1ChainId: CHAIN_ID,
66
+ version: VERSION,
67
+ globalVariableBuilder: new TXEGlobalVariablesBuilder(),
68
+ rollupContract: undefined,
69
+ feeProvider: new TXEFeeProvider(),
70
+ epochCache: new MockEpochCache(),
71
+ packageVersion: PACKAGE_VERSION,
72
+ peerProofVerifier: new TestCircuitVerifier(),
73
+ rpcProofVerifier: new TestCircuitVerifier(),
74
+ telemetry: undefined,
67
75
  log,
68
- );
76
+ });
69
77
 
78
+ const contractClassService = new ContractClassService(node, contractStore);
70
79
  const contractSyncService = new ContractSyncService(
71
80
  node,
72
81
  contractStore,
82
+ contractClassService,
73
83
  noteStore,
74
84
  createLogger('txe:contract_sync'),
75
85
  );
76
86
 
77
- const messageContextService = new MessageContextService(node);
87
+ const txResolver = new TxResolverService(node);
78
88
 
79
- return new this(node, synchronizer, archiver, anchorBlockStore, contractSyncService, messageContextService);
89
+ return new this(
90
+ node,
91
+ synchronizer,
92
+ archiver,
93
+ anchorBlockStore,
94
+ contractSyncService,
95
+ contractClassService,
96
+ txResolver,
97
+ );
80
98
  }
81
99
 
82
100
  /** Returns an {@link L2TipsProvider} backed by this node's chain tips. */
@@ -87,7 +105,7 @@ export class TXEStateMachine {
87
105
  };
88
106
  }
89
107
 
90
- public async handleL2Block(block: L2Block) {
108
+ public async handleL2Block(block: L2Block, l1ToL2Messages: Fr[] = []) {
91
109
  // Create a checkpoint from the block manually.
92
110
  // TXE uses 1-block-per-checkpoint for testing simplicity, so we can use block number as checkpoint number.
93
111
  // This uses the deprecated fromBlockNumber method intentionally for the TXE testing environment.
@@ -106,6 +124,7 @@ export class TXEStateMachine {
106
124
  feeRecipient: block.header.globalVariables.feeRecipient,
107
125
  gasFees: block.header.globalVariables.gasFees,
108
126
  totalManaUsed: block.header.totalManaUsed,
127
+ accumulatedFees: block.header.totalFees,
109
128
  }),
110
129
  [block],
111
130
  checkpointNumber,
@@ -124,7 +143,7 @@ export class TXEStateMachine {
124
143
  this.contractSyncService.wipe();
125
144
 
126
145
  await Promise.all([
127
- this.synchronizer.handleL2Block(block),
146
+ this.synchronizer.handleL2Block(block, l1ToL2Messages),
128
147
  this.archiver.addCheckpoints([publishedCheckpoint], undefined),
129
148
  this.anchorBlockStore.setHeader(block.header),
130
149
  ]);
@@ -1,5 +1,6 @@
1
1
  import { NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP } from '@aztec/constants';
2
2
  import { BlockNumber } from '@aztec/foundation/branded-types';
3
+ import { padArrayEnd } from '@aztec/foundation/collection';
3
4
  import { Fr } from '@aztec/foundation/curves/bn254';
4
5
  import type { BlockHash, L2Block } from '@aztec/stdlib/block';
5
6
  import type {
@@ -23,10 +24,10 @@ export class TXESynchronizer implements WorldStateSynchronizer {
23
24
  return new this(nativeWorldStateService);
24
25
  }
25
26
 
26
- public async handleL2Block(block: L2Block) {
27
+ public async handleL2Block(block: L2Block, l1ToL2Messages: Fr[] = []) {
27
28
  await this.nativeWorldStateService.handleL2BlockAndMessages(
28
29
  block,
29
- Array(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP).fill(0).map(Fr.zero),
30
+ padArrayEnd<Fr, number>(l1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP),
30
31
  );
31
32
 
32
33
  this.blockNumber = block.header.globalVariables.blockNumber;
@@ -57,6 +58,11 @@ export class TXESynchronizer implements WorldStateSynchronizer {
57
58
  return this.nativeWorldStateService.getSnapshot(BlockNumber(blockNumber));
58
59
  }
59
60
 
61
+ /** Gets a snapshot at the given block number. The TXE has no reorgs, so the fork hash is not verified. */
62
+ public getVerifiedSnapshot(blockNumber: number, _blockHash: BlockHash): Promise<MerkleTreeReadOperations> {
63
+ return Promise.resolve(this.getSnapshot(blockNumber));
64
+ }
65
+
60
66
  /** Backups the db to the target path. */
61
67
  public backupTo(dstPath: string, compact?: boolean): Promise<Record<Exclude<SnapshotDataKeys, 'archiver'>, string>> {
62
68
  return this.nativeWorldStateService.backupTo(dstPath, compact);