@aztec/pxe 0.47.1 → 0.49.2
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/config/index.d.ts +18 -0
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +72 -8
- package/dest/database/incoming_note_dao.d.ts +4 -4
- package/dest/database/incoming_note_dao.d.ts.map +1 -1
- package/dest/database/incoming_note_dao.js +7 -7
- package/dest/database/kv_pxe_database.d.ts +3 -3
- package/dest/database/kv_pxe_database.d.ts.map +1 -1
- package/dest/database/kv_pxe_database.js +64 -31
- package/dest/database/outgoing_note_dao.d.ts +6 -6
- package/dest/database/outgoing_note_dao.d.ts.map +1 -1
- package/dest/database/outgoing_note_dao.js +8 -8
- package/dest/database/pxe_database.d.ts +6 -2
- package/dest/database/pxe_database.d.ts.map +1 -1
- package/dest/database/pxe_database_test_suite.d.ts.map +1 -1
- package/dest/database/pxe_database_test_suite.js +43 -4
- package/dest/kernel_prover/{private_inputs_builders → hints}/build_private_kernel_reset_hints.d.ts +1 -1
- package/dest/kernel_prover/hints/build_private_kernel_reset_hints.d.ts.map +1 -0
- package/dest/kernel_prover/hints/build_private_kernel_reset_hints.js +90 -0
- package/dest/kernel_prover/hints/index.d.ts +3 -0
- package/dest/kernel_prover/hints/index.d.ts.map +1 -0
- package/dest/kernel_prover/hints/index.js +3 -0
- package/dest/kernel_prover/hints/needs_reset.d.ts +5 -0
- package/dest/kernel_prover/hints/needs_reset.d.ts.map +1 -0
- package/dest/kernel_prover/hints/needs_reset.js +38 -0
- package/dest/kernel_prover/kernel_prover.d.ts +0 -2
- package/dest/kernel_prover/kernel_prover.d.ts.map +1 -1
- package/dest/kernel_prover/kernel_prover.js +14 -38
- package/dest/note_processor/note_processor.js +2 -2
- package/dest/note_processor/produce_note_dao.js +15 -15
- package/dest/pxe_http/pxe_http_server.d.ts.map +1 -1
- package/dest/pxe_http/pxe_http_server.js +5 -2
- package/dest/pxe_service/create_pxe_service.d.ts.map +1 -1
- package/dest/pxe_service/create_pxe_service.js +4 -4
- package/dest/pxe_service/pxe_service.d.ts +8 -15
- package/dest/pxe_service/pxe_service.d.ts.map +1 -1
- package/dest/pxe_service/pxe_service.js +66 -66
- package/dest/simulator_oracle/index.d.ts +2 -2
- package/dest/simulator_oracle/index.d.ts.map +1 -1
- package/dest/simulator_oracle/index.js +5 -4
- package/dest/synchronizer/synchronizer.d.ts +1 -1
- package/dest/synchronizer/synchronizer.d.ts.map +1 -1
- package/dest/synchronizer/synchronizer.js +8 -10
- package/package.json +14 -14
- package/src/config/index.ts +90 -14
- package/src/database/incoming_note_dao.ts +5 -5
- package/src/database/kv_pxe_database.ts +86 -31
- package/src/database/outgoing_note_dao.ts +6 -6
- package/src/database/pxe_database.ts +6 -2
- package/src/database/pxe_database_test_suite.ts +70 -3
- package/src/kernel_prover/{private_inputs_builders → hints}/build_private_kernel_reset_hints.ts +31 -7
- package/src/kernel_prover/hints/index.ts +2 -0
- package/src/kernel_prover/hints/needs_reset.ts +54 -0
- package/src/kernel_prover/kernel_prover.ts +24 -48
- package/src/note_processor/note_processor.ts +1 -1
- package/src/note_processor/produce_note_dao.ts +14 -14
- package/src/pxe_http/pxe_http_server.ts +4 -0
- package/src/pxe_service/create_pxe_service.ts +3 -2
- package/src/pxe_service/pxe_service.ts +76 -61
- package/src/simulator_oracle/index.ts +4 -3
- package/src/synchronizer/synchronizer.ts +19 -19
- package/dest/kernel_prover/private_inputs_builders/build_private_kernel_reset_hints.d.ts.map +0 -1
- package/dest/kernel_prover/private_inputs_builders/build_private_kernel_reset_hints.js +0 -77
- package/dest/kernel_prover/private_inputs_builders/index.d.ts +0 -2
- package/dest/kernel_prover/private_inputs_builders/index.d.ts.map +0 -1
- package/dest/kernel_prover/private_inputs_builders/index.js +0 -2
- package/src/kernel_prover/private_inputs_builders/index.ts +0 -1
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
EncryptedTxL2Logs,
|
|
6
6
|
type EventMetadata,
|
|
7
7
|
EventType,
|
|
8
|
-
ExtendedNote,
|
|
8
|
+
type ExtendedNote,
|
|
9
9
|
type FunctionCall,
|
|
10
10
|
type GetUnencryptedLogsResponse,
|
|
11
11
|
type IncomingNotesFilter,
|
|
@@ -26,6 +26,7 @@ import {
|
|
|
26
26
|
type TxHash,
|
|
27
27
|
type TxReceipt,
|
|
28
28
|
UnencryptedTxL2Logs,
|
|
29
|
+
UniqueNote,
|
|
29
30
|
isNoirCallStackUnresolved,
|
|
30
31
|
} from '@aztec/circuit-types';
|
|
31
32
|
import {
|
|
@@ -44,11 +45,11 @@ import {
|
|
|
44
45
|
encodeArguments,
|
|
45
46
|
} from '@aztec/foundation/abi';
|
|
46
47
|
import { type Fq, Fr, type Point } from '@aztec/foundation/fields';
|
|
47
|
-
import { SerialQueue } from '@aztec/foundation/fifo';
|
|
48
48
|
import { type DebugLogger, createDebugLogger } from '@aztec/foundation/log';
|
|
49
|
+
import { SerialQueue } from '@aztec/foundation/queue';
|
|
49
50
|
import { type KeyStore } from '@aztec/key-store';
|
|
50
51
|
import { ClassRegistererAddress } from '@aztec/protocol-contracts/class-registerer';
|
|
51
|
-
import {
|
|
52
|
+
import { getCanonicalFeeJuice } from '@aztec/protocol-contracts/fee-juice';
|
|
52
53
|
import { getCanonicalInstanceDeployer } from '@aztec/protocol-contracts/instance-deployer';
|
|
53
54
|
import { getCanonicalKeyRegistryAddress } from '@aztec/protocol-contracts/key-registry';
|
|
54
55
|
import { getCanonicalMultiCallEntrypointAddress } from '@aztec/protocol-contracts/multi-call-entrypoint';
|
|
@@ -296,7 +297,7 @@ export class PXEService implements PXE {
|
|
|
296
297
|
return await this.node.getPublicStorageAt(contract, slot, 'latest');
|
|
297
298
|
}
|
|
298
299
|
|
|
299
|
-
public async getIncomingNotes(filter: IncomingNotesFilter): Promise<
|
|
300
|
+
public async getIncomingNotes(filter: IncomingNotesFilter): Promise<UniqueNote[]> {
|
|
300
301
|
const noteDaos = await this.db.getIncomingNotes(filter);
|
|
301
302
|
|
|
302
303
|
// TODO(#6531): Refactor --> This type conversion is ugly but I decided to keep it this way for now because
|
|
@@ -312,12 +313,20 @@ export class PXEService implements PXE {
|
|
|
312
313
|
}
|
|
313
314
|
owner = completeAddresses.address;
|
|
314
315
|
}
|
|
315
|
-
return new
|
|
316
|
+
return new UniqueNote(
|
|
317
|
+
dao.note,
|
|
318
|
+
owner,
|
|
319
|
+
dao.contractAddress,
|
|
320
|
+
dao.storageSlot,
|
|
321
|
+
dao.noteTypeId,
|
|
322
|
+
dao.txHash,
|
|
323
|
+
dao.nonce,
|
|
324
|
+
);
|
|
316
325
|
});
|
|
317
326
|
return Promise.all(extendedNotes);
|
|
318
327
|
}
|
|
319
328
|
|
|
320
|
-
public async getOutgoingNotes(filter: OutgoingNotesFilter): Promise<
|
|
329
|
+
public async getOutgoingNotes(filter: OutgoingNotesFilter): Promise<UniqueNote[]> {
|
|
321
330
|
const noteDaos = await this.db.getOutgoingNotes(filter);
|
|
322
331
|
|
|
323
332
|
// TODO(#6532): Refactor --> This type conversion is ugly but I decided to keep it this way for now because
|
|
@@ -333,32 +342,39 @@ export class PXEService implements PXE {
|
|
|
333
342
|
}
|
|
334
343
|
owner = completeAddresses.address;
|
|
335
344
|
}
|
|
336
|
-
return new
|
|
345
|
+
return new UniqueNote(
|
|
346
|
+
dao.note,
|
|
347
|
+
owner,
|
|
348
|
+
dao.contractAddress,
|
|
349
|
+
dao.storageSlot,
|
|
350
|
+
dao.noteTypeId,
|
|
351
|
+
dao.txHash,
|
|
352
|
+
dao.nonce,
|
|
353
|
+
);
|
|
337
354
|
});
|
|
338
355
|
return Promise.all(extendedNotes);
|
|
339
356
|
}
|
|
340
357
|
|
|
341
|
-
public async addNote(note: ExtendedNote) {
|
|
358
|
+
public async addNote(note: ExtendedNote, scope?: AztecAddress) {
|
|
342
359
|
const owner = await this.db.getCompleteAddress(note.owner);
|
|
343
360
|
if (!owner) {
|
|
344
361
|
throw new Error(`Unknown account: ${note.owner.toString()}`);
|
|
345
362
|
}
|
|
346
363
|
|
|
347
|
-
const nonces = await this
|
|
364
|
+
const nonces = await this.#getNoteNonces(note);
|
|
348
365
|
if (nonces.length === 0) {
|
|
349
366
|
throw new Error(`Cannot find the note in tx: ${note.txHash}.`);
|
|
350
367
|
}
|
|
351
368
|
|
|
352
369
|
for (const nonce of nonces) {
|
|
353
|
-
const {
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
);
|
|
370
|
+
const { noteHash, siloedNoteHash, innerNullifier } = await this.simulator.computeNoteHashAndOptionallyANullifier(
|
|
371
|
+
note.contractAddress,
|
|
372
|
+
nonce,
|
|
373
|
+
note.storageSlot,
|
|
374
|
+
note.noteTypeId,
|
|
375
|
+
true,
|
|
376
|
+
note.note,
|
|
377
|
+
);
|
|
362
378
|
|
|
363
379
|
const index = await this.node.findLeafIndex('latest', MerkleTreeId.NOTE_HASH_TREE, siloedNoteHash);
|
|
364
380
|
if (index === undefined) {
|
|
@@ -379,11 +395,12 @@ export class PXEService implements PXE {
|
|
|
379
395
|
note.noteTypeId,
|
|
380
396
|
note.txHash,
|
|
381
397
|
nonce,
|
|
382
|
-
|
|
398
|
+
noteHash,
|
|
383
399
|
siloedNullifier,
|
|
384
400
|
index,
|
|
385
401
|
owner.publicKeys.masterIncomingViewingPublicKey,
|
|
386
402
|
),
|
|
403
|
+
scope,
|
|
387
404
|
);
|
|
388
405
|
}
|
|
389
406
|
}
|
|
@@ -394,21 +411,20 @@ export class PXEService implements PXE {
|
|
|
394
411
|
throw new Error(`Unknown account: ${note.owner.toString()}`);
|
|
395
412
|
}
|
|
396
413
|
|
|
397
|
-
const nonces = await this
|
|
414
|
+
const nonces = await this.#getNoteNonces(note);
|
|
398
415
|
if (nonces.length === 0) {
|
|
399
416
|
throw new Error(`Cannot find the note in tx: ${note.txHash}.`);
|
|
400
417
|
}
|
|
401
418
|
|
|
402
419
|
for (const nonce of nonces) {
|
|
403
|
-
const {
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
);
|
|
420
|
+
const { noteHash, siloedNoteHash, innerNullifier } = await this.simulator.computeNoteHashAndOptionallyANullifier(
|
|
421
|
+
note.contractAddress,
|
|
422
|
+
nonce,
|
|
423
|
+
note.storageSlot,
|
|
424
|
+
note.noteTypeId,
|
|
425
|
+
false,
|
|
426
|
+
note.note,
|
|
427
|
+
);
|
|
412
428
|
|
|
413
429
|
if (!innerNullifier.equals(Fr.ZERO)) {
|
|
414
430
|
throw new Error('Unexpectedly received non-zero nullifier.');
|
|
@@ -427,7 +443,7 @@ export class PXEService implements PXE {
|
|
|
427
443
|
note.noteTypeId,
|
|
428
444
|
note.txHash,
|
|
429
445
|
nonce,
|
|
430
|
-
|
|
446
|
+
noteHash,
|
|
431
447
|
Fr.ZERO, // We are not able to derive
|
|
432
448
|
index,
|
|
433
449
|
owner.publicKeys.masterIncomingViewingPublicKey,
|
|
@@ -441,33 +457,14 @@ export class PXEService implements PXE {
|
|
|
441
457
|
* @param note - The note to find the nonces for.
|
|
442
458
|
* @returns The nonces of the note.
|
|
443
459
|
* @remarks More than a single nonce may be returned since there might be more than one nonce for a given note.
|
|
444
|
-
* TODO(#4956): Un-expose this
|
|
445
460
|
*/
|
|
446
|
-
|
|
461
|
+
async #getNoteNonces(note: ExtendedNote): Promise<Fr[]> {
|
|
447
462
|
const tx = await this.node.getTxEffect(note.txHash);
|
|
448
463
|
if (!tx) {
|
|
449
464
|
throw new Error(`Unknown tx: ${note.txHash}`);
|
|
450
465
|
}
|
|
451
466
|
|
|
452
467
|
const nonces: Fr[] = [];
|
|
453
|
-
|
|
454
|
-
// TODO(https://github.com/AztecProtocol/aztec-packages/issues/1386)
|
|
455
|
-
// Remove this once notes added from public also include nonces.
|
|
456
|
-
{
|
|
457
|
-
const publicNoteNonce = Fr.ZERO;
|
|
458
|
-
const { siloedNoteHash } = await this.simulator.computeNoteHashAndOptionallyANullifier(
|
|
459
|
-
note.contractAddress,
|
|
460
|
-
publicNoteNonce,
|
|
461
|
-
note.storageSlot,
|
|
462
|
-
note.noteTypeId,
|
|
463
|
-
false,
|
|
464
|
-
note.note,
|
|
465
|
-
);
|
|
466
|
-
if (tx.noteHashes.some(hash => hash.equals(siloedNoteHash))) {
|
|
467
|
-
nonces.push(publicNoteNonce);
|
|
468
|
-
}
|
|
469
|
-
}
|
|
470
|
-
|
|
471
468
|
const firstNullifier = tx.nullifiers[0];
|
|
472
469
|
const hashes = tx.noteHashes;
|
|
473
470
|
for (let i = 0; i < hashes.length; ++i) {
|
|
@@ -501,9 +498,9 @@ export class PXEService implements PXE {
|
|
|
501
498
|
return await this.node.getBlock(blockNumber);
|
|
502
499
|
}
|
|
503
500
|
|
|
504
|
-
public proveTx(txRequest: TxExecutionRequest, simulatePublic: boolean): Promise<Tx> {
|
|
501
|
+
public proveTx(txRequest: TxExecutionRequest, simulatePublic: boolean, scopes?: AztecAddress[]): Promise<Tx> {
|
|
505
502
|
return this.jobQueue.put(async () => {
|
|
506
|
-
const simulatedTx = await this.#simulateAndProve(txRequest, this.proofCreator, undefined);
|
|
503
|
+
const simulatedTx = await this.#simulateAndProve(txRequest, this.proofCreator, undefined, scopes);
|
|
507
504
|
if (simulatePublic) {
|
|
508
505
|
simulatedTx.publicOutput = await this.#simulatePublicCalls(simulatedTx.tx);
|
|
509
506
|
}
|
|
@@ -516,13 +513,21 @@ export class PXEService implements PXE {
|
|
|
516
513
|
txRequest: TxExecutionRequest,
|
|
517
514
|
simulatePublic: boolean,
|
|
518
515
|
msgSender: AztecAddress | undefined = undefined,
|
|
516
|
+
skipTxValidation: boolean = true, // TODO(#7956): make the default be false
|
|
517
|
+
scopes?: AztecAddress[],
|
|
519
518
|
): Promise<SimulatedTx> {
|
|
520
519
|
return await this.jobQueue.put(async () => {
|
|
521
|
-
const simulatedTx = await this.#simulateAndProve(txRequest, this.fakeProofCreator, msgSender);
|
|
520
|
+
const simulatedTx = await this.#simulateAndProve(txRequest, this.fakeProofCreator, msgSender, scopes);
|
|
522
521
|
if (simulatePublic) {
|
|
523
522
|
simulatedTx.publicOutput = await this.#simulatePublicCalls(simulatedTx.tx);
|
|
524
523
|
}
|
|
525
524
|
|
|
525
|
+
if (!skipTxValidation) {
|
|
526
|
+
if (!(await this.node.isValidTx(simulatedTx.tx))) {
|
|
527
|
+
throw new Error('The simulated transaction is unable to be added to state and is invalid.');
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
|
|
526
531
|
// We log only if the msgSender is undefined, as simulating with a different msgSender
|
|
527
532
|
// is unlikely to be a real transaction, and likely to be only used to read data.
|
|
528
533
|
// Meaning that it will not necessarily have produced a nullifier (and thus have no TxHash)
|
|
@@ -549,12 +554,13 @@ export class PXEService implements PXE {
|
|
|
549
554
|
args: any[],
|
|
550
555
|
to: AztecAddress,
|
|
551
556
|
_from?: AztecAddress,
|
|
557
|
+
scopes?: AztecAddress[],
|
|
552
558
|
): Promise<DecodedReturn> {
|
|
553
559
|
// all simulations must be serialized w.r.t. the synchronizer
|
|
554
560
|
return await this.jobQueue.put(async () => {
|
|
555
561
|
// TODO - Should check if `from` has the permission to call the view function.
|
|
556
562
|
const functionCall = await this.#getFunctionCall(functionName, args, to);
|
|
557
|
-
const executionResult = await this.#simulateUnconstrained(functionCall);
|
|
563
|
+
const executionResult = await this.#simulateUnconstrained(functionCall, scopes);
|
|
558
564
|
|
|
559
565
|
// TODO - Return typed result based on the function artifact.
|
|
560
566
|
return executionResult;
|
|
@@ -635,7 +641,7 @@ export class PXEService implements PXE {
|
|
|
635
641
|
pxeVersion: this.packageVersion,
|
|
636
642
|
protocolContractAddresses: {
|
|
637
643
|
classRegisterer: ClassRegistererAddress,
|
|
638
|
-
|
|
644
|
+
feeJuice: getCanonicalFeeJuice().address,
|
|
639
645
|
instanceDeployer: getCanonicalInstanceDeployer().address,
|
|
640
646
|
keyRegistry: getCanonicalKeyRegistryAddress(),
|
|
641
647
|
multiCallEntrypoint: getCanonicalMultiCallEntrypointAddress(),
|
|
@@ -666,14 +672,18 @@ export class PXEService implements PXE {
|
|
|
666
672
|
};
|
|
667
673
|
}
|
|
668
674
|
|
|
669
|
-
async #simulate(
|
|
675
|
+
async #simulate(
|
|
676
|
+
txRequest: TxExecutionRequest,
|
|
677
|
+
msgSender?: AztecAddress,
|
|
678
|
+
scopes?: AztecAddress[],
|
|
679
|
+
): Promise<ExecutionResult> {
|
|
670
680
|
// TODO - Pause syncing while simulating.
|
|
671
681
|
|
|
672
682
|
const { contractAddress, functionArtifact } = await this.#getSimulationParameters(txRequest);
|
|
673
683
|
|
|
674
684
|
this.log.debug('Executing simulator...');
|
|
675
685
|
try {
|
|
676
|
-
const result = await this.simulator.run(txRequest, functionArtifact, contractAddress, msgSender);
|
|
686
|
+
const result = await this.simulator.run(txRequest, functionArtifact, contractAddress, msgSender, scopes);
|
|
677
687
|
this.log.verbose(`Simulation completed for ${contractAddress.toString()}:${functionArtifact.name}`);
|
|
678
688
|
return result;
|
|
679
689
|
} catch (err) {
|
|
@@ -690,14 +700,15 @@ export class PXEService implements PXE {
|
|
|
690
700
|
* Returns the simulation result containing the outputs of the unconstrained function.
|
|
691
701
|
*
|
|
692
702
|
* @param execRequest - The transaction request object containing the target contract and function data.
|
|
703
|
+
* @param scopes - The accounts whose notes we can access in this call. Currently optional and will default to all.
|
|
693
704
|
* @returns The simulation result containing the outputs of the unconstrained function.
|
|
694
705
|
*/
|
|
695
|
-
async #simulateUnconstrained(execRequest: FunctionCall) {
|
|
706
|
+
async #simulateUnconstrained(execRequest: FunctionCall, scopes?: AztecAddress[]) {
|
|
696
707
|
const { contractAddress, functionArtifact } = await this.#getSimulationParameters(execRequest);
|
|
697
708
|
|
|
698
709
|
this.log.debug('Executing unconstrained simulator...');
|
|
699
710
|
try {
|
|
700
|
-
const result = await this.simulator.runUnconstrained(execRequest, functionArtifact, contractAddress);
|
|
711
|
+
const result = await this.simulator.runUnconstrained(execRequest, functionArtifact, contractAddress, scopes);
|
|
701
712
|
this.log.verbose(`Unconstrained simulation for ${contractAddress}.${functionArtifact.name} completed`);
|
|
702
713
|
|
|
703
714
|
return result;
|
|
@@ -730,7 +741,9 @@ export class PXEService implements PXE {
|
|
|
730
741
|
const noirCallStack = err.getNoirCallStack();
|
|
731
742
|
if (debugInfo && isNoirCallStackUnresolved(noirCallStack)) {
|
|
732
743
|
try {
|
|
733
|
-
|
|
744
|
+
// Public functions are simulated as a single Brillig entry point.
|
|
745
|
+
// Thus, we can safely assume here that the Brillig function id is `0`.
|
|
746
|
+
const parsedCallStack = resolveOpcodeLocations(noirCallStack, debugInfo, 0);
|
|
734
747
|
err.setNoirCallStack(parsedCallStack);
|
|
735
748
|
} catch (err) {
|
|
736
749
|
this.log.warn(
|
|
@@ -755,6 +768,7 @@ export class PXEService implements PXE {
|
|
|
755
768
|
* @param txExecutionRequest - The transaction request to be simulated and proved.
|
|
756
769
|
* @param proofCreator - The proof creator to use for proving the execution.
|
|
757
770
|
* @param msgSender - (Optional) The message sender to use for the simulation.
|
|
771
|
+
* @param scopes - The accounts whose notes we can access in this call. Currently optional and will default to all.
|
|
758
772
|
* @returns An object that contains:
|
|
759
773
|
* A private transaction object containing the proof, public inputs, and encrypted logs.
|
|
760
774
|
* The return values of the private execution
|
|
@@ -763,9 +777,10 @@ export class PXEService implements PXE {
|
|
|
763
777
|
txExecutionRequest: TxExecutionRequest,
|
|
764
778
|
proofCreator: PrivateKernelProver,
|
|
765
779
|
msgSender?: AztecAddress,
|
|
780
|
+
scopes?: AztecAddress[],
|
|
766
781
|
): Promise<SimulatedTx> {
|
|
767
782
|
// Get values that allow us to reconstruct the block hash
|
|
768
|
-
const executionResult = await this.#simulate(txExecutionRequest, msgSender);
|
|
783
|
+
const executionResult = await this.#simulate(txExecutionRequest, msgSender, scopes);
|
|
769
784
|
|
|
770
785
|
const kernelOracle = new KernelOracle(this.contractDataOracle, this.keyStore, this.node);
|
|
771
786
|
const kernelProver = new KernelProver(kernelOracle, proofCreator);
|
|
@@ -77,18 +77,19 @@ export class SimulatorOracle implements DBOracle {
|
|
|
77
77
|
return capsule;
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
-
async getNotes(contractAddress: AztecAddress, storageSlot: Fr, status: NoteStatus) {
|
|
80
|
+
async getNotes(contractAddress: AztecAddress, storageSlot: Fr, status: NoteStatus, scopes?: AztecAddress[]) {
|
|
81
81
|
const noteDaos = await this.db.getIncomingNotes({
|
|
82
82
|
contractAddress,
|
|
83
83
|
storageSlot,
|
|
84
84
|
status,
|
|
85
|
+
scopes,
|
|
85
86
|
});
|
|
86
|
-
return noteDaos.map(({ contractAddress, storageSlot, nonce, note,
|
|
87
|
+
return noteDaos.map(({ contractAddress, storageSlot, nonce, note, noteHash, siloedNullifier, index }) => ({
|
|
87
88
|
contractAddress,
|
|
88
89
|
storageSlot,
|
|
89
90
|
nonce,
|
|
90
91
|
note,
|
|
91
|
-
|
|
92
|
+
noteHash,
|
|
92
93
|
siloedNullifier,
|
|
93
94
|
// PXE can use this index to get full MembershipWitness
|
|
94
95
|
index,
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
import { type AztecNode, type L2Block, MerkleTreeId, type TxHash } from '@aztec/circuit-types';
|
|
2
2
|
import { type NoteProcessorCaughtUpStats } from '@aztec/circuit-types/stats';
|
|
3
3
|
import { type AztecAddress, type Fr, INITIAL_L2_BLOCK_NUM, type PublicKey } from '@aztec/circuits.js';
|
|
4
|
-
import { type SerialQueue } from '@aztec/foundation/fifo';
|
|
5
4
|
import { type DebugLogger, createDebugLogger } from '@aztec/foundation/log';
|
|
5
|
+
import { type SerialQueue } from '@aztec/foundation/queue';
|
|
6
6
|
import { RunningPromise } from '@aztec/foundation/running-promise';
|
|
7
7
|
import { type KeyStore } from '@aztec/key-store';
|
|
8
8
|
|
|
9
9
|
import { type DeferredNoteDao } from '../database/deferred_note_dao.js';
|
|
10
10
|
import { type IncomingNoteDao } from '../database/incoming_note_dao.js';
|
|
11
11
|
import { type PxeDatabase } from '../database/index.js';
|
|
12
|
-
import { type OutgoingNoteDao } from '../database/outgoing_note_dao.js';
|
|
13
12
|
import { NoteProcessor } from '../note_processor/index.js';
|
|
14
13
|
|
|
15
14
|
/**
|
|
@@ -334,7 +333,6 @@ export class Synchronizer {
|
|
|
334
333
|
|
|
335
334
|
// keep track of decoded notes
|
|
336
335
|
const incomingNotes: IncomingNoteDao[] = [];
|
|
337
|
-
const outgoingNotes: OutgoingNoteDao[] = [];
|
|
338
336
|
|
|
339
337
|
// now process each txHash
|
|
340
338
|
for (const deferredNotes of txHashToDeferredNotes.values()) {
|
|
@@ -342,27 +340,29 @@ export class Synchronizer {
|
|
|
342
340
|
for (const processor of this.noteProcessors) {
|
|
343
341
|
const { incomingNotes: inNotes, outgoingNotes: outNotes } = await processor.decodeDeferredNotes(deferredNotes);
|
|
344
342
|
incomingNotes.push(...inNotes);
|
|
345
|
-
|
|
343
|
+
|
|
344
|
+
await this.db.addNotes(inNotes, outNotes, processor.account);
|
|
345
|
+
|
|
346
|
+
inNotes.forEach(noteDao => {
|
|
347
|
+
this.log.debug(
|
|
348
|
+
`Decoded deferred incoming note under account ${processor.account.toString()} for contract ${
|
|
349
|
+
noteDao.contractAddress
|
|
350
|
+
} at slot ${noteDao.storageSlot} with nullifier ${noteDao.siloedNullifier.toString()}`,
|
|
351
|
+
);
|
|
352
|
+
});
|
|
353
|
+
|
|
354
|
+
outNotes.forEach(noteDao => {
|
|
355
|
+
this.log.debug(
|
|
356
|
+
`Decoded deferred outgoing note under account ${processor.account.toString()} for contract ${
|
|
357
|
+
noteDao.contractAddress
|
|
358
|
+
} at slot ${noteDao.storageSlot}`,
|
|
359
|
+
);
|
|
360
|
+
});
|
|
346
361
|
}
|
|
347
362
|
}
|
|
348
363
|
|
|
349
364
|
// now drop the deferred notes, and add the decoded notes
|
|
350
365
|
await this.db.removeDeferredNotesByContract(contractAddress);
|
|
351
|
-
await this.db.addNotes(incomingNotes, outgoingNotes);
|
|
352
|
-
|
|
353
|
-
incomingNotes.forEach(noteDao => {
|
|
354
|
-
this.log.debug(
|
|
355
|
-
`Decoded deferred incoming note for contract ${noteDao.contractAddress} at slot ${
|
|
356
|
-
noteDao.storageSlot
|
|
357
|
-
} with nullifier ${noteDao.siloedNullifier.toString()}`,
|
|
358
|
-
);
|
|
359
|
-
});
|
|
360
|
-
|
|
361
|
-
outgoingNotes.forEach(noteDao => {
|
|
362
|
-
this.log.debug(
|
|
363
|
-
`Decoded deferred outgoing note for contract ${noteDao.contractAddress} at slot ${noteDao.storageSlot}`,
|
|
364
|
-
);
|
|
365
|
-
});
|
|
366
366
|
|
|
367
367
|
await this.#removeNullifiedNotes(incomingNotes);
|
|
368
368
|
}
|
package/dest/kernel_prover/private_inputs_builders/build_private_kernel_reset_hints.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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,77 +0,0 @@
|
|
|
1
|
-
import { KeyValidationHint, MAX_KEY_VALIDATION_REQUESTS_PER_TX, MAX_NOTE_HASHES_PER_TX, MAX_NOTE_HASH_READ_REQUESTS_PER_TX, MAX_NULLIFIERS_PER_TX, MAX_NULLIFIER_READ_REQUESTS_PER_TX, MembershipWitness, NULLIFIER_TREE_HEIGHT, PRIVATE_RESET_VARIANTS, PrivateKernelResetCircuitPrivateInputs, PrivateKernelResetHints, ScopedNoteHash, ScopedNullifier, ScopedReadRequest, buildNoteHashReadRequestHints, buildNullifierReadRequestHints, buildTransientDataHints, getNonEmptyItems, } from '@aztec/circuits.js';
|
|
2
|
-
import { makeTuple } from '@aztec/foundation/array';
|
|
3
|
-
function getNullifierReadRequestHints(nullifierReadRequests, nullifiers, oracle, sizePending, sizeSettled, futureNullifiers) {
|
|
4
|
-
const getNullifierMembershipWitness = async (nullifier) => {
|
|
5
|
-
const res = await oracle.getNullifierMembershipWitness(nullifier);
|
|
6
|
-
if (!res) {
|
|
7
|
-
throw new Error(`Cannot find the leaf for nullifier ${nullifier.toBigInt()}.`);
|
|
8
|
-
}
|
|
9
|
-
const { index, siblingPath, leafPreimage } = res;
|
|
10
|
-
return {
|
|
11
|
-
membershipWitness: new MembershipWitness(NULLIFIER_TREE_HEIGHT, index, siblingPath.toTuple()),
|
|
12
|
-
leafPreimage,
|
|
13
|
-
};
|
|
14
|
-
};
|
|
15
|
-
return buildNullifierReadRequestHints({ getNullifierMembershipWitness }, nullifierReadRequests, nullifiers, sizePending, sizeSettled, futureNullifiers);
|
|
16
|
-
}
|
|
17
|
-
async function getMasterSecretKeysAndAppKeyGenerators(keyValidationRequests, oracle) {
|
|
18
|
-
const keysHints = makeTuple(MAX_KEY_VALIDATION_REQUESTS_PER_TX, KeyValidationHint.empty);
|
|
19
|
-
let keyIndex = 0;
|
|
20
|
-
for (let i = 0; i < keyValidationRequests.length; ++i) {
|
|
21
|
-
const request = keyValidationRequests[i].request;
|
|
22
|
-
if (request.isEmpty()) {
|
|
23
|
-
break;
|
|
24
|
-
}
|
|
25
|
-
const secretKeys = await oracle.getMasterSecretKey(request.request.pkM);
|
|
26
|
-
keysHints[keyIndex] = new KeyValidationHint(secretKeys, i);
|
|
27
|
-
keyIndex++;
|
|
28
|
-
}
|
|
29
|
-
return {
|
|
30
|
-
keysCount: keyIndex,
|
|
31
|
-
keysHints,
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
export async function buildPrivateKernelResetInputs(executionStack, previousKernelData, noteHashLeafIndexMap, noteHashNullifierCounterMap, oracle) {
|
|
35
|
-
const publicInputs = previousKernelData.publicInputs;
|
|
36
|
-
// Use max sizes, they will be trimmed down later.
|
|
37
|
-
const futureNoteHashes = collectNested(executionStack, executionResult => {
|
|
38
|
-
const nonEmptyNoteHashes = getNonEmptyItems(executionResult.callStackItem.publicInputs.noteHashes);
|
|
39
|
-
return nonEmptyNoteHashes.map(noteHash => new ScopedNoteHash(noteHash, executionResult.callStackItem.publicInputs.callContext.storageContractAddress));
|
|
40
|
-
});
|
|
41
|
-
const { numPendingReadHints: noteHashPendingReadHints, numSettledReadHints: noteHashSettledReadHints, hints: noteHashReadRequestHints, } = await buildNoteHashReadRequestHints(oracle, publicInputs.validationRequests.noteHashReadRequests, publicInputs.end.noteHashes, noteHashLeafIndexMap, MAX_NOTE_HASH_READ_REQUESTS_PER_TX, MAX_NOTE_HASH_READ_REQUESTS_PER_TX, futureNoteHashes);
|
|
42
|
-
const futureNullifiers = collectNested(executionStack, executionResult => {
|
|
43
|
-
const nonEmptyNullifiers = getNonEmptyItems(executionResult.callStackItem.publicInputs.nullifiers);
|
|
44
|
-
return nonEmptyNullifiers.map(nullifier => new ScopedNullifier(nullifier, executionResult.callStackItem.publicInputs.callContext.storageContractAddress));
|
|
45
|
-
});
|
|
46
|
-
const { numPendingReadHints: nullifierPendingReadHints, numSettledReadHints: nullifierSettledReadHints, hints: nullifierReadRequestHints, } = await getNullifierReadRequestHints(publicInputs.validationRequests.nullifierReadRequests, publicInputs.end.nullifiers, oracle, MAX_NULLIFIER_READ_REQUESTS_PER_TX, MAX_NULLIFIER_READ_REQUESTS_PER_TX, futureNullifiers);
|
|
47
|
-
const { keysCount, keysHints } = await getMasterSecretKeysAndAppKeyGenerators(publicInputs.validationRequests.scopedKeyValidationRequestsAndGenerators, oracle);
|
|
48
|
-
const futureNoteHashReads = collectNestedReadRequests(executionStack, executionResult => executionResult.callStackItem.publicInputs.noteHashReadRequests);
|
|
49
|
-
const futureNullifierReads = collectNestedReadRequests(executionStack, executionResult => executionResult.callStackItem.publicInputs.nullifierReadRequests);
|
|
50
|
-
const [transientNullifierIndexesForNoteHashes, transientNoteHashIndexesForNullifiers] = buildTransientDataHints(publicInputs.end.noteHashes, publicInputs.end.nullifiers, futureNoteHashReads, futureNullifierReads, noteHashNullifierCounterMap, MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX);
|
|
51
|
-
let privateInputs;
|
|
52
|
-
for (const [sizeTag, hintSizes] of Object.entries(PRIVATE_RESET_VARIANTS)) {
|
|
53
|
-
if (hintSizes.NOTE_HASH_PENDING_AMOUNT >= noteHashPendingReadHints &&
|
|
54
|
-
hintSizes.NOTE_HASH_SETTLED_AMOUNT >= noteHashSettledReadHints &&
|
|
55
|
-
hintSizes.NULLIFIER_PENDING_AMOUNT >= nullifierPendingReadHints &&
|
|
56
|
-
hintSizes.NULLIFIER_SETTLED_AMOUNT >= nullifierSettledReadHints &&
|
|
57
|
-
hintSizes.NULLIFIER_KEYS >= keysCount) {
|
|
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);
|
|
59
|
-
break;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
if (!privateInputs) {
|
|
63
|
-
throw new Error('No private inputs found for the given hint sizes.');
|
|
64
|
-
}
|
|
65
|
-
return privateInputs;
|
|
66
|
-
}
|
|
67
|
-
function collectNested(executionStack, extractExecutionItems) {
|
|
68
|
-
const thisExecutionReads = executionStack.flatMap(extractExecutionItems);
|
|
69
|
-
return thisExecutionReads.concat(executionStack.flatMap(({ nestedExecutions }) => collectNested(nestedExecutions, extractExecutionItems)));
|
|
70
|
-
}
|
|
71
|
-
function collectNestedReadRequests(executionStack, extractReadRequests) {
|
|
72
|
-
return collectNested(executionStack, executionResult => {
|
|
73
|
-
const nonEmptyReadRequests = getNonEmptyItems(extractReadRequests(executionResult));
|
|
74
|
-
return nonEmptyReadRequests.map(readRequest => new ScopedReadRequest(readRequest, executionResult.callStackItem.publicInputs.callContext.storageContractAddress));
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRfcHJpdmF0ZV9rZXJuZWxfcmVzZXRfaGludHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMva2VybmVsX3Byb3Zlci9wcml2YXRlX2lucHV0c19idWlsZGVycy9idWlsZF9wcml2YXRlX2tlcm5lbF9yZXNldF9oaW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLGtDQUFrQyxFQUNsQyxzQkFBc0IsRUFDdEIsa0NBQWtDLEVBQ2xDLHFCQUFxQixFQUNyQixrQ0FBa0MsRUFDbEMsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUNyQixzQkFBc0IsRUFFdEIsc0NBQXNDLEVBRXRDLHVCQUF1QixFQUd2QixjQUFjLEVBQ2QsZUFBZSxFQUNmLGlCQUFpQixFQUNqQiw2QkFBNkIsRUFDN0IsOEJBQThCLEVBQzlCLHVCQUF1QixFQUN2QixnQkFBZ0IsR0FDakIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFNcEQsU0FBUyw0QkFBNEIsQ0FDbkMscUJBQTBGLEVBQzFGLFVBQWdFLEVBQ2hFLE1BQXlCLEVBQ3pCLFdBQW9CLEVBQ3BCLFdBQW9CLEVBQ3BCLGdCQUFtQztJQUVuQyxNQUFNLDZCQUE2QixHQUFHLEtBQUssRUFBRSxTQUFhLEVBQUUsRUFBRTtRQUM1RCxNQUFNLEdBQUcsR0FBRyxNQUFNLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDVCxNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxTQUFTLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2pGLENBQUM7UUFFRCxNQUFNLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsR0FBRyxHQUFHLENBQUM7UUFDakQsT0FBTztZQUNMLGlCQUFpQixFQUFF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
|
|
@@ -1 +0,0 @@
|
|
|
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,2 +0,0 @@
|
|
|
1
|
-
export { buildPrivateKernelResetInputs } from './build_private_kernel_reset_hints.js';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMva2VybmVsX3Byb3Zlci9wcml2YXRlX2lucHV0c19idWlsZGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQyJ9
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { buildPrivateKernelResetInputs } from './build_private_kernel_reset_hints.js';
|