@aztec/txe 0.0.1-commit.2f68f620 → 0.0.1-commit.3100065
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.
- package/dest/AuthRegistry-FSRZIMX6.js +3 -0
- package/dest/AuthRegistry-FSRZIMX6.js.map +7 -0
- package/dest/ContractClassRegistry-N6NA3SFA.js +3 -0
- package/dest/ContractClassRegistry-N6NA3SFA.js.map +7 -0
- package/dest/ContractInstanceRegistry-NADDSLGL.js +3 -0
- package/dest/ContractInstanceRegistry-NADDSLGL.js.map +7 -0
- package/dest/FeeJuice-QBH5JWJV.js +3 -0
- package/dest/FeeJuice-QBH5JWJV.js.map +7 -0
- package/dest/HandshakeRegistry-KKUEU7XW.js +3 -0
- package/dest/HandshakeRegistry-KKUEU7XW.js.map +7 -0
- package/dest/MultiCallEntrypoint-TGICA67H.js +3 -0
- package/dest/MultiCallEntrypoint-TGICA67H.js.map +7 -0
- package/dest/SchnorrAccount-J5T6OKR3.js +3 -0
- package/dest/SchnorrAccount-J5T6OKR3.js.map +7 -0
- package/dest/SchnorrInitializerlessAccount-OOES6Q4F.js +3 -0
- package/dest/SchnorrInitializerlessAccount-OOES6Q4F.js.map +7 -0
- package/dest/bin/index.js +1 -1
- package/dest/bin/oracle_test_server.js +2 -2
- package/dest/{chunk-W2NSX64C.js → chunk-PDOEF22H.js} +2 -2
- package/dest/{chunk-W2NSX64C.js.map → chunk-PDOEF22H.js.map} +3 -3
- package/dest/chunk-YP4ODNMQ.js +268 -0
- package/dest/chunk-YP4ODNMQ.js.map +7 -0
- package/dest/constants.d.ts +1 -1
- package/dest/constants.d.ts.map +1 -1
- package/dest/constants.js +1 -1
- package/dest/dispatcher_pool.d.ts +2 -2
- package/dest/dispatcher_pool.d.ts.map +1 -1
- package/dest/dispatcher_pool.js +5 -3
- package/dest/index.d.ts +2 -136
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +5 -3
- package/dest/metafile.json +10346 -7008
- package/dest/oracle/interfaces.d.ts +19 -10
- package/dest/oracle/interfaces.d.ts.map +1 -1
- package/dest/oracle/tagging_secret_strategy.d.ts +12 -0
- package/dest/oracle/tagging_secret_strategy.d.ts.map +1 -0
- package/dest/oracle/tagging_secret_strategy.js +12 -0
- package/dest/oracle/test-resolver/default_fixtures.d.ts +9 -0
- package/dest/oracle/test-resolver/default_fixtures.d.ts.map +1 -0
- package/dest/oracle/test-resolver/default_fixtures.js +207 -0
- package/dest/oracle/test-resolver/index.d.ts +1 -1
- package/dest/oracle/test-resolver/index.d.ts.map +1 -1
- package/dest/oracle/test-resolver/index.js +1 -2
- package/dest/oracle/test-resolver/resolver.d.ts +21 -7
- package/dest/oracle/test-resolver/resolver.d.ts.map +1 -1
- package/dest/oracle/test-resolver/resolver.js +100 -33
- package/dest/oracle/txe_oracle_public_context.d.ts +9 -9
- package/dest/oracle/txe_oracle_public_context.d.ts.map +1 -1
- package/dest/oracle/txe_oracle_public_context.js +15 -9
- package/dest/oracle/txe_oracle_registry.d.ts +47 -24
- package/dest/oracle/txe_oracle_registry.d.ts.map +1 -1
- package/dest/oracle/txe_oracle_registry.js +221 -34
- package/dest/oracle/txe_oracle_top_level_context.d.ts +16 -8
- package/dest/oracle/txe_oracle_top_level_context.d.ts.map +1 -1
- package/dest/oracle/txe_oracle_top_level_context.js +116 -54
- package/dest/oracle/txe_oracle_version.d.ts +3 -3
- package/dest/oracle/txe_oracle_version.js +3 -3
- package/dest/rpc_translator.d.ts +21 -4
- package/dest/rpc_translator.d.ts.map +1 -1
- package/dest/rpc_translator.js +150 -80
- package/dest/server.bundle.js +1 -1
- package/dest/state_machine/archiver.d.ts +1 -1
- package/dest/state_machine/archiver.d.ts.map +1 -1
- package/dest/state_machine/archiver.js +1 -2
- package/dest/state_machine/dummy_p2p_client.d.ts +5 -2
- package/dest/state_machine/dummy_p2p_client.d.ts.map +1 -1
- package/dest/state_machine/dummy_p2p_client.js +9 -0
- package/dest/state_machine/global_variable_builder.d.ts +3 -4
- package/dest/state_machine/global_variable_builder.d.ts.map +1 -1
- package/dest/state_machine/global_variable_builder.js +0 -3
- package/dest/state_machine/index.d.ts +8 -6
- package/dest/state_machine/index.d.ts.map +1 -1
- package/dest/state_machine/index.js +41 -19
- package/dest/state_machine/synchronizer.d.ts +5 -2
- package/dest/state_machine/synchronizer.d.ts.map +1 -1
- package/dest/state_machine/synchronizer.js +6 -2
- package/dest/txe_session.d.ts +26 -18
- package/dest/txe_session.d.ts.map +1 -1
- package/dest/txe_session.js +148 -38
- package/dest/utils/block_creation.d.ts +2 -2
- package/dest/utils/block_creation.d.ts.map +1 -1
- package/dest/utils/block_creation.js +2 -2
- package/dest/utils/encoding.d.ts +4 -3
- package/dest/utils/encoding.d.ts.map +1 -1
- package/dest/utils/tx_effect_creation.d.ts +1 -1
- package/dest/utils/tx_effect_creation.d.ts.map +1 -1
- package/dest/utils/tx_effect_creation.js +0 -1
- package/dest/utils/txe_public_contract_data_source.d.ts +1 -1
- package/dest/utils/txe_public_contract_data_source.d.ts.map +1 -1
- package/dest/utils/txe_public_contract_data_source.js +7 -4
- package/dest/worker.bundle.js +1 -1
- package/package.json +17 -17
- package/src/bin/oracle_test_server.ts +2 -2
- package/src/constants.ts +1 -1
- package/src/dispatcher_pool.ts +4 -3
- package/src/index.ts +6 -4
- package/src/oracle/interfaces.ts +21 -8
- package/src/oracle/tagging_secret_strategy.ts +25 -0
- package/src/oracle/test-resolver/default_fixtures.ts +282 -0
- package/src/oracle/test-resolver/index.ts +1 -2
- package/src/oracle/test-resolver/resolver.ts +121 -41
- package/src/oracle/txe_oracle_public_context.ts +16 -14
- package/src/oracle/txe_oracle_registry.ts +154 -16
- package/src/oracle/txe_oracle_top_level_context.ts +157 -55
- package/src/oracle/txe_oracle_version.ts +3 -3
- package/src/rpc_translator.ts +205 -107
- package/src/state_machine/archiver.ts +0 -1
- package/src/state_machine/dummy_p2p_client.ts +13 -0
- package/src/state_machine/global_variable_builder.ts +2 -16
- package/src/state_machine/index.ts +50 -34
- package/src/state_machine/synchronizer.ts +8 -2
- package/src/txe_session.ts +263 -42
- package/src/utils/block_creation.ts +2 -1
- package/src/utils/tx_effect_creation.ts +0 -2
- package/src/utils/txe_public_contract_data_source.ts +6 -4
- package/dest/ContractClassRegistry-PII7Q556.js +0 -3
- package/dest/ContractClassRegistry-PII7Q556.js.map +0 -7
- package/dest/ContractInstanceRegistry-3MHLGFNZ.js +0 -3
- package/dest/ContractInstanceRegistry-3MHLGFNZ.js.map +0 -7
- package/dest/FeeJuice-TQV5AQK7.js +0 -3
- package/dest/FeeJuice-TQV5AQK7.js.map +0 -7
- package/dest/MultiCallEntrypoint-SBJUIJY7.js +0 -3
- package/dest/MultiCallEntrypoint-SBJUIJY7.js.map +0 -7
- package/dest/SchnorrAccount-MQXPIZ44.js +0 -3
- package/dest/SchnorrAccount-MQXPIZ44.js.map +0 -7
- package/dest/chunk-CDITIZHX.js +0 -257
- package/dest/chunk-CDITIZHX.js.map +0 -7
- package/dest/oracle/test-resolver/fixtures.d.ts +0 -43
- package/dest/oracle/test-resolver/fixtures.d.ts.map +0 -1
- package/dest/oracle/test-resolver/fixtures.js +0 -39
- package/src/oracle/test-resolver/fixtures.ts +0 -84
package/src/rpc_translator.ts
CHANGED
|
@@ -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
|
|
@@ -271,20 +291,8 @@ export class RPCTranslator {
|
|
|
271
291
|
return callTxeHandler({
|
|
272
292
|
oracle: 'aztec_txe_getPrivateEvents',
|
|
273
293
|
inputs,
|
|
274
|
-
handler:
|
|
275
|
-
|
|
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
|
-
},
|
|
294
|
+
handler: ([selector, contractAddress, scope]) =>
|
|
295
|
+
this.stateHandler.getPrivateEvents(selector, contractAddress, scope),
|
|
288
296
|
});
|
|
289
297
|
}
|
|
290
298
|
|
|
@@ -451,7 +459,7 @@ export class RPCTranslator {
|
|
|
451
459
|
return callTxeHandler({
|
|
452
460
|
oracle: 'aztec_utl_getKeyValidationRequest',
|
|
453
461
|
inputs,
|
|
454
|
-
handler: ([pkMHash]) => this.handlerAsUtility().getKeyValidationRequest(pkMHash),
|
|
462
|
+
handler: ([pkMHash, keyIndex]) => this.handlerAsUtility().getKeyValidationRequest(pkMHash, keyIndex),
|
|
455
463
|
});
|
|
456
464
|
}
|
|
457
465
|
|
|
@@ -480,6 +488,16 @@ export class RPCTranslator {
|
|
|
480
488
|
});
|
|
481
489
|
}
|
|
482
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
|
+
|
|
483
501
|
// eslint-disable-next-line camelcase
|
|
484
502
|
aztec_utl_getAuthWitness(...inputs: ForeignCallArgs) {
|
|
485
503
|
return callTxeHandler({
|
|
@@ -554,6 +572,16 @@ export class RPCTranslator {
|
|
|
554
572
|
});
|
|
555
573
|
}
|
|
556
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
|
+
|
|
557
585
|
// eslint-disable-next-line camelcase
|
|
558
586
|
aztec_utl_getLowNullifierMembershipWitness(...inputs: ForeignCallArgs) {
|
|
559
587
|
return callTxeHandler({
|
|
@@ -565,11 +593,11 @@ export class RPCTranslator {
|
|
|
565
593
|
}
|
|
566
594
|
|
|
567
595
|
// eslint-disable-next-line camelcase
|
|
568
|
-
|
|
596
|
+
aztec_utl_getPendingTaggedLogsV2(...inputs: ForeignCallArgs) {
|
|
569
597
|
return callTxeHandler({
|
|
570
|
-
oracle: '
|
|
598
|
+
oracle: 'aztec_utl_getPendingTaggedLogsV2',
|
|
571
599
|
inputs,
|
|
572
|
-
handler: ([scope, providedSecrets]) => this.handlerAsUtility().
|
|
600
|
+
handler: ([scope, providedSecrets]) => this.handlerAsUtility().getPendingTaggedLogsV2(scope, providedSecrets),
|
|
573
601
|
});
|
|
574
602
|
}
|
|
575
603
|
|
|
@@ -588,20 +616,20 @@ export class RPCTranslator {
|
|
|
588
616
|
}
|
|
589
617
|
|
|
590
618
|
// eslint-disable-next-line camelcase
|
|
591
|
-
|
|
619
|
+
aztec_utl_getLogsByTagV2(...inputs: ForeignCallArgs) {
|
|
592
620
|
return callTxeHandler({
|
|
593
|
-
oracle: '
|
|
621
|
+
oracle: 'aztec_utl_getLogsByTagV2',
|
|
594
622
|
inputs,
|
|
595
|
-
handler: ([requestArrayBaseSlot]) => this.handlerAsUtility().
|
|
623
|
+
handler: ([requestArrayBaseSlot]) => this.handlerAsUtility().getLogsByTagV2(requestArrayBaseSlot),
|
|
596
624
|
});
|
|
597
625
|
}
|
|
598
626
|
|
|
599
627
|
// eslint-disable-next-line camelcase
|
|
600
|
-
|
|
628
|
+
aztec_utl_getResolvedTxs(...inputs: ForeignCallArgs) {
|
|
601
629
|
return callTxeHandler({
|
|
602
|
-
oracle: '
|
|
630
|
+
oracle: 'aztec_utl_getResolvedTxs',
|
|
603
631
|
inputs,
|
|
604
|
-
handler: ([requestArrayBaseSlot]) => this.handlerAsUtility().
|
|
632
|
+
handler: ([requestArrayBaseSlot]) => this.handlerAsUtility().getResolvedTxs(requestArrayBaseSlot),
|
|
605
633
|
});
|
|
606
634
|
}
|
|
607
635
|
|
|
@@ -707,6 +735,69 @@ export class RPCTranslator {
|
|
|
707
735
|
});
|
|
708
736
|
}
|
|
709
737
|
|
|
738
|
+
// eslint-disable-next-line camelcase
|
|
739
|
+
aztec_utl_pushTransient(...inputs: ForeignCallArgs) {
|
|
740
|
+
return callTxeHandler({
|
|
741
|
+
oracle: 'aztec_utl_pushTransient',
|
|
742
|
+
inputs,
|
|
743
|
+
handler: ([slot, elements]) => this.handlerAsUtility().pushTransient(slot, elements),
|
|
744
|
+
});
|
|
745
|
+
}
|
|
746
|
+
|
|
747
|
+
// eslint-disable-next-line camelcase
|
|
748
|
+
aztec_utl_popTransient(...inputs: ForeignCallArgs) {
|
|
749
|
+
return callTxeHandler({
|
|
750
|
+
oracle: 'aztec_utl_popTransient',
|
|
751
|
+
inputs,
|
|
752
|
+
handler: ([slot]) => this.handlerAsUtility().popTransient(slot),
|
|
753
|
+
});
|
|
754
|
+
}
|
|
755
|
+
|
|
756
|
+
// eslint-disable-next-line camelcase
|
|
757
|
+
aztec_utl_getTransient(...inputs: ForeignCallArgs) {
|
|
758
|
+
return callTxeHandler({
|
|
759
|
+
oracle: 'aztec_utl_getTransient',
|
|
760
|
+
inputs,
|
|
761
|
+
handler: ([slot, index]) => this.handlerAsUtility().getTransient(slot, index),
|
|
762
|
+
});
|
|
763
|
+
}
|
|
764
|
+
|
|
765
|
+
// eslint-disable-next-line camelcase
|
|
766
|
+
aztec_utl_setTransient(...inputs: ForeignCallArgs) {
|
|
767
|
+
return callTxeHandler({
|
|
768
|
+
oracle: 'aztec_utl_setTransient',
|
|
769
|
+
inputs,
|
|
770
|
+
handler: ([slot, index, elements]) => this.handlerAsUtility().setTransient(slot, index, elements),
|
|
771
|
+
});
|
|
772
|
+
}
|
|
773
|
+
|
|
774
|
+
// eslint-disable-next-line camelcase
|
|
775
|
+
aztec_utl_getTransientLen(...inputs: ForeignCallArgs) {
|
|
776
|
+
return callTxeHandler({
|
|
777
|
+
oracle: 'aztec_utl_getTransientLen',
|
|
778
|
+
inputs,
|
|
779
|
+
handler: ([slot]) => this.handlerAsUtility().getTransientLen(slot),
|
|
780
|
+
});
|
|
781
|
+
}
|
|
782
|
+
|
|
783
|
+
// eslint-disable-next-line camelcase
|
|
784
|
+
aztec_utl_removeTransient(...inputs: ForeignCallArgs) {
|
|
785
|
+
return callTxeHandler({
|
|
786
|
+
oracle: 'aztec_utl_removeTransient',
|
|
787
|
+
inputs,
|
|
788
|
+
handler: ([slot, index]) => this.handlerAsUtility().removeTransient(slot, index),
|
|
789
|
+
});
|
|
790
|
+
}
|
|
791
|
+
|
|
792
|
+
// eslint-disable-next-line camelcase
|
|
793
|
+
aztec_utl_clearTransient(...inputs: ForeignCallArgs) {
|
|
794
|
+
return callTxeHandler({
|
|
795
|
+
oracle: 'aztec_utl_clearTransient',
|
|
796
|
+
inputs,
|
|
797
|
+
handler: ([slot]) => this.handlerAsUtility().clearTransient(slot),
|
|
798
|
+
});
|
|
799
|
+
}
|
|
800
|
+
|
|
710
801
|
// TODO: I forgot to add a corresponding function here, when I introduced an oracle method to txe_oracle.ts.
|
|
711
802
|
// 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
803
|
// to implement this function here. Isn't there a way to programmatically identify that this is missing, given the
|
|
@@ -755,6 +846,54 @@ export class RPCTranslator {
|
|
|
755
846
|
});
|
|
756
847
|
}
|
|
757
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
|
+
|
|
758
897
|
// AVM opcodes
|
|
759
898
|
|
|
760
899
|
// eslint-disable-next-line camelcase
|
|
@@ -958,13 +1097,12 @@ export class RPCTranslator {
|
|
|
958
1097
|
});
|
|
959
1098
|
}
|
|
960
1099
|
|
|
961
|
-
// TODO(F-674): Move orchestration logic into the handler so the transport layer is pure serialize->delegate->deserialize.
|
|
962
1100
|
// eslint-disable-next-line camelcase
|
|
963
1101
|
aztec_txe_privateCallNewFlow(...inputs: ForeignCallArgs) {
|
|
964
1102
|
return callTxeHandler({
|
|
965
1103
|
oracle: 'aztec_txe_privateCallNewFlow',
|
|
966
1104
|
inputs,
|
|
967
|
-
handler:
|
|
1105
|
+
handler: ([
|
|
968
1106
|
from,
|
|
969
1107
|
targetContractAddress,
|
|
970
1108
|
functionSelector,
|
|
@@ -974,103 +1112,44 @@ export class RPCTranslator {
|
|
|
974
1112
|
additionalScopes,
|
|
975
1113
|
authorizedUtilityCallTargets,
|
|
976
1114
|
gasSettings,
|
|
977
|
-
]) =>
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
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
|
-
},
|
|
1115
|
+
]) =>
|
|
1116
|
+
this.stateHandler.executePrivateCall(
|
|
1117
|
+
from,
|
|
1118
|
+
targetContractAddress,
|
|
1119
|
+
functionSelector,
|
|
1120
|
+
args,
|
|
1121
|
+
argsHash,
|
|
1122
|
+
isStaticCall,
|
|
1123
|
+
additionalScopes,
|
|
1124
|
+
authorizedUtilityCallTargets,
|
|
1125
|
+
gasSettings,
|
|
1126
|
+
),
|
|
1015
1127
|
});
|
|
1016
1128
|
}
|
|
1017
1129
|
|
|
1018
|
-
// TODO(F-674): Move orchestration logic into the handler so the transport layer is pure serialize->delegate->deserialize.
|
|
1019
1130
|
// eslint-disable-next-line camelcase
|
|
1020
1131
|
aztec_txe_executeUtilityFunction(...inputs: ForeignCallArgs) {
|
|
1021
1132
|
return callTxeHandler({
|
|
1022
1133
|
oracle: 'aztec_txe_executeUtilityFunction',
|
|
1023
1134
|
inputs,
|
|
1024
|
-
handler:
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
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
|
-
},
|
|
1135
|
+
handler: ([from, targetContractAddress, functionSelector, args, authorizedUtilityCallTargets]) =>
|
|
1136
|
+
this.stateHandler.executeUtilityFunction(
|
|
1137
|
+
from,
|
|
1138
|
+
targetContractAddress,
|
|
1139
|
+
functionSelector,
|
|
1140
|
+
args,
|
|
1141
|
+
authorizedUtilityCallTargets,
|
|
1142
|
+
),
|
|
1042
1143
|
});
|
|
1043
1144
|
}
|
|
1044
1145
|
|
|
1045
|
-
// TODO(F-674): Move orchestration logic into the handler so the transport layer is pure serialize->delegate->deserialize.
|
|
1046
1146
|
// eslint-disable-next-line camelcase
|
|
1047
1147
|
aztec_txe_publicCallNewFlow(...inputs: ForeignCallArgs) {
|
|
1048
1148
|
return callTxeHandler({
|
|
1049
1149
|
oracle: 'aztec_txe_publicCallNewFlow',
|
|
1050
1150
|
inputs,
|
|
1051
|
-
handler:
|
|
1052
|
-
|
|
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
|
-
},
|
|
1151
|
+
handler: ([from, address, calldata, isStaticCall, gasSettings]) =>
|
|
1152
|
+
this.stateHandler.executePublicCall(from, address, calldata, isStaticCall, gasSettings),
|
|
1074
1153
|
});
|
|
1075
1154
|
}
|
|
1076
1155
|
|
|
@@ -1083,6 +1162,25 @@ export class RPCTranslator {
|
|
|
1083
1162
|
});
|
|
1084
1163
|
}
|
|
1085
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
|
+
|
|
1086
1184
|
// eslint-disable-next-line camelcase
|
|
1087
1185
|
aztec_prv_getAppTaggingSecret(...inputs: ForeignCallArgs) {
|
|
1088
1186
|
return callTxeHandler({
|
|
@@ -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 {
|
|
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 {
|
|
7
|
-
|
|
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
|
|
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
|
-
|
|
59
|
-
|
|
60
|
-
new TXEGlobalVariablesBuilder(),
|
|
61
|
-
|
|
62
|
-
new
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
new TestCircuitVerifier(),
|
|
66
|
-
|
|
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
|
|
87
|
+
const txResolver = new TxResolverService(node);
|
|
78
88
|
|
|
79
|
-
return new this(
|
|
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:
|
|
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
|
]);
|
|
@@ -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
|
-
|
|
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);
|