@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.
@@ -264,10 +264,11 @@ export class RPCTranslator {
264
264
  // PXE oracles
265
265
 
266
266
  // eslint-disable-next-line camelcase
267
- aztec_utl_assertCompatibleOracleVersion(foreignVersion: ForeignCallSingle) {
268
- const version = fromSingle(foreignVersion).toNumber();
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(version);
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(_slot: SlotTag = 'now'): Promise<EpochCommitteeInfo> {
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 & { nowSeconds: bigint } {
29
+ getEpochAndSlotInNextL1Slot(): EpochAndSlot & { now: bigint } {
46
30
  return {
47
31
  epoch: EpochNumber.ZERO,
48
32
  slot: SlotNumber(0),
49
33
  ts: 0n,
50
- nowSeconds: 0n,
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
  }
@@ -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, keyStore);
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
- 'ALL_SCOPES',
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, 'ALL_SCOPES'),
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: 'ALL_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, 'ALL_SCOPES');
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, 'ALL_SCOPES'),
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: 'ALL_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: AccessScopes) => {
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