@aztec/txe 0.0.1-commit.2f68f620 → 0.0.1-commit.321f6a9

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 (136) 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.js +7 -15
  18. package/dest/bin/index.js +1 -1
  19. package/dest/bin/oracle_test_server.js +2 -2
  20. package/dest/chunk-32UHX7YY.js +3 -0
  21. package/dest/chunk-SZPMCTJK.js +260 -0
  22. package/dest/chunk-SZPMCTJK.js.map +7 -0
  23. package/dest/{chunk-W2NSX64C.js → chunk-YS3UIBVR.js} +2 -2
  24. package/dest/{chunk-W2NSX64C.js.map → chunk-YS3UIBVR.js.map} +3 -3
  25. package/dest/constants.d.ts +1 -1
  26. package/dest/constants.d.ts.map +1 -1
  27. package/dest/constants.js +1 -1
  28. package/dest/dispatcher_pool.d.ts +2 -2
  29. package/dest/dispatcher_pool.d.ts.map +1 -1
  30. package/dest/dispatcher_pool.js +5 -3
  31. package/dest/index.d.ts +2 -136
  32. package/dest/index.d.ts.map +1 -1
  33. package/dest/index.js +5 -3
  34. package/dest/metafile.json +9632 -7418
  35. package/dest/oracle/interfaces.d.ts +24 -11
  36. package/dest/oracle/interfaces.d.ts.map +1 -1
  37. package/dest/oracle/tagging_secret_strategy.d.ts +12 -0
  38. package/dest/oracle/tagging_secret_strategy.d.ts.map +1 -0
  39. package/dest/oracle/tagging_secret_strategy.js +12 -0
  40. package/dest/oracle/test-resolver/default_fixtures.d.ts +16 -0
  41. package/dest/oracle/test-resolver/default_fixtures.d.ts.map +1 -0
  42. package/dest/oracle/test-resolver/default_fixtures.js +200 -0
  43. package/dest/oracle/test-resolver/index.d.ts +1 -1
  44. package/dest/oracle/test-resolver/index.d.ts.map +1 -1
  45. package/dest/oracle/test-resolver/index.js +1 -2
  46. package/dest/oracle/test-resolver/resolver.d.ts +21 -7
  47. package/dest/oracle/test-resolver/resolver.d.ts.map +1 -1
  48. package/dest/oracle/test-resolver/resolver.js +100 -33
  49. package/dest/oracle/txe_oracle_public_context.d.ts +9 -9
  50. package/dest/oracle/txe_oracle_public_context.d.ts.map +1 -1
  51. package/dest/oracle/txe_oracle_public_context.js +15 -9
  52. package/dest/oracle/txe_oracle_registry.d.ts +51 -26
  53. package/dest/oracle/txe_oracle_registry.d.ts.map +1 -1
  54. package/dest/oracle/txe_oracle_registry.js +258 -53
  55. package/dest/oracle/txe_oracle_top_level_context.d.ts +30 -9
  56. package/dest/oracle/txe_oracle_top_level_context.d.ts.map +1 -1
  57. package/dest/oracle/txe_oracle_top_level_context.js +454 -288
  58. package/dest/oracle/txe_oracle_version.d.ts +4 -4
  59. package/dest/oracle/txe_oracle_version.js +4 -4
  60. package/dest/rpc_translator.d.ts +23 -4
  61. package/dest/rpc_translator.d.ts.map +1 -1
  62. package/dest/rpc_translator.js +167 -81
  63. package/dest/server.bundle.js +1 -1
  64. package/dest/state_machine/archiver.d.ts +1 -1
  65. package/dest/state_machine/archiver.d.ts.map +1 -1
  66. package/dest/state_machine/archiver.js +1 -2
  67. package/dest/state_machine/dummy_p2p_client.d.ts +5 -2
  68. package/dest/state_machine/dummy_p2p_client.d.ts.map +1 -1
  69. package/dest/state_machine/dummy_p2p_client.js +9 -0
  70. package/dest/state_machine/global_variable_builder.d.ts +3 -4
  71. package/dest/state_machine/global_variable_builder.d.ts.map +1 -1
  72. package/dest/state_machine/global_variable_builder.js +0 -3
  73. package/dest/state_machine/index.d.ts +8 -6
  74. package/dest/state_machine/index.d.ts.map +1 -1
  75. package/dest/state_machine/index.js +41 -19
  76. package/dest/state_machine/synchronizer.d.ts +10 -2
  77. package/dest/state_machine/synchronizer.d.ts.map +1 -1
  78. package/dest/state_machine/synchronizer.js +18 -5
  79. package/dest/txe_session.d.ts +29 -20
  80. package/dest/txe_session.d.ts.map +1 -1
  81. package/dest/txe_session.js +165 -41
  82. package/dest/utils/block_creation.d.ts +2 -2
  83. package/dest/utils/block_creation.d.ts.map +1 -1
  84. package/dest/utils/block_creation.js +2 -2
  85. package/dest/utils/encoding.d.ts +4 -3
  86. package/dest/utils/encoding.d.ts.map +1 -1
  87. package/dest/utils/tx_effect_creation.d.ts +1 -1
  88. package/dest/utils/tx_effect_creation.d.ts.map +1 -1
  89. package/dest/utils/tx_effect_creation.js +0 -1
  90. package/dest/utils/txe_public_contract_data_source.d.ts +1 -1
  91. package/dest/utils/txe_public_contract_data_source.d.ts.map +1 -1
  92. package/dest/utils/txe_public_contract_data_source.js +7 -4
  93. package/dest/worker.bundle.js +1 -1
  94. package/package.json +17 -17
  95. package/src/bin/check_txe_oracle_version.ts +9 -12
  96. package/src/bin/oracle_test_server.ts +2 -2
  97. package/src/constants.ts +1 -1
  98. package/src/dispatcher_pool.ts +4 -3
  99. package/src/index.ts +6 -4
  100. package/src/oracle/interfaces.ts +26 -9
  101. package/src/oracle/tagging_secret_strategy.ts +25 -0
  102. package/src/oracle/test-resolver/default_fixtures.ts +271 -0
  103. package/src/oracle/test-resolver/index.ts +1 -2
  104. package/src/oracle/test-resolver/resolver.ts +121 -41
  105. package/src/oracle/txe_oracle_public_context.ts +16 -14
  106. package/src/oracle/txe_oracle_registry.ts +197 -42
  107. package/src/oracle/txe_oracle_top_level_context.ts +201 -66
  108. package/src/oracle/txe_oracle_version.ts +4 -4
  109. package/src/rpc_translator.ts +224 -108
  110. package/src/state_machine/archiver.ts +0 -1
  111. package/src/state_machine/dummy_p2p_client.ts +13 -0
  112. package/src/state_machine/global_variable_builder.ts +2 -16
  113. package/src/state_machine/index.ts +50 -34
  114. package/src/state_machine/synchronizer.ts +26 -5
  115. package/src/txe_session.ts +284 -45
  116. package/src/utils/block_creation.ts +2 -1
  117. package/src/utils/tx_effect_creation.ts +0 -2
  118. package/src/utils/txe_public_contract_data_source.ts +6 -4
  119. package/dest/ContractClassRegistry-PII7Q556.js +0 -3
  120. package/dest/ContractClassRegistry-PII7Q556.js.map +0 -7
  121. package/dest/ContractInstanceRegistry-3MHLGFNZ.js +0 -3
  122. package/dest/ContractInstanceRegistry-3MHLGFNZ.js.map +0 -7
  123. package/dest/FeeJuice-TQV5AQK7.js +0 -3
  124. package/dest/FeeJuice-TQV5AQK7.js.map +0 -7
  125. package/dest/MultiCallEntrypoint-SBJUIJY7.js +0 -3
  126. package/dest/MultiCallEntrypoint-SBJUIJY7.js.map +0 -7
  127. package/dest/SchnorrAccount-MQXPIZ44.js +0 -3
  128. package/dest/SchnorrAccount-MQXPIZ44.js.map +0 -7
  129. package/dest/chunk-BJVAAXNA.js +0 -3
  130. package/dest/chunk-CDITIZHX.js +0 -257
  131. package/dest/chunk-CDITIZHX.js.map +0 -7
  132. package/dest/oracle/test-resolver/fixtures.d.ts +0 -43
  133. package/dest/oracle/test-resolver/fixtures.d.ts.map +0 -1
  134. package/dest/oracle/test-resolver/fixtures.js +0 -39
  135. package/src/oracle/test-resolver/fixtures.ts +0 -84
  136. /package/dest/{chunk-BJVAAXNA.js.map → chunk-32UHX7YY.js.map} +0 -0
