@aztec/pxe 0.43.0 → 0.45.0

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.
Files changed (46) hide show
  1. package/dest/database/deferred_note_dao.d.ts +3 -2
  2. package/dest/database/deferred_note_dao.d.ts.map +1 -1
  3. package/dest/database/deferred_note_dao.js +3 -2
  4. package/dest/database/incoming_note_dao.d.ts +3 -2
  5. package/dest/database/incoming_note_dao.d.ts.map +1 -1
  6. package/dest/database/incoming_note_dao.js +4 -3
  7. package/dest/database/index.d.ts +1 -0
  8. package/dest/database/index.d.ts.map +1 -1
  9. package/dest/database/index.js +2 -1
  10. package/dest/database/outgoing_note_dao.d.ts +3 -2
  11. package/dest/database/outgoing_note_dao.d.ts.map +1 -1
  12. package/dest/database/outgoing_note_dao.js +3 -2
  13. package/dest/index.d.ts +3 -0
  14. package/dest/index.d.ts.map +1 -1
  15. package/dest/index.js +4 -1
  16. package/dest/kernel_prover/kernel_prover.d.ts.map +1 -1
  17. package/dest/kernel_prover/kernel_prover.js +4 -5
  18. package/dest/kernel_prover/private_inputs_builders/build_private_kernel_init_hints.d.ts +2 -2
  19. package/dest/kernel_prover/private_inputs_builders/build_private_kernel_init_hints.d.ts.map +1 -1
  20. package/dest/kernel_prover/private_inputs_builders/build_private_kernel_init_hints.js +4 -9
  21. package/dest/kernel_prover/private_inputs_builders/index.d.ts +0 -1
  22. package/dest/kernel_prover/private_inputs_builders/index.d.ts.map +1 -1
  23. package/dest/kernel_prover/private_inputs_builders/index.js +1 -2
  24. package/dest/note_processor/note_processor.d.ts.map +1 -1
  25. package/dest/note_processor/note_processor.js +6 -13
  26. package/dest/pxe_http/pxe_http_server.d.ts.map +1 -1
  27. package/dest/pxe_http/pxe_http_server.js +3 -1
  28. package/dest/pxe_service/pxe_service.d.ts +5 -2
  29. package/dest/pxe_service/pxe_service.d.ts.map +1 -1
  30. package/dest/pxe_service/pxe_service.js +48 -10
  31. package/package.json +23 -15
  32. package/src/database/deferred_note_dao.ts +3 -2
  33. package/src/database/incoming_note_dao.ts +4 -3
  34. package/src/database/index.ts +1 -0
  35. package/src/database/outgoing_note_dao.ts +3 -2
  36. package/src/index.ts +3 -0
  37. package/src/kernel_prover/kernel_prover.ts +1 -5
  38. package/src/kernel_prover/private_inputs_builders/build_private_kernel_init_hints.ts +1 -12
  39. package/src/kernel_prover/private_inputs_builders/index.ts +0 -1
  40. package/src/note_processor/note_processor.ts +11 -12
  41. package/src/pxe_http/pxe_http_server.ts +2 -0
  42. package/src/pxe_service/pxe_service.ts +96 -8
  43. package/dest/kernel_prover/private_inputs_builders/build_private_kernel_tail_hints.d.ts +0 -3
  44. package/dest/kernel_prover/private_inputs_builders/build_private_kernel_tail_hints.d.ts.map +0 -1
  45. package/dest/kernel_prover/private_inputs_builders/build_private_kernel_tail_hints.js +0 -14
  46. package/src/kernel_prover/private_inputs_builders/build_private_kernel_tail_hints.ts +0 -62
