@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.
- package/dest/database/deferred_note_dao.d.ts +3 -2
- package/dest/database/deferred_note_dao.d.ts.map +1 -1
- package/dest/database/deferred_note_dao.js +3 -2
- package/dest/database/incoming_note_dao.d.ts +3 -2
- package/dest/database/incoming_note_dao.d.ts.map +1 -1
- package/dest/database/incoming_note_dao.js +4 -3
- package/dest/database/index.d.ts +1 -0
- package/dest/database/index.d.ts.map +1 -1
- package/dest/database/index.js +2 -1
- package/dest/database/outgoing_note_dao.d.ts +3 -2
- package/dest/database/outgoing_note_dao.d.ts.map +1 -1
- package/dest/database/outgoing_note_dao.js +3 -2
- package/dest/index.d.ts +3 -0
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +4 -1
- package/dest/kernel_prover/kernel_prover.d.ts.map +1 -1
- package/dest/kernel_prover/kernel_prover.js +4 -5
- package/dest/kernel_prover/private_inputs_builders/build_private_kernel_init_hints.d.ts +2 -2
- package/dest/kernel_prover/private_inputs_builders/build_private_kernel_init_hints.d.ts.map +1 -1
- package/dest/kernel_prover/private_inputs_builders/build_private_kernel_init_hints.js +4 -9
- package/dest/kernel_prover/private_inputs_builders/index.d.ts +0 -1
- package/dest/kernel_prover/private_inputs_builders/index.d.ts.map +1 -1
- package/dest/kernel_prover/private_inputs_builders/index.js +1 -2
- package/dest/note_processor/note_processor.d.ts.map +1 -1
- package/dest/note_processor/note_processor.js +6 -13
- package/dest/pxe_http/pxe_http_server.d.ts.map +1 -1
- package/dest/pxe_http/pxe_http_server.js +3 -1
- package/dest/pxe_service/pxe_service.d.ts +5 -2
- package/dest/pxe_service/pxe_service.d.ts.map +1 -1
- package/dest/pxe_service/pxe_service.js +48 -10
- package/package.json +23 -15
- package/src/database/deferred_note_dao.ts +3 -2
- package/src/database/incoming_note_dao.ts +4 -3
- package/src/database/index.ts +1 -0
- package/src/database/outgoing_note_dao.ts +3 -2
- package/src/index.ts +3 -0
- package/src/kernel_prover/kernel_prover.ts +1 -5
- package/src/kernel_prover/private_inputs_builders/build_private_kernel_init_hints.ts +1 -12
- package/src/kernel_prover/private_inputs_builders/index.ts +0 -1
- package/src/note_processor/note_processor.ts +11 -12
- package/src/pxe_http/pxe_http_server.ts +2 -0
- package/src/pxe_service/pxe_service.ts +96 -8
- package/dest/kernel_prover/private_inputs_builders/build_private_kernel_tail_hints.d.ts +0 -3
- package/dest/kernel_prover/private_inputs_builders/build_private_kernel_tail_hints.d.ts.map +0 -1
- package/dest/kernel_prover/private_inputs_builders/build_private_kernel_tail_hints.js +0 -14
- 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 {
|
|
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
|
|
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
|
|
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
|
-
|
|
848
|
-
|
|
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 (!
|
|
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
|
-
}
|