@@ -188,7 +188,7 @@ export class RPCTranslator {
188
188
  return callTxeHandler({
189
189
  oracle: 'aztec_txe_createAccount',
190
190
  inputs,
191
- handler: ([secret]) => this.handlerAsTxe().createAccount(secret),
191
+ handler: ([secret, partialAddress]) => this.handlerAsTxe().createAccount(secret, partialAddress),
192
192
  });
193
193
  }
194
194
 
@@ -210,6 +210,35 @@ 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
+
233
+ // eslint-disable-next-line camelcase
234
+ aztec_txe_setAuthorizeAllUtilityCallTargets(...inputs: ForeignCallArgs) {
235
+ return callTxeHandler({
236
+ oracle: 'aztec_txe_setAuthorizeAllUtilityCallTargets',
237
+ inputs,
238
+ handler: ([authorizeAll]) => this.handlerAsTxe().setAuthorizeAllUtilityCallTargets(authorizeAll),
239
+ });
240
+ }
241
+
213
242
  // PXE oracles
214
243
 
215
244
  // eslint-disable-next-line camelcase
@@ -271,20 +300,8 @@ export class RPCTranslator {
271
300
  return callTxeHandler({
272
301
  oracle: 'aztec_txe_getPrivateEvents',
273
302
  inputs,
274
- handler: async ([selector, contractAddress, scope]) => {
275
- // TODO(F-335): Avoid doing the following 2 calls here.
276
- {
277
- await this.handlerAsTxe().syncContractNonOracleMethod(
278
- contractAddress,
279
- scope,
280
- this.stateHandler.getCurrentJob(),
281
- );
282
- // We cycle job to commit the stores after the contract sync.
283
- await this.stateHandler.cycleJob();
284
- }
285
-
286
- return this.handlerAsTxe().getPrivateEvents(selector, contractAddress, scope);
287
- },
303
+ handler: ([selector, contractAddress, scope]) =>
304
+ this.stateHandler.getPrivateEvents(selector, contractAddress, scope),
288
305
  });
289
306
  }
