@aztec/txe 0.0.1-commit.ec5f612 → 0.0.1-commit.ec7ac5448
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/index.d.ts +1 -1
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +8 -6
- package/dest/oracle/interfaces.d.ts +28 -28
- package/dest/oracle/interfaces.d.ts.map +1 -1
- package/dest/oracle/txe_oracle_public_context.d.ts +13 -13
- package/dest/oracle/txe_oracle_public_context.d.ts.map +1 -1
- package/dest/oracle/txe_oracle_public_context.js +12 -12
- package/dest/oracle/txe_oracle_top_level_context.d.ts +27 -21
- package/dest/oracle/txe_oracle_top_level_context.d.ts.map +1 -1
- package/dest/oracle/txe_oracle_top_level_context.js +54 -39
- package/dest/rpc_translator.d.ts +120 -82
- package/dest/rpc_translator.d.ts.map +1 -1
- package/dest/rpc_translator.js +363 -152
- package/dest/state_machine/archiver.d.ts +3 -3
- package/dest/state_machine/archiver.d.ts.map +1 -1
- package/dest/state_machine/archiver.js +7 -8
- package/dest/state_machine/dummy_p2p_client.d.ts +3 -2
- package/dest/state_machine/dummy_p2p_client.d.ts.map +1 -1
- package/dest/state_machine/dummy_p2p_client.js +5 -2
- package/dest/state_machine/global_variable_builder.d.ts +3 -2
- package/dest/state_machine/global_variable_builder.d.ts.map +1 -1
- package/dest/state_machine/global_variable_builder.js +1 -1
- package/dest/state_machine/index.d.ts +4 -2
- package/dest/state_machine/index.d.ts.map +1 -1
- package/dest/state_machine/index.js +7 -3
- package/dest/state_machine/mock_epoch_cache.d.ts +18 -3
- package/dest/state_machine/mock_epoch_cache.d.ts.map +1 -1
- package/dest/state_machine/mock_epoch_cache.js +35 -2
- package/dest/state_machine/synchronizer.d.ts +5 -5
- package/dest/state_machine/synchronizer.d.ts.map +1 -1
- package/dest/state_machine/synchronizer.js +3 -3
- package/dest/txe_session.d.ts +4 -3
- package/dest/txe_session.d.ts.map +1 -1
- package/dest/txe_session.js +24 -15
- package/dest/util/encoding.d.ts +69 -1
- package/dest/util/encoding.d.ts.map +1 -1
- package/dest/util/txe_public_contract_data_source.d.ts +1 -1
- package/dest/util/txe_public_contract_data_source.d.ts.map +1 -1
- package/dest/util/txe_public_contract_data_source.js +1 -3
- package/package.json +15 -15
- package/src/index.ts +8 -5
- package/src/oracle/interfaces.ts +27 -31
- package/src/oracle/txe_oracle_public_context.ts +12 -12
- package/src/oracle/txe_oracle_top_level_context.ts +64 -43
- package/src/rpc_translator.ts +422 -174
- package/src/state_machine/archiver.ts +6 -5
- package/src/state_machine/dummy_p2p_client.ts +6 -2
- package/src/state_machine/global_variable_builder.ts +2 -0
- package/src/state_machine/index.ts +6 -1
- package/src/state_machine/mock_epoch_cache.ts +46 -3
- package/src/state_machine/synchronizer.ts +4 -4
- package/src/txe_session.ts +26 -13
- package/src/util/txe_public_contract_data_source.ts +0 -2
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
CONTRACT_INSTANCE_REGISTRY_CONTRACT_ADDRESS,
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
DEFAULT_TEARDOWN_DA_GAS_LIMIT,
|
|
6
|
-
DEFAULT_TEARDOWN_L2_GAS_LIMIT,
|
|
3
|
+
MAX_PROCESSABLE_DA_GAS_PER_CHECKPOINT,
|
|
4
|
+
MAX_PROCESSABLE_L2_GAS,
|
|
7
5
|
NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP,
|
|
8
6
|
} from '@aztec/constants';
|
|
9
7
|
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
@@ -12,13 +10,14 @@ import { Fr } from '@aztec/foundation/curves/bn254';
|
|
|
12
10
|
import { LogLevels, type Logger, applyStringFormatting, createLogger } from '@aztec/foundation/log';
|
|
13
11
|
import { TestDateProvider } from '@aztec/foundation/timer';
|
|
14
12
|
import type { KeyStore } from '@aztec/key-store';
|
|
15
|
-
import type { AccessScopes } from '@aztec/pxe/client/lazy';
|
|
16
13
|
import {
|
|
17
14
|
AddressStore,
|
|
15
|
+
CapsuleService,
|
|
18
16
|
CapsuleStore,
|
|
19
17
|
type ContractStore,
|
|
18
|
+
type ContractSyncService,
|
|
20
19
|
NoteStore,
|
|
21
|
-
|
|
20
|
+
ORACLE_VERSION_MAJOR,
|
|
22
21
|
PrivateEventStore,
|
|
23
22
|
RecipientTaggingStore,
|
|
24
23
|
SenderAddressBookStore,
|
|
@@ -56,7 +55,13 @@ import { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
|
56
55
|
import { PublicSimulatorConfig } from '@aztec/stdlib/avm';
|
|
57
56
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
58
57
|
import { type ContractInstanceWithAddress, computePartialAddress } from '@aztec/stdlib/contract';
|
|
59
|
-
import {
|
|
58
|
+
import {
|
|
59
|
+
FALLBACK_TEARDOWN_DA_GAS_LIMIT,
|
|
60
|
+
FALLBACK_TEARDOWN_L2_GAS_LIMIT,
|
|
61
|
+
Gas,
|
|
62
|
+
GasFees,
|
|
63
|
+
GasSettings,
|
|
64
|
+
} from '@aztec/stdlib/gas';
|
|
60
65
|
import { computeCalldataHash, computeProtocolNullifier, siloNullifier } from '@aztec/stdlib/hash';
|
|
61
66
|
import {
|
|
62
67
|
PartialPrivateTailPublicInputsForPublic,
|
|
@@ -111,27 +116,40 @@ export class TXEOracleTopLevelContext implements IMiscOracle, ITxeExecutionOracl
|
|
|
111
116
|
private version: Fr,
|
|
112
117
|
private chainId: Fr,
|
|
113
118
|
private authwits: Map<string, AuthWitness>,
|
|
119
|
+
private readonly contractSyncService: ContractSyncService,
|
|
114
120
|
) {
|
|
115
121
|
this.logger = createLogger('txe:top_level_context');
|
|
116
122
|
this.logger.debug('Entering Top Level Context');
|
|
117
123
|
}
|
|
118
124
|
|
|
119
|
-
|
|
120
|
-
|
|
125
|
+
private contractOracleVersion: { major: number; minor: number } | undefined;
|
|
126
|
+
|
|
127
|
+
assertCompatibleOracleVersion(major: number, minor: number): void {
|
|
128
|
+
if (major !== ORACLE_VERSION_MAJOR) {
|
|
129
|
+
const hint =
|
|
130
|
+
major > ORACLE_VERSION_MAJOR
|
|
131
|
+
? 'The contract was compiled with a newer version of Aztec.nr than this aztec cli version supports. Upgrade your aztec cli version to a compatible version.'
|
|
132
|
+
: 'The contract was compiled with an older version of Aztec.nr than this aztec cli version supports. Recompile the contract with a compatible version of Aztec.nr.';
|
|
121
133
|
throw new Error(
|
|
122
|
-
`Incompatible
|
|
134
|
+
`Incompatible aztec cli version: ${hint} See https://docs.aztec.network/errors/8 (expected oracle major version ${ORACLE_VERSION_MAJOR}, got ${major})`,
|
|
123
135
|
);
|
|
124
136
|
}
|
|
137
|
+
this.contractOracleVersion = { major, minor };
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
// Prefixed with "nonOracleFunction" as it is not used as an oracle handler.
|
|
141
|
+
nonOracleFunctionGetContractOracleVersion(): { major: number; minor: number } | undefined {
|
|
142
|
+
return this.contractOracleVersion;
|
|
125
143
|
}
|
|
126
144
|
|
|
127
145
|
// This is typically only invoked in private contexts, but it is convenient to also have it in top-level for testing
|
|
128
146
|
// setup.
|
|
129
|
-
|
|
147
|
+
getRandomField(): Fr {
|
|
130
148
|
return Fr.random();
|
|
131
149
|
}
|
|
132
150
|
|
|
133
151
|
// We instruct users to debug contracts via this oracle, so it makes sense that they'd expect it to also work in tests
|
|
134
|
-
|
|
152
|
+
log(level: number, message: string, fields: Fr[]): Promise<void> {
|
|
135
153
|
if (!LogLevels[level]) {
|
|
136
154
|
throw new Error(`Invalid log level: ${level}`);
|
|
137
155
|
}
|
|
@@ -141,23 +159,23 @@ export class TXEOracleTopLevelContext implements IMiscOracle, ITxeExecutionOracl
|
|
|
141
159
|
return Promise.resolve();
|
|
142
160
|
}
|
|
143
161
|
|
|
144
|
-
|
|
162
|
+
getDefaultAddress(): AztecAddress {
|
|
145
163
|
return DEFAULT_ADDRESS;
|
|
146
164
|
}
|
|
147
165
|
|
|
148
|
-
async
|
|
166
|
+
async getNextBlockNumber(): Promise<BlockNumber> {
|
|
149
167
|
return BlockNumber((await this.getLastBlockNumber()) + 1);
|
|
150
168
|
}
|
|
151
169
|
|
|
152
|
-
|
|
170
|
+
getNextBlockTimestamp(): Promise<bigint> {
|
|
153
171
|
return Promise.resolve(this.nextBlockTimestamp);
|
|
154
172
|
}
|
|
155
173
|
|
|
156
|
-
async
|
|
174
|
+
async getLastBlockTimestamp() {
|
|
157
175
|
return (await this.stateMachine.node.getBlockHeader('latest'))!.globalVariables.timestamp;
|
|
158
176
|
}
|
|
159
177
|
|
|
160
|
-
async
|
|
178
|
+
async getLastTxEffects() {
|
|
161
179
|
const latestBlockNumber = await this.stateMachine.archiver.getBlockNumber();
|
|
162
180
|
const block = await this.stateMachine.archiver.getBlock(latestBlockNumber);
|
|
163
181
|
|
|
@@ -173,7 +191,7 @@ export class TXEOracleTopLevelContext implements IMiscOracle, ITxeExecutionOracl
|
|
|
173
191
|
|
|
174
192
|
async syncContractNonOracleMethod(contractAddress: AztecAddress, scope: AztecAddress, jobId: string) {
|
|
175
193
|
if (contractAddress.equals(DEFAULT_ADDRESS)) {
|
|
176
|
-
this.logger.debug(`Skipping sync in
|
|
194
|
+
this.logger.debug(`Skipping sync in getPrivateEvents because the events correspond to the default address.`);
|
|
177
195
|
return;
|
|
178
196
|
}
|
|
179
197
|
|
|
@@ -190,7 +208,7 @@ export class TXEOracleTopLevelContext implements IMiscOracle, ITxeExecutionOracl
|
|
|
190
208
|
);
|
|
191
209
|
}
|
|
192
210
|
|
|
193
|
-
async
|
|
211
|
+
async getPrivateEvents(selector: EventSelector, contractAddress: AztecAddress, scope: AztecAddress) {
|
|
194
212
|
return (
|
|
195
213
|
await this.privateEventStore.getPrivateEvents(selector, {
|
|
196
214
|
contractAddress,
|
|
@@ -201,7 +219,7 @@ export class TXEOracleTopLevelContext implements IMiscOracle, ITxeExecutionOracl
|
|
|
201
219
|
).map(e => e.packedEvent);
|
|
202
220
|
}
|
|
203
221
|
|
|
204
|
-
async
|
|
222
|
+
async advanceBlocksBy(blocks: number) {
|
|
205
223
|
this.logger.debug(`time traveling ${blocks} blocks`);
|
|
206
224
|
|
|
207
225
|
for (let i = 0; i < blocks; i++) {
|
|
@@ -209,12 +227,12 @@ export class TXEOracleTopLevelContext implements IMiscOracle, ITxeExecutionOracl
|
|
|
209
227
|
}
|
|
210
228
|
}
|
|
211
229
|
|
|
212
|
-
|
|
230
|
+
advanceTimestampBy(duration: UInt64) {
|
|
213
231
|
this.logger.debug(`time traveling ${duration} seconds`);
|
|
214
232
|
this.nextBlockTimestamp += duration;
|
|
215
233
|
}
|
|
216
234
|
|
|
217
|
-
async
|
|
235
|
+
async deploy(artifact: ContractArtifact, instance: ContractInstanceWithAddress, secret: Fr) {
|
|
218
236
|
// Emit deployment nullifier
|
|
219
237
|
await this.mineBlock({
|
|
220
238
|
nullifiers: [
|
|
@@ -226,7 +244,7 @@ export class TXEOracleTopLevelContext implements IMiscOracle, ITxeExecutionOracl
|
|
|
226
244
|
});
|
|
227
245
|
|
|
228
246
|
if (!secret.equals(Fr.ZERO)) {
|
|
229
|
-
await this.
|
|
247
|
+
await this.addAccount(artifact, instance, secret);
|
|
230
248
|
} else {
|
|
231
249
|
await this.contractStore.addContractInstance(instance);
|
|
232
250
|
await this.contractStore.addContractArtifact(artifact);
|
|
@@ -234,7 +252,7 @@ export class TXEOracleTopLevelContext implements IMiscOracle, ITxeExecutionOracl
|
|
|
234
252
|
}
|
|
235
253
|
}
|
|
236
254
|
|
|
237
|
-
async
|
|
255
|
+
async addAccount(artifact: ContractArtifact, instance: ContractInstanceWithAddress, secret: Fr) {
|
|
238
256
|
const partialAddress = await computePartialAddress(instance);
|
|
239
257
|
|
|
240
258
|
this.logger.debug(`Deployed ${artifact.name} at ${instance.address}`);
|
|
@@ -249,7 +267,7 @@ export class TXEOracleTopLevelContext implements IMiscOracle, ITxeExecutionOracl
|
|
|
249
267
|
return completeAddress;
|
|
250
268
|
}
|
|
251
269
|
|
|
252
|
-
async
|
|
270
|
+
async createAccount(secret: Fr) {
|
|
253
271
|
// This is a foot gun !
|
|
254
272
|
const completeAddress = await this.keyStore.addAccount(secret, secret);
|
|
255
273
|
await this.accountStore.setAccount(completeAddress.address, completeAddress);
|
|
@@ -259,7 +277,7 @@ export class TXEOracleTopLevelContext implements IMiscOracle, ITxeExecutionOracl
|
|
|
259
277
|
return completeAddress;
|
|
260
278
|
}
|
|
261
279
|
|
|
262
|
-
async
|
|
280
|
+
async addAuthWitness(address: AztecAddress, messageHash: Fr) {
|
|
263
281
|
const account = await this.accountStore.getAccount(address);
|
|
264
282
|
const privateKey = await this.keyStore.getMasterSecretKey(account.publicKeys.masterIncomingViewingPublicKey);
|
|
265
283
|
|
|
@@ -272,7 +290,7 @@ export class TXEOracleTopLevelContext implements IMiscOracle, ITxeExecutionOracl
|
|
|
272
290
|
}
|
|
273
291
|
|
|
274
292
|
async mineBlock(options: { nullifiers?: Fr[] } = {}) {
|
|
275
|
-
const blockNumber = await this.
|
|
293
|
+
const blockNumber = await this.getNextBlockNumber();
|
|
276
294
|
|
|
277
295
|
const txEffect = TxEffect.empty();
|
|
278
296
|
txEffect.nullifiers = [getSingleTxBlockRequestHash(blockNumber), ...(options.nullifiers ?? [])];
|
|
@@ -296,7 +314,7 @@ export class TXEOracleTopLevelContext implements IMiscOracle, ITxeExecutionOracl
|
|
|
296
314
|
await this.stateMachine.handleL2Block(block);
|
|
297
315
|
}
|
|
298
316
|
|
|
299
|
-
async
|
|
317
|
+
async privateCallNewFlow(
|
|
300
318
|
from: AztecAddress,
|
|
301
319
|
targetContractAddress: AztecAddress = AztecAddress.zero(),
|
|
302
320
|
functionSelector: FunctionSelector = FunctionSelector.empty(),
|
|
@@ -322,7 +340,7 @@ export class TXEOracleTopLevelContext implements IMiscOracle, ITxeExecutionOracl
|
|
|
322
340
|
const effectiveScopes = from.isZero() ? [] : [from];
|
|
323
341
|
|
|
324
342
|
// Sync notes before executing private function to discover notes from previous transactions
|
|
325
|
-
const utilityExecutor = async (call: FunctionCall, execScopes:
|
|
343
|
+
const utilityExecutor = async (call: FunctionCall, execScopes: AztecAddress[]) => {
|
|
326
344
|
await this.executeUtilityCall(call, execScopes, jobId);
|
|
327
345
|
};
|
|
328
346
|
|
|
@@ -336,12 +354,12 @@ export class TXEOracleTopLevelContext implements IMiscOracle, ITxeExecutionOracl
|
|
|
336
354
|
effectiveScopes,
|
|
337
355
|
);
|
|
338
356
|
|
|
339
|
-
const blockNumber = await this.
|
|
357
|
+
const blockNumber = await this.getNextBlockNumber();
|
|
340
358
|
|
|
341
359
|
const callContext = new CallContext(from, targetContractAddress, functionSelector, isStaticCall);
|
|
342
360
|
|
|
343
|
-
const gasLimits = new Gas(
|
|
344
|
-
const teardownGasLimits = new Gas(
|
|
361
|
+
const gasLimits = new Gas(MAX_PROCESSABLE_DA_GAS_PER_CHECKPOINT, MAX_PROCESSABLE_L2_GAS);
|
|
362
|
+
const teardownGasLimits = new Gas(FALLBACK_TEARDOWN_DA_GAS_LIMIT, FALLBACK_TEARDOWN_L2_GAS_LIMIT);
|
|
345
363
|
const gasSettings = new GasSettings(gasLimits, teardownGasLimits, GasFees.empty(), GasFees.empty());
|
|
346
364
|
|
|
347
365
|
const txContext = new TxContext(this.chainId, this.version, gasSettings);
|
|
@@ -376,7 +394,7 @@ export class TXEOracleTopLevelContext implements IMiscOracle, ITxeExecutionOracl
|
|
|
376
394
|
senderTaggingStore: this.senderTaggingStore,
|
|
377
395
|
recipientTaggingStore: this.recipientTaggingStore,
|
|
378
396
|
senderAddressBookStore: this.senderAddressBookStore,
|
|
379
|
-
|
|
397
|
+
capsuleService: new CapsuleService(this.capsuleStore, effectiveScopes),
|
|
380
398
|
privateEventStore: this.privateEventStore,
|
|
381
399
|
contractSyncService: this.stateMachine.contractSyncService,
|
|
382
400
|
jobId,
|
|
@@ -387,6 +405,7 @@ export class TXEOracleTopLevelContext implements IMiscOracle, ITxeExecutionOracl
|
|
|
387
405
|
// contract would perform, including setting senderForTags.
|
|
388
406
|
senderForTags: from,
|
|
389
407
|
simulator,
|
|
408
|
+
messageContextService: this.stateMachine.messageContextService,
|
|
390
409
|
});
|
|
391
410
|
|
|
392
411
|
// Note: This is a slight modification of simulator.run without any of the checks. Maybe we should modify simulator.run with a boolean value to skip checks.
|
|
@@ -409,7 +428,7 @@ export class TXEOracleTopLevelContext implements IMiscOracle, ITxeExecutionOracl
|
|
|
409
428
|
);
|
|
410
429
|
const publicFunctionsCalldata = await Promise.all(
|
|
411
430
|
publicCallRequests.map(async r => {
|
|
412
|
-
const calldata = await privateExecutionOracle.
|
|
431
|
+
const calldata = await privateExecutionOracle.getHashPreimage(r.calldataHash);
|
|
413
432
|
return new HashedValues(calldata, r.calldataHash);
|
|
414
433
|
}),
|
|
415
434
|
);
|
|
@@ -523,7 +542,7 @@ export class TXEOracleTopLevelContext implements IMiscOracle, ITxeExecutionOracl
|
|
|
523
542
|
return executionResult.returnValues ?? [];
|
|
524
543
|
}
|
|
525
544
|
|
|
526
|
-
async
|
|
545
|
+
async publicCallNewFlow(
|
|
527
546
|
from: AztecAddress,
|
|
528
547
|
targetContractAddress: AztecAddress,
|
|
529
548
|
calldata: Fr[],
|
|
@@ -533,11 +552,11 @@ export class TXEOracleTopLevelContext implements IMiscOracle, ITxeExecutionOracl
|
|
|
533
552
|
`Executing public function ${await this.contractStore.getDebugFunctionName(targetContractAddress, FunctionSelector.fromField(calldata[0]))}@${targetContractAddress} isStaticCall=${isStaticCall}`,
|
|
534
553
|
);
|
|
535
554
|
|
|
536
|
-
const blockNumber = await this.
|
|
555
|
+
const blockNumber = await this.getNextBlockNumber();
|
|
537
556
|
|
|
538
|
-
const gasLimits = new Gas(
|
|
557
|
+
const gasLimits = new Gas(MAX_PROCESSABLE_DA_GAS_PER_CHECKPOINT, MAX_PROCESSABLE_L2_GAS);
|
|
539
558
|
|
|
540
|
-
const teardownGasLimits = new Gas(
|
|
559
|
+
const teardownGasLimits = new Gas(FALLBACK_TEARDOWN_DA_GAS_LIMIT, FALLBACK_TEARDOWN_L2_GAS_LIMIT);
|
|
541
560
|
|
|
542
561
|
const gasSettings = new GasSettings(gasLimits, teardownGasLimits, GasFees.empty(), GasFees.empty());
|
|
543
562
|
|
|
@@ -678,7 +697,7 @@ export class TXEOracleTopLevelContext implements IMiscOracle, ITxeExecutionOracl
|
|
|
678
697
|
return returnValues ?? [];
|
|
679
698
|
}
|
|
680
699
|
|
|
681
|
-
async
|
|
700
|
+
async executeUtilityFunction(
|
|
682
701
|
targetContractAddress: AztecAddress,
|
|
683
702
|
functionSelector: FunctionSelector,
|
|
684
703
|
args: Fr[],
|
|
@@ -699,7 +718,7 @@ export class TXEOracleTopLevelContext implements IMiscOracle, ITxeExecutionOracl
|
|
|
699
718
|
},
|
|
700
719
|
blockHeader,
|
|
701
720
|
jobId,
|
|
702
|
-
|
|
721
|
+
await this.keyStore.getAccounts(),
|
|
703
722
|
);
|
|
704
723
|
|
|
705
724
|
const call = FunctionCall.from({
|
|
@@ -713,10 +732,10 @@ export class TXEOracleTopLevelContext implements IMiscOracle, ITxeExecutionOracl
|
|
|
713
732
|
returnTypes: [],
|
|
714
733
|
});
|
|
715
734
|
|
|
716
|
-
return this.executeUtilityCall(call,
|
|
735
|
+
return this.executeUtilityCall(call, await this.keyStore.getAccounts(), jobId);
|
|
717
736
|
}
|
|
718
737
|
|
|
719
|
-
private async executeUtilityCall(call: FunctionCall, scopes:
|
|
738
|
+
private async executeUtilityCall(call: FunctionCall, scopes: AztecAddress[], jobId: string): Promise<Fr[]> {
|
|
720
739
|
const entryPointArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(call.to, call.selector);
|
|
721
740
|
if (entryPointArtifact.functionType !== FunctionType.UTILITY) {
|
|
722
741
|
throw new Error(`Cannot run ${entryPointArtifact.functionType} function as utility`);
|
|
@@ -741,8 +760,10 @@ export class TXEOracleTopLevelContext implements IMiscOracle, ITxeExecutionOracl
|
|
|
741
760
|
aztecNode: this.stateMachine.node,
|
|
742
761
|
recipientTaggingStore: this.recipientTaggingStore,
|
|
743
762
|
senderAddressBookStore: this.senderAddressBookStore,
|
|
744
|
-
|
|
763
|
+
capsuleService: new CapsuleService(this.capsuleStore, scopes),
|
|
745
764
|
privateEventStore: this.privateEventStore,
|
|
765
|
+
messageContextService: this.stateMachine.messageContextService,
|
|
766
|
+
contractSyncService: this.contractSyncService,
|
|
746
767
|
jobId,
|
|
747
768
|
scopes,
|
|
748
769
|
});
|