@aztec/pxe 0.81.0 → 0.82.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/config/package_info.js +1 -1
- package/dest/entrypoints/server/utils.d.ts +15 -7
- package/dest/entrypoints/server/utils.d.ts.map +1 -1
- package/dest/entrypoints/server/utils.js +17 -9
- package/dest/{kernel_prover → private_kernel}/hints/build_private_kernel_reset_private_inputs.d.ts +2 -2
- package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts.map +1 -0
- package/dest/private_kernel/hints/index.d.ts.map +1 -0
- package/dest/private_kernel/index.d.ts +3 -0
- package/dest/private_kernel/index.d.ts.map +1 -0
- package/dest/private_kernel/index.js +2 -0
- package/dest/{kernel_prover/kernel_prover.d.ts → private_kernel/private_kernel_execution_prover.d.ts} +13 -14
- package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -0
- package/dest/{kernel_prover/kernel_prover.js → private_kernel/private_kernel_execution_prover.js} +64 -64
- package/dest/{kernel_prover/proving_data_oracle.d.ts → private_kernel/private_kernel_oracle.d.ts} +17 -28
- package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -0
- package/dest/private_kernel/private_kernel_oracle.js +4 -0
- package/dest/{kernel_oracle/index.d.ts → private_kernel/private_kernel_oracle_impl.d.ts} +5 -5
- package/dest/private_kernel/private_kernel_oracle_impl.d.ts.map +1 -0
- package/dest/{kernel_oracle/index.js → private_kernel/private_kernel_oracle_impl.js} +2 -2
- package/dest/pxe_oracle_interface/pxe_oracle_interface.d.ts +7 -16
- package/dest/pxe_oracle_interface/pxe_oracle_interface.d.ts.map +1 -1
- package/dest/pxe_oracle_interface/pxe_oracle_interface.js +11 -32
- package/dest/pxe_service/pxe_service.d.ts +13 -27
- package/dest/pxe_service/pxe_service.d.ts.map +1 -1
- package/dest/pxe_service/pxe_service.js +207 -235
- package/dest/storage/contract_data_provider/contract_data_provider.d.ts +2 -2
- package/dest/storage/contract_data_provider/contract_data_provider.d.ts.map +1 -1
- package/dest/storage/contract_data_provider/contract_data_provider.js +6 -1
- package/dest/storage/contract_data_provider/private_functions_tree.d.ts +2 -2
- package/dest/storage/contract_data_provider/private_functions_tree.d.ts.map +1 -1
- package/dest/storage/index.d.ts +1 -2
- package/dest/storage/index.d.ts.map +1 -1
- package/dest/storage/index.js +1 -2
- package/dest/storage/metadata.d.ts +2 -0
- package/dest/storage/metadata.d.ts.map +1 -0
- package/dest/storage/metadata.js +1 -0
- package/package.json +15 -15
- package/src/config/package_info.ts +1 -1
- package/src/entrypoints/server/utils.ts +25 -11
- package/src/{kernel_prover → private_kernel}/hints/build_private_kernel_reset_private_inputs.ts +4 -4
- package/src/private_kernel/index.ts +2 -0
- package/src/{kernel_prover/kernel_prover.ts → private_kernel/private_kernel_execution_prover.ts} +76 -71
- package/src/{kernel_prover/proving_data_oracle.ts → private_kernel/private_kernel_oracle.ts} +17 -29
- package/src/{kernel_oracle/index.ts → private_kernel/private_kernel_oracle_impl.ts} +6 -5
- package/src/pxe_oracle_interface/pxe_oracle_interface.ts +25 -40
- package/src/pxe_service/pxe_service.ts +279 -293
- package/src/storage/contract_data_provider/contract_data_provider.ts +11 -2
- package/src/storage/contract_data_provider/private_functions_tree.ts +2 -2
- package/src/storage/index.ts +1 -3
- package/src/storage/metadata.ts +1 -0
- package/dest/kernel_oracle/index.d.ts.map +0 -1
- package/dest/kernel_prover/hints/build_private_kernel_reset_private_inputs.d.ts.map +0 -1
- package/dest/kernel_prover/hints/index.d.ts.map +0 -1
- package/dest/kernel_prover/index.d.ts +0 -3
- package/dest/kernel_prover/index.d.ts.map +0 -1
- package/dest/kernel_prover/index.js +0 -2
- package/dest/kernel_prover/kernel_prover.d.ts.map +0 -1
- package/dest/kernel_prover/proving_data_oracle.d.ts.map +0 -1
- package/dest/kernel_prover/proving_data_oracle.js +0 -4
- package/dest/storage/auth_witness_data_provider/auth_witness_data_provider.d.ts +0 -11
- package/dest/storage/auth_witness_data_provider/auth_witness_data_provider.d.ts.map +0 -1
- package/dest/storage/auth_witness_data_provider/auth_witness_data_provider.js +0 -20
- package/dest/storage/auth_witness_data_provider/index.d.ts +0 -2
- package/dest/storage/auth_witness_data_provider/index.d.ts.map +0 -1
- package/dest/storage/auth_witness_data_provider/index.js +0 -1
- package/src/kernel_prover/index.ts +0 -2
- package/src/storage/auth_witness_data_provider/auth_witness_data_provider.ts +0 -34
- package/src/storage/auth_witness_data_provider/index.ts +0 -1
- /package/dest/{kernel_prover → private_kernel}/hints/build_private_kernel_reset_private_inputs.js +0 -0
- /package/dest/{kernel_prover → private_kernel}/hints/index.d.ts +0 -0
- /package/dest/{kernel_prover → private_kernel}/hints/index.js +0 -0
- /package/src/{kernel_prover → private_kernel}/hints/index.ts +0 -0
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
} from '@aztec/simulator/client';
|
|
13
13
|
import {
|
|
14
14
|
type FunctionArtifact,
|
|
15
|
+
type FunctionArtifactWithContractName,
|
|
15
16
|
FunctionCall,
|
|
16
17
|
FunctionSelector,
|
|
17
18
|
FunctionType,
|
|
@@ -33,7 +34,6 @@ import type { BlockHeader } from '@aztec/stdlib/tx';
|
|
|
33
34
|
import { TxHash } from '@aztec/stdlib/tx';
|
|
34
35
|
|
|
35
36
|
import type { AddressDataProvider } from '../storage/address_data_provider/address_data_provider.js';
|
|
36
|
-
import type { AuthWitnessDataProvider } from '../storage/auth_witness_data_provider/auth_witness_data_provider.js';
|
|
37
37
|
import type { CapsuleDataProvider } from '../storage/capsule_data_provider/capsule_data_provider.js';
|
|
38
38
|
import type { ContractDataProvider } from '../storage/contract_data_provider/contract_data_provider.js';
|
|
39
39
|
import { NoteDao } from '../storage/note_data_provider/note_dao.js';
|
|
@@ -56,8 +56,7 @@ export class PXEOracleInterface implements ExecutionDataProvider {
|
|
|
56
56
|
private syncDataProvider: SyncDataProvider,
|
|
57
57
|
private taggingDataProvider: TaggingDataProvider,
|
|
58
58
|
private addressDataProvider: AddressDataProvider,
|
|
59
|
-
private
|
|
60
|
-
private log = createLogger('pxe:pxe_data_manager'),
|
|
59
|
+
private log = createLogger('pxe:pxe_oracle_interface'),
|
|
61
60
|
) {}
|
|
62
61
|
|
|
63
62
|
getKeyValidationRequest(pkMHash: Fr, contractAddress: AztecAddress): Promise<KeyValidationRequest> {
|
|
@@ -83,11 +82,6 @@ export class PXEOracleInterface implements ExecutionDataProvider {
|
|
|
83
82
|
return instance;
|
|
84
83
|
}
|
|
85
84
|
|
|
86
|
-
async getAuthWitness(messageHash: Fr): Promise<Fr[] | undefined> {
|
|
87
|
-
const witness = await this.authWitnessDataProvider.getAuthWitness(messageHash);
|
|
88
|
-
return witness;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
85
|
async getNotes(contractAddress: AztecAddress, storageSlot: Fr, status: NoteStatus, scopes?: AztecAddress[]) {
|
|
92
86
|
const noteDaos = await this.noteDataProvider.getNotes({
|
|
93
87
|
contractAddress,
|
|
@@ -107,7 +101,10 @@ export class PXEOracleInterface implements ExecutionDataProvider {
|
|
|
107
101
|
}));
|
|
108
102
|
}
|
|
109
103
|
|
|
110
|
-
async getFunctionArtifact(
|
|
104
|
+
async getFunctionArtifact(
|
|
105
|
+
contractAddress: AztecAddress,
|
|
106
|
+
selector: FunctionSelector,
|
|
107
|
+
): Promise<FunctionArtifactWithContractName> {
|
|
111
108
|
const artifact = await this.contractDataProvider.getFunctionArtifact(contractAddress, selector);
|
|
112
109
|
const debug = await this.contractDataProvider.getFunctionDebugMetadata(contractAddress, selector);
|
|
113
110
|
return {
|
|
@@ -119,7 +116,7 @@ export class PXEOracleInterface implements ExecutionDataProvider {
|
|
|
119
116
|
async getFunctionArtifactByName(
|
|
120
117
|
contractAddress: AztecAddress,
|
|
121
118
|
functionName: string,
|
|
122
|
-
): Promise<
|
|
119
|
+
): Promise<FunctionArtifactWithContractName | undefined> {
|
|
123
120
|
const instance = await this.contractDataProvider.getContractInstance(contractAddress);
|
|
124
121
|
const artifact = await this.contractDataProvider.getContractArtifact(instance.currentContractClassId);
|
|
125
122
|
return artifact && getFunctionArtifact(artifact, functionName);
|
|
@@ -150,21 +147,12 @@ export class PXEOracleInterface implements ExecutionDataProvider {
|
|
|
150
147
|
}
|
|
151
148
|
|
|
152
149
|
// Only used in public.
|
|
153
|
-
public
|
|
150
|
+
public getL1ToL2MessageHash(_leafIndex: bigint): Promise<Fr | undefined> {
|
|
154
151
|
throw new Error('Unimplemented in private!');
|
|
155
152
|
}
|
|
156
153
|
|
|
157
|
-
/**
|
|
158
|
-
* Gets the index of a commitment in the note hash tree.
|
|
159
|
-
* @param commitment - The commitment.
|
|
160
|
-
* @returns - The index of the commitment. Undefined if it does not exist in the tree.
|
|
161
|
-
*/
|
|
162
|
-
async getCommitmentIndex(commitment: Fr) {
|
|
163
|
-
return await this.#findLeafIndex('latest', MerkleTreeId.NOTE_HASH_TREE, commitment);
|
|
164
|
-
}
|
|
165
|
-
|
|
166
154
|
// We need this in public as part of the EXISTS calls - but isn't used in private
|
|
167
|
-
public
|
|
155
|
+
public getNoteHash(_leafIndex: bigint): Promise<Fr | undefined> {
|
|
168
156
|
throw new Error('Unimplemented in private!');
|
|
169
157
|
}
|
|
170
158
|
|
|
@@ -174,7 +162,7 @@ export class PXEOracleInterface implements ExecutionDataProvider {
|
|
|
174
162
|
|
|
175
163
|
async #findLeafIndex(blockNumber: L2BlockNumber, treeId: MerkleTreeId, leafValue: Fr): Promise<bigint | undefined> {
|
|
176
164
|
const [leafIndex] = await this.aztecNode.findLeavesIndexes(blockNumber, treeId, [leafValue]);
|
|
177
|
-
return leafIndex;
|
|
165
|
+
return leafIndex?.data;
|
|
178
166
|
}
|
|
179
167
|
|
|
180
168
|
public async getMembershipWitness(blockNumber: number, treeId: MerkleTreeId, leafValue: Fr): Promise<Fr[]> {
|
|
@@ -225,8 +213,8 @@ export class PXEOracleInterface implements ExecutionDataProvider {
|
|
|
225
213
|
return await this.aztecNode.getBlock(blockNumber);
|
|
226
214
|
}
|
|
227
215
|
|
|
228
|
-
public async
|
|
229
|
-
return await this.aztecNode.
|
|
216
|
+
public async getPublicDataWitness(blockNumber: number, leafSlot: Fr): Promise<PublicDataWitness | undefined> {
|
|
217
|
+
return await this.aztecNode.getPublicDataWitness(blockNumber, leafSlot);
|
|
230
218
|
}
|
|
231
219
|
|
|
232
220
|
public async getPublicStorageAt(blockNumber: number, contract: AztecAddress, slot: Fr): Promise<Fr> {
|
|
@@ -667,26 +655,17 @@ export class PXEOracleInterface implements ExecutionDataProvider {
|
|
|
667
655
|
|
|
668
656
|
// We store notes by their index in the global note hash tree, which has the convenient side effect of validating
|
|
669
657
|
// note existence in said tree.
|
|
670
|
-
const [
|
|
658
|
+
const [uniqueNoteHashTreeIndexInBlock] = await this.aztecNode.findLeavesIndexes(
|
|
671
659
|
syncedBlockNumber,
|
|
672
660
|
MerkleTreeId.NOTE_HASH_TREE,
|
|
673
661
|
[uniqueNoteHash],
|
|
674
662
|
);
|
|
675
|
-
if (
|
|
663
|
+
if (uniqueNoteHashTreeIndexInBlock === undefined) {
|
|
676
664
|
throw new Error(
|
|
677
665
|
`Note hash ${noteHash} (uniqued as ${uniqueNoteHash}) is not present on the tree at block ${syncedBlockNumber} (from tx ${txHash})`,
|
|
678
666
|
);
|
|
679
667
|
}
|
|
680
668
|
|
|
681
|
-
// TODO (#12550): findLeavesIndexes should probably return an InBlock, same as findNullifiersIndexesWithBlock. This
|
|
682
|
-
// would save us from having to then query the tx receipt in order to get the block hash and number. Note regardless
|
|
683
|
-
// that we're not validating that the note was indeed created in this tx (which would require inspecting the tx
|
|
684
|
-
// effects), so maybe what we really want is an InTx.
|
|
685
|
-
const txReceipt = await this.aztecNode.getTxReceipt(new TxHash(txHash));
|
|
686
|
-
if (txReceipt === undefined) {
|
|
687
|
-
throw new Error(`Failed to fetch tx receipt for tx hash ${txHash} when searching for note hashes`);
|
|
688
|
-
}
|
|
689
|
-
|
|
690
669
|
const noteDao = new NoteDao(
|
|
691
670
|
new Note(content),
|
|
692
671
|
contractAddress,
|
|
@@ -695,9 +674,9 @@ export class PXEOracleInterface implements ExecutionDataProvider {
|
|
|
695
674
|
noteHash,
|
|
696
675
|
siloedNullifier,
|
|
697
676
|
new TxHash(txHash),
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
677
|
+
uniqueNoteHashTreeIndexInBlock?.l2BlockNumber,
|
|
678
|
+
uniqueNoteHashTreeIndexInBlock?.l2BlockHash,
|
|
679
|
+
uniqueNoteHashTreeIndexInBlock?.data,
|
|
701
680
|
recipient,
|
|
702
681
|
);
|
|
703
682
|
|
|
@@ -709,7 +688,9 @@ export class PXEOracleInterface implements ExecutionDataProvider {
|
|
|
709
688
|
nullifier: noteDao.siloedNullifier.toString(),
|
|
710
689
|
});
|
|
711
690
|
|
|
712
|
-
const [nullifierIndex] = await this.aztecNode.
|
|
691
|
+
const [nullifierIndex] = await this.aztecNode.findLeavesIndexes(syncedBlockNumber, MerkleTreeId.NULLIFIER_TREE, [
|
|
692
|
+
siloedNullifier,
|
|
693
|
+
]);
|
|
713
694
|
if (nullifierIndex !== undefined) {
|
|
714
695
|
const { data: _, ...blockHashAndNum } = nullifierIndex;
|
|
715
696
|
await this.noteDataProvider.removeNullifiedNotes([{ data: siloedNullifier, ...blockHashAndNum }], recipient);
|
|
@@ -766,7 +747,11 @@ export class PXEOracleInterface implements ExecutionDataProvider {
|
|
|
766
747
|
for (const recipient of await this.keyStore.getAccounts()) {
|
|
767
748
|
const currentNotesForRecipient = await this.noteDataProvider.getNotes({ contractAddress, recipient });
|
|
768
749
|
const nullifiersToCheck = currentNotesForRecipient.map(note => note.siloedNullifier);
|
|
769
|
-
const nullifierIndexes = await this.aztecNode.
|
|
750
|
+
const nullifierIndexes = await this.aztecNode.findLeavesIndexes(
|
|
751
|
+
'latest',
|
|
752
|
+
MerkleTreeId.NULLIFIER_TREE,
|
|
753
|
+
nullifiersToCheck,
|
|
754
|
+
);
|
|
770
755
|
|
|
771
756
|
const foundNullifiers = nullifiersToCheck
|
|
772
757
|
.map((nullifier, i) => {
|