@@ -4,6 +4,7 @@ import {
4
4
  EncryptedNoteTxL2Logs,
5
5
  EncryptedTxL2Logs,
6
6
  type EventMetadata,
7
+ EventType,
7
8
  ExtendedNote,
8
9
  type FunctionCall,
9
10
  type GetUnencryptedLogsResponse,
@@ -35,7 +36,13 @@ import {
35
36
  getContractClassFromArtifact,
36
37
  } from '@aztec/circuits.js';
37
38
  import { computeNoteHashNonce, siloNullifier } from '@aztec/circuits.js/hash';
38
- import { type ContractArtifact, type DecodedReturn, FunctionSelector, encodeArguments } from '@aztec/foundation/abi';
39
+ import {
40
+ type ContractArtifact,
41
+ type DecodedReturn,
42
+ EventSelector,
43
+ FunctionSelector,
44
+ encodeArguments,
45
+ } from '@aztec/foundation/abi';
39
46
  import { type Fq, Fr, type Point } from '@aztec/foundation/fields';
40
47
  import { SerialQueue } from '@aztec/foundation/fifo';
41
48
  import { type DebugLogger, createDebugLogger } from '@aztec/foundation/log';
@@ -286,7 +293,7 @@ export class PXEService implements PXE {
286
293
  if (!(await this.getContractInstance(contract))) {
287
294
  throw new Error(`Contract ${contract.toString()} is not deployed`);
288
295
  }
289
- return await this.node.getPublicStorageAt(contract, slot);
296
+ return await this.node.getPublicStorageAt(contract, slot, 'latest');
290
297
  }
291
298
 
292
299
  public async getIncomingNotes(filter: IncomingNotesFilter): Promise<ExtendedNote[]> {
@@ -834,7 +841,43 @@ export class PXEService implements PXE {
834
841
  return !!(await this.node.getContract(address));
835
842
  }
836
843
 
837
- public async getEvents<T>(from: number, limit: number, eventMetadata: EventMetadata<T>, ivpk: Point): Promise<T[]> {
844
+ public getEvents<T>(
845
+ type: EventType.Encrypted,
846
+ eventMetadata: EventMetadata<T>,
847
+ from: number,
848
+ limit: number,
849
+ vpks: Point[],
850
+ ): Promise<T[]>;
851
+ public getEvents<T>(
852
+ type: EventType.Unencrypted,
853
+ eventMetadata: EventMetadata<T>,
854
+ from: number,
855
+ limit: number,
856
+ ): Promise<T[]>;
857
+ public getEvents<T>(
858
+ type: EventType,
859
+ eventMetadata: EventMetadata<T>,
860
+ from: number,
861
+ limit: number,
862
+ vpks: Point[] = [],
863
+ ): Promise<T[]> {
864
+ if (type.includes(EventType.Encrypted)) {
865
+ return this.getEncryptedEvents(from, limit, eventMetadata, vpks);
866
+ }
867
+
868
+ return this.getUnencryptedEvents(from, limit, eventMetadata);
869
+ }
870
+
871
+ async getEncryptedEvents<T>(
872
+ from: number,
873
+ limit: number,
874
+ eventMetadata: EventMetadata<T>,
875
+ vpks: Point[],
876
+ ): Promise<T[]> {
877
+ if (vpks.length === 0) {
878
+ throw new Error('Tried to get encrypted events without supplying any viewing public keys');
879
+ }
880
+
838
881
  const blocks = await this.node.getBlocks(from, limit);
839
882
 
840
883
  const txEffects = blocks.flatMap(block => block.body.txEffects);
@@ -842,18 +885,27 @@ export class PXEService implements PXE {
842
885
 
843
886
  const encryptedLogs = encryptedTxLogs.flatMap(encryptedTxLog => encryptedTxLog.unrollLogs());
844
887
 
845
- const ivsk = await this.keyStore.getMasterSecretKey(ivpk);
888
+ const vsks = await Promise.all(vpks.map(vpk => this.keyStore.getMasterSecretKey(vpk)));
889
+
890
+ const visibleEvents = encryptedLogs.flatMap(encryptedLog => {
891
+ for (const sk of vsks) {
892
+ const decryptedLog =
893
+ TaggedLog.decryptAsIncoming(encryptedLog, sk, L1EventPayload) ??
894
+ TaggedLog.decryptAsOutgoing(encryptedLog, sk, L1EventPayload);
895
+ if (decryptedLog !== undefined) {
896
+ return [decryptedLog];
897
+ }
898
+ }
846
899
 
847
- const visibleEvents = encryptedLogs
848
- .map(encryptedLog => TaggedLog.decryptAsIncoming(encryptedLog, ivsk, L1EventPayload))
849
- .filter(item => item !== undefined) as TaggedLog<L1EventPayload>[];
900
+ return [];
901
+ });
850
902
 
851
903
  const decodedEvents = visibleEvents
852
904
  .map(visibleEvent => {
853
905
  if (visibleEvent.payload === undefined) {
854
906
  return undefined;
855
907
  }
856
- if (!FunctionSelector.fromField(visibleEvent.payload.eventTypeId).equals(eventMetadata.functionSelector)) {
908
+ if (!visibleEvent.payload.eventTypeId.equals(eventMetadata.eventSelector)) {
857
909
  return undefined;
858
910
  }
859
911
  if (visibleEvent.payload.event.items.length !== eventMetadata.fieldNames.length) {
@@ -874,4 +926,40 @@ export class PXEService implements PXE {
874
926
 
875
927
  return decodedEvents;
876
928
  }
929
+
930
+ async getUnencryptedEvents<T>(from: number, limit: number, eventMetadata: EventMetadata<T>): Promise<T[]> {
931
+ const { logs: unencryptedLogs } = await this.node.getUnencryptedLogs({
932
+ fromBlock: from,
933
+ toBlock: from + limit,
934
+ });
935
+
936
+ const decodedEvents = unencryptedLogs
937
+ .map(unencryptedLog => {
938
+ const unencryptedLogBuf = unencryptedLog.log.data;
939
+ if (
940
+ !EventSelector.fromBuffer(unencryptedLogBuf.subarray(unencryptedLogBuf.byteLength - 4)).equals(
941
+ eventMetadata.eventSelector,
942
+ )
943
+ ) {
944
+ return undefined;
945
+ }
946
+
947
+ if (unencryptedLogBuf.byteLength !== eventMetadata.fieldNames.length * 32 + 32) {
948
+ throw new Error(
949
+ 'Something is weird here, we have matching FunctionSelectors, but the actual payload has mismatched length',
950
+ );
951
+ }
952
+
953
+ return eventMetadata.fieldNames.reduce(
954
+ (acc, curr, i) => ({
955
+ ...acc,
956
+ [curr]: new Fr(unencryptedLogBuf.subarray(i * 32, i * 32 + 32)),
957
+ }),
958
+ {} as T,
959
+ );
960
+ })
961
+ .filter(unencryptedLog => unencryptedLog !== undefined) as T[];
962
+
963
+ return decodedEvents;
964
+ }
877
965
  }
@@ -1,3 +0,0 @@
1
- import { type PrivateKernelCircuitPublicInputs, PrivateKernelTailHints } from '@aztec/circuits.js';
2
- export declare function buildPrivateKernelTailHints(publicInputs: PrivateKernelCircuitPublicInputs): PrivateKernelTailHints;
3
- //# sourceMappingURL=build_private_kernel_tail_hints.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"build_private_kernel_tail_hints.d.ts","sourceRoot":"","sources":["../../../src/kernel_prover/private_inputs_builders/build_private_kernel_tail_hints.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,gCAAgC,EACrC,sBAAsB,EAEvB,MAAM,oBAAoB,CAAC;AAE5B,wBAAgB,2BAA2B,CAAC,YAAY,EAAE,gCAAgC,GAAG,sBAAsB,CAiDlH"}
@@ -1,14 +0,0 @@
1
- import { MAX_ENCRYPTED_LOGS_PER_TX, MAX_NEW_NOTE_HASHES_PER_TX, MAX_NEW_NULLIFIERS_PER_TX, MAX_NOTE_ENCRYPTED_LOGS_PER_TX, MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX, MAX_UNENCRYPTED_LOGS_PER_TX, PrivateKernelTailHints, sortByCounterGetSortedHints, } from '@aztec/circuits.js';
2
- export function buildPrivateKernelTailHints(publicInputs) {
3
- const [sortedNoteHashes, sortedNoteHashesIndexes] = sortByCounterGetSortedHints(publicInputs.end.newNoteHashes, MAX_NEW_NOTE_HASHES_PER_TX);
4
- const [sortedNullifiers, sortedNullifiersIndexes] = sortByCounterGetSortedHints(publicInputs.end.newNullifiers, MAX_NEW_NULLIFIERS_PER_TX);
5
- const [sortedNoteEncryptedLogHashes, sortedNoteEncryptedLogHashesIndexes] = sortByCounterGetSortedHints(publicInputs.end.noteEncryptedLogsHashes, MAX_NOTE_ENCRYPTED_LOGS_PER_TX);
6
- const [sortedEncryptedLogHashes, sortedEncryptedLogHashesIndexes] = sortByCounterGetSortedHints(publicInputs.end.encryptedLogsHashes, MAX_ENCRYPTED_LOGS_PER_TX);
7
- const [sortedUnencryptedLogHashes, sortedUnencryptedLogHashesIndexes] = sortByCounterGetSortedHints(publicInputs.end.unencryptedLogsHashes, MAX_UNENCRYPTED_LOGS_PER_TX);
8
- const [sortedCallRequests, sortedCallRequestsIndexes] = sortByCounterGetSortedHints(publicInputs.end.publicCallStack, MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX, {
9
- ascending: false,
10
- hintIndexesBy: 'sorted',
11
- });
12
- return new PrivateKernelTailHints(sortedNoteHashes, sortedNoteHashesIndexes, sortedNullifiers, sortedNullifiersIndexes, sortedNoteEncryptedLogHashes, sortedNoteEncryptedLogHashesIndexes, sortedEncryptedLogHashes, sortedEncryptedLogHashesIndexes, sortedUnencryptedLogHashes, sortedUnencryptedLogHashesIndexes, sortedCallRequests, sortedCallRequestsIndexes);
13
- }
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRfcHJpdmF0ZV9rZXJuZWxfdGFpbF9oaW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9rZXJuZWxfcHJvdmVyL3ByaXZhdGVfaW5wdXRzX2J1aWxkZXJzL2J1aWxkX3ByaXZhdGVfa2VybmVsX3RhaWxfaGludHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHlCQUF5QixFQUN6QiwwQkFBMEIsRUFDMUIseUJBQXlCLEVBQ3pCLDhCQUE4QixFQUM5QixtQ0FBbUMsRUFDbkMsMkJBQTJCLEVBRTNCLHNCQUFzQixFQUN0QiwyQkFBMkIsR0FDNUIsTUFBTSxvQkFBb0IsQ0FBQztBQUU1QixNQUFNLFVBQVUsMkJBQTJCLENBQUMsWUFBOEM7SUFDeEYsTUFBTSxDQUFDLGdCQUFnQixFQUFFLHVCQUF1QixDQUFDLEdBQUcsMkJBQTJCLENBQzdFLFlBQVksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUM5QiwwQkFBMEIsQ0FDM0IsQ0FBQztJQUVGLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSx1QkFBdUIsQ0FBQyxHQUFHLDJCQUEyQixDQUM3RSxZQUFZLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFDOUIseUJBQXlCLENBQzFCLENBQUM7SUFFRixNQUFNLENBQUMsNEJBQTRCLEVBQUUsbUNBQW1DLENBQUMsR0FBRywyQkFBMkIsQ0FDckcsWUFBWSxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsRUFDeEMsOEJBQThCLENBQy9CLENBQUM7SUFFRixNQUFNLENBQUMsd0JBQXdCLEVBQUUsK0JBQStCLENBQUMsR0FBRywyQkFBMkIsQ0FDN0YsWUFBWSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsRUFDcEMseUJBQXlCLENBQzFCLENBQUM7SUFFRixNQUFNLENBQUMsMEJBQTBCLEVBQUUsaUNBQWlDLENBQUMsR0FBRywyQkFBMkIsQ0FDakcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsRUFDdEMsMkJBQTJCLENBQzVCLENBQUM7SUFFRixNQUFNLENBQUMsa0JBQWtCLEVBQUUseUJBQXlCLENBQUMsR0FBRywyQkFBMkIsQ0FDakYsWUFBWSxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQ2hDLG1DQUFtQyxFQUNuQztRQUNFLFNBQVMsRUFBRSxLQUFLO1FBQ2hCLGFBQWEsRUFBRSxRQUFRO0tBQ3hCLENBQ0YsQ0FBQztJQUVGLE9BQU8sSUFBSSxzQkFBc0IsQ0FDL0IsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLDRCQUE0QixFQUM1QixtQ0FBbUMsRUFDbkMsd0JBQXdCLEVBQ3hCLCtCQUErQixFQUMvQiwwQkFBMEIsRUFDMUIsaUNBQWlDLEVBQ2pDLGtCQUFrQixFQUNsQix5QkFBeUIsQ0FDMUIsQ0FBQztBQUNKLENBQUMifQ==
@@ -1,62 +0,0 @@
1
- import {
2
- MAX_ENCRYPTED_LOGS_PER_TX,
3
- MAX_NEW_NOTE_HASHES_PER_TX,
4
- MAX_NEW_NULLIFIERS_PER_TX,
5
- MAX_NOTE_ENCRYPTED_LOGS_PER_TX,
6
- MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX,
7
- MAX_UNENCRYPTED_LOGS_PER_TX,
8
- type PrivateKernelCircuitPublicInputs,
9
- PrivateKernelTailHints,
10
- sortByCounterGetSortedHints,
11
- } from '@aztec/circuits.js';
12
-
13
- export function buildPrivateKernelTailHints(publicInputs: PrivateKernelCircuitPublicInputs): PrivateKernelTailHints {
14
- const [sortedNoteHashes, sortedNoteHashesIndexes] = sortByCounterGetSortedHints(
15
- publicInputs.end.newNoteHashes,
16
- MAX_NEW_NOTE_HASHES_PER_TX,
17
- );
18
-
19
- const [sortedNullifiers, sortedNullifiersIndexes] = sortByCounterGetSortedHints(
20
- publicInputs.end.newNullifiers,
21
- MAX_NEW_NULLIFIERS_PER_TX,
22
- );
23
-
24
- const [sortedNoteEncryptedLogHashes, sortedNoteEncryptedLogHashesIndexes] = sortByCounterGetSortedHints(
25
- publicInputs.end.noteEncryptedLogsHashes,
26
- MAX_NOTE_ENCRYPTED_LOGS_PER_TX,
27
- );
28
-
29
- const [sortedEncryptedLogHashes, sortedEncryptedLogHashesIndexes] = sortByCounterGetSortedHints(
30
- publicInputs.end.encryptedLogsHashes,
31
- MAX_ENCRYPTED_LOGS_PER_TX,
32
- );
33
-
34
- const [sortedUnencryptedLogHashes, sortedUnencryptedLogHashesIndexes] = sortByCounterGetSortedHints(
35
- publicInputs.end.unencryptedLogsHashes,
36
- MAX_UNENCRYPTED_LOGS_PER_TX,
37
- );
38
-
39
- const [sortedCallRequests, sortedCallRequestsIndexes] = sortByCounterGetSortedHints(
40
- publicInputs.end.publicCallStack,
41
- MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX,
42
- {
43
- ascending: false,
44
- hintIndexesBy: 'sorted',
45
- },
46
- );
47
-
48
- return new PrivateKernelTailHints(
49
- sortedNoteHashes,
50
- sortedNoteHashesIndexes,
51
- sortedNullifiers,
52
- sortedNullifiersIndexes,
53
- sortedNoteEncryptedLogHashes,
54
- sortedNoteEncryptedLogHashesIndexes,
55
- sortedEncryptedLogHashes,
56
- sortedEncryptedLogHashesIndexes,
57
- sortedUnencryptedLogHashes,
58
- sortedUnencryptedLogHashesIndexes,
59
- sortedCallRequests,
60
- sortedCallRequestsIndexes,
61
- );
62
- }