@aztec/pxe 0.44.0 → 0.45.1

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 (45) hide show
  1. package/dest/database/deferred_note_dao.d.ts +2 -2
  2. package/dest/database/deferred_note_dao.d.ts.map +1 -1
  3. package/dest/database/deferred_note_dao.js +4 -4
  4. package/dest/kernel_prover/kernel_prover.d.ts.map +1 -1
  5. package/dest/kernel_prover/kernel_prover.js +13 -17
  6. package/dest/kernel_prover/private_inputs_builders/build_private_kernel_reset_hints.d.ts.map +1 -1
  7. package/dest/kernel_prover/private_inputs_builders/build_private_kernel_reset_hints.js +9 -11
  8. package/dest/kernel_prover/private_inputs_builders/index.d.ts +0 -4
  9. package/dest/kernel_prover/private_inputs_builders/index.d.ts.map +1 -1
  10. package/dest/kernel_prover/private_inputs_builders/index.js +1 -5
  11. package/dest/kernel_prover/test/test_circuit_prover.d.ts.map +1 -1
  12. package/dest/kernel_prover/test/test_circuit_prover.js +2 -2
  13. package/dest/note_processor/note_processor.d.ts.map +1 -1
  14. package/dest/note_processor/note_processor.js +10 -10
  15. package/dest/note_processor/produce_note_dao.d.ts +2 -2
  16. package/dest/note_processor/produce_note_dao.d.ts.map +1 -1
  17. package/dest/note_processor/produce_note_dao.js +7 -7
  18. package/dest/pxe_service/pxe_service.d.ts +5 -2
  19. package/dest/pxe_service/pxe_service.d.ts.map +1 -1
  20. package/dest/pxe_service/pxe_service.js +48 -9
  21. package/package.json +14 -14
  22. package/src/database/deferred_note_dao.ts +2 -2
  23. package/src/kernel_prover/kernel_prover.ts +13 -30
  24. package/src/kernel_prover/private_inputs_builders/build_private_kernel_reset_hints.ts +14 -35
  25. package/src/kernel_prover/private_inputs_builders/index.ts +0 -4
  26. package/src/kernel_prover/test/test_circuit_prover.ts +1 -3
  27. package/src/note_processor/note_processor.ts +9 -14
  28. package/src/note_processor/produce_note_dao.ts +6 -6
  29. package/src/pxe_service/pxe_service.ts +96 -7
  30. package/dest/kernel_prover/private_inputs_builders/build_private_kernel_init_hints.d.ts +0 -3
  31. package/dest/kernel_prover/private_inputs_builders/build_private_kernel_init_hints.d.ts.map +0 -1
  32. package/dest/kernel_prover/private_inputs_builders/build_private_kernel_init_hints.js +0 -11
  33. package/dest/kernel_prover/private_inputs_builders/build_private_kernel_inner_hints.d.ts +0 -3
  34. package/dest/kernel_prover/private_inputs_builders/build_private_kernel_inner_hints.d.ts.map +0 -1
  35. package/dest/kernel_prover/private_inputs_builders/build_private_kernel_inner_hints.js +0 -6
  36. package/dest/kernel_prover/private_inputs_builders/build_private_kernel_reset_outputs.d.ts +0 -4
  37. package/dest/kernel_prover/private_inputs_builders/build_private_kernel_reset_outputs.d.ts.map +0 -1
  38. package/dest/kernel_prover/private_inputs_builders/build_private_kernel_reset_outputs.js +0 -14
  39. package/dest/kernel_prover/private_inputs_builders/build_private_kernel_tail_hints.d.ts +0 -3
  40. package/dest/kernel_prover/private_inputs_builders/build_private_kernel_tail_hints.d.ts.map +0 -1
  41. package/dest/kernel_prover/private_inputs_builders/build_private_kernel_tail_hints.js +0 -14
  42. package/src/kernel_prover/private_inputs_builders/build_private_kernel_init_hints.ts +0 -28
  43. package/src/kernel_prover/private_inputs_builders/build_private_kernel_inner_hints.ts +0 -17
  44. package/src/kernel_prover/private_inputs_builders/build_private_kernel_reset_outputs.ts +0 -45
  45. package/src/kernel_prover/private_inputs_builders/build_private_kernel_tail_hints.ts +0 -62
@@ -1,11 +1,6 @@
1
1
  import { type AztecNode, L1NotePayload, type L2Block, TaggedLog } from '@aztec/circuit-types';
