@aztec/pxe 0.55.1 → 0.57.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 (78) hide show
  1. package/dest/bin/index.js +0 -0
  2. package/dest/database/deferred_note_dao.d.ts +6 -2
  3. package/dest/database/deferred_note_dao.d.ts.map +1 -1
  4. package/dest/database/deferred_note_dao.js +8 -5
  5. package/dest/database/incoming_note_dao.d.ts +3 -1
  6. package/dest/database/incoming_note_dao.d.ts.map +1 -1
  7. package/dest/database/incoming_note_dao.js +5 -1
  8. package/dest/database/kv_pxe_database.d.ts.map +1 -1
  9. package/dest/database/kv_pxe_database.js +3 -2
  10. package/dest/database/outgoing_note_dao.d.ts +3 -1
  11. package/dest/database/outgoing_note_dao.d.ts.map +1 -1
  12. package/dest/database/outgoing_note_dao.js +5 -1
  13. package/dest/kernel_oracle/index.d.ts +1 -1
  14. package/dest/kernel_prover/hints/build_private_kernel_reset_private_inputs.d.ts +28 -0
  15. package/dest/kernel_prover/hints/build_private_kernel_reset_private_inputs.d.ts.map +1 -0
  16. package/dest/kernel_prover/hints/build_private_kernel_reset_private_inputs.js +260 -0
  17. package/dest/kernel_prover/hints/index.d.ts +1 -2
  18. package/dest/kernel_prover/hints/index.d.ts.map +1 -1
  19. package/dest/kernel_prover/hints/index.js +2 -3
  20. package/dest/kernel_prover/kernel_prover.d.ts +2 -4
  21. package/dest/kernel_prover/kernel_prover.d.ts.map +1 -1
  22. package/dest/kernel_prover/kernel_prover.js +26 -25
  23. package/dest/kernel_prover/test/test_circuit_prover.d.ts +2 -3
  24. package/dest/kernel_prover/test/test_circuit_prover.d.ts.map +1 -1
  25. package/dest/kernel_prover/test/test_circuit_prover.js +8 -11
  26. package/dest/note_processor/note_processor.d.ts.map +1 -1
  27. package/dest/note_processor/note_processor.js +13 -15
  28. package/dest/note_processor/utils/add_nullable_field_to_payload.d.ts +12 -0
  29. package/dest/note_processor/utils/add_nullable_field_to_payload.d.ts.map +1 -0
  30. package/dest/note_processor/utils/add_nullable_field_to_payload.js +46 -0
  31. package/dest/note_processor/utils/brute_force_note_info.d.ts +26 -0
  32. package/dest/note_processor/utils/brute_force_note_info.d.ts.map +1 -0
  33. package/dest/note_processor/utils/brute_force_note_info.js +52 -0
  34. package/dest/note_processor/utils/index.d.ts +3 -0
  35. package/dest/note_processor/utils/index.d.ts.map +1 -0
  36. package/dest/note_processor/utils/index.js +2 -0
  37. package/dest/note_processor/{produce_note_dao.d.ts → utils/produce_note_daos.d.ts} +12 -8
  38. package/dest/note_processor/utils/produce_note_daos.d.ts.map +1 -0
  39. package/dest/note_processor/utils/produce_note_daos.js +53 -0
  40. package/dest/note_processor/utils/produce_note_daos_for_key.d.ts +9 -0
  41. package/dest/note_processor/utils/produce_note_daos_for_key.d.ts.map +1 -0
  42. package/dest/note_processor/utils/produce_note_daos_for_key.js +80 -0
  43. package/dest/pxe_http/pxe_http_server.d.ts.map +1 -1
  44. package/dest/pxe_http/pxe_http_server.js +12 -4
  45. package/dest/pxe_service/create_pxe_service.d.ts.map +1 -1
  46. package/dest/pxe_service/create_pxe_service.js +1 -3
  47. package/dest/pxe_service/pxe_service.d.ts +8 -8
  48. package/dest/pxe_service/pxe_service.d.ts.map +1 -1
  49. package/dest/pxe_service/pxe_service.js +39 -56
  50. package/package.json +17 -14
  51. package/src/database/deferred_note_dao.ts +5 -1
  52. package/src/database/incoming_note_dao.ts +24 -1
  53. package/src/database/kv_pxe_database.ts +3 -1
  54. package/src/database/outgoing_note_dao.ts +23 -1
  55. package/src/kernel_prover/hints/build_private_kernel_reset_private_inputs.ts +467 -0
  56. package/src/kernel_prover/hints/index.ts +1 -2
  57. package/src/kernel_prover/kernel_prover.ts +53 -76
  58. package/src/kernel_prover/test/test_circuit_prover.ts +11 -15
  59. package/src/note_processor/note_processor.ts +30 -21
  60. package/src/note_processor/utils/add_nullable_field_to_payload.ts +67 -0
  61. package/src/note_processor/utils/brute_force_note_info.ts +82 -0
  62. package/src/note_processor/utils/index.ts +2 -0
  63. package/src/note_processor/utils/produce_note_daos.ts +114 -0
  64. package/src/note_processor/utils/produce_note_daos_for_key.ts +157 -0
  65. package/src/pxe_http/pxe_http_server.ts +18 -3
  66. package/src/pxe_service/create_pxe_service.ts +0 -2
  67. package/src/pxe_service/pxe_service.ts +61 -100
  68. package/dest/kernel_prover/hints/build_private_kernel_reset_hints.d.ts +0 -5
  69. package/dest/kernel_prover/hints/build_private_kernel_reset_hints.d.ts.map +0 -1
  70. package/dest/kernel_prover/hints/build_private_kernel_reset_hints.js +0 -90
  71. package/dest/kernel_prover/hints/needs_reset.d.ts +0 -5
  72. package/dest/kernel_prover/hints/needs_reset.d.ts.map +0 -1
  73. package/dest/kernel_prover/hints/needs_reset.js +0 -38
  74. package/dest/note_processor/produce_note_dao.d.ts.map +0 -1
  75. package/dest/note_processor/produce_note_dao.js +0 -131
  76. package/src/kernel_prover/hints/build_private_kernel_reset_hints.ts +0 -249
  77. package/src/kernel_prover/hints/needs_reset.ts +0 -54
  78. package/src/note_processor/produce_note_dao.ts +0 -235
