@aztec/pxe 0.45.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.
- package/dest/database/deferred_note_dao.d.ts +2 -2
- package/dest/database/deferred_note_dao.d.ts.map +1 -1
- package/dest/database/deferred_note_dao.js +4 -4
- package/dest/kernel_prover/kernel_prover.d.ts.map +1 -1
- package/dest/kernel_prover/kernel_prover.js +12 -15
- package/dest/kernel_prover/private_inputs_builders/build_private_kernel_reset_hints.d.ts.map +1 -1
- package/dest/kernel_prover/private_inputs_builders/build_private_kernel_reset_hints.js +9 -11
- package/dest/kernel_prover/private_inputs_builders/index.d.ts +0 -3
- package/dest/kernel_prover/private_inputs_builders/index.d.ts.map +1 -1
- package/dest/kernel_prover/private_inputs_builders/index.js +1 -4
- package/dest/kernel_prover/test/test_circuit_prover.d.ts.map +1 -1
- package/dest/kernel_prover/test/test_circuit_prover.js +2 -2
- package/dest/note_processor/note_processor.d.ts.map +1 -1
- package/dest/note_processor/note_processor.js +10 -10
- package/dest/note_processor/produce_note_dao.d.ts +2 -2
- package/dest/note_processor/produce_note_dao.d.ts.map +1 -1
- package/dest/note_processor/produce_note_dao.js +7 -7
- package/dest/pxe_service/pxe_service.d.ts.map +1 -1
- package/dest/pxe_service/pxe_service.js +2 -1
- package/package.json +14 -14
- package/src/database/deferred_note_dao.ts +2 -2
- package/src/kernel_prover/kernel_prover.ts +12 -25
- package/src/kernel_prover/private_inputs_builders/build_private_kernel_reset_hints.ts +14 -35
- package/src/kernel_prover/private_inputs_builders/index.ts +0 -3
- package/src/kernel_prover/test/test_circuit_prover.ts +1 -3
- package/src/note_processor/note_processor.ts +9 -14
- package/src/note_processor/produce_note_dao.ts +6 -6
- package/src/pxe_service/pxe_service.ts +1 -0
- package/dest/kernel_prover/private_inputs_builders/build_private_kernel_init_hints.d.ts +0 -3
- package/dest/kernel_prover/private_inputs_builders/build_private_kernel_init_hints.d.ts.map +0 -1
- package/dest/kernel_prover/private_inputs_builders/build_private_kernel_init_hints.js +0 -6
- package/dest/kernel_prover/private_inputs_builders/build_private_kernel_inner_hints.d.ts +0 -3
- package/dest/kernel_prover/private_inputs_builders/build_private_kernel_inner_hints.d.ts.map +0 -1
- package/dest/kernel_prover/private_inputs_builders/build_private_kernel_inner_hints.js +0 -6
- package/dest/kernel_prover/private_inputs_builders/build_private_kernel_reset_outputs.d.ts +0 -4
- package/dest/kernel_prover/private_inputs_builders/build_private_kernel_reset_outputs.d.ts.map +0 -1
- package/dest/kernel_prover/private_inputs_builders/build_private_kernel_reset_outputs.js +0 -14
- package/src/kernel_prover/private_inputs_builders/build_private_kernel_init_hints.ts +0 -17
- package/src/kernel_prover/private_inputs_builders/build_private_kernel_inner_hints.ts +0 -17
- package/src/kernel_prover/private_inputs_builders/build_private_kernel_reset_outputs.ts +0 -45
|
@@ -22,7 +22,7 @@ export declare class DeferredNoteDao {
|
|
|
22
22
|
/** The hash of the tx the note was created in. Equal to the first nullifier */
|
|
23
23
|
txHash: TxHash;
|
|
24
24
|
/** New note hashes in this transaction, one of which belongs to this note */
|
|
25
|
-
|
|
25
|
+
noteHashes: Fr[];
|
|
26
26
|
/** The next available leaf index for the note hash tree for this transaction */
|
|
27
27
|
dataStartIndexForTx: number;
|
|
28
28
|
constructor(
|
|
@@ -39,7 +39,7 @@ export declare class DeferredNoteDao {
|
|
|
39
39
|
/** The hash of the tx the note was created in. Equal to the first nullifier */
|
|
40
40
|
txHash: TxHash,
|
|
41
41
|
/** New note hashes in this transaction, one of which belongs to this note */
|
|
42
|
-
|
|
42
|
+
noteHashes: Fr[],
|
|
43
43
|
/** The next available leaf index for the note hash tree for this transaction */
|
|
44
44
|
dataStartIndexForTx: number);
|
|
45
45
|
toBuffer(): Buffer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deferred_note_dao.d.ts","sourceRoot":"","sources":["../../src/database/deferred_note_dao.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,EAAE,EAAS,KAAK,SAAS,EAAU,MAAM,oBAAoB,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAE9E;;;;GAIG;AACH,qBAAa,eAAe;IAExB,yFAAyF;IAClF,SAAS,EAAE,SAAS;IAC3B,kDAAkD;IAC3C,IAAI,EAAE,IAAI;IACjB,oDAAoD;IAC7C,eAAe,EAAE,YAAY;IACpC,iEAAiE;IAC1D,WAAW,EAAE,EAAE;IACtB,+CAA+C;IACxC,UAAU,EAAE,YAAY;IAC/B,+EAA+E;IACxE,MAAM,EAAE,MAAM;IACrB,6EAA6E;IACtE,
|
|
1
|
+
{"version":3,"file":"deferred_note_dao.d.ts","sourceRoot":"","sources":["../../src/database/deferred_note_dao.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,EAAE,EAAS,KAAK,SAAS,EAAU,MAAM,oBAAoB,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAE9E;;;;GAIG;AACH,qBAAa,eAAe;IAExB,yFAAyF;IAClF,SAAS,EAAE,SAAS;IAC3B,kDAAkD;IAC3C,IAAI,EAAE,IAAI;IACjB,oDAAoD;IAC7C,eAAe,EAAE,YAAY;IACpC,iEAAiE;IAC1D,WAAW,EAAE,EAAE;IACtB,+CAA+C;IACxC,UAAU,EAAE,YAAY;IAC/B,+EAA+E;IACxE,MAAM,EAAE,MAAM;IACrB,6EAA6E;IACtE,UAAU,EAAE,EAAE,EAAE;IACvB,gFAAgF;IACzE,mBAAmB,EAAE,MAAM;;IAflC,yFAAyF;IAClF,SAAS,EAAE,SAAS;IAC3B,kDAAkD;IAC3C,IAAI,EAAE,IAAI;IACjB,oDAAoD;IAC7C,eAAe,EAAE,YAAY;IACpC,iEAAiE;IAC1D,WAAW,EAAE,EAAE;IACtB,+CAA+C;IACxC,UAAU,EAAE,YAAY;IAC/B,+EAA+E;IACxE,MAAM,EAAE,MAAM;IACrB,6EAA6E;IACtE,UAAU,EAAE,EAAE,EAAE;IACvB,gFAAgF;IACzE,mBAAmB,EAAE,MAAM;IAGpC,QAAQ,IAAI,MAAM;IAYlB,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY;CAahD"}
|
|
@@ -22,7 +22,7 @@ export class DeferredNoteDao {
|
|
|
22
22
|
/** The hash of the tx the note was created in. Equal to the first nullifier */
|
|
23
23
|
txHash,
|
|
24
24
|
/** New note hashes in this transaction, one of which belongs to this note */
|
|
25
|
-
|
|
25
|
+
noteHashes,
|
|
26
26
|
/** The next available leaf index for the note hash tree for this transaction */
|
|
27
27
|
dataStartIndexForTx) {
|
|
28
28
|
this.publicKey = publicKey;
|
|
@@ -31,15 +31,15 @@ export class DeferredNoteDao {
|
|
|
31
31
|
this.storageSlot = storageSlot;
|
|
32
32
|
this.noteTypeId = noteTypeId;
|
|
33
33
|
this.txHash = txHash;
|
|
34
|
-
this.
|
|
34
|
+
this.noteHashes = noteHashes;
|
|
35
35
|
this.dataStartIndexForTx = dataStartIndexForTx;
|
|
36
36
|
}
|
|
37
37
|
toBuffer() {
|
|
38
|
-
return serializeToBuffer(this.publicKey, this.note, this.contractAddress, this.storageSlot, this.noteTypeId, this.txHash, new Vector(this.
|
|
38
|
+
return serializeToBuffer(this.publicKey, this.note, this.contractAddress, this.storageSlot, this.noteTypeId, this.txHash, new Vector(this.noteHashes), this.dataStartIndexForTx);
|
|
39
39
|
}
|
|
40
40
|
static fromBuffer(buffer) {
|
|
41
41
|
const reader = BufferReader.asReader(buffer);
|
|
42
42
|
return new DeferredNoteDao(reader.readObject(Point), reader.readObject(Note), reader.readObject(AztecAddress), reader.readObject(Fr), reader.readObject(NoteSelector), reader.readObject(TxHash), reader.readVector(Fr), reader.readNumber());
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmZXJyZWRfbm90ZV9kYW8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YWJhc2UvZGVmZXJyZWRfbm90ZV9kYW8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQWtCLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFOUU7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxlQUFlO0lBQzFCO0lBQ0UseUZBQXlGO0lBQ2xGLFNBQW9CO0lBQzNCLGtEQUFrRDtJQUMzQyxJQUFVO0lBQ2pCLG9EQUFvRDtJQUM3QyxlQUE2QjtJQUNwQyxpRUFBaUU7SUFDMUQsV0FBZTtJQUN0QiwrQ0FBK0M7SUFDeEMsVUFBd0I7SUFDL0IsK0VBQStFO0lBQ3hFLE1BQWM7SUFDckIsNkVBQTZFO0lBQ3RFLFVBQWdCO0lBQ3ZCLGdGQUFnRjtJQUN6RSxtQkFBMkI7UUFkM0IsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUVwQixTQUFJLEdBQUosSUFBSSxDQUFNO1FBRVYsb0JBQWUsR0FBZixlQUFlLENBQWM7UUFFN0IsZ0JBQVcsR0FBWCxXQUFXLENBQUk7UUFFZixlQUFVLEdBQVYsVUFBVSxDQUFjO1FBRXhCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFFZCxlQUFVLEdBQVYsVUFBVSxDQUFNO1FBRWhCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBUTtJQUNqQyxDQUFDO0lBRUosUUFBUTtRQUNOLE9BQU8saUJBQWlCLENBQ3RCLElBQUksQ0FBQyxTQUFTLEVBQ2QsSUFBSSxDQUFDLElBQUksRUFDVCxJQUFJLENBQUMsZUFBZSxFQUNwQixJQUFJLENBQUMsV0FBVyxFQUNoQixJQUFJLENBQUMsVUFBVSxFQUNmLElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUMzQixJQUFJLENBQUMsbUJBQW1CLENBQ3pCLENBQUM7SUFDSixDQUFDO0lBQ0QsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUE2QjtRQUM3QyxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdDLE9BQU8sSUFBSSxlQUFlLENBQ3hCLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQ3hCLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQ3ZCLE1BQU0sQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLEVBQy9CLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQ3JCLE1BQU0sQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLEVBQy9CLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQ3pCLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQ3JCLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FDcEIsQ0FBQztJQUNKLENBQUM7Q0FDRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kernel_prover.d.ts","sourceRoot":"","sources":["../../src/kernel_prover/kernel_prover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAiBL,KAAK,oCAAoC,EAGzC,KAAK,SAAS,EAKf,MAAM,oBAAoB,CAAC;AAK5B,OAAO,EAAE,KAAK,eAAe,EAAiE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"kernel_prover.d.ts","sourceRoot":"","sources":["../../src/kernel_prover/kernel_prover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAiBL,KAAK,oCAAoC,EAGzC,KAAK,SAAS,EAKf,MAAM,oBAAoB,CAAC;AAK5B,OAAO,EAAE,KAAK,eAAe,EAAiE,MAAM,kBAAkB,CAAC;AAGvH,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAElE;;;;;GAKG;AACH,qBAAa,YAAY;IAGX,OAAO,CAAC,MAAM;IAAqB,OAAO,CAAC,YAAY;IAFnE,OAAO,CAAC,GAAG,CAA4C;gBAEnC,MAAM,EAAE,iBAAiB,EAAU,YAAY,EAAE,YAAY;IAEjF;;;;;;;;;OASG;IACG,KAAK,CACT,SAAS,EAAE,SAAS,EACpB,eAAe,EAAE,eAAe,GAC/B,OAAO,CAAC,iBAAiB,CAAC,oCAAoC,CAAC,CAAC;IAsFnE,OAAO,CAAC,UAAU;IAwBlB,OAAO,CAAC,gBAAgB;YASV,QAAQ;YA0BR,qBAAqB;CAuCpC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { CallRequest, Fr, MAX_KEY_VALIDATION_REQUESTS_PER_TX,
|
|
1
|
+
import { CallRequest, Fr, 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, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, NESTED_RECURSIVE_PROOF_LENGTH, PrivateCallData, PrivateKernelCircuitPublicInputs, PrivateKernelData, PrivateKernelInitCircuitPrivateInputs, PrivateKernelInnerCircuitPrivateInputs, PrivateKernelTailCircuitPrivateInputs, VK_TREE_HEIGHT, VerificationKeyAsFields, getNonEmptyItems, makeRecursiveProof, } from '@aztec/circuits.js';
|
|
2
2
|
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
3
3
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
4
4
|
import { assertLength } from '@aztec/foundation/serialize';
|
|
5
5
|
import { pushTestData } from '@aztec/foundation/testing';
|
|
6
6
|
import { collectNoteHashLeafIndexMap, collectNullifiedNoteHashCounters } from '@aztec/simulator';
|
|
7
|
-
import {
|
|
7
|
+
import { buildPrivateKernelResetInputs } from './private_inputs_builders/index.js';
|
|
8
8
|
/**
|
|
9
9
|
* The KernelProver class is responsible for generating kernel proofs.
|
|
10
10
|
* It takes a transaction request, its signature, and the simulation result as inputs, and outputs a proof
|
|
@@ -51,16 +51,14 @@ export class KernelProver {
|
|
|
51
51
|
const proofOutput = await this.proofCreator.createAppCircuitProof(currentExecution.partialWitness, currentExecution.acir, functionName);
|
|
52
52
|
const privateCallData = await this.createPrivateCallData(currentExecution, publicCallRequests, publicTeardownCallRequest, proofOutput.proof, proofOutput.verificationKey);
|
|
53
53
|
if (firstIteration) {
|
|
54
|
-
const
|
|
55
|
-
const proofInput = new PrivateKernelInitCircuitPrivateInputs(txRequest, privateCallData, hints);
|
|
54
|
+
const proofInput = new PrivateKernelInitCircuitPrivateInputs(txRequest, privateCallData);
|
|
56
55
|
pushTestData('private-kernel-inputs-init', proofInput);
|
|
57
56
|
output = await this.proofCreator.createProofInit(proofInput);
|
|
58
57
|
}
|
|
59
58
|
else {
|
|
60
|
-
const hints = buildPrivateKernelInnerHints(currentExecution.callStackItem.publicInputs, noteHashNullifierCounterMap);
|
|
61
59
|
const previousVkMembershipWitness = await this.oracle.getVkMembershipWitness(output.verificationKey);
|
|
62
60
|
const previousKernelData = new PrivateKernelData(output.publicInputs, output.proof, output.verificationKey, Number(previousVkMembershipWitness.leafIndex), assertLength(previousVkMembershipWitness.siblingPath, VK_TREE_HEIGHT));
|
|
63
|
-
const proofInput = new PrivateKernelInnerCircuitPrivateInputs(previousKernelData, privateCallData
|
|
61
|
+
const proofInput = new PrivateKernelInnerCircuitPrivateInputs(previousKernelData, privateCallData);
|
|
64
62
|
pushTestData('private-kernel-inputs-inner', proofInput);
|
|
65
63
|
output = await this.proofCreator.createProofInner(proofInput);
|
|
66
64
|
}
|
|
@@ -78,12 +76,12 @@ export class KernelProver {
|
|
|
78
76
|
}
|
|
79
77
|
needsReset(executionStack, output) {
|
|
80
78
|
const nextIteration = executionStack[executionStack.length - 1];
|
|
81
|
-
return (getNonEmptyItems(nextIteration.callStackItem.publicInputs.
|
|
82
|
-
getNonEmptyItems(output.publicInputs.end.
|
|
83
|
-
|
|
84
|
-
getNonEmptyItems(nextIteration.callStackItem.publicInputs.
|
|
85
|
-
getNonEmptyItems(output.publicInputs.end.
|
|
86
|
-
|
|
79
|
+
return (getNonEmptyItems(nextIteration.callStackItem.publicInputs.noteHashes).length +
|
|
80
|
+
getNonEmptyItems(output.publicInputs.end.noteHashes).length >
|
|
81
|
+
MAX_NOTE_HASHES_PER_TX ||
|
|
82
|
+
getNonEmptyItems(nextIteration.callStackItem.publicInputs.nullifiers).length +
|
|
83
|
+
getNonEmptyItems(output.publicInputs.end.nullifiers).length >
|
|
84
|
+
MAX_NULLIFIERS_PER_TX ||
|
|
87
85
|
getNonEmptyItems(nextIteration.callStackItem.publicInputs.noteEncryptedLogsHashes).length +
|
|
88
86
|
getNonEmptyItems(output.publicInputs.end.noteEncryptedLogsHashes).length >
|
|
89
87
|
MAX_NOTE_ENCRYPTED_LOGS_PER_TX ||
|
|
@@ -101,8 +99,7 @@ export class KernelProver {
|
|
|
101
99
|
return (getNonEmptyItems(output.publicInputs.validationRequests.noteHashReadRequests).length > 0 ||
|
|
102
100
|
getNonEmptyItems(output.publicInputs.validationRequests.nullifierReadRequests).length > 0 ||
|
|
103
101
|
getNonEmptyItems(output.publicInputs.validationRequests.scopedKeyValidationRequestsAndGenerators).length > 0 ||
|
|
104
|
-
output.publicInputs.end.
|
|
105
|
-
output.publicInputs.end.newNullifiers.find(nullifier => !nullifier.nullifiedNoteHash.equals(Fr.zero())));
|
|
102
|
+
output.publicInputs.end.nullifiers.find(nullifier => !nullifier.nullifiedNoteHash.equals(Fr.zero())));
|
|
106
103
|
}
|
|
107
104
|
async runReset(executionStack, output, noteHashLeafIndexMap, noteHashNullifierCounterMap) {
|
|
108
105
|
const previousVkMembershipWitness = await this.oracle.getVkMembershipWitness(output.verificationKey);
|
|
@@ -133,4 +130,4 @@ export class KernelProver {
|
|
|
133
130
|
});
|
|
134
131
|
}
|
|
135
132
|
}
|
|
136
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
133
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2VybmVsX3Byb3Zlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9rZXJuZWxfcHJvdmVyL2tlcm5lbF9wcm92ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNMLFdBQVcsRUFDWCxFQUFFLEVBQ0Ysa0NBQWtDLEVBQ2xDLDhCQUE4QixFQUM5QixzQkFBc0IsRUFDdEIsa0NBQWtDLEVBQ2xDLHFCQUFxQixFQUNyQixrQ0FBa0MsRUFDbEMscUNBQXFDLEVBQ3JDLDZCQUE2QixFQUM3QixlQUFlLEVBQ2YsZ0NBQWdDLEVBQ2hDLGlCQUFpQixFQUNqQixxQ0FBcUMsRUFDckMsc0NBQXNDLEVBQ3RDLHFDQUFxQyxFQUtyQyxjQUFjLEVBQ2QsdUJBQXVCLEVBQ3ZCLGdCQUFnQixFQUNoQixrQkFBa0IsR0FDbkIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQXdCLDJCQUEyQixFQUFFLGdDQUFnQyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFdkgsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFHbkY7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQUd2QixZQUFvQixNQUF5QixFQUFVLFlBQTBCO1FBQTdELFdBQU0sR0FBTixNQUFNLENBQW1CO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQWM7UUFGekUsUUFBRyxHQUFHLGlCQUFpQixDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFFNkIsQ0FBQztJQUVyRjs7Ozs7Ozs7O09BU0c7SUFDSCxLQUFLLENBQUMsS0FB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
|
package/dest/kernel_prover/private_inputs_builders/build_private_kernel_reset_hints.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build_private_kernel_reset_hints.d.ts","sourceRoot":"","sources":["../../../src/kernel_prover/private_inputs_builders/build_private_kernel_reset_hints.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"build_private_kernel_reset_hints.d.ts","sourceRoot":"","sources":["../../../src/kernel_prover/private_inputs_builders/build_private_kernel_reset_hints.ts"],"names":[],"mappings":"AAAA,OAAO,EAWL,KAAK,iBAAiB,EAEtB,KAAK,8CAA8C,EAWpD,MAAM,oBAAoB,CAAC;AAG5B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AA2DnE,wBAAsB,6BAA6B,CACjD,cAAc,EAAE,eAAe,EAAE,EACjC,kBAAkB,EAAE,iBAAiB,EACrC,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EACzC,2BAA2B,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAChD,MAAM,EAAE,iBAAiB,2DA4G1B"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { KeyValidationHint, MAX_KEY_VALIDATION_REQUESTS_PER_TX,
|
|
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, getNonEmptyItems, } from '@aztec/circuits.js';
|
|
2
2
|
import { makeTuple } from '@aztec/foundation/array';
|
|
3
|
-
import { buildPrivateKernelResetOutputs } from './build_private_kernel_reset_outputs.js';
|
|
4
3
|
function getNullifierReadRequestHints(nullifierReadRequests, nullifiers, oracle, sizePending, sizeSettled, futureNullifiers) {
|
|
5
4
|
const getNullifierMembershipWitness = async (nullifier) => {
|
|
6
5
|
const res = await oracle.getNullifierMembershipWitness(nullifier);
|
|
@@ -36,20 +35,19 @@ export async function buildPrivateKernelResetInputs(executionStack, previousKern
|
|
|
36
35
|
const publicInputs = previousKernelData.publicInputs;
|
|
37
36
|
// Use max sizes, they will be trimmed down later.
|
|
38
37
|
const futureNoteHashes = collectNested(executionStack, executionResult => {
|
|
39
|
-
const nonEmptyNoteHashes = getNonEmptyItems(executionResult.callStackItem.publicInputs.
|
|
40
|
-
return nonEmptyNoteHashes.map(noteHash => new ScopedNoteHash(noteHash,
|
|
38
|
+
const nonEmptyNoteHashes = getNonEmptyItems(executionResult.callStackItem.publicInputs.noteHashes);
|
|
39
|
+
return nonEmptyNoteHashes.map(noteHash => new ScopedNoteHash(noteHash, executionResult.callStackItem.publicInputs.callContext.storageContractAddress));
|
|
41
40
|
});
|
|
42
|
-
const { numPendingReadHints: noteHashPendingReadHints, numSettledReadHints: noteHashSettledReadHints, hints: noteHashReadRequestHints, } = await buildNoteHashReadRequestHints(oracle, publicInputs.validationRequests.noteHashReadRequests, publicInputs.end.
|
|
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);
|
|
43
42
|
const futureNullifiers = collectNested(executionStack, executionResult => {
|
|
44
|
-
const nonEmptyNullifiers = getNonEmptyItems(executionResult.callStackItem.publicInputs.
|
|
43
|
+
const nonEmptyNullifiers = getNonEmptyItems(executionResult.callStackItem.publicInputs.nullifiers);
|
|
45
44
|
return nonEmptyNullifiers.map(nullifier => new ScopedNullifier(nullifier, executionResult.callStackItem.publicInputs.callContext.storageContractAddress));
|
|
46
45
|
});
|
|
47
|
-
const { numPendingReadHints: nullifierPendingReadHints, numSettledReadHints: nullifierSettledReadHints, hints: nullifierReadRequestHints, } = await getNullifierReadRequestHints(publicInputs.validationRequests.nullifierReadRequests, publicInputs.end.
|
|
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);
|
|
48
47
|
const { keysCount, keysHints } = await getMasterSecretKeysAndAppKeyGenerators(publicInputs.validationRequests.scopedKeyValidationRequestsAndGenerators, oracle);
|
|
49
48
|
const futureNoteHashReads = collectNestedReadRequests(executionStack, executionResult => executionResult.callStackItem.publicInputs.noteHashReadRequests);
|
|
50
49
|
const futureNullifierReads = collectNestedReadRequests(executionStack, executionResult => executionResult.callStackItem.publicInputs.nullifierReadRequests);
|
|
51
|
-
const [transientNullifierIndexesForNoteHashes, transientNoteHashIndexesForNullifiers
|
|
52
|
-
const expectedOutputs = buildPrivateKernelResetOutputs(previousKernelData.publicInputs.end.newNoteHashes, previousKernelData.publicInputs.end.newNullifiers, previousKernelData.publicInputs.end.noteEncryptedLogsHashes, transientNullifierIndexesForNoteHashes, transientNoteHashIndexesForNullifiers);
|
|
50
|
+
const [transientNullifierIndexesForNoteHashes, transientNoteHashIndexesForNullifiers] = buildTransientDataHints(publicInputs.end.noteHashes, publicInputs.end.nullifiers, futureNoteHashReads, futureNullifierReads, noteHashNullifierCounterMap, MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX);
|
|
53
51
|
let privateInputs;
|
|
54
52
|
for (const [sizeTag, hintSizes] of Object.entries(PRIVATE_RESET_VARIANTS)) {
|
|
55
53
|
if (hintSizes.NOTE_HASH_PENDING_AMOUNT >= noteHashPendingReadHints &&
|
|
@@ -57,7 +55,7 @@ export async function buildPrivateKernelResetInputs(executionStack, previousKern
|
|
|
57
55
|
hintSizes.NULLIFIER_PENDING_AMOUNT >= nullifierPendingReadHints &&
|
|
58
56
|
hintSizes.NULLIFIER_SETTLED_AMOUNT >= nullifierSettledReadHints &&
|
|
59
57
|
hintSizes.NULLIFIER_KEYS >= keysCount) {
|
|
60
|
-
privateInputs = new PrivateKernelResetCircuitPrivateInputs(previousKernelData,
|
|
58
|
+
privateInputs = new PrivateKernelResetCircuitPrivateInputs(previousKernelData, new PrivateKernelResetHints(transientNullifierIndexesForNoteHashes, transientNoteHashIndexesForNullifiers, noteHashReadRequestHints, nullifierReadRequestHints, keysHints).trimToSizes(hintSizes.NOTE_HASH_PENDING_AMOUNT, hintSizes.NOTE_HASH_SETTLED_AMOUNT, hintSizes.NULLIFIER_PENDING_AMOUNT, hintSizes.NULLIFIER_SETTLED_AMOUNT, hintSizes.NULLIFIER_KEYS), sizeTag);
|
|
61
59
|
break;
|
|
62
60
|
}
|
|
63
61
|
}
|
|
@@ -76,4 +74,4 @@ function collectNestedReadRequests(executionStack, extractReadRequests) {
|
|
|
76
74
|
return nonEmptyReadRequests.map(readRequest => new ScopedReadRequest(readRequest, executionResult.callStackItem.publicInputs.callContext.storageContractAddress));
|
|
77
75
|
});
|
|
78
76
|
}
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRfcHJpdmF0ZV9rZXJuZWxfcmVzZXRfaGludHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMva2VybmVsX3Byb3Zlci9wcml2YXRlX2lucHV0c19idWlsZGVycy9idWlsZF9wcml2YXRlX2tlcm5lbF9yZXNldF9oaW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLGtDQUFrQyxFQUNsQyxzQkFBc0IsRUFDdEIsa0NBQWtDLEVBQ2xDLHFCQUFxQixFQUNyQixrQ0FBa0MsRUFDbEMsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUNyQixzQkFBc0IsRUFFdEIsc0NBQXNDLEVBRXRDLHVCQUF1QixFQUd2QixjQUFjLEVBQ2QsZUFBZSxFQUNmLGlCQUFpQixFQUNqQiw2QkFBNkIsRUFDN0IsOEJBQThCLEVBQzlCLHVCQUF1QixFQUN2QixnQkFBZ0IsR0FDakIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFNcEQsU0FBUyw0QkFBNEIsQ0FDbkMscUJBQTBGLEVBQzFGLFVBQWdFLEVBQ2hFLE1BQXlCLEVBQ3pCLFdBQW9CLEVBQ3BCLFdBQW9CLEVBQ3BCLGdCQUFtQztJQUVuQyxNQUFNLDZCQUE2QixHQUFHLEtBQUssRUFBRSxTQUFhLEVBQUUsRUFBRTtRQUM1RCxNQUFNLEdBQUcsR0FBRyxNQUFNLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDVCxNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxTQUFTLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2pGLENBQUM7UUFFRCxNQUFNLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsR0FBRyxHQUFHLENBQUM7UUFDakQsT0FBTztZQUNMLGlCQUFpQixFQUFF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
|
|
@@ -1,5 +1,2 @@
|
|
|
1
|
-
export { buildPrivateKernelInitHints } from './build_private_kernel_init_hints.js';
|
|
2
|
-
export { buildPrivateKernelInnerHints } from './build_private_kernel_inner_hints.js';
|
|
3
1
|
export { buildPrivateKernelResetInputs } from './build_private_kernel_reset_hints.js';
|
|
4
|
-
export { buildPrivateKernelResetOutputs } from './build_private_kernel_reset_outputs.js';
|
|
5
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/kernel_prover/private_inputs_builders/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/kernel_prover/private_inputs_builders/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC"}
|
|
@@ -1,5 +1,2 @@
|
|
|
1
|
-
export { buildPrivateKernelInitHints } from './build_private_kernel_init_hints.js';
|
|
2
|
-
export { buildPrivateKernelInnerHints } from './build_private_kernel_inner_hints.js';
|
|
3
1
|
export { buildPrivateKernelResetInputs } from './build_private_kernel_reset_hints.js';
|
|
4
|
-
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMva2VybmVsX3Byb3Zlci9wcml2YXRlX2lucHV0c19idWlsZGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNuRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNyRixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN0RixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQyJ9
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMva2VybmVsX3Byb3Zlci9wcml2YXRlX2lucHV0c19idWlsZGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQyJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test_circuit_prover.d.ts","sourceRoot":"","sources":["../../../src/kernel_prover/test/test_circuit_prover.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,iBAAiB,EAAE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAE7G,OAAO,EAEL,KAAK,0BAA0B,EAC/B,KAAK,gCAAgC,EACrC,KAAK,qCAAqC,EAC1C,KAAK,sCAAsC,EAC3C,KAAK,8CAA8C,EACnD,KAAK,qCAAqC,EAC1C,KAAK,oCAAoC,EAI1C,MAAM,oBAAoB,CAAC;AAY5B;;GAEG;AACH,qBAAa,gBAAiB,YAAW,YAAY;IACvC,OAAO,CAAC,GAAG;gBAAH,GAAG,yCAAgD;IAEhE,oBAAoB,CAAC,YAAY,EAAE,0BAA0B;
|
|
1
|
+
{"version":3,"file":"test_circuit_prover.d.ts","sourceRoot":"","sources":["../../../src/kernel_prover/test/test_circuit_prover.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,iBAAiB,EAAE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAE7G,OAAO,EAEL,KAAK,0BAA0B,EAC/B,KAAK,gCAAgC,EACrC,KAAK,qCAAqC,EAC1C,KAAK,sCAAsC,EAC3C,KAAK,8CAA8C,EACnD,KAAK,qCAAqC,EAC1C,KAAK,oCAAoC,EAI1C,MAAM,oBAAoB,CAAC;AAY5B;;GAEG;AACH,qBAAa,gBAAiB,YAAW,YAAY;IACvC,OAAO,CAAC,GAAG;gBAAH,GAAG,yCAAgD;IAEhE,oBAAoB,CAAC,YAAY,EAAE,0BAA0B;IAMvD,eAAe,CAC1B,aAAa,EAAE,qCAAqC,GACnD,OAAO,CAAC,iBAAiB,CAAC,gCAAgC,CAAC,CAAC;IAYlD,gBAAgB,CAC3B,aAAa,EAAE,sCAAsC,GACpD,OAAO,CAAC,iBAAiB,CAAC,gCAAgC,CAAC,CAAC;IAYlD,gBAAgB,CAC3B,aAAa,EAAE,8CAA8C,GAC5D,OAAO,CAAC,iBAAiB,CAAC,gCAAgC,CAAC,CAAC;IAYlD,eAAe,CAC1B,aAAa,EAAE,qCAAqC,GACnD,OAAO,CAAC,iBAAiB,CAAC,oCAAoC,CAAC,CAAC;IAenE,qBAAqB,CAAC,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAQ1F,OAAO,CAAC,0BAA0B;CAQnC"}
|
|
@@ -12,7 +12,7 @@ export class TestProofCreator {
|
|
|
12
12
|
}
|
|
13
13
|
getSiloedCommitments(publicInputs) {
|
|
14
14
|
const contractAddress = publicInputs.callContext.storageContractAddress;
|
|
15
|
-
return Promise.resolve(publicInputs.
|
|
15
|
+
return Promise.resolve(publicInputs.noteHashes.map(commitment => siloNoteHash(contractAddress, commitment.value)));
|
|
16
16
|
}
|
|
17
17
|
async createProofInit(privateInputs) {
|
|
18
18
|
const [duration, result] = await elapsed(() => executeInit(privateInputs));
|
|
@@ -75,4 +75,4 @@ export class TestProofCreator {
|
|
|
75
75
|
return kernelProofOutput;
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF9jaXJjdWl0X3Byb3Zlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9rZXJuZWxfcHJvdmVyL3Rlc3QvdGVzdF9jaXJjdWl0X3Byb3Zlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQ0wsNkJBQTZCLEVBUTdCLHNCQUFzQixFQUN0Qix1QkFBdUIsRUFDdkIsa0JBQWtCLEdBQ25CLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNsRCxPQUFPLEVBQ0wsV0FBVyxFQUNYLFlBQVksRUFDWixZQUFZLEVBQ1osV0FBVyxFQUNYLG9CQUFvQixHQUNyQixNQUFNLHFDQUFxQyxDQUFDO0FBRTdDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGdCQUFnQjtJQUMzQixZQUFvQixNQUFNLGlCQUFpQixDQUFDLDBCQUEwQixDQUFDO1FBQW5ELFFBQUcsR0FBSCxHQUFHLENBQWdEO0lBQUcsQ0FBQztJQUVwRSxvQkFBb0IsQ0FBQyxZQUF3QztRQUNsRSxNQUFNLGVBQWUsR0FBRyxZQUFZLENBQUMsV0FBVyxDQUFDLHNCQUFzQixDQUFDO1FBRXhFLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxlQUFlLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNySCxDQUFDO0lBRU0sS0FBSyxDQUFDLGVBQWUsQ0FDMUIsYUFBb0Q7UUFFcEQsTUFBTSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"note_processor.d.ts","sourceRoot":"","sources":["../../src/note_processor/note_processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAiB,KAAK,OAAO,EAAa,MAAM,sBAAsB,CAAC;AAC9F,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,
|
|
1
|
+
{"version":3,"file":"note_processor.d.ts","sourceRoot":"","sources":["../../src/note_processor/note_processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAiB,KAAK,OAAO,EAAa,MAAM,sBAAsB,CAAC;AAC9F,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,KAAK,YAAY,EAAgE,MAAM,oBAAoB,CAAC;AAErH,OAAO,EAAE,KAAK,MAAM,EAAqB,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAgBxE;;;GAGG;AACH,qBAAa,aAAa;aAiBN,OAAO,EAAE,YAAY;IACrC,mGAAmG;IACnG,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,mGAAmG;IACnG,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,GAAG;IA1Bb,mEAAmE;IACnE,SAAgB,KAAK,EAAE,KAAK,CAAe;IAE3C,4CAA4C;IAC5C,SAAgB,KAAK,EAAE,kBAAkB,CASvC;IAEF,OAAO;WAca,MAAM,CACxB,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,QAAQ,EAClB,EAAE,EAAE,WAAW,EACf,IAAI,EAAE,SAAS,EACf,aAAa,GAAE,MAA6B,EAC5C,SAAS,gBAAuC,EAChD,GAAG,SAA4C;IAQjD;;;;;;OAMG;IACU,cAAc;IAK3B;;OAEG;IACH,IAAW,MAAM;;MAEhB;IAED,OAAO,CAAC,gBAAgB;IAIxB;;;;;OAKG;IACU,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA8GtD;;;;;;;;OAQG;YACW,qBAAqB;IA8BnC;;;;;OAKG;YACW,oBAAoB;IAuBlC;;;;;;;;OAQG;IACU,mBAAmB,CAAC,gBAAgB,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC;QAC7E,aAAa,EAAE,eAAe,EAAE,CAAC;QACjC,aAAa,EAAE,eAAe,EAAE,CAAC;KAClC,CAAC;CAgDH"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { L1NotePayload, TaggedLog } from '@aztec/circuit-types';
|
|
2
|
-
import { INITIAL_L2_BLOCK_NUM,
|
|
2
|
+
import { INITIAL_L2_BLOCK_NUM, MAX_NOTE_HASHES_PER_TX } from '@aztec/circuits.js';
|
|
3
3
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
4
4
|
import { Timer } from '@aztec/foundation/timer';
|
|
5
5
|
import { getAcirSimulator } from '../simulator/index.js';
|
|
@@ -83,7 +83,7 @@ export class NoteProcessor {
|
|
|
83
83
|
this.stats.blocks++;
|
|
84
84
|
const { txLogs } = block.body.noteEncryptedLogs;
|
|
85
85
|
const dataStartIndexForBlock = block.header.state.partial.noteHashTree.nextAvailableLeafIndex -
|
|
86
|
-
block.body.numberOfTxsIncludingPadded *
|
|
86
|
+
block.body.numberOfTxsIncludingPadded * MAX_NOTE_HASHES_PER_TX;
|
|
87
87
|
// We are using set for `userPertainingTxIndices` to avoid duplicates. This would happen in case there were
|
|
88
88
|
// multiple encrypted logs in a tx pertaining to a user.
|
|
89
89
|
const incomingNotes = [];
|
|
@@ -91,8 +91,8 @@ export class NoteProcessor {
|
|
|
91
91
|
// Iterate over all the encrypted logs and try decrypting them. If successful, store the note.
|
|
92
92
|
for (let indexOfTxInABlock = 0; indexOfTxInABlock < txLogs.length; ++indexOfTxInABlock) {
|
|
93
93
|
this.stats.txs++;
|
|
94
|
-
const dataStartIndexForTx = dataStartIndexForBlock + indexOfTxInABlock *
|
|
95
|
-
const
|
|
94
|
+
const dataStartIndexForTx = dataStartIndexForBlock + indexOfTxInABlock * MAX_NOTE_HASHES_PER_TX;
|
|
95
|
+
const noteHashes = block.body.txEffects[indexOfTxInABlock].noteHashes;
|
|
96
96
|
// Note: Each tx generates a `TxL2Logs` object and for this reason we can rely on its index corresponding
|
|
97
97
|
// to the index of a tx in a block.
|
|
98
98
|
const txFunctionLogs = txLogs[indexOfTxInABlock].functionLogs;
|
|
@@ -110,7 +110,7 @@ export class NoteProcessor {
|
|
|
110
110
|
}
|
|
111
111
|
const payload = incomingTaggedNote?.payload || outgoingTaggedNote?.payload;
|
|
112
112
|
const txHash = block.body.txEffects[indexOfTxInABlock].txHash;
|
|
113
|
-
const { incomingNote, outgoingNote, incomingDeferredNote, outgoingDeferredNote } = await produceNoteDaos(this.simulator, incomingTaggedNote ? this.ivpkM : undefined, outgoingTaggedNote ? this.ovpkM : undefined, payload, txHash,
|
|
113
|
+
const { incomingNote, outgoingNote, incomingDeferredNote, outgoingDeferredNote } = await produceNoteDaos(this.simulator, incomingTaggedNote ? this.ivpkM : undefined, outgoingTaggedNote ? this.ovpkM : undefined, payload, txHash, noteHashes, dataStartIndexForTx, excludedIndices, this.log);
|
|
114
114
|
if (incomingNote) {
|
|
115
115
|
incomingNotes.push(incomingNote);
|
|
116
116
|
this.stats.decryptedIncoming++;
|
|
@@ -167,8 +167,8 @@ export class NoteProcessor {
|
|
|
167
167
|
this.log.verbose(`Added outgoing note for contract ${noteDao.contractAddress} at slot ${noteDao.storageSlot}`);
|
|
168
168
|
});
|
|
169
169
|
}
|
|
170
|
-
const
|
|
171
|
-
const removedNotes = await this.db.removeNullifiedNotes(
|
|
170
|
+
const nullifiers = blocksAndNotes.flatMap(b => b.block.body.txEffects.flatMap(txEffect => txEffect.nullifiers));
|
|
171
|
+
const removedNotes = await this.db.removeNullifiedNotes(nullifiers, this.ivpkM);
|
|
172
172
|
removedNotes.forEach(noteDao => {
|
|
173
173
|
this.log.verbose(`Removed note for contract ${noteDao.contractAddress} at slot ${noteDao.storageSlot} with nullifier ${noteDao.siloedNullifier.toString()}`);
|
|
174
174
|
});
|
|
@@ -204,7 +204,7 @@ export class NoteProcessor {
|
|
|
204
204
|
const incomingNotes = [];
|
|
205
205
|
const outgoingNotes = [];
|
|
206
206
|
for (const deferredNote of deferredNoteDaos) {
|
|
207
|
-
const { publicKey, note, contractAddress, storageSlot, noteTypeId, txHash,
|
|
207
|
+
const { publicKey, note, contractAddress, storageSlot, noteTypeId, txHash, noteHashes, dataStartIndexForTx } = deferredNote;
|
|
208
208
|
const payload = new L1NotePayload(note, contractAddress, storageSlot, noteTypeId);
|
|
209
209
|
const isIncoming = publicKey.equals(this.ivpkM);
|
|
210
210
|
const isOutgoing = publicKey.equals(this.ovpkM);
|
|
@@ -212,7 +212,7 @@ export class NoteProcessor {
|
|
|
212
212
|
// The note does not belong to this note processor
|
|
213
213
|
continue;
|
|
214
214
|
}
|
|
215
|
-
const { incomingNote, outgoingNote } = await produceNoteDaos(this.simulator, isIncoming ? this.ivpkM : undefined, isOutgoing ? this.ovpkM : undefined, payload, txHash,
|
|
215
|
+
const { incomingNote, outgoingNote } = await produceNoteDaos(this.simulator, isIncoming ? this.ivpkM : undefined, isOutgoing ? this.ovpkM : undefined, payload, txHash, noteHashes, dataStartIndexForTx, excludedIndices, this.log);
|
|
216
216
|
if (isIncoming) {
|
|
217
217
|
if (!incomingNote) {
|
|
218
218
|
throw new Error('Deferred incoming note could not be decoded');
|
|
@@ -231,4 +231,4 @@ export class NoteProcessor {
|
|
|
231
231
|
return { incomingNotes, outgoingNotes };
|
|
232
232
|
}
|
|
233
233
|
}
|
|
234
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90ZV9wcm9jZXNzb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbm90ZV9wcm9jZXNzb3Ivbm90ZV9wcm9jZXNzb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFrQixhQUFhLEVBQWdCLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTlGLE9BQU8sRUFFTCxvQkFBb0IsRUFDcEIsMEJBQTBCLEdBRTNCLE1BQU0sb0JBQW9CLENBQUM7QUFFNUIsT0FBTyxFQUFlLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdkUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBUWhELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQWN4RDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sYUFBYTtJQWdCeEIsWUFDa0IsT0FBcUI7SUFDckMsbUdBQW1HO0lBQ2xGLEtBQWdCO0lBQ2pDLG1HQUFtRztJQUNsRixLQUFnQixFQUN6QixRQUFrQixFQUNsQixFQUFlLEVBQ2YsSUFBZSxFQUNmLGFBQXFCLEVBQ3JCLFNBQXdCLEVBQ3hCLEdBQVc7UUFWSCxZQUFPLEdBQVAsT0FBTyxDQUFjO1FBRXBCLFVBQUssR0FBTCxLQUFLLENBQVc7UUFFaEIsVUFBSyxHQUFMLEtBQUssQ0FBVztRQUN6QixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDZixTQUFJLEdBQUosSUFBSSxDQUFXO1FBQ2Ysa0JBQWEsR0FBYixhQUFhLENBQVE7UUFDckIsY0FBUyxHQUFULFNBQVMsQ0FBZTtRQUN4QixRQUFHLEdBQUgsR0FBRyxDQUFRO1FBMUJyQixtRUFBbUU7UUFDbkQsVUFBSyxHQUFVLElBQUksS0FBSyxFQUFFLENBQUM7UUFFM0MsNENBQTRDO1FBQzVCLFVBQUss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
|
|
234
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90ZV9wcm9jZXNzb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbm90ZV9wcm9jZXNzb3Ivbm90ZV9wcm9jZXNzb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFrQixhQUFhLEVBQWdCLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTlGLE9BQU8sRUFBcUIsb0JBQW9CLEVBQUUsc0JBQXNCLEVBQWtCLE1BQU0sb0JBQW9CLENBQUM7QUFFckgsT0FBTyxFQUFlLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdkUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBUWhELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQWN4RDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sYUFBYTtJQWdCeEIsWUFDa0IsT0FBcUI7SUFDckMsbUdBQW1HO0lBQ2xGLEtBQWdCO0lBQ2pDLG1HQUFtRztJQUNsRixLQUFnQixFQUN6QixRQUFrQixFQUNsQixFQUFlLEVBQ2YsSUFBZSxFQUNmLGFBQXFCLEVBQ3JCLFNBQXdCLEVBQ3hCLEdBQVc7UUFWSCxZQUFPLEdBQVAsT0FBTyxDQUFjO1FBRXBCLFVBQUssR0FBTCxLQUFLLENBQVc7UUFFaEIsVUFBSyxHQUFMLEtBQUssQ0FBVztRQUN6QixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDZixTQUFJLEdBQUosSUFBSSxDQUFXO1FBQ2Ysa0JBQWEsR0FBYixhQUFhLENBQVE7UUFDckIsY0FBUyxHQUFULFNBQVMsQ0FBZTtRQUN4QixRQUFHLEdBQUgsR0FBRyxDQUFRO1FBMUJyQixtRUFBbUU7UUFDbkQsVUFBSyxHQUFVLElBQUksS0FBSyxFQUFFLENBQUM7UUFFM0MsNENBQTRDO1FBQzVCLFVBQUss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
|
|
@@ -15,13 +15,13 @@ import { OutgoingNoteDao } from '../database/outgoing_note_dao.js';
|
|
|
15
15
|
* @param ovpkM - The public counterpart to the secret key to be used in the decryption of outgoing note logs.
|
|
16
16
|
* @param payload - An instance of l1NotePayload.
|
|
17
17
|
* @param txHash - The hash of the transaction that created the note. Equivalent to the first nullifier of the transaction.
|
|
18
|
-
* @param
|
|
18
|
+
* @param noteHashes - New note hashes in this transaction, one of which belongs to this note.
|
|
19
19
|
* @param dataStartIndexForTx - The next available leaf index for the note hash tree for this transaction.
|
|
20
20
|
* @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.
|
|
21
21
|
* @param simulator - An instance of AcirSimulator.
|
|
22
22
|
* @returns An object containing the incoming, outgoing, and deferred notes.
|
|
23
23
|
*/
|
|
24
|
-
export declare function produceNoteDaos(simulator: AcirSimulator, ivpkM: PublicKey | undefined, ovpkM: PublicKey | undefined, payload: L1NotePayload, txHash: TxHash,
|
|
24
|
+
export declare function produceNoteDaos(simulator: AcirSimulator, ivpkM: PublicKey | undefined, ovpkM: PublicKey | undefined, payload: L1NotePayload, txHash: TxHash, noteHashes: Fr[], dataStartIndexForTx: number, excludedIndices: Set<number>, log: Logger): Promise<{
|
|
25
25
|
incomingNote: IncomingNoteDao | undefined;
|
|
26
26
|
outgoingNote: OutgoingNoteDao | undefined;
|
|
27
27
|
incomingDeferredNote: DeferredNoteDao | undefined;
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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"}
|
|
@@ -14,13 +14,13 @@ import { OutgoingNoteDao } from '../database/outgoing_note_dao.js';
|
|
|
14
14
|
* @param ovpkM - The public counterpart to the secret key to be used in the decryption of outgoing note logs.
|
|
15
15
|
* @param payload - An instance of l1NotePayload.
|
|
16
16
|
* @param txHash - The hash of the transaction that created the note. Equivalent to the first nullifier of the transaction.
|
|
17
|
-
* @param
|
|
17
|
+
* @param noteHashes - New note hashes in this transaction, one of which belongs to this note.
|
|
18
18
|
* @param dataStartIndexForTx - The next available leaf index for the note hash tree for this transaction.
|
|
19
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
20
|
* @param simulator - An instance of AcirSimulator.
|
|
21
21
|
* @returns An object containing the incoming, outgoing, and deferred notes.
|
|
22
22
|
*/
|
|
23
|
-
export async function produceNoteDaos(simulator, ivpkM, ovpkM, payload, txHash,
|
|
23
|
+
export async function produceNoteDaos(simulator, ivpkM, ovpkM, payload, txHash, noteHashes, dataStartIndexForTx, excludedIndices, log) {
|
|
24
24
|
if (!ivpkM && !ovpkM) {
|
|
25
25
|
throw new Error('Both ivpkM and ovpkM are undefined. Cannot create note.');
|
|
26
26
|
}
|
|
@@ -30,7 +30,7 @@ export async function produceNoteDaos(simulator, ivpkM, ovpkM, payload, txHash,
|
|
|
30
30
|
let outgoingDeferredNote;
|
|
31
31
|
try {
|
|
32
32
|
if (ivpkM) {
|
|
33
|
-
const { noteHashIndex, nonce, innerNoteHash, siloedNullifier } = await findNoteIndexAndNullifier(simulator,
|
|
33
|
+
const { noteHashIndex, nonce, innerNoteHash, siloedNullifier } = await findNoteIndexAndNullifier(simulator, noteHashes, txHash, payload, excludedIndices, true);
|
|
34
34
|
const index = BigInt(dataStartIndexForTx + noteHashIndex);
|
|
35
35
|
excludedIndices?.add(noteHashIndex);
|
|
36
36
|
incomingNote = new IncomingNoteDao(payload.note, payload.contractAddress, payload.storageSlot, payload.noteTypeId, txHash, nonce, innerNoteHash, siloedNullifier, index, ivpkM);
|
|
@@ -40,7 +40,7 @@ export async function produceNoteDaos(simulator, ivpkM, ovpkM, payload, txHash,
|
|
|
40
40
|
if (e instanceof ContractNotFoundError) {
|
|
41
41
|
log.warn(e.message);
|
|
42
42
|
if (ivpkM) {
|
|
43
|
-
incomingDeferredNote = new DeferredNoteDao(ivpkM, payload.note, payload.contractAddress, payload.storageSlot, payload.noteTypeId, txHash,
|
|
43
|
+
incomingDeferredNote = new DeferredNoteDao(ivpkM, payload.note, payload.contractAddress, payload.storageSlot, payload.noteTypeId, txHash, noteHashes, dataStartIndexForTx);
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
else {
|
|
@@ -55,7 +55,7 @@ export async function produceNoteDaos(simulator, ivpkM, ovpkM, payload, txHash,
|
|
|
55
55
|
outgoingNote = new OutgoingNoteDao(payload.note, payload.contractAddress, payload.storageSlot, payload.noteTypeId, txHash, incomingNote.nonce, incomingNote.innerNoteHash, incomingNote.index, ovpkM);
|
|
56
56
|
}
|
|
57
57
|
else {
|
|
58
|
-
const { noteHashIndex, nonce, innerNoteHash } = await findNoteIndexAndNullifier(simulator,
|
|
58
|
+
const { noteHashIndex, nonce, innerNoteHash } = await findNoteIndexAndNullifier(simulator, noteHashes, txHash, payload, excludedIndices, false);
|
|
59
59
|
const index = BigInt(dataStartIndexForTx + noteHashIndex);
|
|
60
60
|
excludedIndices?.add(noteHashIndex);
|
|
61
61
|
outgoingNote = new OutgoingNoteDao(payload.note, payload.contractAddress, payload.storageSlot, payload.noteTypeId, txHash, nonce, innerNoteHash, index, ovpkM);
|
|
@@ -66,7 +66,7 @@ export async function produceNoteDaos(simulator, ivpkM, ovpkM, payload, txHash,
|
|
|
66
66
|
if (e instanceof ContractNotFoundError) {
|
|
67
67
|
log.warn(e.message);
|
|
68
68
|
if (ovpkM) {
|
|
69
|
-
outgoingDeferredNote = new DeferredNoteDao(ovpkM, payload.note, payload.contractAddress, payload.storageSlot, payload.noteTypeId, txHash,
|
|
69
|
+
outgoingDeferredNote = new DeferredNoteDao(ovpkM, payload.note, payload.contractAddress, payload.storageSlot, payload.noteTypeId, txHash, noteHashes, dataStartIndexForTx);
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
72
|
else {
|
|
@@ -128,4 +128,4 @@ async function findNoteIndexAndNullifier(simulator, noteHashes, txHash, { contra
|
|
|
128
128
|
siloedNullifier: siloNullifier(contractAddress, innerNullifier),
|
|
129
129
|
};
|
|
130
130
|
}
|
|
131
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
131
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjZV9ub3RlX2Rhby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub3RlX3Byb2Nlc3Nvci9wcm9kdWNlX25vdGVfZGFvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxFQUFFLEVBQWtCLE1BQU0sb0JBQW9CLENBQUM7QUFDeEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTlFLE9BQU8sRUFBc0IscUJBQXFCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU3RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUVuRTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGVBQWUsQ0FDbkMsU0FBd0IsRUFDeEIsS0FBNEIsRUFDNUIsS0FBNEIsRUFDNUIsT0FBc0IsRUFDdEIsTUFBYyxFQUNkLFVBQWdCLEVBQ2hCLG1CQUEyQixFQUMzQixlQUE0QixFQUM1QixHQUFXO0lBT1gsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMseURBQXlELENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsSUFBSSxZQUF5QyxDQUFDO0lBQzlDLElBQUksWUFBeUMsQ0FBQztJQUM5QyxJQUFJLG9CQUFpRCxDQUFDO0lBQ3RELElBQUksb0JBQWlELENBQUM7SUFFdEQsSUFBSSxDQUFDO1FBQ0gsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLE1BQU0sRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsR0FBRyxNQUFNLHlCQUF5QixDQUM5RixTQUFTLEVBQ1QsVUFBVSxFQUNW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
|