@aztec/txe 0.0.1-commit.9ef841308 → 0.0.1-commit.a89ec08
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/oracle/txe_oracle_top_level_context.d.ts +7 -2
- package/dest/oracle/txe_oracle_top_level_context.d.ts.map +1 -1
- package/dest/oracle/txe_oracle_top_level_context.js +25 -14
- package/dest/rpc_translator.d.ts +35 -2
- package/dest/rpc_translator.d.ts.map +1 -1
- package/dest/rpc_translator.js +93 -3
- package/dest/state_machine/index.d.ts +2 -3
- package/dest/state_machine/index.d.ts.map +1 -1
- package/dest/state_machine/index.js +3 -3
- package/dest/state_machine/mock_epoch_cache.d.ts +3 -17
- package/dest/state_machine/mock_epoch_cache.d.ts.map +1 -1
- package/dest/state_machine/mock_epoch_cache.js +2 -32
- package/dest/txe_session.d.ts +1 -1
- package/dest/txe_session.d.ts.map +1 -1
- package/dest/txe_session.js +11 -8
- package/dest/util/encoding.d.ts +18 -87
- 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 +3 -1
- package/package.json +15 -15
- package/src/oracle/txe_oracle_top_level_context.ts +32 -19
- package/src/rpc_translator.ts +108 -3
- package/src/state_machine/index.ts +0 -4
- package/src/state_machine/mock_epoch_cache.ts +3 -42
- package/src/txe_session.ts +12 -16
- package/src/util/txe_public_contract_data_source.ts +2 -0
package/src/rpc_translator.ts
CHANGED
|
@@ -264,10 +264,11 @@ export class RPCTranslator {
|
|
|
264
264
|
// PXE oracles
|
|
265
265
|
|
|
266
266
|
// eslint-disable-next-line camelcase
|
|
267
|
-
|
|
268
|
-
const
|
|
267
|
+
aztec_utl_assertCompatibleOracleVersionV2(foreignMajor: ForeignCallSingle, foreignMinor: ForeignCallSingle) {
|
|
268
|
+
const major = fromSingle(foreignMajor).toNumber();
|
|
269
|
+
const minor = fromSingle(foreignMinor).toNumber();
|
|
269
270
|
|
|
270
|
-
this.handlerAsMisc().assertCompatibleOracleVersion(
|
|
271
|
+
this.handlerAsMisc().assertCompatibleOracleVersion(major, minor);
|
|
271
272
|
|
|
272
273
|
return toForeignCallResult([]);
|
|
273
274
|
}
|
|
@@ -750,6 +751,13 @@ export class RPCTranslator {
|
|
|
750
751
|
return toForeignCallResult([]);
|
|
751
752
|
}
|
|
752
753
|
|
|
754
|
+
// eslint-disable-next-line camelcase
|
|
755
|
+
async aztec_utl_getPendingTaggedLogs_v2(foreignScope: ForeignCallSingle) {
|
|
756
|
+
const scope = AztecAddress.fromField(fromSingle(foreignScope));
|
|
757
|
+
const slot = await this.handlerAsUtility().getPendingTaggedLogsV2(scope);
|
|
758
|
+
return toForeignCallResult([toSingle(slot)]);
|
|
759
|
+
}
|
|
760
|
+
|
|
753
761
|
// eslint-disable-next-line camelcase
|
|
754
762
|
public async aztec_utl_validateAndStoreEnqueuedNotesAndEvents(
|
|
755
763
|
foreignContractAddress: ForeignCallSingle,
|
|
@@ -778,6 +786,31 @@ export class RPCTranslator {
|
|
|
778
786
|
return toForeignCallResult([]);
|
|
779
787
|
}
|
|
780
788
|
|
|
789
|
+
// eslint-disable-next-line camelcase
|
|
790
|
+
public async aztec_utl_validateAndStoreEnqueuedNotesAndEvents_v2(
|
|
791
|
+
foreignNoteValidationRequestsArrayBaseSlot: ForeignCallSingle,
|
|
792
|
+
foreignEventValidationRequestsArrayBaseSlot: ForeignCallSingle,
|
|
793
|
+
foreignMaxNotePackedLen: ForeignCallSingle,
|
|
794
|
+
foreignMaxEventSerializedLen: ForeignCallSingle,
|
|
795
|
+
foreignScope: ForeignCallSingle,
|
|
796
|
+
) {
|
|
797
|
+
const noteValidationRequestsArrayBaseSlot = fromSingle(foreignNoteValidationRequestsArrayBaseSlot);
|
|
798
|
+
const eventValidationRequestsArrayBaseSlot = fromSingle(foreignEventValidationRequestsArrayBaseSlot);
|
|
799
|
+
const maxNotePackedLen = fromSingle(foreignMaxNotePackedLen).toNumber();
|
|
800
|
+
const maxEventSerializedLen = fromSingle(foreignMaxEventSerializedLen).toNumber();
|
|
801
|
+
const scope = AztecAddress.fromField(fromSingle(foreignScope));
|
|
802
|
+
|
|
803
|
+
await this.handlerAsUtility().validateAndStoreEnqueuedNotesAndEventsV2(
|
|
804
|
+
noteValidationRequestsArrayBaseSlot,
|
|
805
|
+
eventValidationRequestsArrayBaseSlot,
|
|
806
|
+
maxNotePackedLen,
|
|
807
|
+
maxEventSerializedLen,
|
|
808
|
+
scope,
|
|
809
|
+
);
|
|
810
|
+
|
|
811
|
+
return toForeignCallResult([]);
|
|
812
|
+
}
|
|
813
|
+
|
|
781
814
|
// eslint-disable-next-line camelcase
|
|
782
815
|
public async aztec_utl_getLogsByTag(
|
|
783
816
|
foreignContractAddress: ForeignCallSingle,
|
|
@@ -822,6 +855,20 @@ export class RPCTranslator {
|
|
|
822
855
|
return toForeignCallResult([]);
|
|
823
856
|
}
|
|
824
857
|
|
|
858
|
+
// eslint-disable-next-line camelcase
|
|
859
|
+
async aztec_utl_getLogsByTag_v2(foreignRequestArrayBaseSlot: ForeignCallSingle) {
|
|
860
|
+
const requestArrayBaseSlot = fromSingle(foreignRequestArrayBaseSlot);
|
|
861
|
+
const responseSlot = await this.handlerAsUtility().getLogsByTagV2(requestArrayBaseSlot);
|
|
862
|
+
return toForeignCallResult([toSingle(responseSlot)]);
|
|
863
|
+
}
|
|
864
|
+
|
|
865
|
+
// eslint-disable-next-line camelcase
|
|
866
|
+
async aztec_utl_getMessageContextsByTxHash_v2(foreignRequestArrayBaseSlot: ForeignCallSingle) {
|
|
867
|
+
const requestArrayBaseSlot = fromSingle(foreignRequestArrayBaseSlot);
|
|
868
|
+
const responseSlot = await this.handlerAsUtility().getMessageContextsByTxHashV2(requestArrayBaseSlot);
|
|
869
|
+
return toForeignCallResult([toSingle(responseSlot)]);
|
|
870
|
+
}
|
|
871
|
+
|
|
825
872
|
// eslint-disable-next-line camelcase
|
|
826
873
|
aztec_utl_setCapsule(
|
|
827
874
|
foreignContractAddress: ForeignCallSingle,
|
|
@@ -898,6 +945,64 @@ export class RPCTranslator {
|
|
|
898
945
|
return toForeignCallResult([]);
|
|
899
946
|
}
|
|
900
947
|
|
|
948
|
+
// eslint-disable-next-line camelcase
|
|
949
|
+
aztec_utl_pushEphemeral(foreignSlot: ForeignCallSingle, foreignElements: ForeignCallArray) {
|
|
950
|
+
const slot = fromSingle(foreignSlot);
|
|
951
|
+
const elements = fromArray(foreignElements);
|
|
952
|
+
const newLen = this.handlerAsUtility().pushEphemeral(slot, elements);
|
|
953
|
+
return toForeignCallResult([toSingle(new Fr(newLen))]);
|
|
954
|
+
}
|
|
955
|
+
|
|
956
|
+
// eslint-disable-next-line camelcase
|
|
957
|
+
aztec_utl_popEphemeral(foreignSlot: ForeignCallSingle) {
|
|
958
|
+
const slot = fromSingle(foreignSlot);
|
|
959
|
+
const element = this.handlerAsUtility().popEphemeral(slot);
|
|
960
|
+
return toForeignCallResult([toArray(element)]);
|
|
961
|
+
}
|
|
962
|
+
|
|
963
|
+
// eslint-disable-next-line camelcase
|
|
964
|
+
aztec_utl_getEphemeral(foreignSlot: ForeignCallSingle, foreignIndex: ForeignCallSingle) {
|
|
965
|
+
const slot = fromSingle(foreignSlot);
|
|
966
|
+
const index = fromSingle(foreignIndex).toNumber();
|
|
967
|
+
const element = this.handlerAsUtility().getEphemeral(slot, index);
|
|
968
|
+
return toForeignCallResult([toArray(element)]);
|
|
969
|
+
}
|
|
970
|
+
|
|
971
|
+
// eslint-disable-next-line camelcase
|
|
972
|
+
aztec_utl_setEphemeral(
|
|
973
|
+
foreignSlot: ForeignCallSingle,
|
|
974
|
+
foreignIndex: ForeignCallSingle,
|
|
975
|
+
foreignElements: ForeignCallArray,
|
|
976
|
+
) {
|
|
977
|
+
const slot = fromSingle(foreignSlot);
|
|
978
|
+
const index = fromSingle(foreignIndex).toNumber();
|
|
979
|
+
const elements = fromArray(foreignElements);
|
|
980
|
+
this.handlerAsUtility().setEphemeral(slot, index, elements);
|
|
981
|
+
return toForeignCallResult([]);
|
|
982
|
+
}
|
|
983
|
+
|
|
984
|
+
// eslint-disable-next-line camelcase
|
|
985
|
+
aztec_utl_getEphemeralLen(foreignSlot: ForeignCallSingle) {
|
|
986
|
+
const slot = fromSingle(foreignSlot);
|
|
987
|
+
const len = this.handlerAsUtility().getEphemeralLen(slot);
|
|
988
|
+
return toForeignCallResult([toSingle(new Fr(len))]);
|
|
989
|
+
}
|
|
990
|
+
|
|
991
|
+
// eslint-disable-next-line camelcase
|
|
992
|
+
aztec_utl_removeEphemeral(foreignSlot: ForeignCallSingle, foreignIndex: ForeignCallSingle) {
|
|
993
|
+
const slot = fromSingle(foreignSlot);
|
|
994
|
+
const index = fromSingle(foreignIndex).toNumber();
|
|
995
|
+
this.handlerAsUtility().removeEphemeral(slot, index);
|
|
996
|
+
return toForeignCallResult([]);
|
|
997
|
+
}
|
|
998
|
+
|
|
999
|
+
// eslint-disable-next-line camelcase
|
|
1000
|
+
aztec_utl_clearEphemeral(foreignSlot: ForeignCallSingle) {
|
|
1001
|
+
const slot = fromSingle(foreignSlot);
|
|
1002
|
+
this.handlerAsUtility().clearEphemeral(slot);
|
|
1003
|
+
return toForeignCallResult([]);
|
|
1004
|
+
}
|
|
1005
|
+
|
|
901
1006
|
// TODO: I forgot to add a corresponding function here, when I introduced an oracle method to txe_oracle.ts.
|
|
902
1007
|
// 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
|
|
903
1008
|
// to implement this function here. Isn't there a way to programmatically identify that this is missing, given the
|
|
@@ -3,7 +3,6 @@ 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 { KeyStore } from '@aztec/key-store';
|
|
7
6
|
import { type AnchorBlockStore, type ContractStore, ContractSyncService, type NoteStore } from '@aztec/pxe/server';
|
|
8
7
|
import { MessageContextService } from '@aztec/pxe/simulator';
|
|
9
8
|
import { L2Block } from '@aztec/stdlib/block';
|
|
@@ -36,7 +35,6 @@ export class TXEStateMachine {
|
|
|
36
35
|
anchorBlockStore: AnchorBlockStore,
|
|
37
36
|
contractStore: ContractStore,
|
|
38
37
|
noteStore: NoteStore,
|
|
39
|
-
keyStore: KeyStore,
|
|
40
38
|
) {
|
|
41
39
|
const synchronizer = await TXESynchronizer.create();
|
|
42
40
|
const aztecNodeConfig = {} as AztecNodeConfig;
|
|
@@ -61,7 +59,6 @@ export class TXEStateMachine {
|
|
|
61
59
|
new MockEpochCache(),
|
|
62
60
|
getPackageVersion() ?? '',
|
|
63
61
|
new TestCircuitVerifier(),
|
|
64
|
-
new TestCircuitVerifier(),
|
|
65
62
|
undefined,
|
|
66
63
|
log,
|
|
67
64
|
);
|
|
@@ -70,7 +67,6 @@ export class TXEStateMachine {
|
|
|
70
67
|
node,
|
|
71
68
|
contractStore,
|
|
72
69
|
noteStore,
|
|
73
|
-
() => keyStore.getAccounts(),
|
|
74
70
|
createLogger('txe:contract_sync'),
|
|
75
71
|
);
|
|
76
72
|
|
|
@@ -8,7 +8,7 @@ import { EmptyL1RollupConstants, type L1RollupConstants } from '@aztec/stdlib/ep
|
|
|
8
8
|
* Since in TXE we don't validate transactions, mock suffices here.
|
|
9
9
|
*/
|
|
10
10
|
export class MockEpochCache implements EpochCacheInterface {
|
|
11
|
-
getCommittee(
|
|
11
|
+
getCommittee(): Promise<EpochCommitteeInfo> {
|
|
12
12
|
return Promise.resolve({
|
|
13
13
|
committee: undefined,
|
|
14
14
|
seed: 0n,
|
|
@@ -17,22 +17,6 @@ export class MockEpochCache implements EpochCacheInterface {
|
|
|
17
17
|
});
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
getSlotNow(): SlotNumber {
|
|
21
|
-
return SlotNumber(0);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
getTargetSlot(): SlotNumber {
|
|
25
|
-
return SlotNumber(0);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
getEpochNow(): EpochNumber {
|
|
29
|
-
return EpochNumber.ZERO;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
getTargetEpoch(): EpochNumber {
|
|
33
|
-
return EpochNumber.ZERO;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
20
|
getEpochAndSlotNow(): EpochAndSlot & { nowMs: bigint } {
|
|
37
21
|
return {
|
|
38
22
|
epoch: EpochNumber.ZERO,
|
|
@@ -42,23 +26,15 @@ export class MockEpochCache implements EpochCacheInterface {
|
|
|
42
26
|
};
|
|
43
27
|
}
|
|
44
28
|
|
|
45
|
-
getEpochAndSlotInNextL1Slot(): EpochAndSlot & {
|
|
29
|
+
getEpochAndSlotInNextL1Slot(): EpochAndSlot & { now: bigint } {
|
|
46
30
|
return {
|
|
47
31
|
epoch: EpochNumber.ZERO,
|
|
48
32
|
slot: SlotNumber(0),
|
|
49
33
|
ts: 0n,
|
|
50
|
-
|
|
34
|
+
now: 0n,
|
|
51
35
|
};
|
|
52
36
|
}
|
|
53
37
|
|
|
54
|
-
getTargetEpochAndSlotInNextL1Slot(): EpochAndSlot & { nowSeconds: bigint } {
|
|
55
|
-
return this.getEpochAndSlotInNextL1Slot();
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
isProposerPipeliningEnabled(): boolean {
|
|
59
|
-
return false;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
38
|
getProposerIndexEncoding(_epoch: EpochNumber, _slot: SlotNumber, _seed: bigint): `0x${string}` {
|
|
63
39
|
return '0x00';
|
|
64
40
|
}
|
|
@@ -74,13 +50,6 @@ export class MockEpochCache implements EpochCacheInterface {
|
|
|
74
50
|
};
|
|
75
51
|
}
|
|
76
52
|
|
|
77
|
-
getTargetAndNextSlot(): { targetSlot: SlotNumber; nextSlot: SlotNumber } {
|
|
78
|
-
return {
|
|
79
|
-
targetSlot: SlotNumber(0),
|
|
80
|
-
nextSlot: SlotNumber(0),
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
|
-
|
|
84
53
|
getProposerAttesterAddressInSlot(_slot: SlotNumber): Promise<EthAddress | undefined> {
|
|
85
54
|
return Promise.resolve(undefined);
|
|
86
55
|
}
|
|
@@ -97,14 +66,6 @@ export class MockEpochCache implements EpochCacheInterface {
|
|
|
97
66
|
return Promise.resolve([]);
|
|
98
67
|
}
|
|
99
68
|
|
|
100
|
-
isEscapeHatchOpen(_epoch: EpochNumber): Promise<boolean> {
|
|
101
|
-
return Promise.resolve(false);
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
isEscapeHatchOpenAtSlot(_slot: SlotTag): Promise<boolean> {
|
|
105
|
-
return Promise.resolve(false);
|
|
106
|
-
}
|
|
107
|
-
|
|
108
69
|
getL1Constants(): L1RollupConstants {
|
|
109
70
|
return EmptyL1RollupConstants;
|
|
110
71
|
}
|
package/src/txe_session.ts
CHANGED
|
@@ -3,7 +3,6 @@ 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,
|
|
@@ -180,7 +179,7 @@ export class TXESession implements TXESessionStateHandler {
|
|
|
180
179
|
|
|
181
180
|
const archiver = new TXEArchiver(store);
|
|
182
181
|
const anchorBlockStore = new AnchorBlockStore(store);
|
|
183
|
-
const stateMachine = await TXEStateMachine.create(archiver, anchorBlockStore, contractStore, noteStore
|
|
182
|
+
const stateMachine = await TXEStateMachine.create(archiver, anchorBlockStore, contractStore, noteStore);
|
|
184
183
|
|
|
185
184
|
const nextBlockTimestamp = BigInt(Math.floor(new Date().getTime() / 1000));
|
|
186
185
|
const version = new Fr(await stateMachine.node.getVersion());
|
|
@@ -189,13 +188,7 @@ export class TXESession implements TXESessionStateHandler {
|
|
|
189
188
|
const initialJobId = jobCoordinator.beginJob();
|
|
190
189
|
|
|
191
190
|
const logger = createLogger('txe:session');
|
|
192
|
-
const contractSyncService = new ContractSyncService(
|
|
193
|
-
stateMachine.node,
|
|
194
|
-
contractStore,
|
|
195
|
-
noteStore,
|
|
196
|
-
() => keyStore.getAccounts(),
|
|
197
|
-
logger,
|
|
198
|
-
);
|
|
191
|
+
const contractSyncService = new ContractSyncService(stateMachine.node, contractStore, noteStore, logger);
|
|
199
192
|
|
|
200
193
|
const topLevelOracleHandler = new TXEOracleTopLevelContext(
|
|
201
194
|
stateMachine,
|
|
@@ -343,7 +336,7 @@ export class TXESession implements TXESessionStateHandler {
|
|
|
343
336
|
|
|
344
337
|
await new NoteService(this.noteStore, this.stateMachine.node, anchorBlock!, this.currentJobId).syncNoteNullifiers(
|
|
345
338
|
contractAddress,
|
|
346
|
-
|
|
339
|
+
await this.keyStore.getAccounts(),
|
|
347
340
|
);
|
|
348
341
|
const latestBlock = await this.stateMachine.node.getBlockHeader('latest');
|
|
349
342
|
|
|
@@ -379,11 +372,12 @@ export class TXESession implements TXESessionStateHandler {
|
|
|
379
372
|
senderTaggingStore: this.senderTaggingStore,
|
|
380
373
|
recipientTaggingStore: this.recipientTaggingStore,
|
|
381
374
|
senderAddressBookStore: this.senderAddressBookStore,
|
|
382
|
-
capsuleService: new CapsuleService(this.capsuleStore,
|
|
375
|
+
capsuleService: new CapsuleService(this.capsuleStore, await this.keyStore.getAccounts()),
|
|
383
376
|
privateEventStore: this.privateEventStore,
|
|
384
377
|
contractSyncService: this.stateMachine.contractSyncService,
|
|
378
|
+
l2TipsStore: this.stateMachine.node,
|
|
385
379
|
jobId: this.currentJobId,
|
|
386
|
-
scopes:
|
|
380
|
+
scopes: await this.keyStore.getAccounts(),
|
|
387
381
|
messageContextService: this.stateMachine.messageContextService,
|
|
388
382
|
});
|
|
389
383
|
|
|
@@ -437,7 +431,7 @@ export class TXESession implements TXESessionStateHandler {
|
|
|
437
431
|
this.stateMachine.node,
|
|
438
432
|
anchorBlockHeader,
|
|
439
433
|
this.currentJobId,
|
|
440
|
-
).syncNoteNullifiers(contractAddress,
|
|
434
|
+
).syncNoteNullifiers(contractAddress, await this.keyStore.getAccounts());
|
|
441
435
|
|
|
442
436
|
this.oracleHandler = new UtilityExecutionOracle({
|
|
443
437
|
contractAddress,
|
|
@@ -451,12 +445,13 @@ export class TXESession implements TXESessionStateHandler {
|
|
|
451
445
|
aztecNode: this.stateMachine.node,
|
|
452
446
|
recipientTaggingStore: this.recipientTaggingStore,
|
|
453
447
|
senderAddressBookStore: this.senderAddressBookStore,
|
|
454
|
-
capsuleService: new CapsuleService(this.capsuleStore,
|
|
448
|
+
capsuleService: new CapsuleService(this.capsuleStore, await this.keyStore.getAccounts()),
|
|
455
449
|
privateEventStore: this.privateEventStore,
|
|
456
450
|
messageContextService: this.stateMachine.messageContextService,
|
|
457
451
|
contractSyncService: this.contractSyncService,
|
|
452
|
+
l2TipsStore: this.stateMachine.node,
|
|
458
453
|
jobId: this.currentJobId,
|
|
459
|
-
scopes:
|
|
454
|
+
scopes: await this.keyStore.getAccounts(),
|
|
460
455
|
});
|
|
461
456
|
|
|
462
457
|
this.state = { name: 'UTILITY' };
|
|
@@ -525,7 +520,7 @@ export class TXESession implements TXESessionStateHandler {
|
|
|
525
520
|
}
|
|
526
521
|
|
|
527
522
|
private utilityExecutorForContractSync(anchorBlock: any) {
|
|
528
|
-
return async (call: FunctionCall, scopes:
|
|
523
|
+
return async (call: FunctionCall, scopes: AztecAddress[]) => {
|
|
529
524
|
const entryPointArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(call.to, call.selector);
|
|
530
525
|
if (entryPointArtifact.functionType !== FunctionType.UTILITY) {
|
|
531
526
|
throw new Error(`Cannot run ${entryPointArtifact.functionType} function as utility`);
|
|
@@ -548,6 +543,7 @@ export class TXESession implements TXESessionStateHandler {
|
|
|
548
543
|
privateEventStore: this.privateEventStore,
|
|
549
544
|
messageContextService: this.stateMachine.messageContextService,
|
|
550
545
|
contractSyncService: this.contractSyncService,
|
|
546
|
+
l2TipsStore: this.stateMachine.node,
|
|
551
547
|
jobId: this.currentJobId,
|
|
552
548
|
scopes,
|
|
553
549
|
});
|
|
@@ -26,6 +26,8 @@ export class TXEPublicContractDataSource implements ContractDataSource {
|
|
|
26
26
|
packedBytecode: contractClass.packedBytecode,
|
|
27
27
|
privateFunctionsRoot: contractClass.privateFunctionsRoot,
|
|
28
28
|
version: contractClass.version,
|
|
29
|
+
privateFunctions: [],
|
|
30
|
+
utilityFunctions: [],
|
|
29
31
|
};
|
|
30
32
|
}
|
|
31
33
|
|