@@ -1,90 +0,0 @@
1
- import { KeyValidationHint, MAX_KEY_VALIDATION_REQUESTS_PER_TX, MAX_NOTE_HASHES_PER_TX, MAX_NOTE_HASH_READ_REQUESTS_PER_TX, MAX_NULLIFIERS_PER_TX, MAX_NULLIFIER_READ_REQUESTS_PER_TX, MembershipWitness, NULLIFIER_TREE_HEIGHT, PRIVATE_RESET_VARIANTS, PrivateKernelResetCircuitPrivateInputs, PrivateKernelResetHints, ScopedNoteHash, ScopedNullifier, ScopedReadRequest, buildNoteHashReadRequestHints, buildNullifierReadRequestHints, buildTransientDataHints, countAccumulatedItems, getNonEmptyItems, } from '@aztec/circuits.js';
2
- import { makeTuple } from '@aztec/foundation/array';
3
- function getNullifierReadRequestHints(nullifierReadRequests, nullifiers, oracle, sizePending, sizeSettled, futureNullifiers) {
4
- const getNullifierMembershipWitness = async (nullifier) => {
5
- const res = await oracle.getNullifierMembershipWitness(nullifier);
6
- if (!res) {
7
- throw new Error(`Cannot find the leaf for nullifier ${nullifier.toBigInt()}.`);
8
- }
9
- const { index, siblingPath, leafPreimage } = res;
10
- return {
11
- membershipWitness: new MembershipWitness(NULLIFIER_TREE_HEIGHT, index, siblingPath.toTuple()),
12
- leafPreimage,
13
- };
14
- };
15
- return buildNullifierReadRequestHints({ getNullifierMembershipWitness }, nullifierReadRequests, nullifiers, sizePending, sizeSettled, futureNullifiers);
16
- }
17
- async function getMasterSecretKeysAndAppKeyGenerators(keyValidationRequests, oracle) {
18
- const keysHints = makeTuple(MAX_KEY_VALIDATION_REQUESTS_PER_TX, () => KeyValidationHint.nada(MAX_KEY_VALIDATION_REQUESTS_PER_TX));
19
- let keyIndex = 0;
20
- for (let i = 0; i < keyValidationRequests.length; ++i) {
21
- const request = keyValidationRequests[i].request;
22
- if (request.isEmpty()) {
23
- break;
24
- }
25
- const secretKeys = await oracle.getMasterSecretKey(request.request.pkM);
26
- keysHints[keyIndex] = new KeyValidationHint(secretKeys, i);
27
- keyIndex++;
28
- }
29
- return {
30
- keysCount: keyIndex,
31
- keysHints,
32
- };
33
- }
34
- export async function buildPrivateKernelResetInputs(executionStack, previousKernelData, noteHashLeafIndexMap, noteHashNullifierCounterMap, validationRequestsSplitCounter, shouldSilo, oracle) {
35
- const publicInputs = previousKernelData.publicInputs;
36
- // Use max sizes, they will be trimmed down later.
37
- const futureNoteHashes = collectNested(executionStack, executionResult => {
38
- const nonEmptyNoteHashes = getNonEmptyItems(executionResult.callStackItem.publicInputs.noteHashes);
39
- return nonEmptyNoteHashes.map(noteHash => new ScopedNoteHash(noteHash, executionResult.callStackItem.publicInputs.callContext.storageContractAddress));
40
- });
41
- const { numPendingReadHints: noteHashPendingReadHints, numSettledReadHints: noteHashSettledReadHints, hints: noteHashReadRequestHints, } = await buildNoteHashReadRequestHints(oracle, publicInputs.validationRequests.noteHashReadRequests, publicInputs.end.noteHashes, noteHashLeafIndexMap, MAX_NOTE_HASH_READ_REQUESTS_PER_TX, MAX_NOTE_HASH_READ_REQUESTS_PER_TX, futureNoteHashes);
42
- const futureNullifiers = collectNested(executionStack, executionResult => {
43
- const nonEmptyNullifiers = getNonEmptyItems(executionResult.callStackItem.publicInputs.nullifiers);
44
- return nonEmptyNullifiers.map(nullifier => new ScopedNullifier(nullifier, executionResult.callStackItem.publicInputs.callContext.storageContractAddress));
45
- });
46
- const { numPendingReadHints: nullifierPendingReadHints, numSettledReadHints: nullifierSettledReadHints, hints: nullifierReadRequestHints, } = await getNullifierReadRequestHints(publicInputs.validationRequests.nullifierReadRequests, publicInputs.end.nullifiers, oracle, MAX_NULLIFIER_READ_REQUESTS_PER_TX, MAX_NULLIFIER_READ_REQUESTS_PER_TX, futureNullifiers);
47
- const { keysCount, keysHints } = await getMasterSecretKeysAndAppKeyGenerators(publicInputs.validationRequests.scopedKeyValidationRequestsAndGenerators, oracle);
48
- const futureNoteHashReads = collectNestedReadRequests(executionStack, executionResult => executionResult.callStackItem.publicInputs.noteHashReadRequests);
49
- const futureNullifierReads = collectNestedReadRequests(executionStack, executionResult => executionResult.callStackItem.publicInputs.nullifierReadRequests);
50
- const noteHashes = publicInputs.end.noteHashes;
51
- const nullifiers = publicInputs.end.nullifiers;
52
- const { numTransientData, hints: transientDataIndexHints } = buildTransientDataHints(noteHashes, nullifiers, futureNoteHashReads, futureNullifierReads, noteHashNullifierCounterMap, MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX);
53
- const remainingNoteHashes = countAccumulatedItems(noteHashes) - numTransientData;
54
- const remainingNullifiers = countAccumulatedItems(nullifiers) - numTransientData;
55
- const numEncryptedLogHashes = countAccumulatedItems(publicInputs.end.encryptedLogsHashes);
56
- let privateInputs;
57
- for (const [sizeTag, hintSizes] of Object.entries(PRIVATE_RESET_VARIANTS)) {
58
- const noSiloing = !hintSizes.NOTE_HASH_SILOING_AMOUNT &&
59
- !hintSizes.NULLIFIER_SILOING_AMOUNT &&
60
- !hintSizes.ENCRYPTED_LOG_SILOING_AMOUNT;
61
- const enoughSiloing = hintSizes.NOTE_HASH_SILOING_AMOUNT >= remainingNoteHashes &&
62
- hintSizes.NULLIFIER_SILOING_AMOUNT >= remainingNullifiers &&
63
- hintSizes.ENCRYPTED_LOG_SILOING_AMOUNT >= numEncryptedLogHashes;
64
- if (hintSizes.NOTE_HASH_PENDING_AMOUNT >= noteHashPendingReadHints &&
65
- hintSizes.NOTE_HASH_SETTLED_AMOUNT >= noteHashSettledReadHints &&
66
- hintSizes.NULLIFIER_PENDING_AMOUNT >= nullifierPendingReadHints &&
67
- hintSizes.NULLIFIER_SETTLED_AMOUNT >= nullifierSettledReadHints &&
68
- hintSizes.NULLIFIER_KEYS >= keysCount &&
69
- hintSizes.TRANSIENT_DATA_AMOUNT >= numTransientData &&
70
- ((!shouldSilo && noSiloing) || (shouldSilo && enoughSiloing))) {
71
- privateInputs = new PrivateKernelResetCircuitPrivateInputs(previousKernelData, new PrivateKernelResetHints(noteHashReadRequestHints, nullifierReadRequestHints, keysHints, transientDataIndexHints, validationRequestsSplitCounter).trimToSizes(hintSizes.NOTE_HASH_PENDING_AMOUNT, hintSizes.NOTE_HASH_SETTLED_AMOUNT, hintSizes.NULLIFIER_PENDING_AMOUNT, hintSizes.NULLIFIER_SETTLED_AMOUNT, hintSizes.NULLIFIER_KEYS, hintSizes.TRANSIENT_DATA_AMOUNT), sizeTag);
72
- break;
73
- }
74
- }
75
- if (!privateInputs) {
76
- throw new Error('No private inputs found for the given hint sizes.');
77
- }
78
- return privateInputs;
79
- }
80
- function collectNested(executionStack, extractExecutionItems) {
81
- const thisExecutionReads = executionStack.flatMap(extractExecutionItems);
82
- return thisExecutionReads.concat(executionStack.flatMap(({ nestedExecutions }) => collectNested(nestedExecutions, extractExecutionItems)));
83
- }
84
- function collectNestedReadRequests(executionStack, extractReadRequests) {
85
- return collectNested(executionStack, executionResult => {
86
- const nonEmptyReadRequests = getNonEmptyItems(extractReadRequests(executionResult));
87
- return nonEmptyReadRequests.map(readRequest => new ScopedReadRequest(readRequest, executionResult.callStackItem.publicInputs.callContext.storageContractAddress));
88
- });
89
- }
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRfcHJpdmF0ZV9rZXJuZWxfcmVzZXRfaGludHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMva2VybmVsX3Byb3Zlci9oaW50cy9idWlsZF9wcml2YXRlX2tlcm5lbF9yZXNldF9oaW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLGtDQUFrQyxFQUNsQyxzQkFBc0IsRUFDdEIsa0NBQWtDLEVBQ2xDLHFCQUFxQixFQUNyQixrQ0FBa0MsRUFDbEMsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUNyQixzQkFBc0IsRUFFdEIsc0NBQXNDLEVBRXRDLHVCQUF1QixFQUd2QixjQUFjLEVBQ2QsZUFBZSxFQUNmLGlCQUFpQixFQUNqQiw2QkFBNkIsRUFDN0IsOEJBQThCLEVBQzlCLHVCQUF1QixFQUN2QixxQkFBcUIsRUFDckIsZ0JBQWdCLEdBQ2pCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBTXBELFNBQVMsNEJBQTRCLENBQ25DLHFCQUEwRixFQUMxRixVQUFnRSxFQUNoRSxNQUF5QixFQUN6QixXQUFvQixFQUNwQixXQUFvQixFQUNwQixnQkFBbUM7SUFFbkMsTUFBTSw2QkFBNkIsR0FBRyxLQUFLLEVBQUUsU0FBYSxFQUFFLEVBQUU7UUFDNUQsTUFBTSxHQUFHLEdBQUcsTUFBTSxNQUFNLENBQUMsNkJBQTZCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1QsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQ0FBc0MsU0FBUyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNqRixDQUFDO1FBRUQsTUFBTSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLEdBQUcsR0FBRyxDQUFDO1FBQ2pELE9BQU87WUFDTCxpQkFBaUIsRUFBRSxJQUFJ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
@@ -1,5 +0,0 @@
1
- import { type PrivateKernelCircuitPublicInputs } from '@aztec/circuits.js';
2
- import { type ExecutionResult } from '@aztec/simulator';
3
- export declare function needsReset(publicInputs: PrivateKernelCircuitPublicInputs, executionStack: ExecutionResult[]): boolean;
4
- export declare function needsFinalReset(publicInputs: PrivateKernelCircuitPublicInputs): boolean;
5
- //# sourceMappingURL=needs_reset.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"needs_reset.d.ts","sourceRoot":"","sources":["../../../src/kernel_prover/hints/needs_reset.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,gCAAgC,EAEtC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,wBAAgB,UAAU,CAAC,YAAY,EAAE,gCAAgC,EAAE,cAAc,EAAE,eAAe,EAAE,WAsB3G;AASD,wBAAgB,eAAe,CAAC,YAAY,EAAE,gCAAgC,WAU7E"}
@@ -1,38 +0,0 @@
1
- import { MAX_KEY_VALIDATION_REQUESTS_PER_TX, MAX_NOTE_ENCRYPTED_LOGS_PER_TX, MAX_NOTE_HASHES_PER_TX, MAX_NOTE_HASH_READ_REQUESTS_PER_TX, MAX_NULLIFIERS_PER_TX, MAX_NULLIFIER_READ_REQUESTS_PER_TX, countAccumulatedItems, } from '@aztec/circuits.js';
2
- export function needsReset(publicInputs, executionStack) {
3
- const nextIteration = executionStack[executionStack.length - 1];
4
- return (countAccumulatedItems(nextIteration.callStackItem.publicInputs.noteHashes) +
5
- countAccumulatedItems(publicInputs.end.noteHashes) >
6
- MAX_NOTE_HASHES_PER_TX ||
7
- countAccumulatedItems(nextIteration.callStackItem.publicInputs.nullifiers) +
8
- countAccumulatedItems(publicInputs.end.nullifiers) >
9
- MAX_NULLIFIERS_PER_TX ||
10
- countAccumulatedItems(nextIteration.callStackItem.publicInputs.noteEncryptedLogsHashes) +
11
- countAccumulatedItems(publicInputs.end.noteEncryptedLogsHashes) >
12
- MAX_NOTE_ENCRYPTED_LOGS_PER_TX ||
13
- countAccumulatedItems(nextIteration.callStackItem.publicInputs.noteHashReadRequests) +
14
- countAccumulatedItems(publicInputs.validationRequests.noteHashReadRequests) >
15
- MAX_NOTE_HASH_READ_REQUESTS_PER_TX ||
16
- countAccumulatedItems(nextIteration.callStackItem.publicInputs.nullifierReadRequests) +
17
- countAccumulatedItems(publicInputs.validationRequests.nullifierReadRequests) >
18
- MAX_NULLIFIER_READ_REQUESTS_PER_TX ||
19
- countAccumulatedItems(nextIteration.callStackItem.publicInputs.keyValidationRequestsAndGenerators) +
20
- countAccumulatedItems(publicInputs.validationRequests.scopedKeyValidationRequestsAndGenerators) >
21
- MAX_KEY_VALIDATION_REQUESTS_PER_TX);
22
- }
23
- function hasTransientNullifier(publicInputs) {
24
- const noteHashSet = new Set();
25
- publicInputs.end.noteHashes.forEach(n => noteHashSet.add(n.noteHash.value.toBigInt()));
26
- noteHashSet.delete(0n);
27
- return publicInputs.end.nullifiers.some(n => noteHashSet.has(n.nullifiedNoteHash.toBigInt()));
28
- }
29
- export function needsFinalReset(publicInputs) {
30
- return (countAccumulatedItems(publicInputs.end.noteHashes) > 0 ||
31
- countAccumulatedItems(publicInputs.end.nullifiers) > 0 ||
32
- countAccumulatedItems(publicInputs.end.encryptedLogsHashes) > 0 ||
33
- countAccumulatedItems(publicInputs.validationRequests.noteHashReadRequests) > 0 ||
34
- countAccumulatedItems(publicInputs.validationRequests.nullifierReadRequests) > 0 ||
35
- countAccumulatedItems(publicInputs.validationRequests.scopedKeyValidationRequestsAndGenerators) > 0 ||
36
- hasTransientNullifier(publicInputs));
37
- }
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmVlZHNfcmVzZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMva2VybmVsX3Byb3Zlci9oaW50cy9uZWVkc19yZXNldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsa0NBQWtDLEVBQ2xDLDhCQUE4QixFQUM5QixzQkFBc0IsRUFDdEIsa0NBQWtDLEVBQ2xDLHFCQUFxQixFQUNyQixrQ0FBa0MsRUFFbEMscUJBQXFCLEdBQ3RCLE1BQU0sb0JBQW9CLENBQUM7QUFHNUIsTUFBTSxVQUFVLFVBQVUsQ0FBQyxZQUE4QyxFQUFFLGNBQWlDO0lBQzFHLE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLE9BQU8sQ0FDTCxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUM7UUFDeEUscUJBQXFCLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUM7UUFDbEQsc0JBQXNCO1FBQ3hCLHFCQUFxQixDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQztZQUN4RSxxQkFBcUIsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQztZQUNsRCxxQkFBcUI7UUFDdkIscUJBQXFCLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsdUJBQXVCLENBQUM7WUFDckYscUJBQXFCLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQztZQUMvRCw4QkFBOEI7UUFDaEMscUJBQXFCLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsb0JBQW9CLENBQUM7WUFDbEYscUJBQXFCLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQixDQUFDO1lBQzNFLGtDQUFrQztRQUNwQyxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxxQkFBcUIsQ0FBQztZQUNuRixxQkFBcUIsQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMscUJBQXFCLENBQUM7WUFDNUUsa0NBQWtDO1FBQ3BDLHFCQUFxQixDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLGtDQUFrQyxDQUFDO1lBQ2hHLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyx3Q0FBd0MsQ0FBQztZQUMvRixrQ0FBa0MsQ0FDckMsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLHFCQUFxQixDQUFDLFlBQThDO0lBQzNFLE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7SUFDOUIsWUFBWSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkYsV0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2QixPQUFPLFlBQVksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNoRyxDQUFDO0FBRUQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxZQUE4QztJQUM1RSxPQUFPLENBQ0wscUJBQXFCLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO1FBQ3RELHFCQUFxQixDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztRQUN0RCxxQkFBcUIsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQztRQUMvRCxxQkFBcUIsQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDO1FBQy9FLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUM7UUFDaEYscUJBQXFCLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDLHdDQUF3QyxDQUFDLEdBQUcsQ0FBQztRQUNuRyxxQkFBcUIsQ0FBQyxZQUFZLENBQUMsQ0FDcEMsQ0FBQztBQUNKLENBQUMifQ==
@@ -1 +0,0 @@
1
- {"version":3,"file":"produce_note_dao.d.ts","sourceRoot":"","sources":["../../src/note_processor/produce_note_dao.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,EAAE,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,KAAK,aAAa,EAAyB,MAAM,kBAAkB,CAAC;AAE7E,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAEnE;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,aAAa,EACxB,KAAK,EAAE,SAAS,GAAG,SAAS,EAC5B,KAAK,EAAE,SAAS,GAAG,SAAS,EAC5B,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,EAAE,EAAE,EAChB,mBAAmB,EAAE,MAAM,EAC3B,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,EAC5B,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;IACT,YAAY,EAAE,eAAe,GAAG,SAAS,CAAC;IAC1C,YAAY,EAAE,eAAe,GAAG,SAAS,CAAC;IAC1C,oBAAoB,EAAE,eAAe,GAAG,SAAS,CAAC;IAClD,oBAAoB,EAAE,eAAe,GAAG,SAAS,CAAC;CACnD,CAAC,CA4HD"}
@@ -1,131 +0,0 @@
1
- import { Fr } from '@aztec/circuits.js';
2
- import { computeNoteHashNonce, siloNullifier } from '@aztec/circuits.js/hash';
3
- import { ContractNotFoundError } from '@aztec/simulator';
4
- import { DeferredNoteDao } from '../database/deferred_note_dao.js';
5
- import { IncomingNoteDao } from '../database/incoming_note_dao.js';
6
- import { OutgoingNoteDao } from '../database/outgoing_note_dao.js';
7
- /**
8
- * Decodes a note from a transaction that we know was intended for us.
9
- * Throws if we do not yet have the contract corresponding to the note in our database.
10
- * Accepts a set of excluded indices, which are indices that have been assigned a note in the same tx.
11
- * Inserts the index of the note into the excludedIndices set if the note is successfully decoded.
12
- *
13
- * @param ivpkM - The public counterpart to the secret key to be used in the decryption of incoming note logs.
14
- * @param ovpkM - The public counterpart to the secret key to be used in the decryption of outgoing note logs.
15
- * @param payload - An instance of l1NotePayload.
16
- * @param txHash - The hash of the transaction that created the note. Equivalent to the first nullifier of the transaction.
17
- * @param noteHashes - New note hashes in this transaction, one of which belongs to this note.
18
- * @param dataStartIndexForTx - The next available leaf index for the note hash tree for this transaction.
19
- * @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.
20
- * @param simulator - An instance of AcirSimulator.
21
- * @returns An object containing the incoming, outgoing, and deferred notes.
22
- */
23
- export async function produceNoteDaos(simulator, ivpkM, ovpkM, payload, txHash, noteHashes, dataStartIndexForTx, excludedIndices, log) {
24
- if (!ivpkM && !ovpkM) {
25
- throw new Error('Both ivpkM and ovpkM are undefined. Cannot create note.');
26
- }
27
- let incomingNote;
28
- let outgoingNote;
29
- let incomingDeferredNote;
30
- let outgoingDeferredNote;
31
- try {
32
- if (ivpkM) {
33
- const { noteHashIndex, nonce, noteHash, siloedNullifier } = await findNoteIndexAndNullifier(simulator, noteHashes, txHash, payload, excludedIndices, true);
34
- const index = BigInt(dataStartIndexForTx + noteHashIndex);
35
- excludedIndices?.add(noteHashIndex);
36
- incomingNote = new IncomingNoteDao(payload.note, payload.contractAddress, payload.storageSlot, payload.noteTypeId, txHash, nonce, noteHash, siloedNullifier, index, ivpkM);
37
- }
38
- }
39
- catch (e) {
40
- if (e instanceof ContractNotFoundError) {
41
- log.warn(e.message);
42
- if (ivpkM) {
43
- incomingDeferredNote = new DeferredNoteDao(ivpkM, payload.note, payload.contractAddress, payload.storageSlot, payload.noteTypeId, txHash, noteHashes, dataStartIndexForTx);
44
- }
45
- }
46
- else {
47
- log.error(`Could not process note because of "${e}". Discarding note...`);
48
- }
49
- }
50
- try {
51
- if (ovpkM) {
52
- if (incomingNote) {
53
- // Incoming note is defined meaning that this PXE has both the incoming and outgoing keys. We can skip computing
54
- // note hash and note index since we already have them in the incoming note.
55
- outgoingNote = new OutgoingNoteDao(payload.note, payload.contractAddress, payload.storageSlot, payload.noteTypeId, txHash, incomingNote.nonce, incomingNote.noteHash, incomingNote.index, ovpkM);
56
- }
57
- else {
58
- const { noteHashIndex, nonce, noteHash } = await findNoteIndexAndNullifier(simulator, noteHashes, txHash, payload, excludedIndices, false);
59
- const index = BigInt(dataStartIndexForTx + noteHashIndex);
60
- excludedIndices?.add(noteHashIndex);
61
- outgoingNote = new OutgoingNoteDao(payload.note, payload.contractAddress, payload.storageSlot, payload.noteTypeId, txHash, nonce, noteHash, index, ovpkM);
62
- }
63
- }
64
- }
65
- catch (e) {
66
- if (e instanceof ContractNotFoundError) {
67
- log.warn(e.message);
68
- if (ovpkM) {
69
- outgoingDeferredNote = new DeferredNoteDao(ovpkM, payload.note, payload.contractAddress, payload.storageSlot, payload.noteTypeId, txHash, noteHashes, dataStartIndexForTx);
70
- }
71
- }
72
- else {
73
- log.error(`Could not process note because of "${e}". Discarding note...`);
74
- }
75
- }
76
- return {
77
- incomingNote,
78
- outgoingNote,
79
- incomingDeferredNote,
80
- outgoingDeferredNote,
81
- };
82
- }
83
- /**
84
- * Finds nonce, index, inner hash and siloed nullifier for a given note.
85
- * @dev Finds the index in the note hash tree by computing the note hash with different nonce and see which hash for
86
- * the current tx matches this value.
87
- * @remarks This method assists in identifying spent notes in the note hash tree.
88
- * @param siloedNoteHashes - Note hashes in the tx. One of them should correspond to the note we are looking for
89
- * @param txHash - Hash of a tx the note was emitted in.
90
- * @param l1NotePayload - The note payload.
91
- * @param excludedIndices - Indices that have been assigned a note in the same tx. Notes in a tx can have the same
92
- * l1NotePayload. We need to find a different index for each replicate.
93
- * @param computeNullifier - A flag indicating whether to compute the nullifier or just return 0.
94
- * @returns Nonce, index, inner hash and siloed nullifier for a given note.
95
- * @throws If cannot find the nonce for the note.
96
- */
97
- async function findNoteIndexAndNullifier(simulator, siloedNoteHashes, txHash, { contractAddress, storageSlot, noteTypeId, note }, excludedIndices, computeNullifier) {
98
- let noteHashIndex = 0;
99
- let nonce;
100
- let noteHash;
101
- let siloedNoteHash;
102
- let innerNullifier;
103
- const firstNullifier = Fr.fromBuffer(txHash.toBuffer());
104
- for (; noteHashIndex < siloedNoteHashes.length; ++noteHashIndex) {
105
- if (excludedIndices.has(noteHashIndex)) {
106
- continue;
107
- }
108
- const siloedNoteHashFromTxEffect = siloedNoteHashes[noteHashIndex];
109
- if (siloedNoteHashFromTxEffect.equals(Fr.ZERO)) {
110
- break;
111
- }
112
- const expectedNonce = computeNoteHashNonce(firstNullifier, noteHashIndex);
113
- ({ noteHash, siloedNoteHash, innerNullifier } = await simulator.computeNoteHashAndOptionallyANullifier(contractAddress, expectedNonce, storageSlot, noteTypeId, computeNullifier, note));
114
- if (siloedNoteHashFromTxEffect.equals(siloedNoteHash)) {
115
- nonce = expectedNonce;
116
- break;
117
- }
118
- }
119
- if (!nonce) {
120
- // NB: this used to warn the user that a decrypted log didn't match any notes.
121
- // This was previously fine as we didn't chop transient note logs, but now we do (#1641 complete).
122
- throw new Error('Cannot find a matching note hash for the note.');
123
- }
124
- return {
125
- noteHashIndex,
126
- nonce,
127
- noteHash: noteHash,
128
- siloedNullifier: siloNullifier(contractAddress, innerNullifier),
129
- };
130
- }
131
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjZV9ub3RlX2Rhby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub3RlX3Byb2Nlc3Nvci9wcm9kdWNlX25vdGVfZGFvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxFQUFFLEVBQWtCLE1BQU0sb0JBQW9CLENBQUM7QUFDeEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTlFLE9BQU8sRUFBc0IscUJBQXFCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU3RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUVuRTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGVBQWUsQ0FDbkMsU0FBd0IsRUFDeEIsS0FBNEIsRUFDNUIsS0FBNEIsRUFDNUIsT0FBc0IsRUFDdEIsTUFBYyxFQUNkLFVBQWdCLEVBQ2hCLG1CQUEyQixFQUMzQixlQUE0QixFQUM1QixHQUFXO0lBT1gsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMseURBQXlELENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsSUFBSSxZQUF5QyxDQUFDO0lBQzlDLElBQUksWUFBeUMsQ0FBQztJQUM5QyxJQUFJLG9CQUFpRCxDQUFDO0lBQ3RELElBQUksb0JBQWlELENBQUM7SUFFdEQsSUFBSSxDQUFDO1FBQ0gsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLE1BQU0sRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsR0FBRyxNQUFNLHlCQUF5QixDQUN6RixTQUFTLEVBQ1QsVUFBVSxFQUNW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
@@ -1,249 +0,0 @@
1
- import {
2
- type Fr,
3
- KeyValidationHint,
4
- MAX_KEY_VALIDATION_REQUESTS_PER_TX,
5
- MAX_NOTE_HASHES_PER_TX,
6
- MAX_NOTE_HASH_READ_REQUESTS_PER_TX,
7
- MAX_NULLIFIERS_PER_TX,
8
- MAX_NULLIFIER_READ_REQUESTS_PER_TX,
9
- MembershipWitness,
10
- NULLIFIER_TREE_HEIGHT,
11
- PRIVATE_RESET_VARIANTS,
12
- type PrivateKernelData,
13
- PrivateKernelResetCircuitPrivateInputs,
14
- type PrivateKernelResetCircuitPrivateInputsVariants,
15
- PrivateKernelResetHints,
16
- type ReadRequest,
17
- type ScopedKeyValidationRequestAndGenerator,
18
- ScopedNoteHash,
19
- ScopedNullifier,
20
- ScopedReadRequest,
21
- buildNoteHashReadRequestHints,
22
- buildNullifierReadRequestHints,
23
- buildTransientDataHints,
24
- countAccumulatedItems,
25
- getNonEmptyItems,
26
- } from '@aztec/circuits.js';
27
- import { makeTuple } from '@aztec/foundation/array';
28
- import { type Tuple } from '@aztec/foundation/serialize';
29
- import type { ExecutionResult } from '@aztec/simulator';
30
-
31
- import { type ProvingDataOracle } from '../proving_data_oracle.js';
32
-
33
- function getNullifierReadRequestHints<PENDING extends number, SETTLED extends number>(
34
- nullifierReadRequests: Tuple<ScopedReadRequest, typeof MAX_NULLIFIER_READ_REQUESTS_PER_TX>,
35
- nullifiers: Tuple<ScopedNullifier, typeof MAX_NULLIFIERS_PER_TX>,
36
- oracle: ProvingDataOracle,
37
- sizePending: PENDING,
38
- sizeSettled: SETTLED,
39
- futureNullifiers: ScopedNullifier[],
40
- ) {
41
- const getNullifierMembershipWitness = async (nullifier: Fr) => {
42
- const res = await oracle.getNullifierMembershipWitness(nullifier);
43
- if (!res) {
44
- throw new Error(`Cannot find the leaf for nullifier ${nullifier.toBigInt()}.`);
45
- }
46
-
47
- const { index, siblingPath, leafPreimage } = res;
48
- return {
49
- membershipWitness: new MembershipWitness(NULLIFIER_TREE_HEIGHT, index, siblingPath.toTuple()),
50
- leafPreimage,
51
- };
52
- };
53
-
54
- return buildNullifierReadRequestHints(
55
- { getNullifierMembershipWitness },
56
- nullifierReadRequests,
57
- nullifiers,
58
- sizePending,
59
- sizeSettled,
60
- futureNullifiers,
61
- );
62
- }
63
-
64
- async function getMasterSecretKeysAndAppKeyGenerators(
65
- keyValidationRequests: Tuple<ScopedKeyValidationRequestAndGenerator, typeof MAX_KEY_VALIDATION_REQUESTS_PER_TX>,
66
- oracle: ProvingDataOracle,
67
- ) {
68
- const keysHints = makeTuple(MAX_KEY_VALIDATION_REQUESTS_PER_TX, () =>
69
- KeyValidationHint.nada(MAX_KEY_VALIDATION_REQUESTS_PER_TX),
70
- );
71
-
72
- let keyIndex = 0;
73
- for (let i = 0; i < keyValidationRequests.length; ++i) {
74
- const request = keyValidationRequests[i].request;
75
- if (request.isEmpty()) {
76
- break;
77
- }
78
- const secretKeys = await oracle.getMasterSecretKey(request.request.pkM);
79
- keysHints[keyIndex] = new KeyValidationHint(secretKeys, i);
80
- keyIndex++;
81
- }
82
- return {
83
- keysCount: keyIndex,
84
- keysHints,
85
- };
86
- }
87
-
88
- export async function buildPrivateKernelResetInputs(
89
- executionStack: ExecutionResult[],
90
- previousKernelData: PrivateKernelData,
91
- noteHashLeafIndexMap: Map<bigint, bigint>,
92
- noteHashNullifierCounterMap: Map<number, number>,
93
- validationRequestsSplitCounter: number,
94
- shouldSilo: boolean,
95
- oracle: ProvingDataOracle,
96
- ) {
97
- const publicInputs = previousKernelData.publicInputs;
98
- // Use max sizes, they will be trimmed down later.
99
-
100
- const futureNoteHashes = collectNested(executionStack, executionResult => {
101
- const nonEmptyNoteHashes = getNonEmptyItems(executionResult.callStackItem.publicInputs.noteHashes);
102
- return nonEmptyNoteHashes.map(
103
- noteHash =>
104
- new ScopedNoteHash(noteHash, executionResult.callStackItem.publicInputs.callContext.storageContractAddress),
105
- );
106
- });
107
-
108
- const {
109
- numPendingReadHints: noteHashPendingReadHints,
110
- numSettledReadHints: noteHashSettledReadHints,
111
- hints: noteHashReadRequestHints,
112
- } = await buildNoteHashReadRequestHints(
113
- oracle,
114
- publicInputs.validationRequests.noteHashReadRequests,
115
- publicInputs.end.noteHashes,
116
- noteHashLeafIndexMap,
117
- MAX_NOTE_HASH_READ_REQUESTS_PER_TX,
118
- MAX_NOTE_HASH_READ_REQUESTS_PER_TX,
119
- futureNoteHashes,
120
- );
121
-
122
- const futureNullifiers = collectNested(executionStack, executionResult => {
123
- const nonEmptyNullifiers = getNonEmptyItems(executionResult.callStackItem.publicInputs.nullifiers);
124
- return nonEmptyNullifiers.map(
125
- nullifier =>
126
- new ScopedNullifier(nullifier, executionResult.callStackItem.publicInputs.callContext.storageContractAddress),
127
- );
128
- });
129
-
130
- const {
131
- numPendingReadHints: nullifierPendingReadHints,
132
- numSettledReadHints: nullifierSettledReadHints,
133
- hints: nullifierReadRequestHints,
134
- } = await getNullifierReadRequestHints(
135
- publicInputs.validationRequests.nullifierReadRequests,
136
- publicInputs.end.nullifiers,
137
- oracle,
138
- MAX_NULLIFIER_READ_REQUESTS_PER_TX,
139
- MAX_NULLIFIER_READ_REQUESTS_PER_TX,
140
- futureNullifiers,
141
- );
142
-
143
- const { keysCount, keysHints } = await getMasterSecretKeysAndAppKeyGenerators(
144
- publicInputs.validationRequests.scopedKeyValidationRequestsAndGenerators,
145
- oracle,
146
- );
147
-
148
- const futureNoteHashReads = collectNestedReadRequests(
149
- executionStack,
150
- executionResult => executionResult.callStackItem.publicInputs.noteHashReadRequests,
151
- );
152
- const futureNullifierReads = collectNestedReadRequests(
153
- executionStack,
154
- executionResult => executionResult.callStackItem.publicInputs.nullifierReadRequests,
155
- );
156
-
157
- const noteHashes = publicInputs.end.noteHashes;
158
- const nullifiers = publicInputs.end.nullifiers;
159
- const { numTransientData, hints: transientDataIndexHints } = buildTransientDataHints(
160
- noteHashes,
161
- nullifiers,
162
- futureNoteHashReads,
163
- futureNullifierReads,
164
- noteHashNullifierCounterMap,
165
- MAX_NOTE_HASHES_PER_TX,
166
- MAX_NULLIFIERS_PER_TX,
167
- );
168
-
169
- const remainingNoteHashes = countAccumulatedItems(noteHashes) - numTransientData;
170
-
171
- const remainingNullifiers = countAccumulatedItems(nullifiers) - numTransientData;
172
-
173
- const numEncryptedLogHashes = countAccumulatedItems(publicInputs.end.encryptedLogsHashes);
174
-
175
- let privateInputs;
176
-
177
- for (const [sizeTag, hintSizes] of Object.entries(PRIVATE_RESET_VARIANTS)) {
178
- const noSiloing =
179
- !hintSizes.NOTE_HASH_SILOING_AMOUNT &&
180
- !hintSizes.NULLIFIER_SILOING_AMOUNT &&
181
- !hintSizes.ENCRYPTED_LOG_SILOING_AMOUNT;
182
- const enoughSiloing =
183
- hintSizes.NOTE_HASH_SILOING_AMOUNT >= remainingNoteHashes &&
184
- hintSizes.NULLIFIER_SILOING_AMOUNT >= remainingNullifiers &&
185
- hintSizes.ENCRYPTED_LOG_SILOING_AMOUNT >= numEncryptedLogHashes;
186
- if (
187
- hintSizes.NOTE_HASH_PENDING_AMOUNT >= noteHashPendingReadHints &&
188
- hintSizes.NOTE_HASH_SETTLED_AMOUNT >= noteHashSettledReadHints &&
189
- hintSizes.NULLIFIER_PENDING_AMOUNT >= nullifierPendingReadHints &&
190
- hintSizes.NULLIFIER_SETTLED_AMOUNT >= nullifierSettledReadHints &&
191
- hintSizes.NULLIFIER_KEYS >= keysCount &&
192
- hintSizes.TRANSIENT_DATA_AMOUNT >= numTransientData &&
193
- ((!shouldSilo && noSiloing) || (shouldSilo && enoughSiloing))
194
- ) {
195
- privateInputs = new PrivateKernelResetCircuitPrivateInputs(
196
- previousKernelData,
197
- new PrivateKernelResetHints(
198
- noteHashReadRequestHints,
199
- nullifierReadRequestHints,
200
- keysHints,
201
- transientDataIndexHints,
202
- validationRequestsSplitCounter,
203
- ).trimToSizes(
204
- hintSizes.NOTE_HASH_PENDING_AMOUNT,
205
- hintSizes.NOTE_HASH_SETTLED_AMOUNT,
206
- hintSizes.NULLIFIER_PENDING_AMOUNT,
207
- hintSizes.NULLIFIER_SETTLED_AMOUNT,
208
- hintSizes.NULLIFIER_KEYS,
209
- hintSizes.TRANSIENT_DATA_AMOUNT,
210
- ),
211
- sizeTag,
212
- );
213
- break;
214
- }
215
- }
216
-
217
- if (!privateInputs) {
218
- throw new Error('No private inputs found for the given hint sizes.');
219
- }
220
-
221
- return privateInputs as PrivateKernelResetCircuitPrivateInputsVariants;
222
- }
223
-
224
- function collectNested<T>(
225
- executionStack: ExecutionResult[],
226
- extractExecutionItems: (execution: ExecutionResult) => T[],
227
- ): T[] {
228
- const thisExecutionReads = executionStack.flatMap(extractExecutionItems);
229
-
230
- return thisExecutionReads.concat(
231
- executionStack.flatMap(({ nestedExecutions }) => collectNested(nestedExecutions, extractExecutionItems)),
232
- );
233
- }
234
-
235
- function collectNestedReadRequests(
236
- executionStack: ExecutionResult[],
237
- extractReadRequests: (execution: ExecutionResult) => ReadRequest[],
238
- ): ScopedReadRequest[] {
239
- return collectNested(executionStack, executionResult => {
240
- const nonEmptyReadRequests = getNonEmptyItems(extractReadRequests(executionResult));
241
- return nonEmptyReadRequests.map(
242
- readRequest =>
243
- new ScopedReadRequest(
244
- readRequest,
245
- executionResult.callStackItem.publicInputs.callContext.storageContractAddress,
246
- ),
247
- );
248
- });
249
- }
@@ -1,54 +0,0 @@
1
- import {
2
- MAX_KEY_VALIDATION_REQUESTS_PER_TX,
3
- MAX_NOTE_ENCRYPTED_LOGS_PER_TX,
4
- MAX_NOTE_HASHES_PER_TX,
5
- MAX_NOTE_HASH_READ_REQUESTS_PER_TX,
6
- MAX_NULLIFIERS_PER_TX,
7
- MAX_NULLIFIER_READ_REQUESTS_PER_TX,
8
- type PrivateKernelCircuitPublicInputs,
9
- countAccumulatedItems,
10
- } from '@aztec/circuits.js';
11
- import { type ExecutionResult } from '@aztec/simulator';
12
-
13
- export function needsReset(publicInputs: PrivateKernelCircuitPublicInputs, executionStack: ExecutionResult[]) {
14
- const nextIteration = executionStack[executionStack.length - 1];
15
- return (
16
- countAccumulatedItems(nextIteration.callStackItem.publicInputs.noteHashes) +
17
- countAccumulatedItems(publicInputs.end.noteHashes) >
18
- MAX_NOTE_HASHES_PER_TX ||
19
- countAccumulatedItems(nextIteration.callStackItem.publicInputs.nullifiers) +
20
- countAccumulatedItems(publicInputs.end.nullifiers) >
21
- MAX_NULLIFIERS_PER_TX ||
22
- countAccumulatedItems(nextIteration.callStackItem.publicInputs.noteEncryptedLogsHashes) +
23
- countAccumulatedItems(publicInputs.end.noteEncryptedLogsHashes) >
24
- MAX_NOTE_ENCRYPTED_LOGS_PER_TX ||
25
- countAccumulatedItems(nextIteration.callStackItem.publicInputs.noteHashReadRequests) +
26
- countAccumulatedItems(publicInputs.validationRequests.noteHashReadRequests) >
27
- MAX_NOTE_HASH_READ_REQUESTS_PER_TX ||
28
- countAccumulatedItems(nextIteration.callStackItem.publicInputs.nullifierReadRequests) +
29
- countAccumulatedItems(publicInputs.validationRequests.nullifierReadRequests) >
30
- MAX_NULLIFIER_READ_REQUESTS_PER_TX ||
31
- countAccumulatedItems(nextIteration.callStackItem.publicInputs.keyValidationRequestsAndGenerators) +
32
- countAccumulatedItems(publicInputs.validationRequests.scopedKeyValidationRequestsAndGenerators) >
33
- MAX_KEY_VALIDATION_REQUESTS_PER_TX
34
- );
35
- }
36
-
37
- function hasTransientNullifier(publicInputs: PrivateKernelCircuitPublicInputs) {
38
- const noteHashSet = new Set();
39
- publicInputs.end.noteHashes.forEach(n => noteHashSet.add(n.noteHash.value.toBigInt()));
40
- noteHashSet.delete(0n);
41
- return publicInputs.end.nullifiers.some(n => noteHashSet.has(n.nullifiedNoteHash.toBigInt()));
42
- }
43
-
44
- export function needsFinalReset(publicInputs: PrivateKernelCircuitPublicInputs) {
45
- return (
46
- countAccumulatedItems(publicInputs.end.noteHashes) > 0 ||
47
- countAccumulatedItems(publicInputs.end.nullifiers) > 0 ||
48
- countAccumulatedItems(publicInputs.end.encryptedLogsHashes) > 0 ||
49
- countAccumulatedItems(publicInputs.validationRequests.noteHashReadRequests) > 0 ||
50
- countAccumulatedItems(publicInputs.validationRequests.nullifierReadRequests) > 0 ||
51
- countAccumulatedItems(publicInputs.validationRequests.scopedKeyValidationRequestsAndGenerators) > 0 ||
52
- hasTransientNullifier(publicInputs)
53
- );
54
- }