@aztec/pxe 0.40.1 → 0.41.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/database/kv_pxe_database.d.ts +1 -1
- package/dest/database/kv_pxe_database.js +2 -2
- package/dest/database/pxe_database.d.ts +5 -5
- package/dest/kernel_oracle/index.d.ts +7 -4
- package/dest/kernel_oracle/index.d.ts.map +1 -1
- package/dest/kernel_oracle/index.js +20 -4
- package/dest/kernel_prover/kernel_prover.d.ts.map +1 -1
- package/dest/kernel_prover/kernel_prover.js +17 -17
- package/dest/kernel_prover/private_inputs_builders/build_private_kernel_init_hints.d.ts +3 -0
- package/dest/kernel_prover/private_inputs_builders/build_private_kernel_init_hints.d.ts.map +1 -0
- package/dest/kernel_prover/private_inputs_builders/build_private_kernel_init_hints.js +11 -0
- package/dest/kernel_prover/private_inputs_builders/build_private_kernel_reset_hints.d.ts +4 -0
- package/dest/kernel_prover/private_inputs_builders/build_private_kernel_reset_hints.d.ts.map +1 -0
- package/dest/kernel_prover/private_inputs_builders/build_private_kernel_reset_hints.js +59 -0
- package/dest/kernel_prover/private_inputs_builders/build_private_kernel_reset_outputs.d.ts +4 -0
- package/dest/kernel_prover/private_inputs_builders/build_private_kernel_reset_outputs.d.ts.map +1 -0
- package/dest/kernel_prover/private_inputs_builders/build_private_kernel_reset_outputs.js +12 -0
- package/dest/kernel_prover/private_inputs_builders/build_private_kernel_tail_hints.d.ts +1 -2
- package/dest/kernel_prover/private_inputs_builders/build_private_kernel_tail_hints.d.ts.map +1 -1
- package/dest/kernel_prover/private_inputs_builders/build_private_kernel_tail_hints.js +7 -53
- package/dest/kernel_prover/private_inputs_builders/index.d.ts +3 -1
- package/dest/kernel_prover/private_inputs_builders/index.d.ts.map +1 -1
- package/dest/kernel_prover/private_inputs_builders/index.js +4 -2
- package/dest/kernel_prover/proving_data_oracle.d.ts +8 -6
- package/dest/kernel_prover/proving_data_oracle.d.ts.map +1 -1
- package/dest/kernel_prover/test/test_circuit_prover.d.ts +2 -1
- package/dest/kernel_prover/test/test_circuit_prover.d.ts.map +1 -1
- package/dest/kernel_prover/test/test_circuit_prover.js +14 -3
- package/dest/note_processor/note_processor.d.ts +2 -1
- package/dest/note_processor/note_processor.d.ts.map +1 -1
- package/dest/note_processor/note_processor.js +3 -2
- package/dest/note_processor/produce_note_dao.js +4 -20
- package/dest/pxe_service/create_pxe_service.d.ts +1 -1
- package/dest/pxe_service/create_pxe_service.d.ts.map +1 -1
- package/dest/pxe_service/create_pxe_service.js +6 -5
- package/dest/pxe_service/pxe_service.d.ts +5 -4
- package/dest/pxe_service/pxe_service.d.ts.map +1 -1
- package/dest/pxe_service/pxe_service.js +10 -12
- package/dest/pxe_service/test/pxe_test_suite.js +2 -2
- package/dest/simulator/index.d.ts +2 -1
- package/dest/simulator/index.d.ts.map +1 -1
- package/dest/simulator/index.js +1 -1
- package/dest/simulator_oracle/index.d.ts +6 -5
- package/dest/simulator_oracle/index.d.ts.map +1 -1
- package/dest/simulator_oracle/index.js +7 -8
- package/dest/synchronizer/synchronizer.d.ts +2 -1
- package/dest/synchronizer/synchronizer.d.ts.map +1 -1
- package/dest/synchronizer/synchronizer.js +8 -8
- package/package.json +14 -14
- package/src/database/kv_pxe_database.ts +2 -2
- package/src/database/pxe_database.ts +5 -5
- package/src/kernel_oracle/index.ts +29 -4
- package/src/kernel_prover/kernel_prover.ts +35 -26
- package/src/kernel_prover/private_inputs_builders/build_private_kernel_init_hints.ts +28 -0
- package/src/kernel_prover/private_inputs_builders/build_private_kernel_reset_hints.ts +179 -0
- package/src/kernel_prover/private_inputs_builders/{build_private_kernel_tail_outputs.ts → build_private_kernel_reset_outputs.ts} +14 -3
- package/src/kernel_prover/private_inputs_builders/build_private_kernel_tail_hints.ts +17 -126
- package/src/kernel_prover/private_inputs_builders/index.ts +3 -1
- package/src/kernel_prover/proving_data_oracle.ts +9 -5
- package/src/kernel_prover/test/test_circuit_prover.ts +24 -3
- package/src/note_processor/note_processor.ts +3 -2
- package/src/note_processor/produce_note_dao.ts +3 -19
- package/src/pxe_service/create_pxe_service.ts +9 -6
- package/src/pxe_service/pxe_service.ts +14 -12
- package/src/pxe_service/test/pxe_test_suite.ts +1 -1
- package/src/simulator/index.ts +2 -1
- package/src/simulator_oracle/index.ts +9 -9
- package/src/synchronizer/synchronizer.ts +8 -14
- package/dest/kernel_prover/private_inputs_builders/build_private_kernel_tail_outputs.d.ts +0 -4
- package/dest/kernel_prover/private_inputs_builders/build_private_kernel_tail_outputs.d.ts.map +0 -1
- package/dest/kernel_prover/private_inputs_builders/build_private_kernel_tail_outputs.js +0 -10
|
@@ -40,7 +40,7 @@ export declare class KVPxeDatabase implements PxeDatabase {
|
|
|
40
40
|
getBlockNumber(): number | undefined;
|
|
41
41
|
getHeader(): Header;
|
|
42
42
|
addCompleteAddress(completeAddress: CompleteAddress): Promise<boolean>;
|
|
43
|
-
getCompleteAddress(
|
|
43
|
+
getCompleteAddress(account: AztecAddress): Promise<CompleteAddress | undefined>;
|
|
44
44
|
getCompleteAddresses(): Promise<CompleteAddress[]>;
|
|
45
45
|
getSynchedBlockNumberForPublicKey(publicKey: Point): number | undefined;
|
|
46
46
|
setSynchedBlockNumberForPublicKey(publicKey: Point, blockNumber: number): Promise<void>;
|
|
@@ -240,8 +240,8 @@ export class KVPxeDatabase {
|
|
|
240
240
|
}
|
|
241
241
|
});
|
|
242
242
|
}
|
|
243
|
-
getCompleteAddress(
|
|
244
|
-
return Promise.resolve(__classPrivateFieldGet(this, _KVPxeDatabase_instances, "m", _KVPxeDatabase_getCompleteAddress).call(this,
|
|
243
|
+
getCompleteAddress(account) {
|
|
244
|
+
return Promise.resolve(__classPrivateFieldGet(this, _KVPxeDatabase_instances, "m", _KVPxeDatabase_getCompleteAddress).call(this, account));
|
|
245
245
|
}
|
|
246
246
|
getCompleteAddresses() {
|
|
247
247
|
return Promise.resolve(Array.from(__classPrivateFieldGet(this, _KVPxeDatabase_addresses, "f")).map(v => CompleteAddress.fromBuffer(v)));
|
|
@@ -115,13 +115,13 @@ export interface PxeDatabase extends ContractArtifactDatabase, ContractInstanceD
|
|
|
115
115
|
*/
|
|
116
116
|
addCompleteAddress(address: CompleteAddress): Promise<boolean>;
|
|
117
117
|
/**
|
|
118
|
-
*
|
|
119
|
-
* @param
|
|
120
|
-
* @returns A promise that resolves to a CompleteAddress instance if
|
|
118
|
+
* Retrieve the complete address associated to a given address.
|
|
119
|
+
* @param account - The account address.
|
|
120
|
+
* @returns A promise that resolves to a CompleteAddress instance if found, or undefined if not found.
|
|
121
121
|
*/
|
|
122
|
-
getCompleteAddress(
|
|
122
|
+
getCompleteAddress(account: AztecAddress): Promise<CompleteAddress | undefined>;
|
|
123
123
|
/**
|
|
124
|
-
* Retrieves the list of complete
|
|
124
|
+
* Retrieves the list of complete addresses added to this database
|
|
125
125
|
* @returns A promise that resolves to an array of AztecAddress instances.
|
|
126
126
|
*/
|
|
127
127
|
getCompleteAddresses(): Promise<CompleteAddress[]>;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { type AztecNode
|
|
2
|
-
import { type AztecAddress, type Fr, type FunctionSelector, MembershipWitness, type NOTE_HASH_TREE_HEIGHT, type Point } from '@aztec/circuits.js';
|
|
1
|
+
import { type AztecNode } from '@aztec/circuit-types';
|
|
2
|
+
import { type AztecAddress, type Fr, type FunctionSelector, type GrumpkinPrivateKey, type KeyGenerator, MembershipWitness, type NOTE_HASH_TREE_HEIGHT, type Point } from '@aztec/circuits.js';
|
|
3
|
+
import { type KeyStore } from '@aztec/key-store';
|
|
3
4
|
import { type ContractDataOracle } from '../contract_data_oracle/index.js';
|
|
4
5
|
import { type ProvingDataOracle } from './../kernel_prover/proving_data_oracle.js';
|
|
5
6
|
/**
|
|
@@ -9,7 +10,8 @@ export declare class KernelOracle implements ProvingDataOracle {
|
|
|
9
10
|
private contractDataOracle;
|
|
10
11
|
private keyStore;
|
|
11
12
|
private node;
|
|
12
|
-
|
|
13
|
+
private log;
|
|
14
|
+
constructor(contractDataOracle: ContractDataOracle, keyStore: KeyStore, node: AztecNode, log?: import("@aztec/foundation/log").Logger);
|
|
13
15
|
getContractAddressPreimage(address: AztecAddress): Promise<{
|
|
14
16
|
version: 1;
|
|
15
17
|
salt: Fr;
|
|
@@ -25,6 +27,7 @@ export declare class KernelOracle implements ProvingDataOracle {
|
|
|
25
27
|
getNoteHashMembershipWitness(leafIndex: bigint): Promise<MembershipWitness<typeof NOTE_HASH_TREE_HEIGHT>>;
|
|
26
28
|
getNullifierMembershipWitness(nullifier: Fr): Promise<import("@aztec/circuit-types").NullifierMembershipWitness | undefined>;
|
|
27
29
|
getNoteHashTreeRoot(): Promise<Fr>;
|
|
28
|
-
|
|
30
|
+
getMasterSecretKeyAndAppKeyGenerator(masterPublicKey: Point): Promise<[GrumpkinPrivateKey, KeyGenerator]>;
|
|
31
|
+
getFunctionName(contractAddress: AztecAddress, selector: FunctionSelector): Promise<string | undefined>;
|
|
29
32
|
}
|
|
30
33
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/kernel_oracle/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/kernel_oracle/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,EAAE,EACP,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,iBAAiB,EACjB,KAAK,qBAAqB,EAC1B,KAAK,KAAK,EAGX,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAInF;;GAEG;AACH,qBAAa,YAAa,YAAW,iBAAiB;IAElD,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,GAAG;gBAHH,kBAAkB,EAAE,kBAAkB,EACtC,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,SAAS,EACf,GAAG,yCAA+C;IAG/C,0BAA0B,CAAC,OAAO,EAAE,YAAY;;;;;;;;;IAQhD,0BAA0B,CAAC,eAAe,EAAE,EAAE;IAK9C,4BAA4B,CAAC,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB;IAItF,sBAAsB;IAI7B,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,OAAO,qBAAqB,CAAC,CAAC;IAS/G,6BAA6B,CAAC,SAAS,EAAE,EAAE;IAIrC,mBAAmB,IAAI,OAAO,CAAC,EAAE,CAAC;IAKjC,oCAAoC,CAAC,eAAe,EAAE,KAAK,GAAG,OAAO,CAAC,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC;IAInG,eAAe,CAAC,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CAerH"}
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import { MembershipWitness, computeContractClassIdPreimage, computeSaltedInitializationHash, } from '@aztec/circuits.js';
|
|
2
|
+
import { createDebugLogger } from '@aztec/foundation/log';
|
|
2
3
|
// TODO: Block number should not be "latest".
|
|
3
4
|
// It should be fixed at the time the proof is being simulated. I.e., it should be the same as the value defined in the constant data.
|
|
4
5
|
/**
|
|
5
6
|
* A data oracle that provides information needed for simulating a transaction.
|
|
6
7
|
*/
|
|
7
8
|
export class KernelOracle {
|
|
8
|
-
constructor(contractDataOracle, keyStore, node) {
|
|
9
|
+
constructor(contractDataOracle, keyStore, node, log = createDebugLogger('aztec:pxe:kernel_oracle')) {
|
|
9
10
|
this.contractDataOracle = contractDataOracle;
|
|
10
11
|
this.keyStore = keyStore;
|
|
11
12
|
this.node = node;
|
|
13
|
+
this.log = log;
|
|
12
14
|
}
|
|
13
15
|
async getContractAddressPreimage(address) {
|
|
14
16
|
const instance = await this.contractDataOracle.getContractInstance(address);
|
|
@@ -38,8 +40,22 @@ export class KernelOracle {
|
|
|
38
40
|
const header = await this.node.getHeader();
|
|
39
41
|
return header.state.partial.noteHashTree.root;
|
|
40
42
|
}
|
|
41
|
-
|
|
42
|
-
return this.keyStore.
|
|
43
|
+
getMasterSecretKeyAndAppKeyGenerator(masterPublicKey) {
|
|
44
|
+
return this.keyStore.getMasterSecretKeyAndAppKeyGenerator(masterPublicKey);
|
|
45
|
+
}
|
|
46
|
+
async getFunctionName(contractAddress, selector) {
|
|
47
|
+
try {
|
|
48
|
+
const contractInstance = await this.contractDataOracle.getContractInstance(contractAddress);
|
|
49
|
+
const [contractArtifact, functionArtifact] = await Promise.all([
|
|
50
|
+
this.contractDataOracle.getContractArtifact(contractInstance.contractClassId),
|
|
51
|
+
this.contractDataOracle.getFunctionArtifact(contractAddress, selector),
|
|
52
|
+
]);
|
|
53
|
+
return `${contractArtifact.name}:${functionArtifact.name}`;
|
|
54
|
+
}
|
|
55
|
+
catch (e) {
|
|
56
|
+
this.log.error(`Failed to get function name for contract ${contractAddress} and selector ${selector}: ${e}`);
|
|
57
|
+
return 'Unknown';
|
|
58
|
+
}
|
|
43
59
|
}
|
|
44
60
|
}
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMva2VybmVsX29yYWNsZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBTUwsaUJBQWlCLEVBR2pCLDhCQUE4QixFQUM5QiwrQkFBK0IsR0FDaEMsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQU8xRCw2Q0FBNkM7QUFDN0Msc0lBQXNJO0FBQ3RJOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFlBQVk7SUFDdkIsWUFDVSxrQkFBc0MsRUFDdEMsUUFBa0IsRUFDbEIsSUFBZSxFQUNmLE1BQU0saUJBQWlCLENBQUMseUJBQXlCLENBQUM7UUFIbEQsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLFNBQUksR0FBSixJQUFJLENBQVc7UUFDZixRQUFHLEdBQUgsR0FBRyxDQUErQztJQUN6RCxDQUFDO0lBRUcsS0FBSyxDQUFDLDBCQUEwQixDQUFDLE9BQXFCO1FBQzNELE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVFLE9BQU87WUFDTCx3QkFBd0IsRUFBRSwrQkFBK0IsQ0FBQyxRQUFRLENBQUM7WUFDbkUsR0FBRyxRQUFRO1NBQ1osQ0FBQztJQUNKLENBQUM7SUFFTSxLQUFLLENBQUMsMEJBQTBCLENBQUMsZUFBbUI7UUFDekQsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDdEYsT0FBTyw4QkFBOEIsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRU0sS0FBSyxDQUFDLDRCQUE0QixDQUFDLGVBQTZCLEVBQUUsUUFBMEI7UUFDakcsT0FBTyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyw0QkFBNEIsQ0FBQyxlQUFlLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUVNLEtBQUssQ0FBQyxzQkFBc0I7UUFDakMsT0FBTyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ2hFLENBQUM7SUFFRCxLQUFLLENBQUMsNEJBQTRCLENBQUMsU0FBaUI7UUFDbEQsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUN6RSxPQUFPLElBQUksaUJBQWlCLENBQzFCLElBQUksQ0FBQyxRQUFRLEVBQ2IsU0FBUyxFQUNULElBQUksQ0FBQyxRQUFRLEVBQTZDLENBQzNELENBQUM7SUFDSixDQUFDO0lBRUQsNkJBQTZCLENBQUMsU0FBYTtRQUN6QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxLQUFLLENBQUMsbUJBQW1CO1FBQ3ZCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMzQyxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7SUFDaEQsQ0FBQztJQUVNLG9DQUFvQyxDQUFDLGVBQXNCO1FBQ2hFLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxvQ0FBb0MsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRU0sS0FBSyxDQUFDLGVBQWUsQ0FBQyxlQUE2QixFQUFFLFFBQTBCO1FBQ3BGLElBQUksQ0FBQztZQUNILE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsbUJBQW1CLENBQUMsZUFBZSxDQUFDLENBQUM7WUFFNUYsTUFBTSxDQUFDLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDO2dCQUM3RCxJQUFJLENBQUMsa0JBQWtCLENBQUMsbUJBQW1CLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDO2dCQUM3RSxJQUFJLENBQUMsa0JBQWtCLENBQUMsbUJBQW1CLENBQUMsZUFBZSxFQUFFLFFBQVEsQ0FBQzthQUN2RSxDQUFDLENBQUM7WUFFSCxPQUFPLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxJQUFJLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDO1FBQzdELENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsNENBQTRDLGVBQWUsaUJBQWlCLFFBQVEsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzdHLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7SUFDSCxDQUFDO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kernel_prover.d.ts","sourceRoot":"","sources":["../../src/kernel_prover/kernel_prover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,
|
|
1
|
+
{"version":3,"file":"kernel_prover.d.ts","sourceRoot":"","sources":["../../src/kernel_prover/kernel_prover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAWL,KAAK,oCAAoC,EAGzC,KAAK,SAAS,EAIf,MAAM,oBAAoB,CAAC;AAK5B,OAAO,EAAE,KAAK,eAAe,EAAiE,MAAM,kBAAkB,CAAC;AAQvH,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAElE;;;;;GAKG;AACH,qBAAa,YAAY;IAGX,OAAO,CAAC,MAAM;IAAqB,OAAO,CAAC,YAAY;IAFnE,OAAO,CAAC,GAAG,CAA4C;gBAEnC,MAAM,EAAE,iBAAiB,EAAU,YAAY,EAAE,YAAY;IAEjF;;;;;;;;;OASG;IACG,KAAK,CACT,SAAS,EAAE,SAAS,EACpB,eAAe,EAAE,eAAe,GAC/B,OAAO,CAAC,iBAAiB,CAAC,oCAAoC,CAAC,CAAC;YAwGrD,qBAAqB;CAuCpC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { CallRequest, Fr,
|
|
1
|
+
import { CallRequest, Fr, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, NESTED_RECURSIVE_PROOF_LENGTH, PrivateCallData, PrivateKernelCircuitPublicInputs, PrivateKernelData, PrivateKernelInitCircuitPrivateInputs, PrivateKernelInnerCircuitPrivateInputs, PrivateKernelTailCircuitPrivateInputs, VK_TREE_HEIGHT, VerificationKeyAsFields, makeRecursiveProof, } from '@aztec/circuits.js';
|
|
2
2
|
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
3
3
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
4
4
|
import { assertLength } from '@aztec/foundation/serialize';
|
|
5
5
|
import { pushTestData } from '@aztec/foundation/testing';
|
|
6
6
|
import { collectNoteHashLeafIndexMap, collectNullifiedNoteHashCounters } from '@aztec/simulator';
|
|
7
|
-
import { buildPrivateKernelInnerHints,
|
|
7
|
+
import { buildPrivateKernelInitHints, buildPrivateKernelInnerHints, buildPrivateKernelResetInputs, buildPrivateKernelTailHints, } from './private_inputs_builders/index.js';
|
|
8
8
|
/**
|
|
9
9
|
* The KernelProver class is responsible for generating kernel proofs.
|
|
10
10
|
* It takes a transaction request, its signature, and the simulation result as inputs, and outputs a proof
|
|
@@ -39,21 +39,22 @@ export class KernelProver {
|
|
|
39
39
|
const noteHashNullifierCounterMap = collectNullifiedNoteHashCounters(executionResult);
|
|
40
40
|
while (executionStack.length) {
|
|
41
41
|
const currentExecution = executionStack.pop();
|
|
42
|
-
executionStack.push(...currentExecution.nestedExecutions);
|
|
43
|
-
const privateCallRequests = currentExecution.nestedExecutions.map(result => result.callStackItem.toCallRequest(currentExecution.callStackItem.publicInputs.callContext));
|
|
42
|
+
executionStack.push(...[...currentExecution.nestedExecutions].reverse());
|
|
44
43
|
const publicCallRequests = currentExecution.enqueuedPublicFunctionCalls.map(result => result.toCallRequest());
|
|
45
44
|
const publicTeardownCallRequest = currentExecution.publicTeardownFunctionCall.isEmpty()
|
|
46
45
|
? CallRequest.empty()
|
|
47
46
|
: currentExecution.publicTeardownFunctionCall.toCallRequest();
|
|
48
|
-
const
|
|
49
|
-
const
|
|
50
|
-
const
|
|
47
|
+
const functionName = await this.oracle.getFunctionName(currentExecution.callStackItem.contractAddress, currentExecution.callStackItem.functionData.selector);
|
|
48
|
+
const proofOutput = await this.proofCreator.createAppCircuitProof(currentExecution.partialWitness, currentExecution.acir, functionName);
|
|
49
|
+
const privateCallData = await this.createPrivateCallData(currentExecution, publicCallRequests, publicTeardownCallRequest, proofOutput.proof, proofOutput.verificationKey);
|
|
51
50
|
if (firstIteration) {
|
|
51
|
+
const hints = buildPrivateKernelInitHints(currentExecution.callStackItem.publicInputs, noteHashNullifierCounterMap, currentExecution.callStackItem.publicInputs.privateCallRequests);
|
|
52
52
|
const proofInput = new PrivateKernelInitCircuitPrivateInputs(txRequest, privateCallData, hints);
|
|
53
53
|
pushTestData('private-kernel-inputs-init', proofInput);
|
|
54
54
|
output = await this.proofCreator.createProofInit(proofInput);
|
|
55
55
|
}
|
|
56
56
|
else {
|
|
57
|
+
const hints = buildPrivateKernelInnerHints(currentExecution.callStackItem.publicInputs, noteHashNullifierCounterMap);
|
|
57
58
|
const previousVkMembershipWitness = await this.oracle.getVkMembershipWitness(output.verificationKey);
|
|
58
59
|
const previousKernelData = new PrivateKernelData(output.publicInputs, output.proof, output.verificationKey, Number(previousVkMembershipWitness.leafIndex), assertLength(previousVkMembershipWitness.siblingPath, VK_TREE_HEIGHT));
|
|
59
60
|
const proofInput = new PrivateKernelInnerCircuitPrivateInputs(previousKernelData, privateCallData, hints);
|
|
@@ -62,19 +63,19 @@ export class KernelProver {
|
|
|
62
63
|
}
|
|
63
64
|
firstIteration = false;
|
|
64
65
|
}
|
|
65
|
-
|
|
66
|
-
|
|
66
|
+
let previousVkMembershipWitness = await this.oracle.getVkMembershipWitness(output.verificationKey);
|
|
67
|
+
let previousKernelData = new PrivateKernelData(output.publicInputs, output.proof, output.verificationKey, Number(previousVkMembershipWitness.leafIndex), assertLength(previousVkMembershipWitness.siblingPath, VK_TREE_HEIGHT));
|
|
68
|
+
output = await this.proofCreator.createProofReset(await buildPrivateKernelResetInputs(previousKernelData, noteHashLeafIndexMap, this.oracle));
|
|
69
|
+
previousVkMembershipWitness = await this.oracle.getVkMembershipWitness(output.verificationKey);
|
|
70
|
+
previousKernelData = new PrivateKernelData(output.publicInputs, output.proof, output.verificationKey, Number(previousVkMembershipWitness.leafIndex), assertLength(previousVkMembershipWitness.siblingPath, VK_TREE_HEIGHT));
|
|
67
71
|
this.log.debug(`Calling private kernel tail with hwm ${previousKernelData.publicInputs.minRevertibleSideEffectCounter}`);
|
|
68
|
-
const hints =
|
|
69
|
-
const
|
|
70
|
-
const privateInputs = new PrivateKernelTailCircuitPrivateInputs(previousKernelData, expectedOutputs, hints);
|
|
72
|
+
const hints = buildPrivateKernelTailHints(output.publicInputs);
|
|
73
|
+
const privateInputs = new PrivateKernelTailCircuitPrivateInputs(previousKernelData, hints);
|
|
71
74
|
pushTestData('private-kernel-inputs-ordering', privateInputs);
|
|
72
75
|
return await this.proofCreator.createProofTail(privateInputs);
|
|
73
76
|
}
|
|
74
|
-
async createPrivateCallData({ callStackItem },
|
|
77
|
+
async createPrivateCallData({ callStackItem }, publicCallRequests, publicTeardownCallRequest, proof, vk) {
|
|
75
78
|
const { contractAddress, functionData } = callStackItem;
|
|
76
|
-
// Pad with empty items to reach max/const length expected by circuit.
|
|
77
|
-
const privateCallStack = padArrayEnd(privateCallRequests, CallRequest.empty(), MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL);
|
|
78
79
|
const publicCallStack = padArrayEnd(publicCallRequests, CallRequest.empty(), MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL);
|
|
79
80
|
const functionLeafMembershipWitness = await this.oracle.getFunctionMembershipWitness(contractAddress, functionData.selector);
|
|
80
81
|
const { contractClassId, publicKeysHash, saltedInitializationHash } = await this.oracle.getContractAddressPreimage(contractAddress);
|
|
@@ -84,7 +85,6 @@ export class KernelProver {
|
|
|
84
85
|
const acirHash = Fr.fromBuffer(Buffer.alloc(32, 0));
|
|
85
86
|
return PrivateCallData.from({
|
|
86
87
|
callStackItem,
|
|
87
|
-
privateCallStack,
|
|
88
88
|
publicCallStack,
|
|
89
89
|
publicTeardownCallRequest,
|
|
90
90
|
proof,
|
|
@@ -98,4 +98,4 @@ export class KernelProver {
|
|
|
98
98
|
});
|
|
99
99
|
}
|
|
100
100
|
}
|
|
101
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2VybmVsX3Byb3Zlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9rZXJuZWxfcHJvdmVyL2tlcm5lbF9wcm92ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNMLFdBQVcsRUFDWCxFQUFFLEVBQ0YscUNBQXFDLEVBQ3JDLDZCQUE2QixFQUM3QixlQUFlLEVBQ2YsZ0NBQWdDLEVBQ2hDLGlCQUFpQixFQUNqQixxQ0FBcUMsRUFDckMsc0NBQXNDLEVBQ3RDLHFDQUFxQyxFQUtyQyxjQUFjLEVBQ2QsdUJBQXVCLEVBQ3ZCLGtCQUFrQixHQUNuQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBd0IsMkJBQTJCLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUV2SCxPQUFPLEVBQ0wsMkJBQTJCLEVBQzNCLDRCQUE0QixFQUM1Qiw2QkFBNkIsRUFDN0IsMkJBQTJCLEdBQzVCLE1BQU0sb0NBQW9DLENBQUM7QUFHNUM7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQUd2QixZQUFvQixNQUF5QixFQUFVLFlBQTBCO1FBQTdELFdBQU0sR0FBTixNQUFNLENBQW1CO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQWM7UUFGekUsUUFBRyxHQUFHLGlCQUFpQixDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFFNkIsQ0FBQztJQUVyRjs7Ozs7Ozs7O09BU0c7SUFDSCxLQUFLLENBQUMsS0FBSyxDQUNULFNBQW9CLEVBQ3BCLGVBQWdDO1FBRWhDLE1BQU0sY0FBYyxHQUFHLENBQUMs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
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { type PrivateCallRequest, type PrivateCircuitPublicInputs, PrivateKernelInitHints } from '@aztec/circuits.js';
|
|
2
|
+
export declare function buildPrivateKernelInitHints(publicInputs: PrivateCircuitPublicInputs, noteHashNullifierCounterMap: Map<number, number>, privateCallRequests: PrivateCallRequest[]): PrivateKernelInitHints;
|
|
3
|
+
//# sourceMappingURL=build_private_kernel_init_hints.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build_private_kernel_init_hints.d.ts","sourceRoot":"","sources":["../../../src/kernel_prover/private_inputs_builders/build_private_kernel_init_hints.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,0BAA0B,EAC/B,sBAAsB,EAEvB,MAAM,oBAAoB,CAAC;AAG5B,wBAAgB,2BAA2B,CACzC,YAAY,EAAE,0BAA0B,EACxC,2BAA2B,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAChD,mBAAmB,EAAE,kBAAkB,EAAE,0BAe1C"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { PrivateKernelInitHints, countAccumulatedItems, } from '@aztec/circuits.js';
|
|
2
|
+
export function buildPrivateKernelInitHints(publicInputs, noteHashNullifierCounterMap, privateCallRequests) {
|
|
3
|
+
const nullifierCounters = publicInputs.newNoteHashes.map(n => noteHashNullifierCounterMap.get(n.counter) ?? 0);
|
|
4
|
+
const minRevertibleCounter = publicInputs.minRevertibleSideEffectCounter.toNumber();
|
|
5
|
+
let firstRevertiblePrivateCallRequestIndex = privateCallRequests.findIndex(r => r.startSideEffectCounter >= minRevertibleCounter);
|
|
6
|
+
if (firstRevertiblePrivateCallRequestIndex === -1) {
|
|
7
|
+
firstRevertiblePrivateCallRequestIndex = countAccumulatedItems(privateCallRequests);
|
|
8
|
+
}
|
|
9
|
+
return new PrivateKernelInitHints(nullifierCounters, firstRevertiblePrivateCallRequestIndex);
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRfcHJpdmF0ZV9rZXJuZWxfaW5pdF9oaW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9rZXJuZWxfcHJvdmVyL3ByaXZhdGVfaW5wdXRzX2J1aWxkZXJzL2J1aWxkX3ByaXZhdGVfa2VybmVsX2luaXRfaGludHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUlMLHNCQUFzQixFQUN0QixxQkFBcUIsR0FDdEIsTUFBTSxvQkFBb0IsQ0FBQztBQUc1QixNQUFNLFVBQVUsMkJBQTJCLENBQ3pDLFlBQXdDLEVBQ3hDLDJCQUFnRCxFQUNoRCxtQkFBeUM7SUFFekMsTUFBTSxpQkFBaUIsR0FBRyxZQUFZLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FDdEQsQ0FBQyxDQUFDLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FDQyxDQUFDO0lBRXhELE1BQU0sb0JBQW9CLEdBQUcsWUFBWSxDQUFDLDhCQUE4QixDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BGLElBQUksc0NBQXNDLEdBQUcsbUJBQW1CLENBQUMsU0FBUyxDQUN4RSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsSUFBSSxvQkFBb0IsQ0FDdEQsQ0FBQztJQUNGLElBQUksc0NBQXNDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNsRCxzQ0FBc0MsR0FBRyxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFFRCxPQUFPLElBQUksc0JBQXNCLENBQUMsaUJBQWlCLEVBQUUsc0NBQXNDLENBQUMsQ0FBQztBQUMvRixDQUFDIn0=
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type PrivateKernelData, type PrivateKernelResetCircuitPrivateInputsVariants } from '@aztec/circuits.js';
|
|
2
|
+
import { type ProvingDataOracle } from '../proving_data_oracle.js';
|
|
3
|
+
export declare function buildPrivateKernelResetInputs(previousKernelData: PrivateKernelData, noteHashLeafIndexMap: Map<bigint, bigint>, oracle: ProvingDataOracle): Promise<PrivateKernelResetCircuitPrivateInputsVariants>;
|
|
4
|
+
//# sourceMappingURL=build_private_kernel_reset_hints.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build_private_kernel_reset_hints.d.ts","sourceRoot":"","sources":["../../../src/kernel_prover/private_inputs_builders/build_private_kernel_reset_hints.ts"],"names":[],"mappings":"AAAA,OAAO,EAYL,KAAK,iBAAiB,EAEtB,KAAK,8CAA8C,EAQpD,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AA0DnE,wBAAsB,6BAA6B,CACjD,kBAAkB,EAAE,iBAAiB,EACrC,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EACzC,MAAM,EAAE,iBAAiB,2DA2F1B"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { Fr, KeyValidationHint, MAX_KEY_VALIDATION_REQUESTS_PER_TX, MAX_NEW_NOTE_HASHES_PER_TX, MAX_NEW_NULLIFIERS_PER_TX, MAX_NOTE_ENCRYPTED_LOGS_PER_TX, MAX_NOTE_HASH_READ_REQUESTS_PER_TX, MAX_NULLIFIER_READ_REQUESTS_PER_TX, MembershipWitness, NULLIFIER_TREE_HEIGHT, PRIVATE_RESET_VARIANTS, PrivateKernelResetCircuitPrivateInputs, PrivateKernelResetHints, buildNoteHashReadRequestHints, buildNullifierReadRequestHints, buildTransientDataHints, } from '@aztec/circuits.js';
|
|
2
|
+
import { makeTuple } from '@aztec/foundation/array';
|
|
3
|
+
import { buildPrivateKernelResetOutputs } from './build_private_kernel_reset_outputs.js';
|
|
4
|
+
function getNullifierReadRequestHints(nullifierReadRequests, nullifiers, oracle, sizePending, sizeSettled) {
|
|
5
|
+
const getNullifierMembershipWitness = async (nullifier) => {
|
|
6
|
+
const res = await oracle.getNullifierMembershipWitness(nullifier);
|
|
7
|
+
if (!res) {
|
|
8
|
+
throw new Error(`Cannot find the leaf for nullifier ${nullifier.toBigInt()}.`);
|
|
9
|
+
}
|
|
10
|
+
const { index, siblingPath, leafPreimage } = res;
|
|
11
|
+
return {
|
|
12
|
+
membershipWitness: new MembershipWitness(NULLIFIER_TREE_HEIGHT, index, siblingPath.toTuple()),
|
|
13
|
+
leafPreimage,
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
return buildNullifierReadRequestHints({ getNullifierMembershipWitness }, nullifierReadRequests, nullifiers, sizePending, sizeSettled);
|
|
17
|
+
}
|
|
18
|
+
async function getMasterSecretKeysAndAppKeyGenerators(keyValidationRequests, oracle) {
|
|
19
|
+
const keysHints = makeTuple(MAX_KEY_VALIDATION_REQUESTS_PER_TX, KeyValidationHint.empty);
|
|
20
|
+
let keyIndex = 0;
|
|
21
|
+
for (let i = 0; i < keyValidationRequests.length; ++i) {
|
|
22
|
+
const request = keyValidationRequests[i].request;
|
|
23
|
+
if (request.isEmpty()) {
|
|
24
|
+
break;
|
|
25
|
+
}
|
|
26
|
+
const [secretKeys, appKeyGenerator] = await oracle.getMasterSecretKeyAndAppKeyGenerator(request.masterPublicKey);
|
|
27
|
+
keysHints[keyIndex] = new KeyValidationHint(secretKeys, new Fr(appKeyGenerator), i);
|
|
28
|
+
keyIndex++;
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
keysCount: keyIndex,
|
|
32
|
+
keysHints,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
export async function buildPrivateKernelResetInputs(previousKernelData, noteHashLeafIndexMap, oracle) {
|
|
36
|
+
const publicInputs = previousKernelData.publicInputs;
|
|
37
|
+
// Use max sizes, they will be trimmed down later.
|
|
38
|
+
const { numPendingReadHints: noteHashPendingReadHints, numSettledReadHints: noteHashSettledReadHints, hints: noteHashReadRequestHints, } = await buildNoteHashReadRequestHints(oracle, publicInputs.validationRequests.noteHashReadRequests, publicInputs.end.newNoteHashes, noteHashLeafIndexMap, MAX_NOTE_HASH_READ_REQUESTS_PER_TX, MAX_NOTE_HASH_READ_REQUESTS_PER_TX);
|
|
39
|
+
const { numPendingReadHints: nullifierPendingReadHints, numSettledReadHints: nullifierSettledReadHints, hints: nullifierReadRequestHints, } = await getNullifierReadRequestHints(publicInputs.validationRequests.nullifierReadRequests, publicInputs.end.newNullifiers, oracle, MAX_NULLIFIER_READ_REQUESTS_PER_TX, MAX_NULLIFIER_READ_REQUESTS_PER_TX);
|
|
40
|
+
const { keysCount, keysHints } = await getMasterSecretKeysAndAppKeyGenerators(publicInputs.validationRequests.keyValidationRequests, oracle);
|
|
41
|
+
const [transientNullifierIndexesForNoteHashes, transientNoteHashIndexesForNullifiers, transientNoteHashIndexesForLogs,] = buildTransientDataHints(publicInputs.end.newNoteHashes, publicInputs.end.newNullifiers, publicInputs.end.noteEncryptedLogsHashes, MAX_NEW_NOTE_HASHES_PER_TX, MAX_NEW_NULLIFIERS_PER_TX, MAX_NOTE_ENCRYPTED_LOGS_PER_TX);
|
|
42
|
+
const expectedOutputs = buildPrivateKernelResetOutputs(previousKernelData.publicInputs.end.newNoteHashes, previousKernelData.publicInputs.end.newNullifiers, previousKernelData.publicInputs.end.noteEncryptedLogsHashes);
|
|
43
|
+
let privateInputs;
|
|
44
|
+
for (const [sizeTag, hintSizes] of Object.entries(PRIVATE_RESET_VARIANTS)) {
|
|
45
|
+
if (hintSizes.NOTE_HASH_PENDING_AMOUNT >= noteHashPendingReadHints &&
|
|
46
|
+
hintSizes.NOTE_HASH_SETTLED_AMOUNT >= noteHashSettledReadHints &&
|
|
47
|
+
hintSizes.NULLIFIER_PENDING_AMOUNT >= nullifierPendingReadHints &&
|
|
48
|
+
hintSizes.NULLIFIER_SETTLED_AMOUNT >= nullifierSettledReadHints &&
|
|
49
|
+
hintSizes.NULLIFIER_KEYS >= keysCount) {
|
|
50
|
+
privateInputs = new PrivateKernelResetCircuitPrivateInputs(previousKernelData, expectedOutputs, new PrivateKernelResetHints(transientNullifierIndexesForNoteHashes, transientNoteHashIndexesForNullifiers, transientNoteHashIndexesForLogs, 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);
|
|
51
|
+
break;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
if (!privateInputs) {
|
|
55
|
+
throw new Error('No private inputs found for the given hint sizes.');
|
|
56
|
+
}
|
|
57
|
+
return privateInputs;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRfcHJpdmF0ZV9rZXJuZWxfcmVzZXRfaGludHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMva2VybmVsX3Byb3Zlci9wcml2YXRlX2lucHV0c19idWlsZGVycy9idWlsZF9wcml2YXRlX2tlcm5lbF9yZXNldF9oaW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsRUFBRSxFQUNGLGlCQUFpQixFQUNqQixrQ0FBa0MsRUFDbEMsMEJBQTBCLEVBQzFCLHlCQUF5QixFQUN6Qiw4QkFBOEIsRUFDOUIsa0NBQWtDLEVBQ2xDLGtDQUFrQyxFQUNsQyxpQkFBaUIsRUFDakIscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUV0QixzQ0FBc0MsRUFFdEMsdUJBQXVCLEVBSXZCLDZCQUE2QixFQUM3Qiw4QkFBOEIsRUFDOUIsdUJBQXVCLEdBQ3hCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBSXBELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRXpGLFNBQVMsNEJBQTRCLENBQ25DLHFCQUEwRixFQUMxRixVQUFvRSxFQUNwRSxNQUF5QixFQUN6QixXQUFvQixFQUNwQixXQUFvQjtJQUVwQixNQUFNLDZCQUE2QixHQUFHLEtBQUssRUFBRSxTQUFhLEVBQUUsRUFBRTtRQUM1RCxNQUFNLEdBQUcsR0FBRyxNQUFNLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDVCxNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxTQUFTLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2pGLENBQUM7UUFFRCxNQUFNLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsR0FBRyxHQUFHLENBQUM7UUFDakQsT0FBTztZQUNMLGlCQUFpQixFQUFFLElBQUksaUJBQWlCLENBQ3RDLHFCQUFxQixFQUNyQixLQUFLLEVBQ0wsV0FBVyxDQUFDLE9BQU8sRUFBZ0MsQ0FDcEQ7WUFDRCxZQUFZO1NBQ2IsQ0FBQztJQUNKLENBQUMsQ0FBQztJQUVGLE9BQU8sOEJBQThCLENBQ25DLEVBQUUsNkJBQTZCLEVBQUUsRUFDakMscUJBQXFCLEVBQ3JCLFVBQVUsRUFDVixXQUFXLEVBQ1gsV0FBVyxDQUNaLENBQUM7QUFDSixDQUFDO0FBRUQsS0FBSyxVQUFVLHNDQUFzQyxDQUNuRCxxQkFBbUcsRUFDbkcsTUFBeUI7SUFFekIsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLGtDQUFrQyxFQUFFLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXpGLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQztJQUNqQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcscUJBQXFCLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDdEQsTUFBTSxPQUFPLEdBQUcscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQ2pELElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDdEIsTUFBTTtRQUNSLENBQUM7UUFDRCxNQUFNLENBQUMsVUFBVSxFQUFFLGVBQWUsQ0FBQyxHQUFHLE1BQU0sTUFBTSxDQUFDLG9DQUFvQyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNqSCxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDcEYsUUFBUSxFQUFFLENBQUM7SUFDYixDQUFDO0lBQ0QsT0FBTztRQUNMLFNBQVMsRUFBRSxRQUFRO1FBQ25CLFNBQVM7S0FDVixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sQ0FBQyxLQUFLLFVBQVUsNkJBQTZCLENBQ2pELGtCQUFxQyxFQUNyQyxvQkFBeUMsRUFDekMsTUFBeUI7SUFFekIsTUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQUMsWUFBWSxDQUFDO0lBQ3JELGtEQUFrRDtJQUNsRCxNQUFNLEVBQ0osbUJBQW1CLEVBQUUsd0JBQXdCLEVBQzdDLG1CQUFtQixFQUFFLHdCQUF3QixFQUM3QyxLQUFLLEVBQUUsd0JBQXdCLEdBQ2hDLEdBQUcsTUFBTSw2QkFBNkIsQ0FDckMsTUFBTSxFQUNOLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBb0IsRUFDcEQsWUFBWSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQzlCLG9CQUFvQixFQUNwQixrQ0FBa0MsRUFDbEMsa0NBQWtDLENBQ25DLENBQUM7SUFFRixNQUFNLEVBQ0osbUJBQW1CLEVBQUUseUJBQXlCLEVBQzlDLG1CQUFtQixFQUFFLHlCQUF5QixFQUM5QyxLQUFLLEVBQUUseUJBQXlCLEdBQ2pDLEdBQUcsTUFBTSw0QkFBNEIsQ0FDcEMsWUFBWSxDQUFDLGtCQUFrQixDQUFDLHFCQUFxQixFQUNyRCxZQUFZLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFDOUIsTUFBTSxFQUNOLGtDQUFrQyxFQUNsQyxrQ0FBa0MsQ0FDbkMsQ0FBQztJQUVGLE1BQU0sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsTUFBTSxzQ0FBc0MsQ0FDM0UsWUFBWSxDQUFDLGtCQUFrQixDQUFDLHFCQUFxQixFQUNyRCxNQUFNLENBQ1AsQ0FBQztJQUVGLE1BQU0sQ0FDSixzQ0FBc0MsRUFDdEMscUNBQXFDLEVBQ3JDLCtCQUErQixFQUNoQyxHQUFHLHVCQUF1QixDQUN6QixZQUFZLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFDOUIsWUFBWSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQzlCLFlBQVksQ0FBQyxHQUFHLENBQUMsdUJBQXVCLEVBQ3hDLDBCQUEwQixFQUMxQix5QkFBeUIsRUFDekIsOEJBQThCLENBQy9CLENBQUM7SUFFRixNQUFNLGVBQWUsR0FBRyw4QkFBOEIsQ0FDcEQsa0JBQWtCLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQ2pELGtCQUFrQixDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUNqRCxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUM1RCxDQUFDO0lBRUYsSUFBSSxhQUFhLENBQUM7SUFFbEIsS0FBSyxNQUFNLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsRUFBRSxDQUFDO1FBQzFFLElBQ0UsU0FBUyxDQUFDLHdCQUF3QixJQUFJLHdCQUF3QjtZQUM5RCxTQUFTLENBQUMsd0JBQXdCLElBQUksd0JBQXdCO1lBQzlELFNBQVMsQ0FBQyx3QkFBd0IsSUFBSSx5QkFBeUI7WUFDL0QsU0FBUyxDQUFDLHdCQUF3QixJQUFJLHlCQUF5QjtZQUMvRCxTQUFTLENBQUMsY0FBYyxJQUFJLFNBQVMsRUFDckMsQ0FBQztZQUNELGFBQWEsR0FBRyxJQUFJLHNDQUFzQyxDQUN4RCxrQkFBa0IsRUFDbEIsZUFBZSxFQUNmLElBQUksdUJBQXVCLENBQ3pCLHNDQUFzQyxFQUN0QyxxQ0FBcUMsRUFDckMsK0JBQStCLEVBQy9CLHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDekIsU0FBUyxDQUNWLENBQUMsV0FBVyxDQUNYLFNBQVMsQ0FBQyx3QkFBd0IsRUFDbEMsU0FBUyxDQUFDLHdCQUF3QixFQUNsQyxTQUFTLENBQUMsd0JBQXdCLEVBQ2xDLFNBQVMsQ0FBQyx3QkFBd0IsRUFDbEMsU0FBUyxDQUFDLGNBQWMsQ0FDekIsRUFDRCxPQUFPLENBQ1IsQ0FBQztZQUNGLE1BQU07UUFDUixDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNuQixNQUFNLElBQUksS0FBSyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVELE9BQU8sYUFBK0QsQ0FBQztBQUN6RSxDQUFDIn0=
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { MAX_NEW_NOTE_HASHES_PER_TX, MAX_NEW_NULLIFIERS_PER_TX, MAX_NOTE_ENCRYPTED_LOGS_PER_TX, NoteLogHash, PrivateKernelResetOutputs, ScopedNoteHash, ScopedNullifier } from '@aztec/circuits.js';
|
|
2
|
+
import { type Tuple } from '@aztec/foundation/serialize';
|
|
3
|
+
export declare function buildPrivateKernelResetOutputs(prevNoteHashes: Tuple<ScopedNoteHash, typeof MAX_NEW_NOTE_HASHES_PER_TX>, prevNullifiers: Tuple<ScopedNullifier, typeof MAX_NEW_NULLIFIERS_PER_TX>, prevLogs: Tuple<NoteLogHash, typeof MAX_NOTE_ENCRYPTED_LOGS_PER_TX>): PrivateKernelResetOutputs;
|
|
4
|
+
//# sourceMappingURL=build_private_kernel_reset_outputs.d.ts.map
|
package/dest/kernel_prover/private_inputs_builders/build_private_kernel_reset_outputs.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build_private_kernel_reset_outputs.d.ts","sourceRoot":"","sources":["../../../src/kernel_prover/private_inputs_builders/build_private_kernel_reset_outputs.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,8BAA8B,EAC9B,WAAW,EACX,yBAAyB,EACzB,cAAc,EACd,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAEzD,wBAAgB,8BAA8B,CAC5C,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,OAAO,0BAA0B,CAAC,EACxE,cAAc,EAAE,KAAK,CAAC,eAAe,EAAE,OAAO,yBAAyB,CAAC,EACxE,QAAQ,EAAE,KAAK,CAAC,WAAW,EAAE,OAAO,8BAA8B,CAAC,6BAyBpE"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { MAX_NEW_NOTE_HASHES_PER_TX, MAX_NEW_NULLIFIERS_PER_TX, MAX_NOTE_ENCRYPTED_LOGS_PER_TX, NoteLogHash, PrivateKernelResetOutputs, ScopedNoteHash, ScopedNullifier, } from '@aztec/circuits.js';
|
|
2
|
+
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
3
|
+
export function buildPrivateKernelResetOutputs(prevNoteHashes, prevNullifiers, prevLogs) {
|
|
4
|
+
// Propagate note hashes that are not linked to a nullifier.
|
|
5
|
+
// Note that note hashes can't link to the first nullifier (counter == 0).
|
|
6
|
+
const noteHashes = padArrayEnd(prevNoteHashes.filter(n => !n.nullifierCounter), ScopedNoteHash.empty(), MAX_NEW_NOTE_HASHES_PER_TX);
|
|
7
|
+
const nullifiers = padArrayEnd(prevNullifiers.filter(n => n.nullifiedNoteHash.isZero()), ScopedNullifier.empty(), MAX_NEW_NULLIFIERS_PER_TX);
|
|
8
|
+
const nullifiedNotes = prevNoteHashes.filter(n => !n.isEmpty() && n.nullifierCounter).map(n => n.counter);
|
|
9
|
+
const logs = padArrayEnd(prevLogs.filter(l => !l.isEmpty() && !nullifiedNotes.includes(l.noteHashCounter)), NoteLogHash.empty(), MAX_NOTE_ENCRYPTED_LOGS_PER_TX);
|
|
10
|
+
return new PrivateKernelResetOutputs(noteHashes, nullifiers, logs);
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRfcHJpdmF0ZV9rZXJuZWxfcmVzZXRfb3V0cHV0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9rZXJuZWxfcHJvdmVyL3ByaXZhdGVfaW5wdXRzX2J1aWxkZXJzL2J1aWxkX3ByaXZhdGVfa2VybmVsX3Jlc2V0X291dHB1dHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLDBCQUEwQixFQUMxQix5QkFBeUIsRUFDekIsOEJBQThCLEVBQzlCLFdBQVcsRUFDWCx5QkFBeUIsRUFDekIsY0FBYyxFQUNkLGVBQWUsR0FDaEIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHM0QsTUFBTSxVQUFVLDhCQUE4QixDQUM1QyxjQUF3RSxFQUN4RSxjQUF3RSxFQUN4RSxRQUFtRTtJQUVuRSw0REFBNEQ7SUFDNUQsMEVBQTBFO0lBQzFFLE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FDNUIsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEVBQy9DLGNBQWMsQ0FBQyxLQUFLLEVBQUUsRUFDdEIsMEJBQTBCLENBQzNCLENBQUM7SUFFRixNQUFNLFVBQVUsR0FBRyxXQUFXLENBQzVCLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLENBQUMsRUFDeEQsZUFBZSxDQUFDLEtBQUssRUFBRSxFQUN2Qix5QkFBeUIsQ0FDMUIsQ0FBQztJQUVGLE1BQU0sY0FBYyxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFMUcsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUN0QixRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxFQUNqRixXQUFXLENBQUMsS0FBSyxFQUFFLEVBQ25CLDhCQUE4QixDQUMvQixDQUFDO0lBRUYsT0FBTyxJQUFJLHlCQUF5QixDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDckUsQ0FBQyJ9
|
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
import { type PrivateKernelCircuitPublicInputs, PrivateKernelTailHints } from '@aztec/circuits.js';
|
|
2
|
-
|
|
3
|
-
export declare function buildPrivateKernelTailHints(publicInputs: PrivateKernelCircuitPublicInputs, noteHashLeafIndexMap: Map<bigint, bigint>, oracle: ProvingDataOracle): Promise<PrivateKernelTailHints>;
|
|
2
|
+
export declare function buildPrivateKernelTailHints(publicInputs: PrivateKernelCircuitPublicInputs): PrivateKernelTailHints;
|
|
4
3
|
//# sourceMappingURL=build_private_kernel_tail_hints.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build_private_kernel_tail_hints.d.ts","sourceRoot":"","sources":["../../../src/kernel_prover/private_inputs_builders/build_private_kernel_tail_hints.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"build_private_kernel_tail_hints.d.ts","sourceRoot":"","sources":["../../../src/kernel_prover/private_inputs_builders/build_private_kernel_tail_hints.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,gCAAgC,EACrC,sBAAsB,EAEvB,MAAM,oBAAoB,CAAC;AAE5B,wBAAgB,2BAA2B,CAAC,YAAY,EAAE,gCAAgC,0BAsCzF"}
|
|
@@ -1,56 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
/** @deprecated Use sortByCounterGetSortedHints instead */
|
|
4
|
-
function sortSideEffects(sideEffects) {
|
|
5
|
-
const sorted = sideEffects
|
|
6
|
-
.map((sideEffect, index) => ({ sideEffect, index }))
|
|
7
|
-
.sort((a, b) => {
|
|
8
|
-
// Empty ones go to the right
|
|
9
|
-
if (a.sideEffect.isEmpty()) {
|
|
10
|
-
return 1;
|
|
11
|
-
}
|
|
12
|
-
return Number(a.sideEffect.counter.toBigInt() - b.sideEffect.counter.toBigInt());
|
|
13
|
-
});
|
|
14
|
-
const originalToSorted = sorted.map(() => 0);
|
|
15
|
-
sorted.forEach(({ index }, i) => {
|
|
16
|
-
originalToSorted[index] = i;
|
|
17
|
-
});
|
|
18
|
-
return [sorted.map(({ sideEffect }) => sideEffect), originalToSorted];
|
|
19
|
-
}
|
|
20
|
-
function getNullifierReadRequestHints(nullifierReadRequests, nullifiers, oracle) {
|
|
21
|
-
const getNullifierMembershipWitness = async (nullifier) => {
|
|
22
|
-
const res = await oracle.getNullifierMembershipWitness(nullifier);
|
|
23
|
-
if (!res) {
|
|
24
|
-
throw new Error(`Cannot find the leaf for nullifier ${nullifier.toBigInt()}.`);
|
|
25
|
-
}
|
|
26
|
-
const { index, siblingPath, leafPreimage } = res;
|
|
27
|
-
return {
|
|
28
|
-
membershipWitness: new MembershipWitness(NULLIFIER_TREE_HEIGHT, index, siblingPath.toTuple()),
|
|
29
|
-
leafPreimage,
|
|
30
|
-
};
|
|
31
|
-
};
|
|
32
|
-
return buildNullifierReadRequestHints({ getNullifierMembershipWitness }, nullifierReadRequests, nullifiers);
|
|
33
|
-
}
|
|
34
|
-
async function getMasterNullifierSecretKeys(nullifierKeyValidationRequests, oracle) {
|
|
35
|
-
const keys = makeTuple(MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_TX, GrumpkinScalar.zero);
|
|
36
|
-
for (let i = 0; i < nullifierKeyValidationRequests.length; ++i) {
|
|
37
|
-
const request = nullifierKeyValidationRequests[i].request;
|
|
38
|
-
if (request.isEmpty()) {
|
|
39
|
-
break;
|
|
40
|
-
}
|
|
41
|
-
keys[i] = await oracle.getMasterNullifierSecretKey(request.masterNullifierPublicKey);
|
|
42
|
-
}
|
|
43
|
-
return keys;
|
|
44
|
-
}
|
|
45
|
-
export async function buildPrivateKernelTailHints(publicInputs, noteHashLeafIndexMap, oracle) {
|
|
46
|
-
const noteHashReadRequestHints = await buildNoteHashReadRequestHints(oracle, publicInputs.validationRequests.noteHashReadRequests, publicInputs.end.newNoteHashes, noteHashLeafIndexMap);
|
|
47
|
-
const nullifierReadRequestHints = await getNullifierReadRequestHints(publicInputs.validationRequests.nullifierReadRequests, publicInputs.end.newNullifiers, oracle);
|
|
48
|
-
const masterNullifierSecretKeys = await getMasterNullifierSecretKeys(publicInputs.validationRequests.nullifierKeyValidationRequests, oracle);
|
|
1
|
+
import { MAX_ENCRYPTED_LOGS_PER_TX, MAX_NEW_NOTE_HASHES_PER_TX, MAX_NEW_NULLIFIERS_PER_TX, MAX_NOTE_ENCRYPTED_LOGS_PER_TX, MAX_UNENCRYPTED_LOGS_PER_TX, PrivateKernelTailHints, sortByCounterGetSortedHints, } from '@aztec/circuits.js';
|
|
2
|
+
export function buildPrivateKernelTailHints(publicInputs) {
|
|
49
3
|
const [sortedNoteHashes, sortedNoteHashesIndexes] = sortByCounterGetSortedHints(publicInputs.end.newNoteHashes, MAX_NEW_NOTE_HASHES_PER_TX);
|
|
50
4
|
const [sortedNullifiers, sortedNullifiersIndexes] = sortByCounterGetSortedHints(publicInputs.end.newNullifiers, MAX_NEW_NULLIFIERS_PER_TX);
|
|
51
|
-
const [
|
|
52
|
-
const [
|
|
53
|
-
const [
|
|
54
|
-
return new PrivateKernelTailHints(
|
|
5
|
+
const [sortedNoteEncryptedLogHashes, sortedNoteEncryptedLogHashesIndexes] = sortByCounterGetSortedHints(publicInputs.end.noteEncryptedLogsHashes, MAX_NOTE_ENCRYPTED_LOGS_PER_TX);
|
|
6
|
+
const [sortedEncryptedLogHashes, sortedEncryptedLogHashesIndexes] = sortByCounterGetSortedHints(publicInputs.end.encryptedLogsHashes, MAX_ENCRYPTED_LOGS_PER_TX);
|
|
7
|
+
const [sortedUnencryptedLogHashes, sortedUnencryptedLogHashesIndexes] = sortByCounterGetSortedHints(publicInputs.end.unencryptedLogsHashes, MAX_UNENCRYPTED_LOGS_PER_TX);
|
|
8
|
+
return new PrivateKernelTailHints(sortedNoteHashes, sortedNoteHashesIndexes, sortedNullifiers, sortedNullifiersIndexes, sortedNoteEncryptedLogHashes, sortedNoteEncryptedLogHashesIndexes, sortedEncryptedLogHashes, sortedEncryptedLogHashesIndexes, sortedUnencryptedLogHashes, sortedUnencryptedLogHashesIndexes);
|
|
55
9
|
}
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRfcHJpdmF0ZV9rZXJuZWxfdGFpbF9oaW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9rZXJuZWxfcHJvdmVyL3ByaXZhdGVfaW5wdXRzX2J1aWxkZXJzL2J1aWxkX3ByaXZhdGVfa2VybmVsX3RhaWxfaGludHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHlCQUF5QixFQUN6QiwwQkFBMEIsRUFDMUIseUJBQXlCLEVBQ3pCLDhCQUE4QixFQUM5QiwyQkFBMkIsRUFFM0Isc0JBQXNCLEVBQ3RCLDJCQUEyQixHQUM1QixNQUFNLG9CQUFvQixDQUFDO0FBRTVCLE1BQU0sVUFBVSwyQkFBMkIsQ0FBQyxZQUE4QztJQUN4RixNQUFNLENBQUMsZ0JBQWdCLEVBQUUsdUJBQXVCLENBQUMsR0FBRywyQkFBMkIsQ0FDN0UsWUFBWSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQzlCLDBCQUEwQixDQUMzQixDQUFDO0lBRUYsTUFBTSxDQUFDLGdCQUFnQixFQUFFLHVCQUF1QixDQUFDLEdBQUcsMkJBQTJCLENBQzdFLFlBQVksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUM5Qix5QkFBeUIsQ0FDMUIsQ0FBQztJQUVGLE1BQU0sQ0FBQyw0QkFBNEIsRUFBRSxtQ0FBbUMsQ0FBQyxHQUFHLDJCQUEyQixDQUNyRyxZQUFZLENBQUMsR0FBRyxDQUFDLHVCQUF1QixFQUN4Qyw4QkFBOEIsQ0FDL0IsQ0FBQztJQUVGLE1BQU0sQ0FBQyx3QkFBd0IsRUFBRSwrQkFBK0IsQ0FBQyxHQUFHLDJCQUEyQixDQUM3RixZQUFZLENBQUMsR0FBRyxDQUFDLG1CQUFtQixFQUNwQyx5QkFBeUIsQ0FDMUIsQ0FBQztJQUVGLE1BQU0sQ0FBQywwQkFBMEIsRUFBRSxpQ0FBaUMsQ0FBQyxHQUFHLDJCQUEyQixDQUNqRyxZQUFZLENBQUMsR0FBRyxDQUFDLHFCQUFxQixFQUN0QywyQkFBMkIsQ0FDNUIsQ0FBQztJQUVGLE9BQU8sSUFBSSxzQkFBc0IsQ0FDL0IsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLDRCQUE0QixFQUM1QixtQ0FBbUMsRUFDbkMsd0JBQXdCLEVBQ3hCLCtCQUErQixFQUMvQiwwQkFBMEIsRUFDMUIsaUNBQWlDLENBQ2xDLENBQUM7QUFDSixDQUFDIn0=
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
export { buildPrivateKernelInitHints } from './build_private_kernel_init_hints.js';
|
|
1
2
|
export { buildPrivateKernelInnerHints } from './build_private_kernel_inner_hints.js';
|
|
2
3
|
export { buildPrivateKernelTailHints } from './build_private_kernel_tail_hints.js';
|
|
3
|
-
export {
|
|
4
|
+
export { buildPrivateKernelResetInputs } from './build_private_kernel_reset_hints.js';
|
|
5
|
+
export { buildPrivateKernelResetOutputs } from './build_private_kernel_reset_outputs.js';
|
|
4
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/kernel_prover/private_inputs_builders/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AACrF,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,EAAE,6BAA6B,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/kernel_prover/private_inputs_builders/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AACrF,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AACtF,OAAO,EAAE,8BAA8B,EAAE,MAAM,yCAAyC,CAAC"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
export { buildPrivateKernelInitHints } from './build_private_kernel_init_hints.js';
|
|
1
2
|
export { buildPrivateKernelInnerHints } from './build_private_kernel_inner_hints.js';
|
|
2
3
|
export { buildPrivateKernelTailHints } from './build_private_kernel_tail_hints.js';
|
|
3
|
-
export {
|
|
4
|
-
|
|
4
|
+
export { buildPrivateKernelResetInputs } from './build_private_kernel_reset_hints.js';
|
|
5
|
+
export { buildPrivateKernelResetOutputs } from './build_private_kernel_reset_outputs.js';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMva2VybmVsX3Byb3Zlci9wcml2YXRlX2lucHV0c19idWlsZGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNuRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNyRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNuRixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN0RixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQyJ9
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type NullifierMembershipWitness } from '@aztec/circuit-types';
|
|
2
|
-
import { type FUNCTION_TREE_HEIGHT, type Fr, type FunctionSelector, type GrumpkinPrivateKey, type MembershipWitness, type NOTE_HASH_TREE_HEIGHT, type Point, type VK_TREE_HEIGHT, type VerificationKeyAsFields } from '@aztec/circuits.js';
|
|
2
|
+
import { type FUNCTION_TREE_HEIGHT, type Fr, type FunctionSelector, type GrumpkinPrivateKey, type KeyGenerator, type MembershipWitness, type NOTE_HASH_TREE_HEIGHT, type Point, type VK_TREE_HEIGHT, type VerificationKeyAsFields } from '@aztec/circuits.js';
|
|
3
3
|
import { type AztecAddress } from '@aztec/foundation/aztec-address';
|
|
4
4
|
/**
|
|
5
5
|
* Provides functionality to fetch membership witnesses for verification keys,
|
|
@@ -53,11 +53,13 @@ export interface ProvingDataOracle {
|
|
|
53
53
|
*/
|
|
54
54
|
getNoteHashTreeRoot(): Promise<Fr>;
|
|
55
55
|
/**
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
* @param
|
|
59
|
-
* @returns the
|
|
56
|
+
* Retrieves the sk_m for the pk_m and a generator index of the key type.
|
|
57
|
+
* @throws If the provided public key is not associated with any of the registered accounts.
|
|
58
|
+
* @param masterPublicKey - The master public key to get secret key for.
|
|
59
|
+
* @returns A Promise that resolves to sk_m and the corresponding app key generator.
|
|
60
|
+
* @dev Used when feeding the sk_m to the kernel circuit for keys verification.
|
|
60
61
|
*/
|
|
61
|
-
|
|
62
|
+
getMasterSecretKeyAndAppKeyGenerator(masterPublicKey: Point): Promise<[GrumpkinPrivateKey, KeyGenerator]>;
|
|
63
|
+
getFunctionName(contractAddress: AztecAddress, selector: FunctionSelector): Promise<string | undefined>;
|
|
62
64
|
}
|
|
63
65
|
//# sourceMappingURL=proving_data_oracle.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proving_data_oracle.d.ts","sourceRoot":"","sources":["../../src/kernel_prover/proving_data_oracle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,EAAE,EACP,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,KAAK,EACV,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC7B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAEpE;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,8FAA8F;IAC9F,0BAA0B,CACxB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC;QAAE,wBAAwB,EAAE,EAAE,CAAC;QAAC,cAAc,EAAE,EAAE,CAAC;QAAC,eAAe,EAAE,EAAE,CAAA;KAAE,CAAC,CAAC;IAEtF,kFAAkF;IAClF,0BAA0B,CACxB,eAAe,EAAE,EAAE,GAClB,OAAO,CAAC;QAAE,YAAY,EAAE,EAAE,CAAC;QAAC,wBAAwB,EAAE,EAAE,CAAC;QAAC,oBAAoB,EAAE,EAAE,CAAA;KAAE,CAAC,CAAC;IAEzF;;;;;;;;OAQG;IACH,4BAA4B,CAC1B,eAAe,EAAE,YAAY,EAC7B,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,iBAAiB,CAAC,OAAO,oBAAoB,CAAC,CAAC,CAAC;IAE3D;;;;;;;;OAQG;IACH,sBAAsB,CAAC,EAAE,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC;IAEvG;;;;;OAKG;IACH,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,OAAO,qBAAqB,CAAC,CAAC,CAAC;IAE1G,6BAA6B,CAAC,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,0BAA0B,GAAG,SAAS,CAAC,CAAC;IAE9F;;;;OAIG;IACH,mBAAmB,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC;IAEnC
|
|
1
|
+
{"version":3,"file":"proving_data_oracle.d.ts","sourceRoot":"","sources":["../../src/kernel_prover/proving_data_oracle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,EAAE,EACP,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,KAAK,EACV,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC7B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAEpE;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,8FAA8F;IAC9F,0BAA0B,CACxB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC;QAAE,wBAAwB,EAAE,EAAE,CAAC;QAAC,cAAc,EAAE,EAAE,CAAC;QAAC,eAAe,EAAE,EAAE,CAAA;KAAE,CAAC,CAAC;IAEtF,kFAAkF;IAClF,0BAA0B,CACxB,eAAe,EAAE,EAAE,GAClB,OAAO,CAAC;QAAE,YAAY,EAAE,EAAE,CAAC;QAAC,wBAAwB,EAAE,EAAE,CAAC;QAAC,oBAAoB,EAAE,EAAE,CAAA;KAAE,CAAC,CAAC;IAEzF;;;;;;;;OAQG;IACH,4BAA4B,CAC1B,eAAe,EAAE,YAAY,EAC7B,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,iBAAiB,CAAC,OAAO,oBAAoB,CAAC,CAAC,CAAC;IAE3D;;;;;;;;OAQG;IACH,sBAAsB,CAAC,EAAE,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC;IAEvG;;;;;OAKG;IACH,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,OAAO,qBAAqB,CAAC,CAAC,CAAC;IAE1G,6BAA6B,CAAC,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,0BAA0B,GAAG,SAAS,CAAC,CAAC;IAE9F;;;;OAIG;IACH,mBAAmB,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC;IAEnC;;;;;;OAMG;IACH,oCAAoC,CAAC,eAAe,EAAE,KAAK,GAAG,OAAO,CAAC,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC,CAAC;IAE1G,eAAe,CAAC,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CACzG"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
2
|
import { type AppCircuitProofOutput, type KernelProofOutput, type ProofCreator } from '@aztec/circuit-types';
|
|
3
|
-
import { type PrivateCircuitPublicInputs, type PrivateKernelCircuitPublicInputs, type PrivateKernelInitCircuitPrivateInputs, type PrivateKernelInnerCircuitPrivateInputs, type PrivateKernelTailCircuitPrivateInputs, type PrivateKernelTailCircuitPublicInputs } from '@aztec/circuits.js';
|
|
3
|
+
import { type PrivateCircuitPublicInputs, type PrivateKernelCircuitPublicInputs, type PrivateKernelInitCircuitPrivateInputs, type PrivateKernelInnerCircuitPrivateInputs, type PrivateKernelResetCircuitPrivateInputsVariants, type PrivateKernelTailCircuitPrivateInputs, type PrivateKernelTailCircuitPublicInputs } from '@aztec/circuits.js';
|
|
4
4
|
/**
|
|
5
5
|
* Test Proof Creator executes circuit simulations and provides fake proofs.
|
|
6
6
|
*/
|
|
@@ -10,6 +10,7 @@ export declare class TestProofCreator implements ProofCreator {
|
|
|
10
10
|
getSiloedCommitments(publicInputs: PrivateCircuitPublicInputs): Promise<import("@aztec/circuits.js").Fr[]>;
|
|
11
11
|
createProofInit(privateInputs: PrivateKernelInitCircuitPrivateInputs): Promise<KernelProofOutput<PrivateKernelCircuitPublicInputs>>;
|
|
12
12
|
createProofInner(privateInputs: PrivateKernelInnerCircuitPrivateInputs): Promise<KernelProofOutput<PrivateKernelCircuitPublicInputs>>;
|
|
13
|
+
createProofReset(privateInputs: PrivateKernelResetCircuitPrivateInputsVariants): Promise<KernelProofOutput<PrivateKernelCircuitPublicInputs>>;
|
|
13
14
|
createProofTail(privateInputs: PrivateKernelTailCircuitPrivateInputs): Promise<KernelProofOutput<PrivateKernelTailCircuitPublicInputs>>;
|
|
14
15
|
createAppCircuitProof(_1: Map<number, string>, _2: Buffer): Promise<AppCircuitProofOutput>;
|
|
15
16
|
private makeEmptyKernelProofOutput;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test_circuit_prover.d.ts","sourceRoot":"","sources":["../../../src/kernel_prover/test/test_circuit_prover.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,iBAAiB,EAAE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAE7G,OAAO,EAEL,KAAK,0BAA0B,EAC/B,KAAK,gCAAgC,EACrC,KAAK,qCAAqC,EAC1C,KAAK,sCAAsC,EAC3C,KAAK,qCAAqC,EAC1C,KAAK,oCAAoC,EAI1C,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"test_circuit_prover.d.ts","sourceRoot":"","sources":["../../../src/kernel_prover/test/test_circuit_prover.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,iBAAiB,EAAE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAE7G,OAAO,EAEL,KAAK,0BAA0B,EAC/B,KAAK,gCAAgC,EACrC,KAAK,qCAAqC,EAC1C,KAAK,sCAAsC,EAC3C,KAAK,8CAA8C,EACnD,KAAK,qCAAqC,EAC1C,KAAK,oCAAoC,EAI1C,MAAM,oBAAoB,CAAC;AAY5B;;GAEG;AACH,qBAAa,gBAAiB,YAAW,YAAY;IACvC,OAAO,CAAC,GAAG;gBAAH,GAAG,yCAAgD;IAEhE,oBAAoB,CAAC,YAAY,EAAE,0BAA0B;IAQvD,eAAe,CAC1B,aAAa,EAAE,qCAAqC,GACnD,OAAO,CAAC,iBAAiB,CAAC,gCAAgC,CAAC,CAAC;IAYlD,gBAAgB,CAC3B,aAAa,EAAE,sCAAsC,GACpD,OAAO,CAAC,iBAAiB,CAAC,gCAAgC,CAAC,CAAC;IAYlD,gBAAgB,CAC3B,aAAa,EAAE,8CAA8C,GAC5D,OAAO,CAAC,iBAAiB,CAAC,gCAAgC,CAAC,CAAC;IAYlD,eAAe,CAC1B,aAAa,EAAE,qCAAqC,GACnD,OAAO,CAAC,iBAAiB,CAAC,oCAAoC,CAAC,CAAC;IAenE,qBAAqB,CAAC,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAQ1F,OAAO,CAAC,0BAA0B;CAQnC"}
|