290
307
 
@@ -451,7 +468,7 @@ export class RPCTranslator {
451
468
  return callTxeHandler({
452
469
  oracle: 'aztec_utl_getKeyValidationRequest',
453
470
  inputs,
454
- handler: ([pkMHash]) => this.handlerAsUtility().getKeyValidationRequest(pkMHash),
471
+ handler: ([pkMHash, keyIndex]) => this.handlerAsUtility().getKeyValidationRequest(pkMHash, keyIndex),
455
472
  });
456
473
  }
457
474
 
@@ -480,6 +497,16 @@ export class RPCTranslator {
480
497
  });
481
498
  }
482
499
 
500
+ // eslint-disable-next-line camelcase
501
+ aztec_utl_getL1ToL2MembershipWitnessV2(...inputs: ForeignCallArgs) {
502
+ return callTxeHandler({
503
+ oracle: 'aztec_utl_getL1ToL2MembershipWitnessV2',
504
+ inputs,
505
+ handler: ([messageHash, nullifier]) =>
506
+ this.handlerAsUtility().getL1ToL2MembershipWitnessV2(messageHash, nullifier),
507
+ });
508
+ }
509
+
483
510
  // eslint-disable-next-line camelcase
484
511
  aztec_utl_getAuthWitness(...inputs: ForeignCallArgs) {
485
512
  return callTxeHandler({
@@ -554,6 +581,16 @@ export class RPCTranslator {
554
581
  });
555
582
  }
556
583
 
584
+ // eslint-disable-next-line camelcase
585
+ aztec_utl_areBlockHashesInArchive(...inputs: ForeignCallArgs) {
586
+ return callTxeHandler({
587
+ oracle: 'aztec_utl_areBlockHashesInArchive',
588
+ inputs,
589
+ handler: ([anchorBlockHash, blockHashes]) =>
590
+ this.handlerAsUtility().areBlockHashesInArchive(anchorBlockHash, blockHashes),
591
+ });
592
+ }
593
+
557
594
  // eslint-disable-next-line camelcase
558
595
  aztec_utl_getLowNullifierMembershipWitness(...inputs: ForeignCallArgs) {
559
596
  return callTxeHandler({
@@ -565,11 +602,11 @@ export class RPCTranslator {
565
602
  }
566
603
 
567
604
  // eslint-disable-next-line camelcase
568
- aztec_utl_getPendingTaggedLogs(...inputs: ForeignCallArgs) {
605
+ aztec_utl_getPendingTaggedLogsV2(...inputs: ForeignCallArgs) {
569
606
  return callTxeHandler({
570
- oracle: 'aztec_utl_getPendingTaggedLogs',
607
+ oracle: 'aztec_utl_getPendingTaggedLogsV2',
571
608
  inputs,
572
- handler: ([scope, providedSecrets]) => this.handlerAsUtility().getPendingTaggedLogs(scope, providedSecrets),
609
+ handler: ([scope, providedSecrets]) => this.handlerAsUtility().getPendingTaggedLogsV2(scope, providedSecrets),
573
610
  });
574
611
  }
575
612
 
@@ -588,20 +625,29 @@ export class RPCTranslator {
588
625
  }
589
626
 
590
627
  // eslint-disable-next-line camelcase
591
- aztec_utl_getLogsByTag(...inputs: ForeignCallArgs) {
628
+ aztec_utl_getLogsByTagV2(...inputs: ForeignCallArgs) {
629
+ return callTxeHandler({
630
+ oracle: 'aztec_utl_getLogsByTagV2',
631
+ inputs,
632
+ handler: ([requestArrayBaseSlot]) => this.handlerAsUtility().getLogsByTagV2(requestArrayBaseSlot),
633
+ });
634
+ }
635
+
636
+ // eslint-disable-next-line camelcase
637
+ aztec_utl_getResolvedTxs(...inputs: ForeignCallArgs) {
592
638
  return callTxeHandler({
593
- oracle: 'aztec_utl_getLogsByTag',
639
+ oracle: 'aztec_utl_getResolvedTxs',
594
640
  inputs,
595
- handler: ([requestArrayBaseSlot]) => this.handlerAsUtility().getLogsByTag(requestArrayBaseSlot),
641
+ handler: ([requestArrayBaseSlot]) => this.handlerAsUtility().getResolvedTxs(requestArrayBaseSlot),
596
642
  });
597
643
  }
598
644
 
599
645
  // eslint-disable-next-line camelcase
600
- aztec_utl_getMessageContextsByTxHash(...inputs: ForeignCallArgs) {
646
+ aztec_utl_getTxEffects(...inputs: ForeignCallArgs) {
601
647
  return callTxeHandler({
602
- oracle: 'aztec_utl_getMessageContextsByTxHash',
648
+ oracle: 'aztec_utl_getTxEffects',
603
649
  inputs,
604
- handler: ([requestArrayBaseSlot]) => this.handlerAsUtility().getMessageContextsByTxHash(requestArrayBaseSlot),
650
+ handler: ([txHashes]) => this.handlerAsUtility().getTxEffects(txHashes),
605
651
  });
606
652
  }
607
653
 
@@ -707,6 +753,69 @@ export class RPCTranslator {
707
753
  });
708
754
  }
709
755
 
756
+ // eslint-disable-next-line camelcase
757
+ aztec_utl_pushTransient(...inputs: ForeignCallArgs) {
758
+ return callTxeHandler({
759
+ oracle: 'aztec_utl_pushTransient',
760
+ inputs,
761
+ handler: ([slot, elements]) => this.handlerAsUtility().pushTransient(slot, elements),
762
+ });
763
+ }
764
+
765
+ // eslint-disable-next-line camelcase
766
+ aztec_utl_popTransient(...inputs: ForeignCallArgs) {
767
+ return callTxeHandler({
768
+ oracle: 'aztec_utl_popTransient',
769
+ inputs,
770
+ handler: ([slot]) => this.handlerAsUtility().popTransient(slot),
771
+ });
772
+ }
773
+
774
+ // eslint-disable-next-line camelcase
775
+ aztec_utl_getTransient(...inputs: ForeignCallArgs) {
776
+ return callTxeHandler({
777
+ oracle: 'aztec_utl_getTransient',
778
+ inputs,
779
+ handler: ([slot, index]) => this.handlerAsUtility().getTransient(slot, index),
780
+ });
781
+ }
782
+
783
+ // eslint-disable-next-line camelcase
784
+ aztec_utl_setTransient(...inputs: ForeignCallArgs) {
785
+ return callTxeHandler({
786
+ oracle: 'aztec_utl_setTransient',
787
+ inputs,
788
+ handler: ([slot, index, elements]) => this.handlerAsUtility().setTransient(slot, index, elements),
789
+ });
790
+ }
791
+
792
+ // eslint-disable-next-line camelcase
793
+ aztec_utl_getTransientLen(...inputs: ForeignCallArgs) {
794
+ return callTxeHandler({
795
+ oracle: 'aztec_utl_getTransientLen',
796
+ inputs,
797
+ handler: ([slot]) => this.handlerAsUtility().getTransientLen(slot),
798
+ });
799
+ }
800
+
801
+ // eslint-disable-next-line camelcase
802
+ aztec_utl_removeTransient(...inputs: ForeignCallArgs) {
803
+ return callTxeHandler({
804
+ oracle: 'aztec_utl_removeTransient',
805
+ inputs,
806
+ handler: ([slot, index]) => this.handlerAsUtility().removeTransient(slot, index),
807
+ });
808
+ }
809
+
810
+ // eslint-disable-next-line camelcase
811
+ aztec_utl_clearTransient(...inputs: ForeignCallArgs) {
812
+ return callTxeHandler({
813
+ oracle: 'aztec_utl_clearTransient',
814
+ inputs,
815
+ handler: ([slot]) => this.handlerAsUtility().clearTransient(slot),
816
+ });
817
+ }
818
+
710
819
  // TODO: I forgot to add a corresponding function here, when I introduced an oracle method to txe_oracle.ts.
711
820
  // The compiler didn't throw an error, so it took me a while to learn of the existence of this file, and that I need
712
821
  // to implement this function here. Isn't there a way to programmatically identify that this is missing, given the
@@ -755,6 +864,54 @@ export class RPCTranslator {
755
864
  });
756
865
  }
757
866
 
867
+ // eslint-disable-next-line camelcase
868
+ aztec_utl_recordFact(...inputs: ForeignCallArgs) {
869
+ return callTxeHandler({
870
+ oracle: 'aztec_utl_recordFact',
871
+ inputs,
872
+ handler: ([contractAddress, scope, factCollectionTypeId, factCollectionId, factTypeId, payload, originBlock]) =>
873
+ this.handlerAsUtility().recordFact(
874
+ contractAddress,
875
+ scope,
876
+ factCollectionTypeId,
877
+ factCollectionId,
878
+ factTypeId,
879
+ payload,
880
+ originBlock,
881
+ ),
882
+ });
883
+ }
884
+
885
+ // eslint-disable-next-line camelcase
886
+ aztec_utl_deleteFactCollection(...inputs: ForeignCallArgs) {
887
+ return callTxeHandler({
888
+ oracle: 'aztec_utl_deleteFactCollection',
889
+ inputs,
890
+ handler: ([contractAddress, scope, factCollectionTypeId, factCollectionId]) =>
891
+ this.handlerAsUtility().deleteFactCollection(contractAddress, scope, factCollectionTypeId, factCollectionId),
892
+ });
893
+ }
894
+
895
+ // eslint-disable-next-line camelcase
896
+ aztec_utl_getFactCollection(...inputs: ForeignCallArgs) {
897
+ return callTxeHandler({
898
+ oracle: 'aztec_utl_getFactCollection',
899
+ inputs,
900
+ handler: ([contractAddress, scope, factCollectionTypeId, factCollectionId]) =>
901
+ this.handlerAsUtility().getFactCollection(contractAddress, scope, factCollectionTypeId, factCollectionId),
902
+ });
903
+ }
904
+
905
+ // eslint-disable-next-line camelcase
906
+ aztec_utl_getFactCollectionsByType(...inputs: ForeignCallArgs) {
907
+ return callTxeHandler({
908
+ oracle: 'aztec_utl_getFactCollectionsByType',
909
+ inputs,
910
+ handler: ([contractAddress, scope, factCollectionTypeId]) =>
911
+ this.handlerAsUtility().getFactCollectionsByType(contractAddress, scope, factCollectionTypeId),
912
+ });
913
+ }
914
+
758
915
  // AVM opcodes
759
916
 
760
917
  // eslint-disable-next-line camelcase
@@ -958,13 +1115,12 @@ export class RPCTranslator {
958
1115
  });
959
1116
  }
960
1117
 
961
- // TODO(F-674): Move orchestration logic into the handler so the transport layer is pure serialize->delegate->deserialize.
962
1118
  // eslint-disable-next-line camelcase
963
1119
  aztec_txe_privateCallNewFlow(...inputs: ForeignCallArgs) {
964
1120
  return callTxeHandler({
965
1121
  oracle: 'aztec_txe_privateCallNewFlow',
966
1122
  inputs,
967
- handler: async ([
1123
+ handler: ([
968
1124
  from,
969
1125
  targetContractAddress,
970
1126
  functionSelector,
@@ -974,103 +1130,44 @@ export class RPCTranslator {
974
1130
  additionalScopes,
975
1131
  authorizedUtilityCallTargets,
976
1132
  gasSettings,
977
- ]) => {
978
- const returnValues = await this.stateHandler.withTopLevelCallTracking(async () => {
979
- const { returnValues, offchainEffects } = await this.handlerAsTxe().privateCallNewFlow(
980
- from?.value,
981
- targetContractAddress,
982
- functionSelector,
983
- args,
984
- argsHash,
985
- isStaticCall,
986
- additionalScopes,
987
- this.stateHandler.getCurrentJob(),
988
- authorizedUtilityCallTargets,
989
- gasSettings,
990
- );
991
-
992
- // Private execution collects offchain effects inside PXE's PrivateExecutionOracle rather than
993
- // round-tripping them through `aztec_utl_emitOffchainEffect`, so the session buffer is empty
994
- // at this point. Drain the effects from the execution tree into the session buffer so the
995
- // next `env.offchain_messages()` call in the test sees them.
996
- for (const data of offchainEffects) {
997
- this.stateHandler.recordOffchainEffect(data);
998
- }
999
-
1000
- // TODO(F-335): Avoid doing the following call here.
1001
- await this.stateHandler.cycleJob();
1002
-
1003
- if (isStaticCall) {
1004
- // Static calls revert their checkpoint and mine no block, so there is no tx hash to tag
1005
- // offchain effects with. Querying `getLastTxEffects()` here would return an unrelated
1006
- // predecessor tx.
1007
- return { result: returnValues };
1008
- }
1009
- const { txHash } = await this.handlerAsTxe().getLastTxEffects();
1010
- return { result: returnValues, txHash: txHash.hash };
1011
- });
1012
-
1013
- return returnValues;
1014
- },
1133
+ ]) =>
1134
+ this.stateHandler.executePrivateCall(
1135
+ from,
1136
+ targetContractAddress,
1137
+ functionSelector,
1138
+ args,
1139
+ argsHash,
1140
+ isStaticCall,
1141
+ additionalScopes,
1142
+ authorizedUtilityCallTargets,
1143
+ gasSettings,
1144
+ ),
1015
1145
  });
1016
1146
  }
1017
1147
 
1018
- // TODO(F-674): Move orchestration logic into the handler so the transport layer is pure serialize->delegate->deserialize.
1019
1148
  // eslint-disable-next-line camelcase
1020
1149
  aztec_txe_executeUtilityFunction(...inputs: ForeignCallArgs) {
1021
1150
  return callTxeHandler({
1022
1151
  oracle: 'aztec_txe_executeUtilityFunction',
1023
1152
  inputs,
1024
- handler: async ([targetContractAddress, functionSelector, args, authorizedUtilityCallTargets]) => {
1025
- const returnValues = await this.stateHandler.withTopLevelCallTracking(async () => {
1026
- const returnValues = await this.handlerAsTxe().executeUtilityFunction(
1027
- targetContractAddress,
1028
- functionSelector,
1029
- args,
1030
- this.stateHandler.getCurrentJob(),
1031
- authorizedUtilityCallTargets,
1032
- );
1033
-
1034
- // TODO(F-335): Avoid doing the following call here.
1035
- await this.stateHandler.cycleJob();
1036
-
1037
- return { result: returnValues };
1038
- });
1039
-
1040
- return returnValues;
1041
- },
1153
+ handler: ([from, targetContractAddress, functionSelector, args, authorizedUtilityCallTargets]) =>
1154
+ this.stateHandler.executeUtilityFunction(
1155
+ from,
1156
+ targetContractAddress,
1157
+ functionSelector,
1158
+ args,
1159
+ authorizedUtilityCallTargets,
1160
+ ),
1042
1161
  });
1043
1162
  }
1044
1163
 
1045
- // TODO(F-674): Move orchestration logic into the handler so the transport layer is pure serialize->delegate->deserialize.
1046
1164
  // eslint-disable-next-line camelcase
1047
1165
  aztec_txe_publicCallNewFlow(...inputs: ForeignCallArgs) {
1048
1166
  return callTxeHandler({
1049
1167
  oracle: 'aztec_txe_publicCallNewFlow',
1050
1168
  inputs,
1051
- handler: async ([from, address, calldata, isStaticCall, gasSettings]) => {
1052
- const returnValues = await this.stateHandler.withTopLevelCallTracking(async () => {
1053
- const returnValues = await this.handlerAsTxe().publicCallNewFlow(
1054
- from?.value,
1055
- address,
1056
- calldata,
1057
- isStaticCall,
1058
- gasSettings,
1059
- );
1060
-
1061
- // TODO(F-335): Avoid doing the following call here.
1062
- await this.stateHandler.cycleJob();
1063
-
1064
- if (isStaticCall) {
1065
- // See equivalent branch in `aztec_txe_privateCallNewFlow`.
1066
- return { result: returnValues };
1067
- }
1068
- const { txHash } = await this.handlerAsTxe().getLastTxEffects();
1069
- return { result: returnValues, txHash: txHash.hash };
1070
- });
1071
-
1072
- return returnValues;
1073
- },
1169
+ handler: ([from, address, calldata, isStaticCall, gasSettings]) =>
1170
+ this.stateHandler.executePublicCall(from, address, calldata, isStaticCall, gasSettings),
1074
1171
  });
1075
1172
  }
1076
1173
 
@@ -1083,6 +1180,25 @@ export class RPCTranslator {
1083
1180
  });
1084
1181
  }
