@aztec/txe 0.0.1-commit.e0f15ab9b → 0.0.1-commit.e304674f1

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.
@@ -339,20 +339,20 @@ export class RPCTranslator {
339
339
  }
340
340
 
341
341
  // eslint-disable-next-line camelcase
342
- aztec_prv_storeInExecutionCache(foreignValues: ForeignCallArray, foreignHash: ForeignCallSingle) {
342
+ aztec_prv_setHashPreimage(foreignValues: ForeignCallArray, foreignHash: ForeignCallSingle) {
343
343
  const values = fromArray(foreignValues);
344
344
  const hash = fromSingle(foreignHash);
345
345
 
346
- this.handlerAsPrivate().storeInExecutionCache(values, hash);
346
+ this.handlerAsPrivate().setHashPreimage(values, hash);
347
347
 
348
348
  return toForeignCallResult([]);
349
349
  }
350
350
 
351
351
  // eslint-disable-next-line camelcase
352
- async aztec_prv_loadFromExecutionCache(foreignHash: ForeignCallSingle) {
352
+ async aztec_prv_getHashPreimage(foreignHash: ForeignCallSingle) {
353
353
  const hash = fromSingle(foreignHash);
354
354
 
355
- const returns = await this.handlerAsPrivate().loadFromExecutionCache(hash);
355
+ const returns = await this.handlerAsPrivate().getHashPreimage(hash);
356
356
 
357
357
  return toForeignCallResult([toArray(returns)]);
358
358
  }
@@ -378,7 +378,7 @@ export class RPCTranslator {
378
378
  }
379
379
 
380
380
  // eslint-disable-next-line camelcase
381
- async aztec_utl_storageRead(
381
+ async aztec_utl_getFromPublicStorage(
382
382
  foreignBlockHash: ForeignCallSingle,
383
383
  foreignContractAddress: ForeignCallSingle,
384
384
  foreignStartStorageSlot: ForeignCallSingle,
@@ -389,7 +389,7 @@ export class RPCTranslator {
389
389
  const startStorageSlot = fromSingle(foreignStartStorageSlot);
390
390
  const numberOfElements = fromSingle(foreignNumberOfElements).toNumber();
391
391
 
392
- const values = await this.handlerAsUtility().storageRead(
392
+ const values = await this.handlerAsUtility().getFromPublicStorage(
393
393
  blockHash,
394
394
  contractAddress,
395
395
  startStorageSlot,
@@ -556,10 +556,10 @@ export class RPCTranslator {
556
556
  }
557
557
 
558
558
  // eslint-disable-next-line camelcase
559
- async aztec_utl_checkNullifierExists(foreignInnerNullifier: ForeignCallSingle) {
559
+ async aztec_utl_doesNullifierExist(foreignInnerNullifier: ForeignCallSingle) {
560
560
  const innerNullifier = fromSingle(foreignInnerNullifier);
561
561
 
562
- const exists = await this.handlerAsUtility().checkNullifierExists(innerNullifier);
562
+ const exists = await this.handlerAsUtility().doesNullifierExist(innerNullifier);
563
563
 
564
564
  return toForeignCallResult([toSingle(new Fr(exists))]);
565
565
  }
@@ -582,10 +582,10 @@ export class RPCTranslator {
582
582
  }
583
583
 
584
584
  // eslint-disable-next-line camelcase
585
- async aztec_utl_tryGetPublicKeysAndPartialAddress(foreignAddress: ForeignCallSingle) {
585
+ async aztec_utl_getPublicKeysAndPartialAddress(foreignAddress: ForeignCallSingle) {
586
586
  const address = addressFromSingle(foreignAddress);
587
587
 
588
- const result = await this.handlerAsUtility().tryGetPublicKeysAndPartialAddress(address);
588
+ const result = await this.handlerAsUtility().getPublicKeysAndPartialAddress(address);
589
589
 
590
590
  // We are going to return a Noir Option struct to represent the possibility of null values. Options are a struct
591
591
  // with two fields: `some` (a boolean) and `value` (a field array in this case).
@@ -652,7 +652,7 @@ export class RPCTranslator {
652
652
  }
653
653
 
654
654
  // eslint-disable-next-line camelcase
655
- public aztec_prv_validatePublicCalldata(_foreignCalldataHash: ForeignCallSingle) {
655
+ public aztec_prv_assertValidPublicCalldata(_foreignCalldataHash: ForeignCallSingle) {
656
656
  throw new Error('Enqueueing public calls is not supported in TestEnvironment::private_context');
657
657
  }
658
658
 
@@ -662,9 +662,9 @@ export class RPCTranslator {
662
662
  }
663
663
 
664
664
  // eslint-disable-next-line camelcase
665
- public async aztec_prv_inRevertiblePhase(foreignSideEffectCounter: ForeignCallSingle) {
665
+ public async aztec_prv_isExecutionInRevertiblePhase(foreignSideEffectCounter: ForeignCallSingle) {
666
666
  const sideEffectCounter = fromSingle(foreignSideEffectCounter).toNumber();
667
- const isRevertible = await this.handlerAsPrivate().inRevertiblePhase(sideEffectCounter);
667
+ const isRevertible = await this.handlerAsPrivate().isExecutionInRevertiblePhase(sideEffectCounter);
668
668
  return toForeignCallResult([toSingle(new Fr(isRevertible))]);
669
669
  }
670
670
 
@@ -738,10 +738,14 @@ export class RPCTranslator {
738
738
  }
739
739
 
740
740
  // eslint-disable-next-line camelcase
741
- async aztec_utl_fetchTaggedLogs(foreignPendingTaggedLogArrayBaseSlot: ForeignCallSingle) {
741
+ async aztec_utl_getPendingTaggedLogs(
742
+ foreignPendingTaggedLogArrayBaseSlot: ForeignCallSingle,
743
+ foreignScope: ForeignCallSingle,
744
+ ) {
742
745
  const pendingTaggedLogArrayBaseSlot = fromSingle(foreignPendingTaggedLogArrayBaseSlot);
746
+ const scope = AztecAddress.fromField(fromSingle(foreignScope));
743
747
 
744
- await this.handlerAsUtility().fetchTaggedLogs(pendingTaggedLogArrayBaseSlot);
748
+ await this.handlerAsUtility().getPendingTaggedLogs(pendingTaggedLogArrayBaseSlot, scope);
745
749
 
746
750
  return toForeignCallResult([]);
747
751
  }
@@ -753,12 +757,14 @@ export class RPCTranslator {
753
757
  foreignEventValidationRequestsArrayBaseSlot: ForeignCallSingle,
754
758
  foreignMaxNotePackedLen: ForeignCallSingle,
755
759
  foreignMaxEventSerializedLen: ForeignCallSingle,
760
+ foreignScope: ForeignCallSingle,
756
761
  ) {
757
762
  const contractAddress = AztecAddress.fromField(fromSingle(foreignContractAddress));
758
763
  const noteValidationRequestsArrayBaseSlot = fromSingle(foreignNoteValidationRequestsArrayBaseSlot);
759
764
  const eventValidationRequestsArrayBaseSlot = fromSingle(foreignEventValidationRequestsArrayBaseSlot);
760
765
  const maxNotePackedLen = fromSingle(foreignMaxNotePackedLen).toNumber();
761
766
  const maxEventSerializedLen = fromSingle(foreignMaxEventSerializedLen).toNumber();
767
+ const scope = AztecAddress.fromField(fromSingle(foreignScope));
762
768
 
763
769
  await this.handlerAsUtility().validateAndStoreEnqueuedNotesAndEvents(
764
770
  contractAddress,
@@ -766,75 +772,86 @@ export class RPCTranslator {
766
772
  eventValidationRequestsArrayBaseSlot,
767
773
  maxNotePackedLen,
768
774
  maxEventSerializedLen,
775
+ scope,
769
776
  );
770
777
 
771
778
  return toForeignCallResult([]);
772
779
  }
773
780
 
774
781
  // eslint-disable-next-line camelcase
775
- public async aztec_utl_bulkRetrieveLogs(
782
+ public async aztec_utl_getLogsByTag(
776
783
  foreignContractAddress: ForeignCallSingle,
777
784
  foreignLogRetrievalRequestsArrayBaseSlot: ForeignCallSingle,
778
785
  foreignLogRetrievalResponsesArrayBaseSlot: ForeignCallSingle,
786
+ foreignScope: ForeignCallSingle,
779
787
  ) {
780
788
  const contractAddress = AztecAddress.fromField(fromSingle(foreignContractAddress));
781
789
  const logRetrievalRequestsArrayBaseSlot = fromSingle(foreignLogRetrievalRequestsArrayBaseSlot);
782
790
  const logRetrievalResponsesArrayBaseSlot = fromSingle(foreignLogRetrievalResponsesArrayBaseSlot);
791
+ const scope = AztecAddress.fromField(fromSingle(foreignScope));
783
792
 
784
- await this.handlerAsUtility().bulkRetrieveLogs(
793
+ await this.handlerAsUtility().getLogsByTag(
785
794
  contractAddress,
786
795
  logRetrievalRequestsArrayBaseSlot,
787
796
  logRetrievalResponsesArrayBaseSlot,
797
+ scope,
788
798
  );
789
799
 
790
800
  return toForeignCallResult([]);
791
801
  }
792
802
 
793
803
  // eslint-disable-next-line camelcase
794
- public async aztec_utl_utilityResolveMessageContexts(
804
+ public async aztec_utl_getMessageContextsByTxHash(
795
805
  foreignContractAddress: ForeignCallSingle,
796
806
  foreignMessageContextRequestsArrayBaseSlot: ForeignCallSingle,
797
807
  foreignMessageContextResponsesArrayBaseSlot: ForeignCallSingle,
808
+ foreignScope: ForeignCallSingle,
798
809
  ) {
799
810
  const contractAddress = AztecAddress.fromField(fromSingle(foreignContractAddress));
800
811
  const messageContextRequestsArrayBaseSlot = fromSingle(foreignMessageContextRequestsArrayBaseSlot);
801
812
  const messageContextResponsesArrayBaseSlot = fromSingle(foreignMessageContextResponsesArrayBaseSlot);
813
+ const scope = AztecAddress.fromField(fromSingle(foreignScope));
802
814
 
803
- await this.handlerAsUtility().utilityResolveMessageContexts(
815
+ await this.handlerAsUtility().getMessageContextsByTxHash(
804
816
  contractAddress,
805
817
  messageContextRequestsArrayBaseSlot,
806
818
  messageContextResponsesArrayBaseSlot,
819
+ scope,
807
820
  );
808
821
 
809
822
  return toForeignCallResult([]);
810
823
  }
811
824
 
812
825
  // eslint-disable-next-line camelcase
813
- async aztec_utl_storeCapsule(
826
+ aztec_utl_setCapsule(
814
827
  foreignContractAddress: ForeignCallSingle,
815
828
  foreignSlot: ForeignCallSingle,
816
829
  foreignCapsule: ForeignCallArray,
830
+ foreignScope: ForeignCallSingle,
817
831
  ) {
818
832
  const contractAddress = AztecAddress.fromField(fromSingle(foreignContractAddress));
819
833
  const slot = fromSingle(foreignSlot);
820
834
  const capsule = fromArray(foreignCapsule);
835
+ const scope = AztecAddress.fromField(fromSingle(foreignScope));
821
836
 
822
- await this.handlerAsUtility().storeCapsule(contractAddress, slot, capsule);
837
+ this.handlerAsUtility().setCapsule(contractAddress, slot, capsule, scope);
823
838
 
824
839
  return toForeignCallResult([]);
825
840
  }
826
841
 
827
842
  // eslint-disable-next-line camelcase
828
- async aztec_utl_loadCapsule(
843
+ async aztec_utl_getCapsule(
829
844
  foreignContractAddress: ForeignCallSingle,
830
845
  foreignSlot: ForeignCallSingle,
831
846
  foreignTSize: ForeignCallSingle,
847
+ foreignScope: ForeignCallSingle,
832
848
  ) {
833
849
  const contractAddress = AztecAddress.fromField(fromSingle(foreignContractAddress));
834
850
  const slot = fromSingle(foreignSlot);
835
851
  const tSize = fromSingle(foreignTSize).toNumber();
852
+ const scope = AztecAddress.fromField(fromSingle(foreignScope));
836
853
 
837
- const values = await this.handlerAsUtility().loadCapsule(contractAddress, slot);
854
+ const values = await this.handlerAsUtility().getCapsule(contractAddress, slot, scope);
838
855
 
839
856
  // We are going to return a Noir Option struct to represent the possibility of null values. Options are a struct
840
857
  // with two fields: `some` (a boolean) and `value` (a field array in this case).
@@ -848,11 +865,16 @@ export class RPCTranslator {
848
865
  }
849
866
 
850
867
  // eslint-disable-next-line camelcase
851
- async aztec_utl_deleteCapsule(foreignContractAddress: ForeignCallSingle, foreignSlot: ForeignCallSingle) {
868
+ aztec_utl_deleteCapsule(
869
+ foreignContractAddress: ForeignCallSingle,
870
+ foreignSlot: ForeignCallSingle,
871
+ foreignScope: ForeignCallSingle,
872
+ ) {
852
873
  const contractAddress = AztecAddress.fromField(fromSingle(foreignContractAddress));
853
874
  const slot = fromSingle(foreignSlot);
875
+ const scope = AztecAddress.fromField(fromSingle(foreignScope));
854
876
 
855
- await this.handlerAsUtility().deleteCapsule(contractAddress, slot);
877
+ this.handlerAsUtility().deleteCapsule(contractAddress, slot, scope);
856
878
 
857
879
  return toForeignCallResult([]);
858
880
  }
@@ -863,13 +885,15 @@ export class RPCTranslator {
863
885
  foreignSrcSlot: ForeignCallSingle,
864
886
  foreignDstSlot: ForeignCallSingle,
865
887
  foreignNumEntries: ForeignCallSingle,
888
+ foreignScope: ForeignCallSingle,
866
889
  ) {
867
890
  const contractAddress = AztecAddress.fromField(fromSingle(foreignContractAddress));
868
891
  const srcSlot = fromSingle(foreignSrcSlot);
869
892
  const dstSlot = fromSingle(foreignDstSlot);
870
893
  const numEntries = fromSingle(foreignNumEntries).toNumber();
894
+ const scope = AztecAddress.fromField(fromSingle(foreignScope));
871
895
 
872
- await this.handlerAsUtility().copyCapsule(contractAddress, srcSlot, dstSlot, numEntries);
896
+ await this.handlerAsUtility().copyCapsule(contractAddress, srcSlot, dstSlot, numEntries, scope);
873
897
 
874
898
  return toForeignCallResult([]);
875
899
  }
@@ -879,7 +903,7 @@ export class RPCTranslator {
879
903
  // to implement this function here. Isn't there a way to programmatically identify that this is missing, given the
880
904
  // existence of a txe_oracle method?
881
905
  // eslint-disable-next-line camelcase
882
- async aztec_utl_tryAes128Decrypt(
906
+ async aztec_utl_decryptAes128(
883
907
  foreignCiphertextBVecStorage: ForeignCallArray,
884
908
  foreignCiphertextLength: ForeignCallSingle,
885
909
  foreignIv: ForeignCallArray,
@@ -891,7 +915,7 @@ export class RPCTranslator {
891
915
 
892
916
  // Noir Option<BoundedVec> is encoded as [is_some: Field, storage: Field[], length: Field].
893
917
  try {
894
- const plaintextBuffer = await this.handlerAsUtility().aes128Decrypt(ciphertext, iv, symKey);
918
+ const plaintextBuffer = await this.handlerAsUtility().decryptAes128(ciphertext, iv, symKey);
895
919
  const [storage, length] = arrayToBoundedVec(
896
920
  bufferToU8Array(plaintextBuffer),
897
921
  foreignCiphertextBVecStorage.length,
@@ -909,6 +933,7 @@ export class RPCTranslator {
909
933
  foreignEphPKField0: ForeignCallSingle,
910
934
  foreignEphPKField1: ForeignCallSingle,
911
935
  foreignEphPKField2: ForeignCallSingle,
936
+ foreignContractAddress: ForeignCallSingle,
912
937
  ) {
913
938
  const address = AztecAddress.fromField(fromSingle(foreignAddress));
914
939
  const ephPK = Point.fromFields([
@@ -916,14 +941,15 @@ export class RPCTranslator {
916
941
  fromSingle(foreignEphPKField1),
917
942
  fromSingle(foreignEphPKField2),
918
943
  ]);
944
+ const contractAddress = AztecAddress.fromField(fromSingle(foreignContractAddress));
919
945
 
920
- const secret = await this.handlerAsUtility().getSharedSecret(address, ephPK);
946
+ const secret = await this.handlerAsUtility().getSharedSecret(address, ephPK, contractAddress);
921
947
 
922
- return toForeignCallResult(secret.toFields().map(toSingle));
948
+ return toForeignCallResult([toSingle(secret)]);
923
949
  }
924
950
 
925
951
  // eslint-disable-next-line camelcase
926
- aztec_utl_invalidateContractSyncCache(
952
+ aztec_utl_setContractSyncCacheInvalid(
927
953
  foreignContractAddress: ForeignCallSingle,
928
954
  foreignScopes: ForeignCallArray,
929
955
  foreignScopeCount: ForeignCallSingle,
@@ -934,7 +960,7 @@ export class RPCTranslator {
934
960
  .slice(0, count)
935
961
  .map(f => new AztecAddress(f));
936
962
 
937
- this.handlerAsUtility().invalidateContractSyncCache(contractAddress, scopes);
963
+ this.handlerAsUtility().setContractSyncCacheInvalid(contractAddress, scopes);
938
964
 
939
965
  return Promise.resolve(toForeignCallResult([]));
940
966
  }
@@ -76,6 +76,7 @@ export class TXEArchiver extends ArchiverDataSourceBase {
76
76
  proven: tipId,
77
77
  finalized: tipId,
78
78
  checkpointed: tipId,
79
+ proposedCheckpoint: tipId,
79
80
  };
80
81
  }
81
82
 
@@ -61,8 +61,12 @@ export class DummyP2P implements P2P {
61
61
  throw new Error('DummyP2P does not implement "registerBlockProposalHandler"');
62
62
  }
63
63
 
64
- public registerCheckpointProposalHandler(_handler: P2PCheckpointReceivedCallback): void {
65
- throw new Error('DummyP2P does not implement "registerCheckpointProposalHandler"');
64
+ public registerValidatorCheckpointProposalHandler(_handler: P2PCheckpointReceivedCallback): void {
65
+ throw new Error('DummyP2P does not implement "registerValidatorCheckpointProposalHandler"');
66
+ }
67
+
68
+ public registerAllNodesCheckpointProposalHandler(_handler: P2PCheckpointReceivedCallback): void {
69
+ throw new Error('DummyP2P does not implement "registerAllNodesCheckpointProposalHandler"');
66
70
  }
67
71
 
68
72
  public requestTxs(_txHashes: TxHash[]): Promise<(Tx | undefined)[]> {
@@ -3,7 +3,12 @@ import type { EthAddress } from '@aztec/foundation/eth-address';
3
3
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
4
4
  import { GasFees } from '@aztec/stdlib/gas';
5
5
  import { makeGlobalVariables } from '@aztec/stdlib/testing';
6
- import { type CheckpointGlobalVariables, type GlobalVariableBuilder, GlobalVariables } from '@aztec/stdlib/tx';
6
+ import {
7
+ type BuildCheckpointGlobalVariablesOpts,
8
+ type CheckpointGlobalVariables,
9
+ type GlobalVariableBuilder,
10
+ GlobalVariables,
11
+ } from '@aztec/stdlib/tx';
7
12
 
8
13
  export class TXEGlobalVariablesBuilder implements GlobalVariableBuilder {
9
14
  public getCurrentMinFees(): Promise<GasFees> {
@@ -23,6 +28,7 @@ export class TXEGlobalVariablesBuilder implements GlobalVariableBuilder {
23
28
  _coinbase: EthAddress,
24
29
  _feeRecipient: AztecAddress,
25
30
  _slotNumber: SlotNumber,
31
+ _opts?: BuildCheckpointGlobalVariablesOpts,
26
32
  ): Promise<CheckpointGlobalVariables> {
27
33
  const vars = makeGlobalVariables();
28
34
  return Promise.resolve({
@@ -33,6 +33,10 @@ export class MockEpochCache implements EpochCacheInterface {
33
33
  return EpochNumber.ZERO;
34
34
  }
35
35
 
36
+ pipeliningOffset(): number {
37
+ return 0;
38
+ }
39
+
36
40
  getEpochAndSlotNow(): EpochAndSlot & { nowMs: bigint } {
37
41
  return {
38
42
  epoch: EpochNumber.ZERO,
@@ -3,10 +3,10 @@ import { Fr } from '@aztec/foundation/curves/bn254';
3
3
  import { type Logger, createLogger } from '@aztec/foundation/log';
4
4
  import { KeyStore } from '@aztec/key-store';
5
5
  import { openTmpStore } from '@aztec/kv-store/lmdb-v2';
6
- import type { AccessScopes } from '@aztec/pxe/client/lazy';
7
6
  import {
8
7
  AddressStore,
9
8
  AnchorBlockStore,
9
+ CapsuleService,
10
10
  CapsuleStore,
11
11
  ContractStore,
12
12
  ContractSyncService,
@@ -336,7 +336,7 @@ export class TXESession implements TXESessionStateHandler {
336
336
 
337
337
  await new NoteService(this.noteStore, this.stateMachine.node, anchorBlock!, this.currentJobId).syncNoteNullifiers(
338
338
  contractAddress,
339
- 'ALL_SCOPES',
339
+ await this.keyStore.getAccounts(),
340
340
  );
341
341
  const latestBlock = await this.stateMachine.node.getBlockHeader('latest');
342
342
 
@@ -372,11 +372,11 @@ export class TXESession implements TXESessionStateHandler {
372
372
  senderTaggingStore: this.senderTaggingStore,
373
373
  recipientTaggingStore: this.recipientTaggingStore,
374
374
  senderAddressBookStore: this.senderAddressBookStore,
375
- capsuleStore: this.capsuleStore,
375
+ capsuleService: new CapsuleService(this.capsuleStore, await this.keyStore.getAccounts()),
376
376
  privateEventStore: this.privateEventStore,
377
377
  contractSyncService: this.stateMachine.contractSyncService,
378
378
  jobId: this.currentJobId,
379
- scopes: 'ALL_SCOPES',
379
+ scopes: await this.keyStore.getAccounts(),
380
380
  messageContextService: this.stateMachine.messageContextService,
381
381
  });
382
382
 
@@ -430,7 +430,7 @@ export class TXESession implements TXESessionStateHandler {
430
430
  this.stateMachine.node,
431
431
  anchorBlockHeader,
432
432
  this.currentJobId,
433
- ).syncNoteNullifiers(contractAddress, 'ALL_SCOPES');
433
+ ).syncNoteNullifiers(contractAddress, await this.keyStore.getAccounts());
434
434
 
435
435
  this.oracleHandler = new UtilityExecutionOracle({
436
436
  contractAddress,
@@ -444,12 +444,12 @@ export class TXESession implements TXESessionStateHandler {
444
444
  aztecNode: this.stateMachine.node,
445
445
  recipientTaggingStore: this.recipientTaggingStore,
446
446
  senderAddressBookStore: this.senderAddressBookStore,
447
- capsuleStore: this.capsuleStore,
447
+ capsuleService: new CapsuleService(this.capsuleStore, await this.keyStore.getAccounts()),
448
448
  privateEventStore: this.privateEventStore,
449
449
  messageContextService: this.stateMachine.messageContextService,
450
450
  contractSyncService: this.contractSyncService,
451
451
  jobId: this.currentJobId,
452
- scopes: 'ALL_SCOPES',
452
+ scopes: await this.keyStore.getAccounts(),
453
453
  });
454
454
 
455
455
  this.state = { name: 'UTILITY' };
@@ -518,7 +518,7 @@ export class TXESession implements TXESessionStateHandler {
518
518
  }
519
519
 
520
520
  private utilityExecutorForContractSync(anchorBlock: any) {
521
- return async (call: FunctionCall, scopes: AccessScopes) => {
521
+ return async (call: FunctionCall, scopes: AztecAddress[]) => {
522
522
  const entryPointArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(call.to, call.selector);
523
523
  if (entryPointArtifact.functionType !== FunctionType.UTILITY) {
524
524
  throw new Error(`Cannot run ${entryPointArtifact.functionType} function as utility`);
@@ -537,7 +537,7 @@ export class TXESession implements TXESessionStateHandler {
537
537
  aztecNode: this.stateMachine.node,
538
538
  recipientTaggingStore: this.recipientTaggingStore,
539
539
  senderAddressBookStore: this.senderAddressBookStore,
540
- capsuleStore: this.capsuleStore,
540
+ capsuleService: new CapsuleService(this.capsuleStore, scopes),
541
541
  privateEventStore: this.privateEventStore,
542
542
  messageContextService: this.stateMachine.messageContextService,
543
543
  contractSyncService: this.contractSyncService,