2
2
  import { type NoteProcessorStats } from '@aztec/circuit-types/stats';
3
- import {
4
- type AztecAddress,
5
- INITIAL_L2_BLOCK_NUM,
6
- MAX_NEW_NOTE_HASHES_PER_TX,
7
- type PublicKey,
8
- } from '@aztec/circuits.js';
3
+ import { type AztecAddress, INITIAL_L2_BLOCK_NUM, MAX_NOTE_HASHES_PER_TX, type PublicKey } from '@aztec/circuits.js';
9
4
  import { type Fr } from '@aztec/foundation/fields';
10
5
  import { type Logger, createDebugLogger } from '@aztec/foundation/log';
11
6
  import { Timer } from '@aztec/foundation/timer';
@@ -128,7 +123,7 @@ export class NoteProcessor {
128
123
  const { txLogs } = block.body.noteEncryptedLogs;
129
124
  const dataStartIndexForBlock =
130
125
  block.header.state.partial.noteHashTree.nextAvailableLeafIndex -
131
- block.body.numberOfTxsIncludingPadded * MAX_NEW_NOTE_HASHES_PER_TX;
126
+ block.body.numberOfTxsIncludingPadded * MAX_NOTE_HASHES_PER_TX;
132
127
 
133
128
  // We are using set for `userPertainingTxIndices` to avoid duplicates. This would happen in case there were
134
129
  // multiple encrypted logs in a tx pertaining to a user.
@@ -138,8 +133,8 @@ export class NoteProcessor {
138
133
  // Iterate over all the encrypted logs and try decrypting them. If successful, store the note.
139
134
  for (let indexOfTxInABlock = 0; indexOfTxInABlock < txLogs.length; ++indexOfTxInABlock) {
140
135
  this.stats.txs++;
141
- const dataStartIndexForTx = dataStartIndexForBlock + indexOfTxInABlock * MAX_NEW_NOTE_HASHES_PER_TX;
142
- const newNoteHashes = block.body.txEffects[indexOfTxInABlock].noteHashes;
136
+ const dataStartIndexForTx = dataStartIndexForBlock + indexOfTxInABlock * MAX_NOTE_HASHES_PER_TX;
137
+ const noteHashes = block.body.txEffects[indexOfTxInABlock].noteHashes;
143
138
  // Note: Each tx generates a `TxL2Logs` object and for this reason we can rely on its index corresponding
144
139
  // to the index of a tx in a block.
145
140
  const txFunctionLogs = txLogs[indexOfTxInABlock].functionLogs;
@@ -172,7 +167,7 @@ export class NoteProcessor {
172
167
  outgoingTaggedNote ? this.ovpkM : undefined,
173
168
  payload,
174
169
  txHash,
175
- newNoteHashes,
170
+ noteHashes,
176
171
  dataStartIndexForTx,
177
172
  excludedIndices,
178
173
  this.log,
@@ -245,10 +240,10 @@ export class NoteProcessor {
245
240
  });
246
241
  }
247
242
 
248
- const newNullifiers: Fr[] = blocksAndNotes.flatMap(b =>
243
+ const nullifiers: Fr[] = blocksAndNotes.flatMap(b =>
249
244
  b.block.body.txEffects.flatMap(txEffect => txEffect.nullifiers),
250
245
  );
251
- const removedNotes = await this.db.removeNullifiedNotes(newNullifiers, this.ivpkM);
246
+ const removedNotes = await this.db.removeNullifiedNotes(nullifiers, this.ivpkM);
252
247
  removedNotes.forEach(noteDao => {
253
248
  this.log.verbose(
254
249
  `Removed note for contract ${noteDao.contractAddress} at slot ${
@@ -305,7 +300,7 @@ export class NoteProcessor {
305
300
  const outgoingNotes: OutgoingNoteDao[] = [];
306
301
 
307
302
  for (const deferredNote of deferredNoteDaos) {
308
- const { publicKey, note, contractAddress, storageSlot, noteTypeId, txHash, newNoteHashes, dataStartIndexForTx } =
303
+ const { publicKey, note, contractAddress, storageSlot, noteTypeId, txHash, noteHashes, dataStartIndexForTx } =
309
304
  deferredNote;
310
305
  const payload = new L1NotePayload(note, contractAddress, storageSlot, noteTypeId);
311
306
 
@@ -323,7 +318,7 @@ export class NoteProcessor {
323
318
  isOutgoing ? this.ovpkM : undefined,
324
319
  payload,
325
320
  txHash,
326
- newNoteHashes,
321
+ noteHashes,
327
322
  dataStartIndexForTx,
328
323
  excludedIndices,
329
324
  this.log,
@@ -18,7 +18,7 @@ import { OutgoingNoteDao } from '../database/outgoing_note_dao.js';
18
18
  * @param ovpkM - The public counterpart to the secret key to be used in the decryption of outgoing note logs.
19
19
  * @param payload - An instance of l1NotePayload.
20
20
  * @param txHash - The hash of the transaction that created the note. Equivalent to the first nullifier of the transaction.
21
- * @param newNoteHashes - New note hashes in this transaction, one of which belongs to this note.
21
+ * @param noteHashes - New note hashes in this transaction, one of which belongs to this note.
22
22
  * @param dataStartIndexForTx - The next available leaf index for the note hash tree for this transaction.
23
23
  * @param excludedIndices - Indices that have been assigned a note in the same tx. Notes in a tx can have the same l1NotePayload, we need to find a different index for each replicate.
24
24
  * @param simulator - An instance of AcirSimulator.
@@ -30,7 +30,7 @@ export async function produceNoteDaos(
30
30
  ovpkM: PublicKey | undefined,
31
31
  payload: L1NotePayload,
32
32
  txHash: TxHash,
33
- newNoteHashes: Fr[],
33
+ noteHashes: Fr[],
34
34
  dataStartIndexForTx: number,
35
35
  excludedIndices: Set<number>,
36
36
  log: Logger,
@@ -53,7 +53,7 @@ export async function produceNoteDaos(
53
53
  if (ivpkM) {
54
54
  const { noteHashIndex, nonce, innerNoteHash, siloedNullifier } = await findNoteIndexAndNullifier(
55
55
  simulator,
56
- newNoteHashes,
56
+ noteHashes,
57
57
  txHash,
58
58
  payload,
59
59
  excludedIndices,
@@ -87,7 +87,7 @@ export async function produceNoteDaos(
87
87
  payload.storageSlot,
88
88
  payload.noteTypeId,
89
89
  txHash,
90
- newNoteHashes,
90
+ noteHashes,
91
91
  dataStartIndexForTx,
92
92
  );
93
93
  }
@@ -115,7 +115,7 @@ export async function produceNoteDaos(
115
115
  } else {
116
116
  const { noteHashIndex, nonce, innerNoteHash } = await findNoteIndexAndNullifier(
117
117
  simulator,
118
- newNoteHashes,
118
+ noteHashes,
119
119
  txHash,
120
120
  payload,
121
121
  excludedIndices,
@@ -148,7 +148,7 @@ export async function produceNoteDaos(
148
148
  payload.storageSlot,
149
149
  payload.noteTypeId,
150
150
  txHash,
151
- newNoteHashes,
151
+ noteHashes,
152
152
  dataStartIndexForTx,
153
153
  );
154
154
  }
@@ -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,11 +885,20 @@ 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 => {
@@ -874,4 +926,41 @@ 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
+ // We are assuming here that event logs are the last 4 bytes of the event. This is not enshrined but is a function of aztec.nr raw log emission.
940
+ if (
941
+ !EventSelector.fromBuffer(unencryptedLogBuf.subarray(unencryptedLogBuf.byteLength - 4)).equals(
942
+ eventMetadata.eventSelector,
943
+ )
944
+ ) {
945
+ return undefined;
946
+ }
947
+
948
+ if (unencryptedLogBuf.byteLength !== eventMetadata.fieldNames.length * 32 + 32) {
949
+ throw new Error(
950
+ 'Something is weird here, we have matching FunctionSelectors, but the actual payload has mismatched length',
951
+ );
952
+ }
953
+
954
+ return eventMetadata.fieldNames.reduce(
955
+ (acc, curr, i) => ({
956
+ ...acc,
957
+ [curr]: new Fr(unencryptedLogBuf.subarray(i * 32, i * 32 + 32)),
958
+ }),
959
+ {} as T,
960
+ );
961
+ })
962
+ .filter(unencryptedLog => unencryptedLog !== undefined) as T[];
963
+
964
+ return decodedEvents;
965
+ }
877
966
  }
@@ -1,3 +0,0 @@
1
- import { type PrivateCallRequest, type PrivateCircuitPublicInputs, PrivateKernelInitHints } from '@aztec/circuits.js';
2
- export declare function buildPrivateKernelInitHints(publicInputs: PrivateCircuitPublicInputs, noteHashNullifierCounterMap: Map<number, number>, privateCallRequests: PrivateCallRequest[]): PrivateKernelInitHints;
3
- //# sourceMappingURL=build_private_kernel_init_hints.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"build_private_kernel_init_hints.d.ts","sourceRoot":"","sources":["../../../src/kernel_prover/private_inputs_builders/build_private_kernel_init_hints.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,0BAA0B,EAC/B,sBAAsB,EAEvB,MAAM,oBAAoB,CAAC;AAG5B,wBAAgB,2BAA2B,CACzC,YAAY,EAAE,0BAA0B,EACxC,2BAA2B,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAChD,mBAAmB,EAAE,kBAAkB,EAAE,0BAe1C"}
@@ -1,11 +0,0 @@
1
- import { PrivateKernelInitHints, countAccumulatedItems, } from '@aztec/circuits.js';
2
- export function buildPrivateKernelInitHints(publicInputs, noteHashNullifierCounterMap, privateCallRequests) {
3
- const nullifierCounters = publicInputs.newNoteHashes.map(n => noteHashNullifierCounterMap.get(n.counter) ?? 0);
4
- const minRevertibleCounter = publicInputs.minRevertibleSideEffectCounter.toNumber();
5
- let firstRevertiblePrivateCallRequestIndex = privateCallRequests.findIndex(r => r.startSideEffectCounter >= minRevertibleCounter);
6
- if (firstRevertiblePrivateCallRequestIndex === -1) {
7
- firstRevertiblePrivateCallRequestIndex = countAccumulatedItems(privateCallRequests);
8
- }
9
- return new PrivateKernelInitHints(nullifierCounters, firstRevertiblePrivateCallRequestIndex);
10
- }
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRfcHJpdmF0ZV9rZXJuZWxfaW5pdF9oaW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9rZXJuZWxfcHJvdmVyL3ByaXZhdGVfaW5wdXRzX2J1aWxkZXJzL2J1aWxkX3ByaXZhdGVfa2VybmVsX2luaXRfaGludHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUlMLHNCQUFzQixFQUN0QixxQkFBcUIsR0FDdEIsTUFBTSxvQkFBb0IsQ0FBQztBQUc1QixNQUFNLFVBQVUsMkJBQTJCLENBQ3pDLFlBQXdDLEVBQ3hDLDJCQUFnRCxFQUNoRCxtQkFBeUM7SUFFekMsTUFBTSxpQkFBaUIsR0FBRyxZQUFZLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FDdEQsQ0FBQyxDQUFDLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FDQyxDQUFDO0lBRXhELE1BQU0sb0JBQW9CLEdBQUcsWUFBWSxDQUFDLDhCQUE4QixDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BGLElBQUksc0NBQXNDLEdBQUcsbUJBQW1CLENBQUMsU0FBUyxDQUN4RSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsSUFBSSxvQkFBb0IsQ0FDdEQsQ0FBQztJQUNGLElBQUksc0NBQXNDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNsRCxzQ0FBc0MsR0FBRyxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFFRCxPQUFPLElBQUksc0JBQXNCLENBQUMsaUJBQWlCLEVBQUUsc0NBQXNDLENBQUMsQ0FBQztBQUMvRixDQUFDIn0=
@@ -1,3 +0,0 @@
1
- import { type PrivateCircuitPublicInputs, PrivateKernelInnerHints } from '@aztec/circuits.js';
2
- export declare function buildPrivateKernelInnerHints(publicInputs: PrivateCircuitPublicInputs, noteHashNullifierCounterMap: Map<number, number>): PrivateKernelInnerHints;
3
- //# sourceMappingURL=build_private_kernel_inner_hints.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"build_private_kernel_inner_hints.d.ts","sourceRoot":"","sources":["../../../src/kernel_prover/private_inputs_builders/build_private_kernel_inner_hints.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,0BAA0B,EAC/B,uBAAuB,EACxB,MAAM,oBAAoB,CAAC;AAG5B,wBAAgB,4BAA4B,CAC1C,YAAY,EAAE,0BAA0B,EACxC,2BAA2B,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,2BAOjD"}
@@ -1,6 +0,0 @@
1
- import { PrivateKernelInnerHints, } from '@aztec/circuits.js';
2
- export function buildPrivateKernelInnerHints(publicInputs, noteHashNullifierCounterMap) {
3
- const nullifierCounters = publicInputs.newNoteHashes.map(n => noteHashNullifierCounterMap.get(n.counter) ?? 0);
4
- return new PrivateKernelInnerHints(nullifierCounters);
5
- }
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRfcHJpdmF0ZV9rZXJuZWxfaW5uZXJfaGludHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMva2VybmVsX3Byb3Zlci9wcml2YXRlX2lucHV0c19idWlsZGVycy9idWlsZF9wcml2YXRlX2tlcm5lbF9pbm5lcl9oaW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsdUJBQXVCLEdBQ3hCLE1BQU0sb0JBQW9CLENBQUM7QUFHNUIsTUFBTSxVQUFVLDRCQUE0QixDQUMxQyxZQUF3QyxFQUN4QywyQkFBZ0Q7SUFFaEQsTUFBTSxpQkFBaUIsR0FBRyxZQUFZLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FDdEQsQ0FBQyxDQUFDLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FDQyxDQUFDO0lBRXhELE9BQU8sSUFBSSx1QkFBdUIsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBQ3hELENBQUMifQ==
@@ -1,4 +0,0 @@
1
- import { MAX_NEW_NOTE_HASHES_PER_TX, MAX_NEW_NULLIFIERS_PER_TX, MAX_NOTE_ENCRYPTED_LOGS_PER_TX, NoteLogHash, PrivateKernelResetOutputs, ScopedNoteHash, ScopedNullifier } from '@aztec/circuits.js';
2
- import { type Tuple } from '@aztec/foundation/serialize';
3
- export declare function buildPrivateKernelResetOutputs(prevNoteHashes: Tuple<ScopedNoteHash, typeof MAX_NEW_NOTE_HASHES_PER_TX>, prevNullifiers: Tuple<ScopedNullifier, typeof MAX_NEW_NULLIFIERS_PER_TX>, prevLogs: Tuple<NoteLogHash, typeof MAX_NOTE_ENCRYPTED_LOGS_PER_TX>, transientNullifierIndexesForNoteHashes: Tuple<number, typeof MAX_NEW_NOTE_HASHES_PER_TX>, transientNoteHashIndexesForNullifiers: Tuple<number, typeof MAX_NEW_NULLIFIERS_PER_TX>): PrivateKernelResetOutputs;
4
- //# sourceMappingURL=build_private_kernel_reset_outputs.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"build_private_kernel_reset_outputs.d.ts","sourceRoot":"","sources":["../../../src/kernel_prover/private_inputs_builders/build_private_kernel_reset_outputs.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,8BAA8B,EAC9B,WAAW,EACX,yBAAyB,EACzB,cAAc,EACd,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAEzD,wBAAgB,8BAA8B,CAC5C,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,OAAO,0BAA0B,CAAC,EACxE,cAAc,EAAE,KAAK,CAAC,eAAe,EAAE,OAAO,yBAAyB,CAAC,EACxE,QAAQ,EAAE,KAAK,CAAC,WAAW,EAAE,OAAO,8BAA8B,CAAC,EACnE,sCAAsC,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,0BAA0B,CAAC,EACxF,qCAAqC,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,yBAAyB,CAAC,6BA2BvF"}
@@ -1,14 +0,0 @@
1
- import { MAX_NEW_NOTE_HASHES_PER_TX, MAX_NEW_NULLIFIERS_PER_TX, MAX_NOTE_ENCRYPTED_LOGS_PER_TX, NoteLogHash, PrivateKernelResetOutputs, ScopedNoteHash, ScopedNullifier, } from '@aztec/circuits.js';
2
- import { padArrayEnd } from '@aztec/foundation/collection';
3
- export function buildPrivateKernelResetOutputs(prevNoteHashes, prevNullifiers, prevLogs, transientNullifierIndexesForNoteHashes, transientNoteHashIndexesForNullifiers) {
4
- // Propagate note hashes that are not going to be squashed in the transient arrays.
5
- // A value isn't going to be squashed if the symmetrical index in the corresponding array is the length of the array.
6
- const noteHashes = padArrayEnd(prevNoteHashes.filter((_, index) => transientNullifierIndexesForNoteHashes[index] === MAX_NEW_NULLIFIERS_PER_TX), ScopedNoteHash.empty(), MAX_NEW_NOTE_HASHES_PER_TX);
7
- const nullifiers = padArrayEnd(prevNullifiers.filter((_, index) => transientNoteHashIndexesForNullifiers[index] === MAX_NEW_NOTE_HASHES_PER_TX), ScopedNullifier.empty(), MAX_NEW_NULLIFIERS_PER_TX);
8
- const nullifiedNotes = prevNoteHashes
9
- .filter((_, index) => transientNullifierIndexesForNoteHashes[index] < MAX_NEW_NULLIFIERS_PER_TX)
10
- .map(n => n.counter);
11
- const logs = padArrayEnd(prevLogs.filter(l => !l.isEmpty() && !nullifiedNotes.includes(l.noteHashCounter)), NoteLogHash.empty(), MAX_NOTE_ENCRYPTED_LOGS_PER_TX);
12
- return new PrivateKernelResetOutputs(noteHashes, nullifiers, logs);
13
- }
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRfcHJpdmF0ZV9rZXJuZWxfcmVzZXRfb3V0cHV0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9rZXJuZWxfcHJvdmVyL3ByaXZhdGVfaW5wdXRzX2J1aWxkZXJzL2J1aWxkX3ByaXZhdGVfa2VybmVsX3Jlc2V0X291dHB1dHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLDBCQUEwQixFQUMxQix5QkFBeUIsRUFDekIsOEJBQThCLEVBQzlCLFdBQVcsRUFDWCx5QkFBeUIsRUFDekIsY0FBYyxFQUNkLGVBQWUsR0FDaEIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHM0QsTUFBTSxVQUFVLDhCQUE4QixDQUM1QyxjQUF3RSxFQUN4RSxjQUF3RSxFQUN4RSxRQUFtRSxFQUNuRSxzQ0FBd0YsRUFDeEYscUNBQXNGO0lBRXRGLG1GQUFtRjtJQUNuRixxSEFBcUg7SUFDckgsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUM1QixjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsc0NBQXNDLENBQUMsS0FBSyxDQUFDLEtBQUsseUJBQXlCLENBQUMsRUFDaEgsY0FBYyxDQUFDLEtBQUssRUFBRSxFQUN0QiwwQkFBMEIsQ0FDM0IsQ0FBQztJQUVGLE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FDNUIsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLHFDQUFxQyxDQUFDLEtBQUssQ0FBQyxLQUFLLDBCQUEwQixDQUFDLEVBQ2hILGVBQWUsQ0FBQyxLQUFLLEVBQUUsRUFDdkIseUJBQXlCLENBQzFCLENBQUM7SUFFRixNQUFNLGNBQWMsR0FBRyxjQUFjO1NBQ2xDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLHNDQUFzQyxDQUFDLEtBQUssQ0FBQyxHQUFHLHlCQUF5QixDQUFDO1NBQy9GLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUV2QixNQUFNLElBQUksR0FBRyxXQUFXLENBQ3RCLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLEVBQ2pGLFdBQVcsQ0FBQyxLQUFLLEVBQUUsRUFDbkIsOEJBQThCLENBQy9CLENBQUM7SUFFRixPQUFPLElBQUkseUJBQXlCLENBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNyRSxDQUFDIn0=
@@ -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,28 +0,0 @@
1
- import {
2
- type MAX_NEW_NOTE_HASHES_PER_CALL,
3
- type PrivateCallRequest,
4
- type PrivateCircuitPublicInputs,
5
- PrivateKernelInitHints,
6
- countAccumulatedItems,
7
- } from '@aztec/circuits.js';
8
- import { type Tuple } from '@aztec/foundation/serialize';
9
-
10
- export function buildPrivateKernelInitHints(
11
- publicInputs: PrivateCircuitPublicInputs,
12
- noteHashNullifierCounterMap: Map<number, number>,
13
- privateCallRequests: PrivateCallRequest[],
14
- ) {
15
- const nullifierCounters = publicInputs.newNoteHashes.map(
16
- n => noteHashNullifierCounterMap.get(n.counter) ?? 0,
17
- ) as Tuple<number, typeof MAX_NEW_NOTE_HASHES_PER_CALL>;
18
-
19
- const minRevertibleCounter = publicInputs.minRevertibleSideEffectCounter.toNumber();
20
- let firstRevertiblePrivateCallRequestIndex = privateCallRequests.findIndex(
21
- r => r.startSideEffectCounter >= minRevertibleCounter,
22
- );
23
- if (firstRevertiblePrivateCallRequestIndex === -1) {
24
- firstRevertiblePrivateCallRequestIndex = countAccumulatedItems(privateCallRequests);
25
- }
26
-
27
- return new PrivateKernelInitHints(nullifierCounters, firstRevertiblePrivateCallRequestIndex);
28
- }
@@ -1,17 +0,0 @@
1
- import {
2
- type MAX_NEW_NOTE_HASHES_PER_CALL,
3
- type PrivateCircuitPublicInputs,
4
- PrivateKernelInnerHints,
5
- } from '@aztec/circuits.js';
6
- import { type Tuple } from '@aztec/foundation/serialize';
7
-
8
- export function buildPrivateKernelInnerHints(
9
- publicInputs: PrivateCircuitPublicInputs,
10
- noteHashNullifierCounterMap: Map<number, number>,
11
- ) {
12
- const nullifierCounters = publicInputs.newNoteHashes.map(
13
- n => noteHashNullifierCounterMap.get(n.counter) ?? 0,
14
- ) as Tuple<number, typeof MAX_NEW_NOTE_HASHES_PER_CALL>;
15
-
16
- return new PrivateKernelInnerHints(nullifierCounters);
17
- }
@@ -1,45 +0,0 @@
1
- import {
2
- MAX_NEW_NOTE_HASHES_PER_TX,
3
- MAX_NEW_NULLIFIERS_PER_TX,
4
- MAX_NOTE_ENCRYPTED_LOGS_PER_TX,
5
- NoteLogHash,
6
- PrivateKernelResetOutputs,
7
- ScopedNoteHash,
8
- ScopedNullifier,
9
- } from '@aztec/circuits.js';
10
- import { padArrayEnd } from '@aztec/foundation/collection';
11
- import { type Tuple } from '@aztec/foundation/serialize';
12
-
13
- export function buildPrivateKernelResetOutputs(
14
- prevNoteHashes: Tuple<ScopedNoteHash, typeof MAX_NEW_NOTE_HASHES_PER_TX>,
15
- prevNullifiers: Tuple<ScopedNullifier, typeof MAX_NEW_NULLIFIERS_PER_TX>,
16
- prevLogs: Tuple<NoteLogHash, typeof MAX_NOTE_ENCRYPTED_LOGS_PER_TX>,
17
- transientNullifierIndexesForNoteHashes: Tuple<number, typeof MAX_NEW_NOTE_HASHES_PER_TX>,
18
- transientNoteHashIndexesForNullifiers: Tuple<number, typeof MAX_NEW_NULLIFIERS_PER_TX>,
19
- ) {
20
- // Propagate note hashes that are not going to be squashed in the transient arrays.
21
- // A value isn't going to be squashed if the symmetrical index in the corresponding array is the length of the array.
22
- const noteHashes = padArrayEnd(
23
- prevNoteHashes.filter((_, index) => transientNullifierIndexesForNoteHashes[index] === MAX_NEW_NULLIFIERS_PER_TX),
24
- ScopedNoteHash.empty(),
25
- MAX_NEW_NOTE_HASHES_PER_TX,
26
- );
27
-
28
- const nullifiers = padArrayEnd(
29
- prevNullifiers.filter((_, index) => transientNoteHashIndexesForNullifiers[index] === MAX_NEW_NOTE_HASHES_PER_TX),
30
- ScopedNullifier.empty(),
31
- MAX_NEW_NULLIFIERS_PER_TX,
32
- );
33
-
34
- const nullifiedNotes = prevNoteHashes
35
- .filter((_, index) => transientNullifierIndexesForNoteHashes[index] < MAX_NEW_NULLIFIERS_PER_TX)
36
- .map(n => n.counter);
37
-
38
- const logs = padArrayEnd(
39
- prevLogs.filter(l => !l.isEmpty() && !nullifiedNotes.includes(l.noteHashCounter)),
40
- NoteLogHash.empty(),
41
- MAX_NOTE_ENCRYPTED_LOGS_PER_TX,
42
- );
43
-
44
- return new PrivateKernelResetOutputs(noteHashes, nullifiers, logs);
45
- }
@@ -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
- }