1085
1182
 
1183
+ // eslint-disable-next-line camelcase
1184
+ aztec_prv_resolveTaggingStrategy(...inputs: ForeignCallArgs) {
1185
+ return callTxeHandler({
1186
+ oracle: 'aztec_prv_resolveTaggingStrategy',
1187
+ inputs,
1188
+ handler: ([sender, recipient, deliveryMode]) =>
1189
+ this.handlerAsPrivate().resolveTaggingStrategy(sender, recipient, deliveryMode),
1190
+ });
1191
+ }
1192
+
1193
+ // eslint-disable-next-line camelcase
1194
+ aztec_prv_resolveCustomRequest(...inputs: ForeignCallArgs) {
1195
+ return callTxeHandler({
1196
+ oracle: 'aztec_prv_resolveCustomRequest',
1197
+ inputs,
1198
+ handler: ([kind, payload]) => this.handlerAsPrivate().resolveCustomRequest(kind, payload),
1199
+ });
1200
+ }
1201
+
1086
1202
  // eslint-disable-next-line camelcase
1087
1203
  aztec_prv_getAppTaggingSecret(...inputs: ForeignCallArgs) {
1088
1204
  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
  }
@@ -171,6 +176,10 @@ export class DummyP2P implements P2P {
171
176
  return Promise.resolve({ blockProposals: [], checkpointProposals: [] });
172
177
  }
