@aztec/bb.js 0.81.0 → 0.82.1-alpha-testnet.1
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/browser/barretenberg/backend.d.ts.map +1 -1
- package/dest/browser/barretenberg-threads.js +1 -1
- package/dest/browser/barretenberg.js +1 -1
- package/dest/browser/crs/node/index.d.ts.map +1 -1
- package/dest/browser/index.js +12 -26
- package/dest/browser/proof/index.d.ts.map +1 -1
- package/dest/node/barretenberg/backend.d.ts.map +1 -1
- package/dest/node/barretenberg/backend.js +7 -28
- package/dest/node/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
- package/dest/node/crs/net_crs.js +2 -2
- package/dest/node/crs/node/index.d.ts.map +1 -1
- package/dest/node/crs/node/index.js +2 -1
- package/dest/node/proof/index.d.ts.map +1 -1
- package/dest/node/proof/index.js +11 -16
- package/dest/node-cjs/barretenberg/backend.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg/backend.js +6 -27
- package/dest/node-cjs/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
- package/dest/node-cjs/crs/net_crs.js +2 -2
- package/dest/node-cjs/crs/node/index.d.ts.map +1 -1
- package/dest/node-cjs/crs/node/index.js +2 -1
- package/dest/node-cjs/proof/index.d.ts.map +1 -1
- package/dest/node-cjs/proof/index.js +11 -16
- package/package.json +1 -1
- package/src/barretenberg/backend.ts +7 -38
- package/src/crs/net_crs.ts +1 -1
- package/src/crs/node/index.ts +1 -0
- package/src/proof/index.ts +11 -16
|
@@ -89,6 +89,7 @@ class GrumpkinCrs {
|
|
|
89
89
|
const crs = new net_crs_js_1.NetGrumpkinCrs(this.numPoints);
|
|
90
90
|
await crs.init();
|
|
91
91
|
(0, fs_1.writeFileSync)(this.path + '/grumpkin_g1.dat', crs.getG1Data());
|
|
92
|
+
(0, fs_1.writeFileSync)(this.path + '/grumpkin_size', String(crs.numPoints));
|
|
92
93
|
}
|
|
93
94
|
/**
|
|
94
95
|
* G1 points data for prover key.
|
|
@@ -99,4 +100,4 @@ class GrumpkinCrs {
|
|
|
99
100
|
}
|
|
100
101
|
}
|
|
101
102
|
exports.GrumpkinCrs = GrumpkinCrs;
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY3JzL25vZGUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDhDQUF1RDtBQUN2RCwyQkFBMkY7QUFDM0YsMENBQW1DO0FBQ25DLDBEQUFnQztBQUNoQywyQkFBNkI7QUFFN0I7O0dBRUc7QUFDSCxNQUFhLEdBQUc7SUFDZCxZQUNrQixTQUFpQixFQUNqQixJQUFZLEVBQ1gsU0FBZ0MsSUFBQSxlQUFXLEVBQUMsV0FBVyxDQUFDO1FBRnpELGNBQVMsR0FBVCxTQUFTLENBQVE7UUFDakIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNYLFdBQU0sR0FBTixNQUFNLENBQWtEO0lBQ3hFLENBQUM7SUFFSixNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FDZCxTQUFpQixFQUNqQixPQUFPLEdBQUcsSUFBQSxZQUFPLEdBQUUsR0FBRyxVQUFVLEVBQ2hDLFNBQWdDLElBQUEsZUFBVyxFQUFDLFdBQVcsQ0FBQztRQUV4RCxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2hELE1BQU0sR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2pCLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJO1FBQ1IsSUFBQSxjQUFTLEVBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRTFDLE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBQSxlQUFJLEVBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxlQUFlLENBQUM7YUFDdkQsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQzthQUN6QixLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEIsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFBLGVBQUksRUFBQyxJQUFJLENBQUMsSUFBSSxHQUFHLGVBQWUsQ0FBQzthQUN2RCxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO2FBQ3pCLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVsQixJQUFJLFVBQVUsSUFBSSxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsSUFBSSxVQUFVLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxVQUFVLElBQUksR0FBRyxFQUFFLENBQUM7WUFDbkYsSUFBSSxDQUFDLE1BQU0sQ0FBQyw0QkFBNEIsVUFBVSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDM0QsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLDJCQUEyQixJQUFJLENBQUMsU0FBUyxTQUFTLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzNFLE1BQU0sR0FBRyxHQUFHLElBQUksbUJBQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkMsTUFBTSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDakIsSUFBQSxrQkFBYSxFQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsZUFBZSxFQUFFLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQzVELElBQUEsa0JBQWEsRUFBQyxJQUFJLENBQUMsSUFBSSxHQUFHLGVBQWUsRUFBRSxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsU0FBUztRQUNQLDBEQUEwRDtRQUMxRCxvQkFBb0I7UUFDcEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNoRCxNQUFNLEVBQUUsR0FBRyxJQUFBLGFBQVEsRUFBQyxJQUFJLENBQUMsSUFBSSxHQUFHLGVBQWUsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN0RCxNQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QyxJQUFBLGFBQVEsRUFBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbkMsSUFBQSxjQUFTLEVBQUMsRUFBRSxDQUFDLENBQUM7UUFDZCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsU0FBUztRQUNQLE9BQU8sSUFBQSxpQkFBWSxFQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsZUFBZSxDQUFDLENBQUM7SUFDbkQsQ0FBQztDQUNGO0FBN0RELGtCQTZEQztBQUVEOztHQUVHO0FBQ0gsTUFBYSxXQUFXO0lBQ3RCLFlBQ2tCLFNBQWlCLEVBQ2pCLElBQVksRUFDWCxTQUFnQyxJQUFBLGVBQVcsRUFBQyxXQUFXLENBQUM7UUFGekQsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUNqQixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ1gsV0FBTSxHQUFOLE1BQU0sQ0FBa0Q7SUFDeEUsQ0FBQztJQUVKLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUNkLFNBQWlCLEVBQ2pCLE9BQU8sR0FBRyxJQUFBLFlBQU8sR0FBRSxHQUFHLFVBQVUsRUFDaEMsU0FBZ0MsSUFBQSxlQUFXLEVBQUMsV0FBVyxDQUFDO1FBRXhELE1BQU0sR0FBRyxHQUFHLElBQUksV0FBVyxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDeEQsTUFBTSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDakIsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUk7UUFDUixJQUFBLGNBQVMsRUFBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFMUMsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFBLGVBQUksRUFBQyxJQUFJLENBQUMsSUFBSSxHQUFHLGtCQUFrQixDQUFDO2FBQzFELElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7YUFDekIsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWxCLElBQUksVUFBVSxJQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxJQUFJLFVBQVUsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDOUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxxQ0FBcUMsVUFBVSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDcEUsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLG9DQUFvQyxJQUFJLENBQUMsU0FBUyxTQUFTLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3BGLE1BQU0sR0FBRyxHQUFHLElBQUksMkJBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0MsTUFBTSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDakIsSUFBQSxrQkFBYSxFQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsa0JBQWtCLEVBQUUsR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDL0QsSUFBQSxrQkFBYSxFQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRDs7O09BR0c7SUFDSCxTQUFTO1FBQ1AsT0FBTyxJQUFBLGlCQUFZLEVBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3RELENBQUM7Q0FDRjtBQTNDRCxrQ0EyQ0MifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/proof/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/proof/index.ts"],"names":[],"mappings":"AAEA;;;KAGK;AACL,MAAM,MAAM,SAAS,GAAG;IACtB,4CAA4C;IAC5C,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,wDAAwD;IACxD,KAAK,EAAE,UAAU,CAAC;CACnB,CAAC;AAEF;;;KAGK;AACL,MAAM,MAAM,qBAAqB,GAAG;IAClC,4CAA4C;IAC5C,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,wDAAwD;IACxD,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAMF,wBAAgB,cAAc,CAC5B,qBAAqB,EAAE,UAAU,EACjC,eAAe,EAAE,MAAM,GACtB;IAAE,YAAY,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,CAWjD;AAED,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,GAAG,UAAU,CAM5F;AAED,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,SAAS,GAAG,UAAU,CAQ3E;AAED,wBAAgB,eAAe,CAAC,eAAe,EAAE,UAAU,GAAG,MAAM,EAAE,CAUrE;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAGjE"}
|
|
@@ -1,19 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.flattenFieldsAsArray = exports.deflattenFields = exports.reconstructUltraPlonkProof = exports.reconstructHonkProof = exports.splitHonkProof = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
const serialize_js_1 = require("../serialize/serialize.js");
|
|
5
|
+
// Honk proofs start with 4 bytes for the size of the proof in fields
|
|
6
|
+
const metadataOffset = 4;
|
|
6
7
|
const fieldByteSize = 32;
|
|
7
8
|
function splitHonkProof(proofWithPublicInputs, numPublicInputs) {
|
|
8
|
-
//
|
|
9
|
-
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const proofEnd = proofWithPublicInputs.slice(serializedBufferSize + publicInputsSplitIndex);
|
|
13
|
-
// Construct the proof without the public inputs
|
|
14
|
-
const proof = new Uint8Array([...proofStart, ...proofEnd]);
|
|
15
|
-
// Fetch the number of public inputs out of the proof string
|
|
16
|
-
const publicInputs = proofWithPublicInputs.slice(serializedBufferSize, serializedBufferSize + publicInputsSplitIndex);
|
|
9
|
+
// Remove the metadata (proof size in fields)
|
|
10
|
+
const proofWithPI = proofWithPublicInputs.slice(metadataOffset);
|
|
11
|
+
const publicInputs = proofWithPI.slice(0, numPublicInputs * fieldByteSize);
|
|
12
|
+
const proof = proofWithPI.slice(numPublicInputs * fieldByteSize);
|
|
17
13
|
return {
|
|
18
14
|
proof,
|
|
19
15
|
publicInputs,
|
|
@@ -21,10 +17,9 @@ function splitHonkProof(proofWithPublicInputs, numPublicInputs) {
|
|
|
21
17
|
}
|
|
22
18
|
exports.splitHonkProof = splitHonkProof;
|
|
23
19
|
function reconstructHonkProof(publicInputs, proof) {
|
|
24
|
-
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
const proofWithPublicInputs = Uint8Array.from([...proofStart, ...publicInputs, ...proofEnd]);
|
|
20
|
+
// Append proofWithPublicInputs size in fields
|
|
21
|
+
const proofSize = (0, serialize_js_1.numToUInt32BE)((publicInputs.length + proof.length) / fieldByteSize);
|
|
22
|
+
const proofWithPublicInputs = Uint8Array.from([...proofSize, ...publicInputs, ...proof]);
|
|
28
23
|
return proofWithPublicInputs;
|
|
29
24
|
}
|
|
30
25
|
exports.reconstructHonkProof = reconstructHonkProof;
|
|
@@ -85,4 +80,4 @@ function hexToUint8Array(hex) {
|
|
|
85
80
|
}
|
|
86
81
|
return u8;
|
|
87
82
|
}
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJvb2YvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNERBQTBEO0FBd0IxRCxxRUFBcUU7QUFDckUsTUFBTSxjQUFjLEdBQUcsQ0FBQyxDQUFDO0FBQ3pCLE1BQU0sYUFBYSxHQUFHLEVBQUUsQ0FBQztBQUV6QixTQUFnQixjQUFjLENBQzVCLHFCQUFpQyxFQUNqQyxlQUF1QjtJQUV2Qiw2Q0FBNkM7SUFDN0MsTUFBTSxXQUFXLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBRWhFLE1BQU0sWUFBWSxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLGVBQWUsR0FBRyxhQUFhLENBQUMsQ0FBQztJQUMzRSxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLGVBQWUsR0FBRyxhQUFhLENBQUMsQ0FBQztJQUVqRSxPQUFPO1FBQ0wsS0FBSztRQUNMLFlBQVk7S0FDYixDQUFDO0FBQ0osQ0FBQztBQWRELHdDQWNDO0FBRUQsU0FBZ0Isb0JBQW9CLENBQUMsWUFBd0IsRUFBRSxLQUFpQjtJQUM5RSw4Q0FBOEM7SUFDOUMsTUFBTSxTQUFTLEdBQUcsSUFBQSw0QkFBYSxFQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUM7SUFFdEYsTUFBTSxxQkFBcUIsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxTQUFTLEVBQUUsR0FBRyxZQUFZLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3pGLE9BQU8scUJBQXFCLENBQUM7QUFDL0IsQ0FBQztBQU5ELG9EQU1DO0FBRUQsU0FBZ0IsMEJBQTBCLENBQUMsU0FBb0I7SUFDN0QsdUJBQXVCO0lBQ3ZCLE1BQU0sd0JBQXdCLEdBQUcsb0JBQW9CLENBQUMs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
|
package/package.json
CHANGED
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
ProofDataForRecursion,
|
|
9
9
|
reconstructHonkProof,
|
|
10
10
|
reconstructUltraPlonkProof,
|
|
11
|
+
splitHonkProof,
|
|
11
12
|
} from '../proof/index.js';
|
|
12
13
|
|
|
13
14
|
export class AztecClientBackendError extends Error {
|
|
@@ -154,10 +155,6 @@ export class UltraPlonkBackend {
|
|
|
154
155
|
}
|
|
155
156
|
}
|
|
156
157
|
|
|
157
|
-
// Buffers are prepended with their size. The size takes 4 bytes.
|
|
158
|
-
const serializedBufferSize = 4;
|
|
159
|
-
const fieldByteSize = 32;
|
|
160
|
-
|
|
161
158
|
/**
|
|
162
159
|
* Options for the UltraHonkBackend.
|
|
163
160
|
*/
|
|
@@ -222,22 +219,8 @@ export class UltraHonkBackend {
|
|
|
222
219
|
// Item at index 1 in VK is the number of public inputs
|
|
223
220
|
const numPublicInputs = Number(vkAsFields[1].toString());
|
|
224
221
|
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
// Get the part before and after the public inputs
|
|
228
|
-
const proofStart = proofWithPublicInputs.slice(0, serializedBufferSize);
|
|
229
|
-
const publicInputsSplitIndex = numPublicInputs * fieldByteSize;
|
|
230
|
-
const proofEnd = proofWithPublicInputs.slice(serializedBufferSize + publicInputsSplitIndex);
|
|
231
|
-
|
|
232
|
-
// Construct the proof without the public inputs
|
|
233
|
-
const proof = new Uint8Array([...proofStart, ...proofEnd]);
|
|
234
|
-
|
|
235
|
-
// Fetch the number of public inputs out of the proof string
|
|
236
|
-
const publicInputsConcatenated = proofWithPublicInputs.slice(
|
|
237
|
-
serializedBufferSize,
|
|
238
|
-
serializedBufferSize + publicInputsSplitIndex,
|
|
239
|
-
);
|
|
240
|
-
const publicInputs = deflattenFields(publicInputsConcatenated);
|
|
222
|
+
const { proof, publicInputs: publicInputsBytes } = splitHonkProof(proofWithPublicInputs, numPublicInputs);
|
|
223
|
+
const publicInputs = deflattenFields(publicInputsBytes);
|
|
241
224
|
|
|
242
225
|
return { proof, publicInputs };
|
|
243
226
|
}
|
|
@@ -265,29 +248,15 @@ export class UltraHonkBackend {
|
|
|
265
248
|
const vk = await writeVKUltraHonk(this.acirUncompressedBytecode, this.circuitOptions.recursive);
|
|
266
249
|
const vkAsFields = await this.api.acirVkAsFieldsUltraHonk(new RawBuffer(vk));
|
|
267
250
|
|
|
268
|
-
// proofWithPublicInputs starts with a four-byte size
|
|
269
|
-
const numSerdeHeaderBytes = 4;
|
|
270
251
|
// some public inputs are handled specially
|
|
271
252
|
const numKZGAccumulatorFieldElements = 16;
|
|
272
253
|
const publicInputsSizeIndex = 1; // index into VK for numPublicInputs
|
|
273
|
-
|
|
274
254
|
const numPublicInputs = Number(vkAsFields[publicInputsSizeIndex].toString()) - numKZGAccumulatorFieldElements;
|
|
275
255
|
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
const
|
|
279
|
-
|
|
280
|
-
proofNoPIs.set(proofWithPublicInputs.subarray(0, numSerdeHeaderBytes), 0);
|
|
281
|
-
// copy the elements after the public inputs
|
|
282
|
-
proofNoPIs.set(proofWithPublicInputs.subarray(numSerdeHeaderBytes + numPublicInputsBytes), numSerdeHeaderBytes);
|
|
283
|
-
const proof: string[] = deflattenFields(proofNoPIs.slice(numSerdeHeaderBytes));
|
|
284
|
-
|
|
285
|
-
// Fetch the number of public inputs out of the proof string
|
|
286
|
-
const publicInputsConcatenated = proofWithPublicInputs.slice(
|
|
287
|
-
serializedBufferSize,
|
|
288
|
-
serializedBufferSize + numPublicInputsBytes,
|
|
289
|
-
);
|
|
290
|
-
const publicInputs = deflattenFields(publicInputsConcatenated);
|
|
256
|
+
const { proof: proofBytes, publicInputs: publicInputsBytes } = splitHonkProof(proofWithPublicInputs, numPublicInputs);
|
|
257
|
+
|
|
258
|
+
const publicInputs = deflattenFields(publicInputsBytes);
|
|
259
|
+
const proof = deflattenFields(proofBytes);
|
|
291
260
|
|
|
292
261
|
return { proof, publicInputs };
|
|
293
262
|
}
|
package/src/crs/net_crs.ts
CHANGED
|
@@ -102,7 +102,7 @@ export class NetGrumpkinCrs {
|
|
|
102
102
|
}
|
|
103
103
|
|
|
104
104
|
const g1Start = 28;
|
|
105
|
-
const g1End = this.numPoints * 64 - 1;
|
|
105
|
+
const g1End = g1Start + (this.numPoints * 64 - 1);
|
|
106
106
|
|
|
107
107
|
const response = await fetch('https://aztec-ignition.s3.amazonaws.com/TEST%20GRUMPKIN/monomial/transcript00.dat', {
|
|
108
108
|
headers: {
|
package/src/crs/node/index.ts
CHANGED
|
@@ -106,6 +106,7 @@ export class GrumpkinCrs {
|
|
|
106
106
|
const crs = new NetGrumpkinCrs(this.numPoints);
|
|
107
107
|
await crs.init();
|
|
108
108
|
writeFileSync(this.path + '/grumpkin_g1.dat', crs.getG1Data());
|
|
109
|
+
writeFileSync(this.path + '/grumpkin_size', String(crs.numPoints));
|
|
109
110
|
}
|
|
110
111
|
|
|
111
112
|
/**
|
package/src/proof/index.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { numToUInt32BE } from "../serialize/serialize.js";
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* @description
|
|
3
5
|
* The representation of a proof
|
|
@@ -20,24 +22,19 @@ export type ProofDataForRecursion = {
|
|
|
20
22
|
proof: string[];
|
|
21
23
|
};
|
|
22
24
|
|
|
23
|
-
//
|
|
24
|
-
const
|
|
25
|
+
// Honk proofs start with 4 bytes for the size of the proof in fields
|
|
26
|
+
const metadataOffset = 4;
|
|
25
27
|
const fieldByteSize = 32;
|
|
26
28
|
|
|
27
29
|
export function splitHonkProof(
|
|
28
30
|
proofWithPublicInputs: Uint8Array,
|
|
29
31
|
numPublicInputs: number,
|
|
30
32
|
): { publicInputs: Uint8Array; proof: Uint8Array } {
|
|
31
|
-
//
|
|
32
|
-
|
|
33
|
-
const proofStart = proofWithPublicInputs.slice(0, serializedBufferSize);
|
|
34
|
-
const publicInputsSplitIndex = numPublicInputs * fieldByteSize;
|
|
35
|
-
const proofEnd = proofWithPublicInputs.slice(serializedBufferSize + publicInputsSplitIndex);
|
|
36
|
-
// Construct the proof without the public inputs
|
|
37
|
-
const proof = new Uint8Array([...proofStart, ...proofEnd]);
|
|
33
|
+
// Remove the metadata (proof size in fields)
|
|
34
|
+
const proofWithPI = proofWithPublicInputs.slice(metadataOffset);
|
|
38
35
|
|
|
39
|
-
|
|
40
|
-
const
|
|
36
|
+
const publicInputs = proofWithPI.slice(0, numPublicInputs * fieldByteSize);
|
|
37
|
+
const proof = proofWithPI.slice(numPublicInputs * fieldByteSize);
|
|
41
38
|
|
|
42
39
|
return {
|
|
43
40
|
proof,
|
|
@@ -46,12 +43,10 @@ export function splitHonkProof(
|
|
|
46
43
|
}
|
|
47
44
|
|
|
48
45
|
export function reconstructHonkProof(publicInputs: Uint8Array, proof: Uint8Array): Uint8Array {
|
|
49
|
-
|
|
50
|
-
const
|
|
51
|
-
|
|
52
|
-
// Concatenate publicInputs and proof
|
|
53
|
-
const proofWithPublicInputs = Uint8Array.from([...proofStart, ...publicInputs, ...proofEnd]);
|
|
46
|
+
// Append proofWithPublicInputs size in fields
|
|
47
|
+
const proofSize = numToUInt32BE((publicInputs.length + proof.length) / fieldByteSize);
|
|
54
48
|
|
|
49
|
+
const proofWithPublicInputs = Uint8Array.from([...proofSize, ...publicInputs, ...proof]);
|
|
55
50
|
return proofWithPublicInputs;
|
|
56
51
|
}
|
|
57
52
|
|