@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.
- package/dest/bin/index.js +0 -0
- package/dest/database/deferred_note_dao.d.ts +6 -2
- package/dest/database/deferred_note_dao.d.ts.map +1 -1
- package/dest/database/deferred_note_dao.js +8 -5
- package/dest/database/incoming_note_dao.d.ts +3 -1
- package/dest/database/incoming_note_dao.d.ts.map +1 -1
- package/dest/database/incoming_note_dao.js +5 -1
- package/dest/database/kv_pxe_database.d.ts.map +1 -1
- package/dest/database/kv_pxe_database.js +3 -2
- package/dest/database/outgoing_note_dao.d.ts +3 -1
- package/dest/database/outgoing_note_dao.d.ts.map +1 -1
- package/dest/database/outgoing_note_dao.js +5 -1
- package/dest/kernel_oracle/index.d.ts +1 -1
- package/dest/kernel_prover/hints/build_private_kernel_reset_private_inputs.d.ts +28 -0
- package/dest/kernel_prover/hints/build_private_kernel_reset_private_inputs.d.ts.map +1 -0
- package/dest/kernel_prover/hints/build_private_kernel_reset_private_inputs.js +260 -0
- package/dest/kernel_prover/hints/index.d.ts +1 -2
- package/dest/kernel_prover/hints/index.d.ts.map +1 -1
- package/dest/kernel_prover/hints/index.js +2 -3
- package/dest/kernel_prover/kernel_prover.d.ts +2 -4
- package/dest/kernel_prover/kernel_prover.d.ts.map +1 -1
- package/dest/kernel_prover/kernel_prover.js +26 -25
- package/dest/kernel_prover/test/test_circuit_prover.d.ts +2 -3
- package/dest/kernel_prover/test/test_circuit_prover.d.ts.map +1 -1
- package/dest/kernel_prover/test/test_circuit_prover.js +8 -11
- package/dest/note_processor/note_processor.d.ts.map +1 -1
- package/dest/note_processor/note_processor.js +13 -15
- package/dest/note_processor/utils/add_nullable_field_to_payload.d.ts +12 -0
- package/dest/note_processor/utils/add_nullable_field_to_payload.d.ts.map +1 -0
- package/dest/note_processor/utils/add_nullable_field_to_payload.js +46 -0
- package/dest/note_processor/utils/brute_force_note_info.d.ts +26 -0
- package/dest/note_processor/utils/brute_force_note_info.d.ts.map +1 -0
- package/dest/note_processor/utils/brute_force_note_info.js +52 -0
- package/dest/note_processor/utils/index.d.ts +3 -0
- package/dest/note_processor/utils/index.d.ts.map +1 -0
- package/dest/note_processor/utils/index.js +2 -0
- package/dest/note_processor/{produce_note_dao.d.ts → utils/produce_note_daos.d.ts} +12 -8
- package/dest/note_processor/utils/produce_note_daos.d.ts.map +1 -0
- package/dest/note_processor/utils/produce_note_daos.js +53 -0
- package/dest/note_processor/utils/produce_note_daos_for_key.d.ts +9 -0
- package/dest/note_processor/utils/produce_note_daos_for_key.d.ts.map +1 -0
- package/dest/note_processor/utils/produce_note_daos_for_key.js +80 -0
- package/dest/pxe_http/pxe_http_server.d.ts.map +1 -1
- package/dest/pxe_http/pxe_http_server.js +12 -4
- package/dest/pxe_service/create_pxe_service.d.ts.map +1 -1
- package/dest/pxe_service/create_pxe_service.js +1 -3
- package/dest/pxe_service/pxe_service.d.ts +8 -8
- package/dest/pxe_service/pxe_service.d.ts.map +1 -1
- package/dest/pxe_service/pxe_service.js +39 -56
- package/package.json +17 -14
- package/src/database/deferred_note_dao.ts +5 -1
- package/src/database/incoming_note_dao.ts +24 -1
- package/src/database/kv_pxe_database.ts +3 -1
- package/src/database/outgoing_note_dao.ts +23 -1
- package/src/kernel_prover/hints/build_private_kernel_reset_private_inputs.ts +467 -0
- package/src/kernel_prover/hints/index.ts +1 -2
- package/src/kernel_prover/kernel_prover.ts +53 -76
- package/src/kernel_prover/test/test_circuit_prover.ts +11 -15
- package/src/note_processor/note_processor.ts +30 -21
- package/src/note_processor/utils/add_nullable_field_to_payload.ts +67 -0
- package/src/note_processor/utils/brute_force_note_info.ts +82 -0
- package/src/note_processor/utils/index.ts +2 -0
- package/src/note_processor/utils/produce_note_daos.ts +114 -0
- package/src/note_processor/utils/produce_note_daos_for_key.ts +157 -0
- package/src/pxe_http/pxe_http_server.ts +18 -3
- package/src/pxe_service/create_pxe_service.ts +0 -2
- package/src/pxe_service/pxe_service.ts +61 -100
- package/dest/kernel_prover/hints/build_private_kernel_reset_hints.d.ts +0 -5
- package/dest/kernel_prover/hints/build_private_kernel_reset_hints.d.ts.map +0 -1
- package/dest/kernel_prover/hints/build_private_kernel_reset_hints.js +0 -90
- package/dest/kernel_prover/hints/needs_reset.d.ts +0 -5
- package/dest/kernel_prover/hints/needs_reset.d.ts.map +0 -1
- package/dest/kernel_prover/hints/needs_reset.js +0 -38
- package/dest/note_processor/produce_note_dao.d.ts.map +0 -1
- package/dest/note_processor/produce_note_dao.js +0 -131
- package/src/kernel_prover/hints/build_private_kernel_reset_hints.ts +0 -249
- package/src/kernel_prover/hints/needs_reset.ts +0 -54
- package/src/note_processor/produce_note_dao.ts +0 -235
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
import { collectNested } from '@aztec/circuit-types';
|
|
2
|
+
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, PrivateKernelData, PrivateKernelResetCircuitPrivateInputs, PrivateKernelResetDimensions, PrivateKernelResetHints, ReadRequestResetStates, ReadRequestState, ScopedNoteHash, ScopedNullifier, ScopedReadRequest, TransientDataIndexHint, VK_TREE_HEIGHT, buildNoteHashReadRequestHintsFromResetStates, buildNullifierReadRequestHintsFromResetStates, buildTransientDataHints, countAccumulatedItems, findPrivateKernelResetDimensions, getNonEmptyItems, getNoteHashReadRequestResetStates, getNullifierReadRequestResetStates, privateKernelResetDimensionNames, } from '@aztec/circuits.js';
|
|
3
|
+
import { makeTuple } from '@aztec/foundation/array';
|
|
4
|
+
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
5
|
+
import { assertLength } from '@aztec/foundation/serialize';
|
|
6
|
+
import { privateKernelResetDimensionsConfig } from '@aztec/noir-protocol-circuits-types';
|
|
7
|
+
function collectNestedReadRequests(executionStack, extractReadRequests) {
|
|
8
|
+
return collectNested(executionStack, executionResult => {
|
|
9
|
+
const nonEmptyReadRequests = getNonEmptyItems(extractReadRequests(executionResult));
|
|
10
|
+
return nonEmptyReadRequests.map(readRequest => new ScopedReadRequest(readRequest, executionResult.callStackItem.publicInputs.callContext.storageContractAddress));
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
function getNullifierMembershipWitnessResolver(oracle) {
|
|
14
|
+
return async (nullifier) => {
|
|
15
|
+
const res = await oracle.getNullifierMembershipWitness(nullifier);
|
|
16
|
+
if (!res) {
|
|
17
|
+
throw new Error(`Cannot find the leaf for nullifier ${nullifier.toBigInt()}.`);
|
|
18
|
+
}
|
|
19
|
+
const { index, siblingPath, leafPreimage } = res;
|
|
20
|
+
return {
|
|
21
|
+
membershipWitness: new MembershipWitness(NULLIFIER_TREE_HEIGHT, index, siblingPath.toTuple()),
|
|
22
|
+
leafPreimage,
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
async function getMasterSecretKeysAndAppKeyGenerators(keyValidationRequests, oracle) {
|
|
27
|
+
const keysHints = [];
|
|
28
|
+
for (let i = 0; i < keyValidationRequests.length; ++i) {
|
|
29
|
+
const request = keyValidationRequests[i].request;
|
|
30
|
+
if (request.isEmpty()) {
|
|
31
|
+
break;
|
|
32
|
+
}
|
|
33
|
+
const secretKeys = await oracle.getMasterSecretKey(request.request.pkM);
|
|
34
|
+
keysHints.push(new KeyValidationHint(secretKeys, i));
|
|
35
|
+
}
|
|
36
|
+
return padArrayEnd(keysHints, KeyValidationHint.nada(MAX_KEY_VALIDATION_REQUESTS_PER_TX), MAX_KEY_VALIDATION_REQUESTS_PER_TX);
|
|
37
|
+
}
|
|
38
|
+
export class PrivateKernelResetPrivateInputsBuilder {
|
|
39
|
+
constructor(previousKernelOutput, executionStack, noteHashNullifierCounterMap, validationRequestsSplitCounter) {
|
|
40
|
+
this.previousKernelOutput = previousKernelOutput;
|
|
41
|
+
this.executionStack = executionStack;
|
|
42
|
+
this.noteHashNullifierCounterMap = noteHashNullifierCounterMap;
|
|
43
|
+
this.validationRequestsSplitCounter = validationRequestsSplitCounter;
|
|
44
|
+
this.previousKernel = previousKernelOutput.publicInputs;
|
|
45
|
+
this.requestedDimensions = PrivateKernelResetDimensions.empty();
|
|
46
|
+
this.noteHashResetStates = ReadRequestResetStates.empty(MAX_NOTE_HASH_READ_REQUESTS_PER_TX);
|
|
47
|
+
this.nullifierResetStates = ReadRequestResetStates.empty(MAX_NULLIFIER_READ_REQUESTS_PER_TX);
|
|
48
|
+
this.transientDataIndexHints = makeTuple(MAX_NULLIFIERS_PER_TX, () => new TransientDataIndexHint(MAX_NULLIFIERS_PER_TX, MAX_NOTE_HASHES_PER_TX));
|
|
49
|
+
this.nextIteration = executionStack[this.executionStack.length - 1]?.callStackItem.publicInputs;
|
|
50
|
+
}
|
|
51
|
+
needsReset() {
|
|
52
|
+
const fns = [
|
|
53
|
+
() => this.needsResetNoteHashReadRequests(),
|
|
54
|
+
() => this.needsResetNullifierReadRequests(),
|
|
55
|
+
() => this.needsResetNullifierKeys(),
|
|
56
|
+
() => this.needsResetTransientData(),
|
|
57
|
+
];
|
|
58
|
+
if (this.nextIteration) {
|
|
59
|
+
// If there's a next iteration, reset is needed only when data of a dimension is about to overflow.
|
|
60
|
+
// fns are executed until a dimension that needs reset is found.
|
|
61
|
+
return fns.some(fn => fn());
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
// Siloing is only needed after processing all iterations.
|
|
65
|
+
fns.push(...[() => this.needsSiloNoteHashes(), () => this.needsSiloNullifiers(), () => this.needsSiloLogHashes()]);
|
|
66
|
+
// If there's no next iteration, reset is needed when any of the dimension has non empty data.
|
|
67
|
+
// All the fns should to be executed so that data in all dimensions will be reset.
|
|
68
|
+
const result = fns.map(fn => fn());
|
|
69
|
+
return result.some(r => r);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
async build(oracle, noteHashLeafIndexMap) {
|
|
73
|
+
if (privateKernelResetDimensionNames.every(name => !this.requestedDimensions[name])) {
|
|
74
|
+
throw new Error('Reset is not required.');
|
|
75
|
+
}
|
|
76
|
+
const isInner = !!this.nextIteration;
|
|
77
|
+
// "final" reset must be done at most once.
|
|
78
|
+
// Because the code that silo note hashes can't be run repeatedly.
|
|
79
|
+
// The dimensions found must be big enough to reset all values, i.e. empty remainder.
|
|
80
|
+
const allowRemainder = isInner;
|
|
81
|
+
const dimensions = findPrivateKernelResetDimensions(this.requestedDimensions, privateKernelResetDimensionsConfig, isInner, allowRemainder);
|
|
82
|
+
const previousVkMembershipWitness = await oracle.getVkMembershipWitness(this.previousKernelOutput.verificationKey);
|
|
83
|
+
const previousKernelData = new PrivateKernelData(this.previousKernelOutput.publicInputs, this.previousKernelOutput.verificationKey, Number(previousVkMembershipWitness.leafIndex), assertLength(previousVkMembershipWitness.siblingPath, VK_TREE_HEIGHT));
|
|
84
|
+
this.reduceReadRequestStates(this.noteHashResetStates, dimensions.NOTE_HASH_PENDING_AMOUNT, dimensions.NOTE_HASH_SETTLED_AMOUNT);
|
|
85
|
+
this.reduceReadRequestStates(this.nullifierResetStates, dimensions.NULLIFIER_PENDING_AMOUNT, dimensions.NULLIFIER_SETTLED_AMOUNT);
|
|
86
|
+
return new PrivateKernelResetCircuitPrivateInputs(previousKernelData, new PrivateKernelResetHints(await buildNoteHashReadRequestHintsFromResetStates(oracle, this.previousKernel.validationRequests.noteHashReadRequests, this.previousKernel.end.noteHashes, this.noteHashResetStates, noteHashLeafIndexMap), await buildNullifierReadRequestHintsFromResetStates({ getNullifierMembershipWitness: getNullifierMembershipWitnessResolver(oracle) }, this.previousKernel.validationRequests.nullifierReadRequests, this.nullifierResetStates), await getMasterSecretKeysAndAppKeyGenerators(this.previousKernel.validationRequests.scopedKeyValidationRequestsAndGenerators, oracle), this.transientDataIndexHints, this.validationRequestsSplitCounter), dimensions);
|
|
87
|
+
}
|
|
88
|
+
reduceReadRequestStates(resetStates, maxPending, maxSettled) {
|
|
89
|
+
let numPending = 0;
|
|
90
|
+
let numSettled = 0;
|
|
91
|
+
for (let i = 0; i < resetStates.states.length; i++) {
|
|
92
|
+
const state = resetStates.states[i];
|
|
93
|
+
if (state === ReadRequestState.PENDING) {
|
|
94
|
+
if (numPending < maxPending) {
|
|
95
|
+
numPending++;
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
resetStates.states[i] = ReadRequestState.NADA;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
else if (state === ReadRequestState.SETTLED) {
|
|
102
|
+
if (numSettled < maxSettled) {
|
|
103
|
+
numSettled++;
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
resetStates.states[i] = ReadRequestState.NADA;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
resetStates.pendingReadHints = resetStates.pendingReadHints.slice(0, maxPending);
|
|
111
|
+
}
|
|
112
|
+
needsResetNoteHashReadRequests(forceResetAll = false) {
|
|
113
|
+
const numCurr = countAccumulatedItems(this.previousKernel.validationRequests.noteHashReadRequests);
|
|
114
|
+
const numNext = this.nextIteration ? countAccumulatedItems(this.nextIteration.noteHashReadRequests) : 0;
|
|
115
|
+
const maxAmountToKeep = !this.nextIteration || forceResetAll ? 0 : MAX_NOTE_HASH_READ_REQUESTS_PER_TX;
|
|
116
|
+
if (numCurr + numNext <= maxAmountToKeep) {
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
const futureNoteHashes = collectNested(this.executionStack, executionResult => {
|
|
120
|
+
const nonEmptyNoteHashes = getNonEmptyItems(executionResult.callStackItem.publicInputs.noteHashes);
|
|
121
|
+
return nonEmptyNoteHashes.map(noteHash => new ScopedNoteHash(noteHash, executionResult.callStackItem.publicInputs.callContext.storageContractAddress));
|
|
122
|
+
});
|
|
123
|
+
const resetStates = getNoteHashReadRequestResetStates(this.previousKernel.validationRequests.noteHashReadRequests, this.previousKernel.end.noteHashes, futureNoteHashes);
|
|
124
|
+
const numPendingReads = resetStates.pendingReadHints.length;
|
|
125
|
+
const numSettledReads = resetStates.states.reduce((accum, state) => accum + (state === ReadRequestState.SETTLED ? 1 : 0), 0);
|
|
126
|
+
if (!this.nextIteration) {
|
|
127
|
+
this.noteHashResetStates = resetStates;
|
|
128
|
+
this.requestedDimensions.NOTE_HASH_PENDING_AMOUNT = numPendingReads;
|
|
129
|
+
this.requestedDimensions.NOTE_HASH_SETTLED_AMOUNT = numSettledReads;
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
// Pick only one dimension to reset if next iteration is not empty.
|
|
133
|
+
if (numPendingReads > numSettledReads) {
|
|
134
|
+
this.requestedDimensions.NOTE_HASH_PENDING_AMOUNT = numPendingReads;
|
|
135
|
+
this.noteHashResetStates.states = assertLength(resetStates.states.map(state => (state === ReadRequestState.PENDING ? state : ReadRequestState.NADA)), MAX_NOTE_HASH_READ_REQUESTS_PER_TX);
|
|
136
|
+
this.noteHashResetStates.pendingReadHints = resetStates.pendingReadHints;
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
this.requestedDimensions.NOTE_HASH_SETTLED_AMOUNT = numSettledReads;
|
|
140
|
+
this.noteHashResetStates.states = assertLength(resetStates.states.map(state => (state === ReadRequestState.SETTLED ? state : ReadRequestState.NADA)), MAX_NOTE_HASH_READ_REQUESTS_PER_TX);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return true;
|
|
144
|
+
}
|
|
145
|
+
needsResetNullifierReadRequests(forceResetAll = false) {
|
|
146
|
+
const numCurr = countAccumulatedItems(this.previousKernel.validationRequests.nullifierReadRequests);
|
|
147
|
+
const numNext = this.nextIteration ? countAccumulatedItems(this.nextIteration.nullifierReadRequests) : 0;
|
|
148
|
+
const maxAmountToKeep = !this.nextIteration || forceResetAll ? 0 : MAX_NULLIFIER_READ_REQUESTS_PER_TX;
|
|
149
|
+
if (numCurr + numNext <= maxAmountToKeep) {
|
|
150
|
+
return false;
|
|
151
|
+
}
|
|
152
|
+
const futureNullifiers = collectNested(this.executionStack, executionResult => {
|
|
153
|
+
const nonEmptyNullifiers = getNonEmptyItems(executionResult.callStackItem.publicInputs.nullifiers);
|
|
154
|
+
return nonEmptyNullifiers.map(nullifier => new ScopedNullifier(nullifier, executionResult.callStackItem.publicInputs.callContext.storageContractAddress));
|
|
155
|
+
});
|
|
156
|
+
const resetStates = getNullifierReadRequestResetStates(this.previousKernel.validationRequests.nullifierReadRequests, this.previousKernel.end.nullifiers, futureNullifiers);
|
|
157
|
+
const numPendingReads = resetStates.pendingReadHints.length;
|
|
158
|
+
const numSettledReads = resetStates.states.reduce((accum, state) => accum + (state === ReadRequestState.SETTLED ? 1 : 0), 0);
|
|
159
|
+
if (!this.nextIteration) {
|
|
160
|
+
this.nullifierResetStates = resetStates;
|
|
161
|
+
this.requestedDimensions.NULLIFIER_PENDING_AMOUNT = numPendingReads;
|
|
162
|
+
this.requestedDimensions.NULLIFIER_SETTLED_AMOUNT = numSettledReads;
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
// Pick only one dimension to reset if next iteration is not empty.
|
|
166
|
+
if (numPendingReads > numSettledReads) {
|
|
167
|
+
this.requestedDimensions.NULLIFIER_PENDING_AMOUNT = numPendingReads;
|
|
168
|
+
this.nullifierResetStates.states = assertLength(resetStates.states.map(state => (state === ReadRequestState.PENDING ? state : ReadRequestState.NADA)), MAX_NULLIFIER_READ_REQUESTS_PER_TX);
|
|
169
|
+
this.nullifierResetStates.pendingReadHints = resetStates.pendingReadHints;
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
this.requestedDimensions.NULLIFIER_SETTLED_AMOUNT = numSettledReads;
|
|
173
|
+
this.nullifierResetStates.states = assertLength(resetStates.states.map(state => (state === ReadRequestState.SETTLED ? state : ReadRequestState.NADA)), MAX_NULLIFIER_READ_REQUESTS_PER_TX);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
return true;
|
|
177
|
+
}
|
|
178
|
+
needsResetNullifierKeys() {
|
|
179
|
+
const numCurr = countAccumulatedItems(this.previousKernel.validationRequests.scopedKeyValidationRequestsAndGenerators);
|
|
180
|
+
const numNext = this.nextIteration
|
|
181
|
+
? countAccumulatedItems(this.nextIteration.keyValidationRequestsAndGenerators)
|
|
182
|
+
: 0;
|
|
183
|
+
const maxAmountToKeep = !this.nextIteration ? 0 : MAX_KEY_VALIDATION_REQUESTS_PER_TX;
|
|
184
|
+
if (numCurr + numNext <= maxAmountToKeep) {
|
|
185
|
+
return false;
|
|
186
|
+
}
|
|
187
|
+
this.requestedDimensions.NULLIFIER_KEYS = numCurr;
|
|
188
|
+
return true;
|
|
189
|
+
}
|
|
190
|
+
needsResetTransientData() {
|
|
191
|
+
// Initialize this to 0 so that needsSilo can be run.
|
|
192
|
+
this.numTransientData = 0;
|
|
193
|
+
const nextAccumNoteHashes = countAccumulatedItems(this.previousKernel.end.noteHashes) +
|
|
194
|
+
countAccumulatedItems(this.nextIteration?.noteHashes ?? []);
|
|
195
|
+
const noteHashWillOverflow = nextAccumNoteHashes > MAX_NOTE_HASHES_PER_TX;
|
|
196
|
+
const nextAccumNullifiers = countAccumulatedItems(this.previousKernel.end.nullifiers) +
|
|
197
|
+
countAccumulatedItems(this.nextIteration?.nullifiers ?? []);
|
|
198
|
+
const nullifierWillOverflow = nextAccumNullifiers > MAX_NULLIFIERS_PER_TX;
|
|
199
|
+
if (this.nextIteration && !noteHashWillOverflow && !nullifierWillOverflow) {
|
|
200
|
+
return false;
|
|
201
|
+
}
|
|
202
|
+
const futureNoteHashReads = collectNestedReadRequests(this.executionStack, executionResult => executionResult.callStackItem.publicInputs.noteHashReadRequests);
|
|
203
|
+
const futureNullifierReads = collectNestedReadRequests(this.executionStack, executionResult => executionResult.callStackItem.publicInputs.nullifierReadRequests);
|
|
204
|
+
if (this.nextIteration) {
|
|
205
|
+
// If it's not the final reset, only one dimension will be reset at a time.
|
|
206
|
+
// The note hashes and nullifiers for the remaining read requests can't be squashed.
|
|
207
|
+
futureNoteHashReads.push(...this.previousKernel.validationRequests.noteHashReadRequests.filter(r => !r.isEmpty()));
|
|
208
|
+
futureNullifierReads.push(...this.previousKernel.validationRequests.nullifierReadRequests.filter(r => !r.isEmpty()));
|
|
209
|
+
}
|
|
210
|
+
const { numTransientData, hints: transientDataIndexHints } = buildTransientDataHints(this.previousKernel.end.noteHashes, this.previousKernel.end.nullifiers, futureNoteHashReads, futureNullifierReads, this.noteHashNullifierCounterMap, this.validationRequestsSplitCounter, MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX);
|
|
211
|
+
if (this.nextIteration && !numTransientData) {
|
|
212
|
+
const forceResetAll = true;
|
|
213
|
+
const canClearReadRequests = (noteHashWillOverflow && this.needsResetNoteHashReadRequests(forceResetAll)) ||
|
|
214
|
+
(nullifierWillOverflow && this.needsResetNullifierReadRequests(forceResetAll));
|
|
215
|
+
if (!canClearReadRequests) {
|
|
216
|
+
const overflownData = noteHashWillOverflow ? 'note hashes' : 'nullifiers';
|
|
217
|
+
throw new Error(`Number of ${overflownData} exceeds the limit.`);
|
|
218
|
+
}
|
|
219
|
+
// Clearing the read requests might not be enough to squash the overflown data.
|
|
220
|
+
// In this case, the next iteration will fail at the above check.
|
|
221
|
+
return true;
|
|
222
|
+
}
|
|
223
|
+
this.numTransientData = numTransientData;
|
|
224
|
+
this.transientDataIndexHints = transientDataIndexHints;
|
|
225
|
+
this.requestedDimensions.TRANSIENT_DATA_AMOUNT = numTransientData;
|
|
226
|
+
return numTransientData > 0;
|
|
227
|
+
}
|
|
228
|
+
needsSiloNoteHashes() {
|
|
229
|
+
if (this.numTransientData === undefined) {
|
|
230
|
+
throw new Error('`needsResetTransientData` must be run before `needsSiloNoteHashes`.');
|
|
231
|
+
}
|
|
232
|
+
const numNoteHashes = this.previousKernel.end.noteHashes.filter(n => !n.contractAddress.isEmpty()).length;
|
|
233
|
+
const numToSilo = Math.max(0, numNoteHashes - this.numTransientData);
|
|
234
|
+
this.requestedDimensions.NOTE_HASH_SILOING_AMOUNT = numToSilo;
|
|
235
|
+
return numToSilo > 0;
|
|
236
|
+
}
|
|
237
|
+
needsSiloNullifiers() {
|
|
238
|
+
if (this.numTransientData === undefined) {
|
|
239
|
+
throw new Error('`needsResetTransientData` must be run before `needsSiloNullifiers`.');
|
|
240
|
+
}
|
|
241
|
+
const numNullifiers = this.previousKernel.end.nullifiers.filter(n => !n.contractAddress.isEmpty()).length;
|
|
242
|
+
const numToSilo = Math.max(0, numNullifiers - this.numTransientData);
|
|
243
|
+
// Include the first nullifier if there's something to silo.
|
|
244
|
+
// The reset circuit checks that capped_size must be greater than or equal to all non-empty nullifiers.
|
|
245
|
+
// Which includes the first nullifier, even though its contract address is always zero and doesn't need siloing.
|
|
246
|
+
const cappedSize = numToSilo ? numToSilo + 1 : 0;
|
|
247
|
+
this.requestedDimensions.NULLIFIER_SILOING_AMOUNT = cappedSize;
|
|
248
|
+
return numToSilo > 0;
|
|
249
|
+
}
|
|
250
|
+
needsSiloLogHashes() {
|
|
251
|
+
if (this.numTransientData === undefined) {
|
|
252
|
+
throw new Error('`needsResetTransientData` must be run before `needsSiloLogHashes`.');
|
|
253
|
+
}
|
|
254
|
+
const numLogs = this.previousKernel.end.encryptedLogsHashes.filter(l => !l.logHash.randomness.isZero()).length;
|
|
255
|
+
const numToSilo = Math.max(0, numLogs - this.numTransientData);
|
|
256
|
+
this.requestedDimensions.ENCRYPTED_LOG_SILOING_AMOUNT = numToSilo;
|
|
257
|
+
return numToSilo > 0;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRfcHJpdmF0ZV9rZXJuZWxfcmVzZXRfcHJpdmF0ZV9pbnB1dHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMva2VybmVsX3Byb3Zlci9oaW50cy9idWlsZF9wcml2YXRlX2tlcm5lbF9yZXNldF9wcml2YXRlX2lucHV0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BILE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsa0NBQWtDLEVBQ2xDLHNCQUFzQixFQUN0QixrQ0FBa0MsRUFDbEMscUJBQXFCLEVBQ3JCLGtDQUFrQyxFQUNsQyxpQkFBaUIsRUFDakIscUJBQXFCLEVBR3JCLGlCQUFpQixFQUNqQixzQ0FBc0MsRUFDdEMsNEJBQTRCLEVBQzVCLHVCQUF1QixFQUV2QixzQkFBc0IsRUFDdEIsZ0JBQWdCLEVBRWhCLGNBQWMsRUFDZCxlQUFlLEVBQ2YsaUJBQWlCLEVBQ2pCLHNCQUFzQixFQUN0QixjQUFjLEVBQ2QsNENBQTRDLEVBQzVDLDZDQUE2QyxFQUM3Qyx1QkFBdUIsRUFDdkIscUJBQXFCLEVBQ3JCLGdDQUFnQyxFQUNoQyxnQkFBZ0IsRUFDaEIsaUNBQWlDLEVBQ2pDLGtDQUFrQyxFQUNsQyxnQ0FBZ0MsR0FDakMsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzNELE9BQU8sRUFBYyxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUl6RixTQUFTLHlCQUF5QixDQUNoQyxjQUF3QyxFQUN4QyxtQkFBeUU7SUFFekUsT0FBTyxhQUFhLENBQUMsY0FBYyxFQUFFLGVBQWUsQ0FBQyxFQUFFO1FBQ3JELE1B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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/kernel_prover/hints/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/kernel_prover/hints/index.ts"],"names":[],"mappings":"AAAA,cAAc,gDAAgD,CAAC"}
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
export * from './
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMva2VybmVsX3Byb3Zlci9oaW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsa0JBQWtCLENBQUMifQ==
|
|
1
|
+
export * from './build_private_kernel_reset_private_inputs.js';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMva2VybmVsX3Byb3Zlci9oaW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdEQUFnRCxDQUFDIn0=
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { type PrivateKernelProver, type PrivateKernelSimulateOutput } from '@aztec/circuit-types';
|
|
1
|
+
import { type PrivateExecutionResult, type PrivateKernelProver, type PrivateKernelSimulateOutput } from '@aztec/circuit-types';
|
|
2
2
|
import { type PrivateKernelTailCircuitPublicInputs, type TxRequest } from '@aztec/circuits.js';
|
|
3
|
-
import { type ExecutionResult } from '@aztec/simulator';
|
|
4
3
|
import { type ProvingDataOracle } from './proving_data_oracle.js';
|
|
5
4
|
/**
|
|
6
5
|
* The KernelProver class is responsible for generating kernel proofs.
|
|
@@ -24,8 +23,7 @@ export declare class KernelProver {
|
|
|
24
23
|
* @returns A Promise that resolves to a KernelProverOutput object containing proof, public inputs, and output notes.
|
|
25
24
|
* TODO(#7368) this should be refactored to not recreate the ACIR bytecode now that it operates on a program stack
|
|
26
25
|
*/
|
|
27
|
-
prove(txRequest: TxRequest, executionResult:
|
|
28
|
-
private getPrivateKernelResetInputs;
|
|
26
|
+
prove(txRequest: TxRequest, executionResult: PrivateExecutionResult): Promise<PrivateKernelSimulateOutput<PrivateKernelTailCircuitPublicInputs>>;
|
|
29
27
|
private createPrivateCallData;
|
|
30
28
|
}
|
|
31
29
|
//# sourceMappingURL=kernel_prover.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kernel_prover.d.ts","sourceRoot":"","sources":["../../src/kernel_prover/kernel_prover.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"kernel_prover.d.ts","sourceRoot":"","sources":["../../src/kernel_prover/kernel_prover.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,2BAA2B,EAMjC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAQL,KAAK,oCAAoC,EACzC,KAAK,SAAS,EAGf,MAAM,oBAAoB,CAAC;AAS5B,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAQlE;;;;;GAKG;AACH,qBAAa,YAAY;IAGX,OAAO,CAAC,MAAM;IAAqB,OAAO,CAAC,YAAY;IAFnE,OAAO,CAAC,GAAG,CAA4C;gBAEnC,MAAM,EAAE,iBAAiB,EAAU,YAAY,EAAE,mBAAmB;IAExF;;;;;;;;;;OAUG;IACG,KAAK,CACT,SAAS,EAAE,SAAS,EACpB,eAAe,EAAE,sBAAsB,GACtC,OAAO,CAAC,2BAA2B,CAAC,oCAAoC,CAAC,CAAC;YA8H/D,qBAAqB;CA4BpC"}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
|
+
import { collectEnqueuedPublicFunctionCalls, collectNoteHashLeafIndexMap, collectNoteHashNullifierCounterMap, collectPublicTeardownFunctionCall, getFinalMinRevertibleSideEffectCounter, } from '@aztec/circuit-types';
|
|
1
2
|
import { Fr, PrivateCallData, PrivateKernelCircuitPublicInputs, PrivateKernelData, PrivateKernelInitCircuitPrivateInputs, PrivateKernelInnerCircuitPrivateInputs, PrivateKernelTailCircuitPrivateInputs, VK_TREE_HEIGHT, VerificationKeyAsFields, } from '@aztec/circuits.js';
|
|
2
3
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
3
4
|
import { assertLength } from '@aztec/foundation/serialize';
|
|
4
5
|
import { pushTestData } from '@aztec/foundation/testing';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { buildPrivateKernelResetInputs, needsFinalReset, needsReset } from './hints/index.js';
|
|
6
|
+
import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types';
|
|
7
|
+
import { PrivateKernelResetPrivateInputsBuilder } from './hints/build_private_kernel_reset_private_inputs.js';
|
|
8
8
|
const NULL_PROVE_OUTPUT = {
|
|
9
9
|
publicInputs: PrivateKernelCircuitPublicInputs.empty(),
|
|
10
10
|
verificationKey: VerificationKeyAsFields.makeEmpty(),
|
|
11
11
|
outputWitness: new Map(),
|
|
12
|
+
bytecode: Buffer.from([]),
|
|
12
13
|
};
|
|
13
14
|
/**
|
|
14
15
|
* The KernelProver class is responsible for generating kernel proofs.
|
|
@@ -46,12 +47,16 @@ export class KernelProver {
|
|
|
46
47
|
const acirs = [];
|
|
47
48
|
const witnessStack = [];
|
|
48
49
|
while (executionStack.length) {
|
|
49
|
-
if (!firstIteration
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
50
|
+
if (!firstIteration) {
|
|
51
|
+
let resetBuilder = new PrivateKernelResetPrivateInputsBuilder(output, executionStack, noteHashNullifierCounterMap, validationRequestsSplitCounter);
|
|
52
|
+
while (resetBuilder.needsReset()) {
|
|
53
|
+
const privateInputs = await resetBuilder.build(this.oracle, noteHashLeafIndexMap);
|
|
54
|
+
output = await this.proofCreator.simulateProofReset(privateInputs);
|
|
55
|
+
// TODO(#7368) consider refactoring this redundant bytecode pushing
|
|
56
|
+
acirs.push(output.bytecode);
|
|
57
|
+
witnessStack.push(output.outputWitness);
|
|
58
|
+
resetBuilder = new PrivateKernelResetPrivateInputsBuilder(output, executionStack, noteHashNullifierCounterMap, validationRequestsSplitCounter);
|
|
59
|
+
}
|
|
55
60
|
}
|
|
56
61
|
const currentExecution = executionStack.pop();
|
|
57
62
|
executionStack.push(...[...currentExecution.nestedExecutions].reverse());
|
|
@@ -66,7 +71,7 @@ export class KernelProver {
|
|
|
66
71
|
const proofInput = new PrivateKernelInitCircuitPrivateInputs(txRequest, getVKTreeRoot(), privateCallData);
|
|
67
72
|
pushTestData('private-kernel-inputs-init', proofInput);
|
|
68
73
|
output = await this.proofCreator.simulateProofInit(proofInput);
|
|
69
|
-
acirs.push(
|
|
74
|
+
acirs.push(output.bytecode);
|
|
70
75
|
witnessStack.push(output.outputWitness);
|
|
71
76
|
}
|
|
72
77
|
else {
|
|
@@ -75,38 +80,34 @@ export class KernelProver {
|
|
|
75
80
|
const proofInput = new PrivateKernelInnerCircuitPrivateInputs(previousKernelData, privateCallData);
|
|
76
81
|
pushTestData('private-kernel-inputs-inner', proofInput);
|
|
77
82
|
output = await this.proofCreator.simulateProofInner(proofInput);
|
|
78
|
-
acirs.push(
|
|
83
|
+
acirs.push(output.bytecode);
|
|
79
84
|
witnessStack.push(output.outputWitness);
|
|
80
85
|
}
|
|
81
86
|
firstIteration = false;
|
|
82
87
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
+
// Reset.
|
|
89
|
+
let resetBuilder = new PrivateKernelResetPrivateInputsBuilder(output, [], noteHashNullifierCounterMap, validationRequestsSplitCounter);
|
|
90
|
+
while (resetBuilder.needsReset()) {
|
|
91
|
+
const privateInputs = await resetBuilder.build(this.oracle, noteHashLeafIndexMap);
|
|
92
|
+
output = await this.proofCreator.simulateProofReset(privateInputs);
|
|
93
|
+
acirs.push(output.bytecode);
|
|
88
94
|
witnessStack.push(output.outputWitness);
|
|
95
|
+
resetBuilder = new PrivateKernelResetPrivateInputsBuilder(output, [], noteHashNullifierCounterMap, validationRequestsSplitCounter);
|
|
89
96
|
}
|
|
97
|
+
// Private tail.
|
|
90
98
|
const previousVkMembershipWitness = await this.oracle.getVkMembershipWitness(output.verificationKey);
|
|
91
99
|
const previousKernelData = new PrivateKernelData(output.publicInputs, output.verificationKey, Number(previousVkMembershipWitness.leafIndex), assertLength(previousVkMembershipWitness.siblingPath, VK_TREE_HEIGHT));
|
|
92
100
|
this.log.debug(`Calling private kernel tail with hwm ${previousKernelData.publicInputs.minRevertibleSideEffectCounter}`);
|
|
93
101
|
const privateInputs = new PrivateKernelTailCircuitPrivateInputs(previousKernelData);
|
|
94
102
|
pushTestData('private-kernel-inputs-ordering', privateInputs);
|
|
95
103
|
const tailOutput = await this.proofCreator.simulateProofTail(privateInputs);
|
|
96
|
-
acirs.push(
|
|
97
|
-
? ClientCircuitArtifacts.PrivateKernelTailToPublicArtifact.bytecode
|
|
98
|
-
: ClientCircuitArtifacts.PrivateKernelTailArtifact.bytecode, 'base64'));
|
|
104
|
+
acirs.push(tailOutput.bytecode);
|
|
99
105
|
witnessStack.push(tailOutput.outputWitness);
|
|
100
106
|
// TODO(#7368) how do we 'bincode' encode these inputs?
|
|
101
107
|
const ivcProof = await this.proofCreator.createClientIvcProof(acirs, witnessStack);
|
|
102
108
|
tailOutput.clientIvcProof = ivcProof;
|
|
103
109
|
return tailOutput;
|
|
104
110
|
}
|
|
105
|
-
async getPrivateKernelResetInputs(executionStack, output, noteHashLeafIndexMap, noteHashNullifierCounterMap, validationRequestsSplitCounter, shouldSilo) {
|
|
106
|
-
const previousVkMembershipWitness = await this.oracle.getVkMembershipWitness(output.verificationKey);
|
|
107
|
-
const previousKernelData = new PrivateKernelData(output.publicInputs, output.verificationKey, Number(previousVkMembershipWitness.leafIndex), assertLength(previousVkMembershipWitness.siblingPath, VK_TREE_HEIGHT));
|
|
108
|
-
return await buildPrivateKernelResetInputs(executionStack, previousKernelData, noteHashLeafIndexMap, noteHashNullifierCounterMap, validationRequestsSplitCounter, shouldSilo, this.oracle);
|
|
109
|
-
}
|
|
110
111
|
async createPrivateCallData({ callStackItem }, vk) {
|
|
111
112
|
const { contractAddress, functionData } = callStackItem;
|
|
112
113
|
const functionLeafMembershipWitness = await this.oracle.getFunctionMembershipWitness(contractAddress, functionData.selector);
|
|
@@ -127,4 +128,4 @@ export class KernelProver {
|
|
|
127
128
|
});
|
|
128
129
|
}
|
|
129
130
|
}
|
|
130
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
131
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2VybmVsX3Byb3Zlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9rZXJuZWxfcHJvdmVyL2tlcm5lbF9wcm92ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUlMLGtDQUFrQyxFQUNsQywyQkFBMkIsRUFDM0Isa0NBQWtDLEVBQ2xDLGlDQUFpQyxFQUNqQyxzQ0FBc0MsR0FDdkMsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQ0wsRUFBRSxFQUNGLGVBQWUsRUFDZixnQ0FBZ0MsRUFDaEMsaUJBQWlCLEVBQ2pCLHFDQUFxQyxFQUNyQyxzQ0FBc0MsRUFDdEMscUNBQXFDLEVBR3JDLGNBQWMsRUFDZCx1QkFBdUIsR0FDeEIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUlwRSxPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUc5RyxNQUFNLGlCQUFpQixHQUFrRTtJQUN2RixZQUFZLEVBQUUsZ0NBQWdDLENBQUMsS0FBSyxFQUFFO0lBQ3RELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxTQUFTLEVBQUU7SUFDcEQsYUFBYSxFQUFFLElBQUksR0FBRyxFQUFFO0lBQ3hCLFFBQVEsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztDQUMxQixDQUFDO0FBQ0Y7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQUd2QixZQUFvQixNQUF5QixFQUFVLFlBQWlDO1FBQXBFLFdBQU0sR0FBTixNQUFNLENBQW1CO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBRmhGLFFBQUcsR0FBRyxpQkFBaUIsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBRW9DLENBQUM7SUFFNUY7Ozs7Ozs7Ozs7T0FVRztJQUNILEtBQUssQ0FBQyxLQUFLLENBQ1QsU0FBb0IsRUFDcEIsZUFBdUM7UUFFdkMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN6QyxJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFFMUIsSUFBSSxNQUFNLEdBQUcsaUJBQWlCLENBQUM7UUFFL0IsTUFBTSxvQkFBb0IsR0FBRywyQkFBMkIsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMxRSxNQUFNLDJCQUEyQixHQUFHLGtDQUFrQyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3hGLE1BQU0sdUJBQXVCLEdBQUcsa0NBQWtDLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDcEYsTUFBTSxjQUFjLEdBQ2xCLHVCQUF1QixDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN0RyxNQUFNLDhCQUE4QixHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsc0NBQXNDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwSCxrQ0FBa0M7UUFDbEMsTUFBTSxLQUFLLEdBQWEsRUFBRSxDQUFDO1FBQzNCLE1BQU0sWUFBWSxHQUFpQixFQUFFLENBQUM7UUFFdEMsT0FBTyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUNwQixJQUFJLFlBQVksR0FBRyxJQUFJLHNDQUFzQyxDQUMzRCxNQUFNLEVBQ04sY0FBYyxFQUNkLDJCQUEyQixFQUMzQiw4QkFBOEIsQ0FDL0IsQ0FBQztnQkFDRixPQUFPLFlBQVksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO29CQUNqQyxNQUFNLGFBQWEsR0FBRyxNQUFNLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO29CQUNsRixNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxDQUFDO29CQUNuRSxtRUFBbUU7b0JBQ25FLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUM1QixZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFFeEMsWUFBWSxHQUFHLElBQUksc0NBQXNDLENBQ3ZELE1BQU0sRUFDTixjQUFjLEVBQ2QsMkJBQTJCLEVBQzNCLDhCQUE4QixDQUMvQixDQUFDO2dCQUNKLENBQUM7WUFDSCxDQUFDO1lBRUQsTUFBTSxnQkFBZ0IsR0FBRyxjQUFjLENBQUMsR0FBRyxFQUFHLENBQUM7WUFDL0MsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFFekUsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLG9CQUFvQixDQUN6RCxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsZUFBZSxFQUM5QyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FDckQsQ0FBQztZQUVGLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxnQ0FBZ0MsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDNUcsb0VBQW9FO1lBQ3BFLHFFQUFxRTtZQUNyRSxLQUFLLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xDLFlBQVksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLENBQUM7WUFFbkQsTUFBTSxlQUFlLEdBQUcsTUFBTSxJQUFJLENBQUMscUJBQXFCLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBRWxHLElBQUksY0FBYyxFQUFFLENBQUM7Z0JBQ25CLE1BQU0sVUFBVSxHQUFHLElBQUkscUNBQXFDLENBQUMsU0FBUyxFQUFFLGFBQWEsRUFBRSxFQUFFLGVBQWUsQ0FBQyxDQUFDO2dCQUMxRyxZQUFZLENBQUMsNEJBQTRCLEVBQUUsVUFBVSxDQUFDLENBQUM7Z0JBQ3ZELE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQy9ELEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUM1QixZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUMxQyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSwyQkFBMkIsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUNyRyxNQUFNLGtCQUFrQixHQUFHLElBQUksaUJBQWlCLENBQzlDLE1BQU0sQ0FBQyxZQUFZLEVBQ25CLE1BQU0sQ0FBQyxlQUFlLEVBQ3RCLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxTQUFTLENBQUMsRUFDN0MsWUFBWSxDQUE0QiwyQkFBMkIsQ0FBQyxXQUFXLEVBQUUsY0FBYyxDQUFDLENBQ2pHLENBQUM7Z0JBQ0YsTUFBTSxVQUFVLEdBQUcsSUFBSSxzQ0FBc0MsQ0FBQyxrQkFBa0IsRUFBRSxlQUFlLENBQUMsQ0FBQztnQkFDbkcsWUFBWSxDQUFDLDZCQUE2QixFQUFFLFVBQVUsQ0FBQyxDQUFDO2dCQUN4RCxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUNoRSxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDNUIsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDMUMsQ0FBQztZQUNELGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDekIsQ0FBQztRQUVELFNBQVM7UUFDVCxJQUFJLFlBQVksR0FBRyxJQUFJLHNDQUFzQyxDQUMzRCxNQUFNLEVBQ04sRUFBRSxFQUNGLDJCQUEyQixFQUMzQiw4QkFBOEIsQ0FDL0IsQ0FBQztRQUNGLE9BQU8sWUFBWSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDakMsTUFBTSxhQUFhLEdBQUcsTUFBTSxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztZQUNsRixNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ25FLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzVCLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBRXhDLFlBQVksR0FBRyxJQUFJLHNDQUFzQyxDQUN2RCxNQUFNLEVBQ04sRUFBRSxFQUNGLDJCQUEyQixFQUMzQiw4QkFBOEIsQ0FDL0IsQ0FBQztRQUNKLENBQUM7UUFFRCxnQkFBZ0I7UUFDaEIsTUFBTSwyQkFBMkIsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3JHLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxpQkFBaUIsQ0FDOUMsTUFBTSxDQUFDLFlBQVksRUFDbkIsTUFBTSxDQUFDLGVBQWUsRUFDdEIsTUFBTSxDQUFDLDJCQUEyQixDQUFDLFNBQVMsQ0FBQyxFQUM3QyxZQUFZLENBQTRCLDJCQUEyQixDQUFDLFdBQVcsRUFBRSxjQUFjLENBQUMsQ0FDakcsQ0FBQztRQUVGLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUNaLHdDQUF3QyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsOEJBQThCLEVBQUUsQ0FDekcsQ0FBQztRQUVGLE1BQU0sYUFBYSxHQUFHLElBQUkscUNBQXFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUVwRixZQUFZLENBQUMsZ0NBQWdDLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDOUQsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzVFLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hDLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRTVDLHVEQUF1RDtRQUN2RCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsb0JBQW9CLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ25GLFVBQVUsQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDO1FBQ3JDLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFTyxLQUFLLENBQUMscUJBQXFCLENBQUMsRUFBRSxhQUFhLEVBQTBCLEVBQUUsRUFBMkI7UUFDeEcsTUFBTSxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsR0FBRyxhQUFhLENBQUM7UUFFeEQsTUFBTSw2QkFBNkIsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsNEJBQTRCLENBQ2xGLGVBQWUsRUFDZixZQUFZLENBQUMsUUFBUSxDQUN0QixDQUFDO1FBQ0YsTUFBTSxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsd0JBQXdCLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsMEJBQTBCLENBQ2hILGVBQWUsQ0FDaEIsQ0FBQztRQUNGLE1BQU0sRUFBRSxZQUFZLEVBQUUseUJBQXlCLEVBQUUsd0JBQXdCLEVBQUUscUNBQXFDLEVBQUUsR0FDaEgsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLDBCQUEwQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRWhFLGlDQUFpQztRQUNqQyw0REFBNEQ7UUFDNUQsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXBELE9BQU8sZUFBZSxDQUFDLElBQUksQ0FBQztZQUMxQixhQUFhO1lBQ2IsRUFBRTtZQUNGLGNBQWM7WUFDZCx5QkFBeUI7WUFDekIscUNBQXFDO1lBQ3JDLHdCQUF3QjtZQUN4Qiw2QkFBNkI7WUFDN0IsUUFBUTtTQUNULENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiJ9
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
2
|
import { type AppCircuitSimulateOutput, type PrivateKernelProver, type PrivateKernelSimulateOutput } from '@aztec/circuit-types';
|
|
3
|
-
import { ClientIvcProof, type
|
|
3
|
+
import { ClientIvcProof, type PrivateKernelCircuitPublicInputs, type PrivateKernelInitCircuitPrivateInputs, type PrivateKernelInnerCircuitPrivateInputs, type PrivateKernelResetCircuitPrivateInputs, type PrivateKernelTailCircuitPrivateInputs, type PrivateKernelTailCircuitPublicInputs } from '@aztec/circuits.js';
|
|
4
4
|
import { type WitnessMap } from '@noir-lang/types';
|
|
5
5
|
/**
|
|
6
6
|
* Test Proof Creator executes circuit simulations and provides fake proofs.
|
|
@@ -9,10 +9,9 @@ export declare class TestPrivateKernelProver implements PrivateKernelProver {
|
|
|
9
9
|
private log;
|
|
10
10
|
constructor(log?: import("@aztec/foundation/log").Logger);
|
|
11
11
|
createClientIvcProof(_acirs: Buffer[], _witnessStack: WitnessMap[]): Promise<ClientIvcProof>;
|
|
12
|
-
getSiloedCommitments(publicInputs: PrivateCircuitPublicInputs): Promise<import("@aztec/circuits.js").Fr[]>;
|
|
13
12
|
simulateProofInit(privateInputs: PrivateKernelInitCircuitPrivateInputs): Promise<PrivateKernelSimulateOutput<PrivateKernelCircuitPublicInputs>>;
|
|
14
13
|
simulateProofInner(privateInputs: PrivateKernelInnerCircuitPrivateInputs): Promise<PrivateKernelSimulateOutput<PrivateKernelCircuitPublicInputs>>;
|
|
15
|
-
simulateProofReset(privateInputs:
|
|
14
|
+
simulateProofReset(privateInputs: PrivateKernelResetCircuitPrivateInputs): Promise<PrivateKernelSimulateOutput<PrivateKernelCircuitPublicInputs>>;
|
|
16
15
|
simulateProofTail(privateInputs: PrivateKernelTailCircuitPrivateInputs): Promise<PrivateKernelSimulateOutput<PrivateKernelTailCircuitPublicInputs>>;
|
|
17
16
|
computeAppCircuitVerificationKey(_bytecode: Buffer, _appCircuitName?: string | undefined): Promise<AppCircuitSimulateOutput>;
|
|
18
17
|
private makeEmptyKernelSimulateOutput;
|
|
@@ -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,EACL,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EACxB,KAAK,2BAA2B,EACjC,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,cAAc,EACd,KAAK,
|
|
1
|
+
{"version":3,"file":"test_circuit_prover.d.ts","sourceRoot":"","sources":["../../../src/kernel_prover/test/test_circuit_prover.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EACxB,KAAK,2BAA2B,EACjC,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,cAAc,EACd,KAAK,gCAAgC,EACrC,KAAK,qCAAqC,EAC1C,KAAK,sCAAsC,EAC3C,KAAK,sCAAsC,EAC3C,KAAK,qCAAqC,EAC1C,KAAK,oCAAoC,EAE1C,MAAM,oBAAoB,CAAC;AAe5B,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;GAEG;AACH,qBAAa,uBAAwB,YAAW,mBAAmB;IACrD,OAAO,CAAC,GAAG;gBAAH,GAAG,yCAAgD;IAEvE,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC;IAI/E,iBAAiB,CAC5B,aAAa,EAAE,qCAAqC,GACnD,OAAO,CAAC,2BAA2B,CAAC,gCAAgC,CAAC,CAAC;IAY5D,kBAAkB,CAC7B,aAAa,EAAE,sCAAsC,GACpD,OAAO,CAAC,2BAA2B,CAAC,gCAAgC,CAAC,CAAC;IAY5D,kBAAkB,CAC7B,aAAa,EAAE,sCAAsC,GACpD,OAAO,CAAC,2BAA2B,CAAC,gCAAgC,CAAC,CAAC;IAgB5D,iBAAiB,CAC5B,aAAa,EAAE,qCAAqC,GACnD,OAAO,CAAC,2BAA2B,CAAC,oCAAoC,CAAC,CAAC;IAkB7E,gCAAgC,CAC9B,SAAS,EAAE,MAAM,EACjB,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,GACnC,OAAO,CAAC,wBAAwB,CAAC;IAOpC,OAAO,CAAC,6BAA6B;CAYtC"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { ClientIvcProof, VerificationKeyAsFields, } from '@aztec/circuits.js';
|
|
2
|
-
import { siloNoteHash } from '@aztec/circuits.js/hash';
|
|
3
2
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
4
3
|
import { elapsed } from '@aztec/foundation/timer';
|
|
5
|
-
import { ProtocolCircuitVks, executeInit, executeInner, executeReset, executeTail, executeTailForPublic, } from '@aztec/noir-protocol-circuits-types';
|
|
4
|
+
import { ProtocolCircuitVks, executeInit, executeInner, executeReset, executeTail, executeTailForPublic, getPrivateKernelResetArtifactName, maxPrivateKernelResetDimensions, } from '@aztec/noir-protocol-circuits-types';
|
|
6
5
|
/**
|
|
7
6
|
* Test Proof Creator executes circuit simulations and provides fake proofs.
|
|
8
7
|
*/
|
|
@@ -13,10 +12,6 @@ export class TestPrivateKernelProver {
|
|
|
13
12
|
createClientIvcProof(_acirs, _witnessStack) {
|
|
14
13
|
return Promise.resolve(ClientIvcProof.empty());
|
|
15
14
|
}
|
|
16
|
-
getSiloedCommitments(publicInputs) {
|
|
17
|
-
const contractAddress = publicInputs.callContext.storageContractAddress;
|
|
18
|
-
return Promise.resolve(publicInputs.noteHashes.map(commitment => siloNoteHash(contractAddress, commitment.value)));
|
|
19
|
-
}
|
|
20
15
|
async simulateProofInit(privateInputs) {
|
|
21
16
|
const [duration, result] = await elapsed(() => executeInit(privateInputs));
|
|
22
17
|
this.log.debug(`Simulated private kernel init`, {
|
|
@@ -40,15 +35,16 @@ export class TestPrivateKernelProver {
|
|
|
40
35
|
return this.makeEmptyKernelSimulateOutput(result, 'PrivateKernelInnerArtifact');
|
|
41
36
|
}
|
|
42
37
|
async simulateProofReset(privateInputs) {
|
|
43
|
-
const
|
|
38
|
+
const variantPrivateInputs = privateInputs.trimToSizes();
|
|
39
|
+
const [duration, result] = await elapsed(() => executeReset(variantPrivateInputs, privateInputs.dimensions));
|
|
44
40
|
this.log.debug(`Simulated private kernel reset`, {
|
|
45
41
|
eventName: 'circuit-simulation',
|
|
46
|
-
circuitName:
|
|
42
|
+
circuitName: 'private-kernel-reset',
|
|
47
43
|
duration,
|
|
48
|
-
inputSize:
|
|
44
|
+
inputSize: variantPrivateInputs.toBuffer().length,
|
|
49
45
|
outputSize: result.toBuffer().length,
|
|
50
46
|
});
|
|
51
|
-
return this.makeEmptyKernelSimulateOutput(result,
|
|
47
|
+
return this.makeEmptyKernelSimulateOutput(result, getPrivateKernelResetArtifactName(maxPrivateKernelResetDimensions));
|
|
52
48
|
}
|
|
53
49
|
async simulateProofTail(privateInputs) {
|
|
54
50
|
const isForPublic = privateInputs.isForPublic();
|
|
@@ -73,8 +69,9 @@ export class TestPrivateKernelProver {
|
|
|
73
69
|
publicInputs,
|
|
74
70
|
verificationKey: ProtocolCircuitVks[circuitType].keyAsFields,
|
|
75
71
|
outputWitness: new Map(),
|
|
72
|
+
bytecode: Buffer.from([]),
|
|
76
73
|
};
|
|
77
74
|
return kernelProofOutput;
|
|
78
75
|
}
|
|
79
76
|
}
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF9jaXJjdWl0X3Byb3Zlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9rZXJuZWxfcHJvdmVyL3Rlc3QvdGVzdF9jaXJjdWl0X3Byb3Zlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQ0wsY0FBYyxFQU9kLHVCQUF1QixHQUN4QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNsRCxPQUFPLEVBRUwsa0JBQWtCLEVBQ2xCLFdBQVcsRUFDWCxZQUFZLEVBQ1osWUFBWSxFQUNaLFdBQVcsRUFDWCxvQkFBb0IsRUFDcEIsaUNBQWlDLEVBQ2pDLCtCQUErQixHQUNoQyxNQUFNLHFDQUFxQyxDQUFDO0FBSTdDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHVCQUF1QjtJQUNsQyxZQUFvQixNQUFNLGlCQUFpQixDQUFDLDBCQUEwQixDQUFDO1FBQW5ELFFBQUcsR0FBSCxHQUFHLENBQWdEO0lBQUcsQ0FBQztJQUUzRSxvQkFBb0IsQ0FBQyxNQUFnQixFQUFFLGFBQTJCO1FBQ2hFLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRU0sS0FBSyxDQUFDLGlCQUFpQixDQUM1QixhQUFvRDtRQUVwRCxNQUFNLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLCtCQUErQixFQUFFO1lBQzlDLFNBQVMsRUFBRSxvQkFBb0I7WUFDL0IsV0FBVyxFQUFFLHFCQUFxQjtZQUNsQyxRQUFRO1lBQ1IsU0FBUyxFQUFFLGFBQWEs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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,
|
|
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,EAAE,MAAM,sBAAsB,CAAC;AACnF,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;IA4GtD;;;;;;;;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;CA2DH"}
|