173
178
 
179
+ public hasCheckpointProposalForSlot(_slot: SlotNumber): Promise<boolean> {
180
+ return Promise.resolve(false);
181
+ }
182
+
174
183
  public getL2BlockHash(_number: number): Promise<string | undefined> {
175
184
  throw new Error('DummyP2P does not implement "getL2BlockHash"');
176
185
  }
@@ -233,6 +242,10 @@ export class DummyP2P implements P2P {
233
242
  throw new Error('DummyP2P does not implement "registerDuplicateProposalCallback"');
234
243
  }
235
244
 
245
+ public registerOversizedProposalCallback(_callback: P2POversizedProposalCallback): void {
246
+ throw new Error('DummyP2P does not implement "registerOversizedProposalCallback"');
247
+ }
248
+
236
249
  public registerDuplicateAttestationCallback(_callback: P2PDuplicateAttestationCallback): void {
237
250
  throw new Error('DummyP2P does not implement "registerDuplicateAttestationCallback"');
238
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,55 +49,63 @@ 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. */
83
101
  public get l2TipsProvider(): L2TipsProvider {
84
102
  const node = this.node;
85
103
  return {
86
- getL2Tips: async () => {
87
- const tips = await node.getChainTips();
88
- return { ...tips, proposedCheckpoint: tips.checkpointed };
89
- },
104
+ getL2Tips: () => node.getChainTips(),
90
105
  };
91
106
  }
92
107
 
93
- public async handleL2Block(block: L2Block) {
108
+ public async handleL2Block(block: L2Block, l1ToL2Messages: Fr[] = []) {
94
109
  // Create a checkpoint from the block manually.
95
110
  // TXE uses 1-block-per-checkpoint for testing simplicity, so we can use block number as checkpoint number.
96
111
  // This uses the deprecated fromBlockNumber method intentionally for the TXE testing environment.
@@ -109,6 +124,7 @@ export class TXEStateMachine {
109
124
  feeRecipient: block.header.globalVariables.feeRecipient,
110
125
  gasFees: block.header.globalVariables.gasFees,
111
126
  totalManaUsed: block.header.totalManaUsed,
127
+ accumulatedFees: block.header.totalFees,
112
128
  }),
113
129
  [block],
114
130
  checkpointNumber,
@@ -127,7 +143,7 @@ export class TXEStateMachine {
127
143
  this.contractSyncService.wipe();
128
144
 
129
145
  await Promise.all([
130
- this.synchronizer.handleL2Block(block),
146
+ this.synchronizer.handleL2Block(block, l1ToL2Messages),
131
147
  this.archiver.addCheckpoints([publishedCheckpoint], undefined),
132
148
  this.anchorBlockStore.setHeader(block.header),
133
149
  ]);