@aztec/pxe 0.26.5 → 0.26.6
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/kernel_oracle/index.d.ts +1 -1
- package/dest/kernel_oracle/index.d.ts.map +1 -1
- package/dest/kernel_oracle/index.js +5 -3
- package/dest/kernel_prover/hints_builder.d.ts +5 -1
- package/dest/kernel_prover/hints_builder.d.ts.map +1 -1
- package/dest/kernel_prover/hints_builder.js +14 -26
- package/dest/kernel_prover/proving_data_oracle.d.ts +1 -1
- package/dest/kernel_prover/proving_data_oracle.d.ts.map +1 -1
- package/package.json +12 -12
- package/src/kernel_oracle/index.ts +4 -2
- package/src/kernel_prover/hints_builder.ts +19 -34
- package/src/kernel_prover/proving_data_oracle.ts +1 -1
|
@@ -23,7 +23,7 @@ export declare class KernelOracle implements ProvingDataOracle {
|
|
|
23
23
|
getFunctionMembershipWitness(contractAddress: AztecAddress, selector: FunctionSelector): Promise<MembershipWitness<5>>;
|
|
24
24
|
getVkMembershipWitness(): Promise<MembershipWitness<3>>;
|
|
25
25
|
getNoteMembershipWitness(leafIndex: bigint): Promise<MembershipWitness<typeof NOTE_HASH_TREE_HEIGHT>>;
|
|
26
|
-
getNullifierMembershipWitness(
|
|
26
|
+
getNullifierMembershipWitness(nullifier: Fr): Promise<import("@aztec/circuit-types").NullifierMembershipWitness | undefined>;
|
|
27
27
|
getNoteHashTreeRoot(): Promise<Fr>;
|
|
28
28
|
getMasterNullifierSecretKey(nullifierPublicKey: Point): Promise<import("@aztec/circuits.js").Fq>;
|
|
29
29
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/kernel_oracle/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EACL,YAAY,EACZ,EAAE,EACF,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,KAAK,EAGN,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/kernel_oracle/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EACL,YAAY,EACZ,EAAE,EACF,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,KAAK,EAGN,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAI9E;;GAEG;AACH,qBAAa,YAAa,YAAW,iBAAiB;IACxC,OAAO,CAAC,kBAAkB;IAAsB,OAAO,CAAC,QAAQ;IAAY,OAAO,CAAC,IAAI;gBAAhF,kBAAkB,EAAE,kBAAkB,EAAU,QAAQ,EAAE,QAAQ,EAAU,IAAI,EAAE,SAAS;IAElG,0BAA0B,CAAC,OAAO,EAAE,YAAY;;;;;;;;;IAQhD,0BAA0B,CAAC,eAAe,EAAE,EAAE;IAK9C,4BAA4B,CAAC,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB;IAItF,sBAAsB;IAI7B,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,OAAO,qBAAqB,CAAC,CAAC;IAS3G,6BAA6B,CAAC,SAAS,EAAE,EAAE;IAIrC,mBAAmB,IAAI,OAAO,CAAC,EAAE,CAAC;IAKjC,2BAA2B,CAAC,kBAAkB,EAAE,KAAK;CAG7D"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { MembershipWitness, computeContractClassIdPreimage, computeSaltedInitializationHash, } from '@aztec/circuits.js';
|
|
2
|
+
// TODO: Block number should not be "latest".
|
|
3
|
+
// 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.
|
|
2
4
|
/**
|
|
3
5
|
* A data oracle that provides information needed for simulating a transaction.
|
|
4
6
|
*/
|
|
@@ -29,8 +31,8 @@ export class KernelOracle {
|
|
|
29
31
|
const path = await this.node.getNoteHashSiblingPath('latest', leafIndex);
|
|
30
32
|
return new MembershipWitness(path.pathSize, leafIndex, path.toFields());
|
|
31
33
|
}
|
|
32
|
-
getNullifierMembershipWitness(
|
|
33
|
-
return this.node.getNullifierMembershipWitness(
|
|
34
|
+
getNullifierMembershipWitness(nullifier) {
|
|
35
|
+
return this.node.getNullifierMembershipWitness('latest', nullifier);
|
|
34
36
|
}
|
|
35
37
|
async getNoteHashTreeRoot() {
|
|
36
38
|
const header = await this.node.getHeader();
|
|
@@ -40,4 +42,4 @@ export class KernelOracle {
|
|
|
40
42
|
return this.keyStore.getNullifierSecretKeyFromPublicKey(nullifierPublicKey);
|
|
41
43
|
}
|
|
42
44
|
}
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMva2VybmVsX29yYWNsZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBSUwsaUJBQWlCLEVBR2pCLDhCQUE4QixFQUM5QiwrQkFBK0IsR0FDaEMsTUFBTSxvQkFBb0IsQ0FBQztBQU01Qiw2Q0FBNkM7QUFDN0Msc0lBQXNJO0FBQ3RJOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFlBQVk7SUFDdkIsWUFBb0Isa0JBQXNDLEVBQVUsUUFBa0IsRUFBVSxJQUFlO1FBQTNGLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQVUsU0FBSSxHQUFKLElBQUksQ0FBVztJQUFHLENBQUM7SUFFNUcsS0FBSyxDQUFDLDBCQUEwQixDQUFDLE9BQXFCO1FBQzNELE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVFLE9BQU87WUFDTCx3QkFBd0IsRUFBRSwrQkFBK0IsQ0FBQyxRQUFRLENBQUM7WUFDbkUsR0FBRyxRQUFRO1NBQ1osQ0FBQztJQUNKLENBQUM7SUFFTSxLQUFLLENBQUMsMEJBQTBCLENBQUMsZUFBbUI7UUFDekQsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDdEYsT0FBTyw4QkFBOEIsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRU0sS0FBSyxDQUFDLDRCQUE0QixDQUFDLGVBQTZCLEVBQUUsUUFBMEI7UUFDakcsT0FBTyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyw0QkFBNEIsQ0FBQyxlQUFlLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUVNLEtBQUssQ0FBQyxzQkFBc0I7UUFDakMsT0FBTyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ2hFLENBQUM7SUFFRCxLQUFLLENBQUMsd0JBQXdCLENBQUMsU0FBaUI7UUFDOUMsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUN6RSxPQUFPLElBQUksaUJBQWlCLENBQzFCLElBQUksQ0FBQyxRQUFRLEVBQ2IsU0FBUyxFQUNULElBQUksQ0FBQyxRQUFRLEVBQTZDLENBQzNELENBQUM7SUFDSixDQUFDO0lBRUQsNkJBQTZCLENBQUMsU0FBYTtRQUN6QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxLQUFLLENBQUMsbUJBQW1CO1FBQ3ZCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMzQyxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7SUFDaEQsQ0FBQztJQUVNLDJCQUEyQixDQUFDLGtCQUF5QjtRQUMxRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsa0NBQWtDLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUM5RSxDQUFDO0NBQ0YifQ==
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Fr, MAX_NEW_NOTE_HASHES_PER_TX, MAX_NEW_NULLIFIERS_PER_TX, MAX_NOTE_HASH_READ_REQUESTS_PER_TX, MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_TX, MAX_NULLIFIER_READ_REQUESTS_PER_TX, NullifierKeyValidationRequestContext, ReadRequestContext, SideEffect, SideEffectLinkedToNoteHash, SideEffectType } from '@aztec/circuits.js';
|
|
1
|
+
import { Fr, MAX_NEW_NOTE_HASHES_PER_TX, MAX_NEW_NULLIFIERS_PER_TX, MAX_NOTE_HASH_READ_REQUESTS_PER_TX, MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_TX, MAX_NULLIFIER_READ_REQUESTS_PER_TX, MembershipWitness, NullifierKeyValidationRequestContext, ReadRequestContext, SideEffect, SideEffectLinkedToNoteHash, SideEffectType } from '@aztec/circuits.js';
|
|
2
2
|
import { Tuple } from '@aztec/foundation/serialize';
|
|
3
3
|
import { ProvingDataOracle } from './proving_data_oracle.js';
|
|
4
4
|
export declare class HintsBuilder {
|
|
@@ -18,6 +18,10 @@ export declare class HintsBuilder {
|
|
|
18
18
|
*/
|
|
19
19
|
getNoteHashReadRequestHints(noteHashReadRequests: Tuple<SideEffect, typeof MAX_NOTE_HASH_READ_REQUESTS_PER_TX>, noteHashes: Tuple<SideEffect, typeof MAX_NEW_NOTE_HASHES_PER_TX>): Tuple<Fr, typeof MAX_NOTE_HASH_READ_REQUESTS_PER_TX>;
|
|
20
20
|
getNullifierReadRequestResetHints(nullifierReadRequests: Tuple<ReadRequestContext, typeof MAX_NULLIFIER_READ_REQUESTS_PER_TX>, nullifiers: Tuple<SideEffectLinkedToNoteHash, typeof MAX_NEW_NULLIFIERS_PER_TX>): Promise<import("@aztec/circuits.js").NullifierReadRequestResetHints>;
|
|
21
|
+
getNullifierMembershipWitness(nullifier: Fr): Promise<{
|
|
22
|
+
membershipWitness: MembershipWitness<20>;
|
|
23
|
+
leafPreimage: import("@aztec/circuits.js").NullifierLeafPreimage;
|
|
24
|
+
} | undefined>;
|
|
21
25
|
/**
|
|
22
26
|
* Performs the matching between an array of nullified note hashes and an array of note hashes. This produces
|
|
23
27
|
* hints for the private kernel tail circuit to efficiently match a nullifier with the corresponding
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hints_builder.d.ts","sourceRoot":"","sources":["../../src/kernel_prover/hints_builder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,EAAE,EAEF,0BAA0B,EAC1B,yBAAyB,EACzB,kCAAkC,EAClC,4CAA4C,EAC5C,kCAAkC,
|
|
1
|
+
{"version":3,"file":"hints_builder.d.ts","sourceRoot":"","sources":["../../src/kernel_prover/hints_builder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,EAAE,EAEF,0BAA0B,EAC1B,yBAAyB,EACzB,kCAAkC,EAClC,4CAA4C,EAC5C,kCAAkC,EAClC,iBAAiB,EAEjB,oCAAoC,EACpC,kBAAkB,EAClB,UAAU,EACV,0BAA0B,EAC1B,cAAc,EAEf,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAEpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,qBAAa,YAAY;IACX,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,iBAAiB;IAE7C,eAAe,CAAC,CAAC,SAAS,cAAc,EAAE,CAAC,SAAS,MAAM,EACxD,WAAW,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GACvB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAmBlC;;;;;;;;;;OAUG;IACH,2BAA2B,CACzB,oBAAoB,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,kCAAkC,CAAC,EAClF,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,0BAA0B,CAAC,GAC/D,KAAK,CAAC,EAAE,EAAE,OAAO,kCAAkC,CAAC;IAgBvD,iCAAiC,CAC/B,qBAAqB,EAAE,KAAK,CAAC,kBAAkB,EAAE,OAAO,kCAAkC,CAAC,EAC3F,UAAU,EAAE,KAAK,CAAC,0BAA0B,EAAE,OAAO,yBAAyB,CAAC;IAK3E,6BAA6B,CAAC,SAAS,EAAE,EAAE;;;;IAiBjD;;;;;;;;;;;OAWG;IACH,iBAAiB,CACf,mBAAmB,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,yBAAyB,CAAC,EAChE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,0BAA0B,CAAC,GAC/D,KAAK,CAAC,EAAE,EAAE,OAAO,yBAAyB,CAAC;IAuBxC,4BAA4B,CAChC,8BAA8B,EAAE,KAAK,CACnC,oCAAoC,EACpC,OAAO,4CAA4C,CACpD;CAYJ"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { Fr, GrumpkinScalar, MAX_NEW_NULLIFIERS_PER_TX, MAX_NOTE_HASH_READ_REQUESTS_PER_TX, MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_TX, MembershipWitness, NULLIFIER_TREE_HEIGHT,
|
|
2
|
-
import { siloNullifier } from '@aztec/circuits.js/hash';
|
|
1
|
+
import { Fr, GrumpkinScalar, MAX_NEW_NULLIFIERS_PER_TX, MAX_NOTE_HASH_READ_REQUESTS_PER_TX, MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_TX, MembershipWitness, NULLIFIER_TREE_HEIGHT, buildNullifierReadRequestResetHints, } from '@aztec/circuits.js';
|
|
3
2
|
import { makeTuple } from '@aztec/foundation/array';
|
|
4
3
|
export class HintsBuilder {
|
|
5
4
|
constructor(oracle) {
|
|
@@ -46,30 +45,19 @@ export class HintsBuilder {
|
|
|
46
45
|
}
|
|
47
46
|
return hints;
|
|
48
47
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
const value = siloedReadRequestValues[i];
|
|
57
|
-
if (value.isZero()) {
|
|
58
|
-
break;
|
|
59
|
-
}
|
|
60
|
-
const pendingValueIndex = nullifierIndexMap.get(value.toBigInt());
|
|
61
|
-
if (pendingValueIndex !== undefined) {
|
|
62
|
-
builder.addPendingReadRequest(i, pendingValueIndex);
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
const membershipWitness = await this.oracle.getNullifierMembershipWitness(0, value);
|
|
66
|
-
if (!membershipWitness) {
|
|
67
|
-
throw new Error('Read request is reading an unknown nullifier value.');
|
|
68
|
-
}
|
|
69
|
-
builder.addSettledReadRequest(i, new MembershipWitness(NULLIFIER_TREE_HEIGHT, membershipWitness.index, membershipWitness.siblingPath.toTuple()), membershipWitness.leafPreimage);
|
|
70
|
-
}
|
|
48
|
+
getNullifierReadRequestResetHints(nullifierReadRequests, nullifiers) {
|
|
49
|
+
return buildNullifierReadRequestResetHints(this, nullifierReadRequests, nullifiers);
|
|
50
|
+
}
|
|
51
|
+
async getNullifierMembershipWitness(nullifier) {
|
|
52
|
+
const res = await this.oracle.getNullifierMembershipWitness(nullifier);
|
|
53
|
+
if (!res) {
|
|
54
|
+
return;
|
|
71
55
|
}
|
|
72
|
-
|
|
56
|
+
const { index, siblingPath, leafPreimage } = res;
|
|
57
|
+
return {
|
|
58
|
+
membershipWitness: new MembershipWitness(NULLIFIER_TREE_HEIGHT, index, siblingPath.toTuple()),
|
|
59
|
+
leafPreimage,
|
|
60
|
+
};
|
|
73
61
|
}
|
|
74
62
|
/**
|
|
75
63
|
* Performs the matching between an array of nullified note hashes and an array of note hashes. This produces
|
|
@@ -112,4 +100,4 @@ export class HintsBuilder {
|
|
|
112
100
|
return keys;
|
|
113
101
|
}
|
|
114
102
|
}
|
|
115
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGludHNfYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9rZXJuZWxfcHJvdmVyL2hpbnRzX2J1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLEVBQUUsRUFDRixjQUFjLEVBRWQseUJBQXlCLEVBQ3pCLGtDQUFrQyxFQUNsQyw0Q0FBNEMsRUFFNUMsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQU1yQixtQ0FBbUMsR0FDcEMsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFLcEQsTUFBTSxPQUFPLFlBQVk7SUFDdkIsWUFBb0IsTUFBeUI7UUFBekIsV0FBTSxHQUFOLE1BQU0sQ0FBbUI7SUFBRyxDQUFDO0lBRWpELGVBQWUsQ0FDYixXQUF3QjtRQUV4QixNQUFNLE1BQU0sR0FBRyxXQUFXO2FBQ3ZCLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQzthQUNuRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDYiw2QkFBNkI7WUFDN0IsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7Z0JBQzNCLE9BQU8sQ0FBQyxDQUFDO1lBQ1gsQ0FBQztZQUNELE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDbkYsQ0FBQyxDQUFDLENBQUM7UUFFTCxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0MsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDOUIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQWdCLEVBQUUsZ0JBQW9DLENBQUMsQ0FBQztJQUMzRyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNILDJCQUEyQixDQUN6QixvQkFBa0YsRUFDbEYsVUFBZ0U7UUFFaEUsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLGtDQUFrQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsa0NBQWtDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2xHLE1BQU0sU0FBUyxHQUFHLENBQUMsR0FBZSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN2RixNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQy9DLElBQUksTUFBTSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQ2IsNkJBQTZCLENBQUMsSUFBSSxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsbUNBQW1DLENBQ3hHLENBQUM7WUFDSixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzVCLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsaUNBQWlDLENBQy9CLHFCQUEyRixFQUMzRixVQUErRTtRQUUvRSxPQUFPLG1DQUFtQyxDQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRUQsS0FBSyxDQUFDLDZCQUE2QixDQUFDLFNBQWE7UUFDL0MsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLDZCQUE2QixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNULE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLEdBQUcsR0FBRyxDQUFDO1FBQ2pELE9BQU87WUFDTCxpQkFBaUIsRUFBRSxJQUFJLGlCQUFpQixDQUN0QyxxQkFBcUIsRUFDckIsS0FBSyxFQUNMLFdBQVcsQ0FBQyxPQUFPLEVBQWdDLENBQ3BEO1lBQ0QsWUFBWTtTQUNiLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7O09BV0c7SUFDSCxpQkFBaUIsQ0FDZixtQkFBZ0UsRUFDaEUsVUFBZ0U7UUFFaEUsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLHlCQUF5QixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1RCxNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO1FBQ3RDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyx5QkFBeUIsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ25ELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO2dCQUNyQyxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsU0FBUyxDQUNqQyxDQUFDLEdBQWUsRUFBRSxLQUFhLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUN4RyxDQUFDO2dCQUNGLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3hCLElBQUksTUFBTSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQ2Isb0NBQW9DLENBQUMsZUFBZSxtQkFBbUIsQ0FDckUsQ0FBQyxDQUNGLENBQUMsUUFBUSxFQUFFLG1DQUFtQyxDQUNoRCxDQUFDO2dCQUNKLENBQUM7cUJBQU0sQ0FBQztvQkFDTixLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzVCLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELEtBQUssQ0FBQyw0QkFBNEIsQ0FDaEMsOEJBR0M7UUFFRCxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsNENBQTRDLEVBQUUsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFGLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyw4QkFBOEIsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUMvRCxNQUFNLE9BQU8sR0FBRyw4QkFBOEIsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsRCxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO2dCQUN0QixNQUFNO1lBQ1IsQ0FBQztZQUNELElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsMkJBQTJCLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzdFLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRiJ9
|
|
@@ -45,7 +45,7 @@ export interface ProvingDataOracle {
|
|
|
45
45
|
* @returns the MembershipWitness for the note.
|
|
46
46
|
*/
|
|
47
47
|
getNoteMembershipWitness(leafIndex: bigint): Promise<MembershipWitness<typeof NOTE_HASH_TREE_HEIGHT>>;
|
|
48
|
-
getNullifierMembershipWitness(
|
|
48
|
+
getNullifierMembershipWitness(nullifier: Fr): Promise<NullifierMembershipWitness | undefined>;
|
|
49
49
|
/**
|
|
50
50
|
* Get the root of the note hash tree.
|
|
51
51
|
*
|
|
@@ -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,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EACL,oBAAoB,EACpB,EAAE,EACF,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,KAAK,EACL,cAAc,EACd,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAE/D;;;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,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC;IAE/F;;;;;OAKG;IACH,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,OAAO,qBAAqB,CAAC,CAAC,CAAC;IAEtG,6BAA6B,CAAC,
|
|
1
|
+
{"version":3,"file":"proving_data_oracle.d.ts","sourceRoot":"","sources":["../../src/kernel_prover/proving_data_oracle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EACL,oBAAoB,EACpB,EAAE,EACF,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,KAAK,EACL,cAAc,EACd,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAE/D;;;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,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC;IAE/F;;;;;OAKG;IACH,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,OAAO,qBAAqB,CAAC,CAAC,CAAC;IAEtG,6BAA6B,CAAC,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,0BAA0B,GAAG,SAAS,CAAC,CAAC;IAE9F;;;;OAIG;IACH,mBAAmB,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC;IAEnC;;;;;OAKG;IACH,2BAA2B,CAAC,kBAAkB,EAAE,KAAK,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACrF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/pxe",
|
|
3
|
-
"version": "0.26.
|
|
3
|
+
"version": "0.26.6",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": "./dest/index.js",
|
|
6
6
|
"bin": "./dest/bin/index.js",
|
|
@@ -33,17 +33,17 @@
|
|
|
33
33
|
"workerThreads": true
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@aztec/circuit-types": "0.26.
|
|
37
|
-
"@aztec/circuits.js": "0.26.
|
|
38
|
-
"@aztec/ethereum": "0.26.
|
|
39
|
-
"@aztec/foundation": "0.26.
|
|
40
|
-
"@aztec/key-store": "0.26.
|
|
41
|
-
"@aztec/kv-store": "0.26.
|
|
42
|
-
"@aztec/noir-compiler": "0.26.
|
|
43
|
-
"@aztec/noir-protocol-circuits-types": "0.26.
|
|
44
|
-
"@aztec/protocol-contracts": "0.26.
|
|
45
|
-
"@aztec/simulator": "0.26.
|
|
46
|
-
"@aztec/types": "0.26.
|
|
36
|
+
"@aztec/circuit-types": "0.26.6",
|
|
37
|
+
"@aztec/circuits.js": "0.26.6",
|
|
38
|
+
"@aztec/ethereum": "0.26.6",
|
|
39
|
+
"@aztec/foundation": "0.26.6",
|
|
40
|
+
"@aztec/key-store": "0.26.6",
|
|
41
|
+
"@aztec/kv-store": "0.26.6",
|
|
42
|
+
"@aztec/noir-compiler": "0.26.6",
|
|
43
|
+
"@aztec/noir-protocol-circuits-types": "0.26.6",
|
|
44
|
+
"@aztec/protocol-contracts": "0.26.6",
|
|
45
|
+
"@aztec/simulator": "0.26.6",
|
|
46
|
+
"@aztec/types": "0.26.6",
|
|
47
47
|
"koa": "^2.14.2",
|
|
48
48
|
"koa-router": "^12.0.0",
|
|
49
49
|
"lodash.omit": "^4.5.0",
|
|
@@ -14,6 +14,8 @@ import { Tuple } from '@aztec/foundation/serialize';
|
|
|
14
14
|
import { ContractDataOracle } from '../contract_data_oracle/index.js';
|
|
15
15
|
import { ProvingDataOracle } from './../kernel_prover/proving_data_oracle.js';
|
|
16
16
|
|
|
17
|
+
// TODO: Block number should not be "latest".
|
|
18
|
+
// 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.
|
|
17
19
|
/**
|
|
18
20
|
* A data oracle that provides information needed for simulating a transaction.
|
|
19
21
|
*/
|
|
@@ -50,8 +52,8 @@ export class KernelOracle implements ProvingDataOracle {
|
|
|
50
52
|
);
|
|
51
53
|
}
|
|
52
54
|
|
|
53
|
-
getNullifierMembershipWitness(
|
|
54
|
-
return this.node.getNullifierMembershipWitness(
|
|
55
|
+
getNullifierMembershipWitness(nullifier: Fr) {
|
|
56
|
+
return this.node.getNullifierMembershipWitness('latest', nullifier);
|
|
55
57
|
}
|
|
56
58
|
|
|
57
59
|
async getNoteHashTreeRoot(): Promise<Fr> {
|
|
@@ -9,13 +9,12 @@ import {
|
|
|
9
9
|
MembershipWitness,
|
|
10
10
|
NULLIFIER_TREE_HEIGHT,
|
|
11
11
|
NullifierKeyValidationRequestContext,
|
|
12
|
-
NullifierReadRequestResetHintsBuilder,
|
|
13
12
|
ReadRequestContext,
|
|
14
13
|
SideEffect,
|
|
15
14
|
SideEffectLinkedToNoteHash,
|
|
16
15
|
SideEffectType,
|
|
16
|
+
buildNullifierReadRequestResetHints,
|
|
17
17
|
} from '@aztec/circuits.js';
|
|
18
|
-
import { siloNullifier } from '@aztec/circuits.js/hash';
|
|
19
18
|
import { makeTuple } from '@aztec/foundation/array';
|
|
20
19
|
import { Tuple } from '@aztec/foundation/serialize';
|
|
21
20
|
|
|
@@ -75,42 +74,28 @@ export class HintsBuilder {
|
|
|
75
74
|
return hints;
|
|
76
75
|
}
|
|
77
76
|
|
|
78
|
-
|
|
77
|
+
getNullifierReadRequestResetHints(
|
|
79
78
|
nullifierReadRequests: Tuple<ReadRequestContext, typeof MAX_NULLIFIER_READ_REQUESTS_PER_TX>,
|
|
80
79
|
nullifiers: Tuple<SideEffectLinkedToNoteHash, typeof MAX_NEW_NULLIFIERS_PER_TX>,
|
|
81
80
|
) {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
const
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
for (let i = 0; i < nullifierReadRequests.length; ++i) {
|
|
90
|
-
const value = siloedReadRequestValues[i];
|
|
91
|
-
if (value.isZero()) {
|
|
92
|
-
break;
|
|
93
|
-
}
|
|
94
|
-
const pendingValueIndex = nullifierIndexMap.get(value.toBigInt());
|
|
95
|
-
if (pendingValueIndex !== undefined) {
|
|
96
|
-
builder.addPendingReadRequest(i, pendingValueIndex);
|
|
97
|
-
} else {
|
|
98
|
-
const membershipWitness = await this.oracle.getNullifierMembershipWitness(0, value);
|
|
99
|
-
if (!membershipWitness) {
|
|
100
|
-
throw new Error('Read request is reading an unknown nullifier value.');
|
|
101
|
-
}
|
|
102
|
-
builder.addSettledReadRequest(
|
|
103
|
-
i,
|
|
104
|
-
new MembershipWitness(
|
|
105
|
-
NULLIFIER_TREE_HEIGHT,
|
|
106
|
-
membershipWitness.index,
|
|
107
|
-
membershipWitness.siblingPath.toTuple<typeof NULLIFIER_TREE_HEIGHT>(),
|
|
108
|
-
),
|
|
109
|
-
membershipWitness.leafPreimage,
|
|
110
|
-
);
|
|
111
|
-
}
|
|
81
|
+
return buildNullifierReadRequestResetHints(this, nullifierReadRequests, nullifiers);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
async getNullifierMembershipWitness(nullifier: Fr) {
|
|
85
|
+
const res = await this.oracle.getNullifierMembershipWitness(nullifier);
|
|
86
|
+
if (!res) {
|
|
87
|
+
return;
|
|
112
88
|
}
|
|
113
|
-
|
|
89
|
+
|
|
90
|
+
const { index, siblingPath, leafPreimage } = res;
|
|
91
|
+
return {
|
|
92
|
+
membershipWitness: new MembershipWitness(
|
|
93
|
+
NULLIFIER_TREE_HEIGHT,
|
|
94
|
+
index,
|
|
95
|
+
siblingPath.toTuple<typeof NULLIFIER_TREE_HEIGHT>(),
|
|
96
|
+
),
|
|
97
|
+
leafPreimage,
|
|
98
|
+
};
|
|
114
99
|
}
|
|
115
100
|
|
|
116
101
|
/**
|
|
@@ -60,7 +60,7 @@ export interface ProvingDataOracle {
|
|
|
60
60
|
*/
|
|
61
61
|
getNoteMembershipWitness(leafIndex: bigint): Promise<MembershipWitness<typeof NOTE_HASH_TREE_HEIGHT>>;
|
|
62
62
|
|
|
63
|
-
getNullifierMembershipWitness(
|
|
63
|
+
getNullifierMembershipWitness(nullifier: Fr): Promise<NullifierMembershipWitness | undefined>;
|
|
64
64
|
|
|
65
65
|
/**
|
|
66
66
|
* Get the root of the note hash tree.
|