@aztec/bb.js 0.86.0-nightly.20250512 → 0.86.0-starknet.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-threads.js +1 -1
- package/dest/browser/barretenberg.js +1 -1
- package/dest/browser/index.js +18 -5
- package/dest/node/barretenberg/backend.d.ts.map +1 -1
- package/dest/node/barretenberg/backend.js +1 -1
- package/dest/node/barretenberg/verifier.d.ts +2 -0
- package/dest/node/barretenberg/verifier.d.ts.map +1 -1
- package/dest/node/barretenberg/verifier.js +11 -2
- package/dest/node/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
- package/dest/node/crs/net_crs.d.ts.map +1 -1
- package/dest/node/crs/net_crs.js +7 -6
- package/dest/node/crs/node/ignition_files_crs.d.ts +38 -0
- package/dest/node/crs/node/ignition_files_crs.d.ts.map +1 -0
- package/dest/node/crs/node/ignition_files_crs.js +65 -0
- package/dest/node/crs/node/index.js +4 -4
- package/dest/node/proof/index.d.ts +1 -0
- package/dest/node/proof/index.d.ts.map +1 -1
- package/dest/node/proof/index.js +8 -1
- package/dest/node-cjs/barretenberg/backend.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg/backend.js +1 -1
- package/dest/node-cjs/barretenberg/verifier.d.ts +2 -0
- package/dest/node-cjs/barretenberg/verifier.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg/verifier.js +10 -1
- package/dest/node-cjs/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
- package/dest/node-cjs/crs/net_crs.d.ts.map +1 -1
- package/dest/node-cjs/crs/net_crs.js +7 -6
- package/dest/node-cjs/crs/node/ignition_files_crs.d.ts +38 -0
- package/dest/node-cjs/crs/node/ignition_files_crs.d.ts.map +1 -0
- package/dest/node-cjs/crs/node/ignition_files_crs.js +69 -0
- package/dest/node-cjs/crs/node/index.js +4 -4
- package/dest/node-cjs/proof/index.d.ts +1 -0
- package/dest/node-cjs/proof/index.d.ts.map +1 -1
- package/dest/node-cjs/proof/index.js +10 -2
- package/package.json +1 -1
- package/src/barretenberg/backend.ts +1 -0
- package/src/barretenberg/verifier.ts +12 -1
- package/src/crs/net_crs.ts +6 -5
- package/src/crs/node/ignition_files_crs.ts +74 -0
- package/src/crs/node/index.ts +3 -3
- package/src/proof/index.ts +12 -0
|
@@ -68,7 +68,7 @@ class NetCrs {
|
|
|
68
68
|
return new Response(new Uint8Array([]));
|
|
69
69
|
}
|
|
70
70
|
const g1End = this.numPoints * 64 - 1;
|
|
71
|
-
return await (0, index_js_1.retry)(() => fetch('https://
|
|
71
|
+
return await (0, index_js_1.retry)(() => fetch('https://aztec-ignition.s3.amazonaws.com/MAIN%20IGNITION/flat/g1.dat', {
|
|
72
72
|
headers: {
|
|
73
73
|
Range: `bytes=0-${g1End}`,
|
|
74
74
|
},
|
|
@@ -79,7 +79,7 @@ class NetCrs {
|
|
|
79
79
|
* Fetches the appropriate range of points from a remote source
|
|
80
80
|
*/
|
|
81
81
|
async fetchG2Data() {
|
|
82
|
-
return await (0, index_js_1.retry)(() => fetch('https://
|
|
82
|
+
return await (0, index_js_1.retry)(() => fetch('https://aztec-ignition.s3.amazonaws.com/MAIN%20IGNITION/flat/g2.dat', {
|
|
83
83
|
cache: 'force-cache',
|
|
84
84
|
}), (0, index_js_1.makeBackoff)([5, 5, 5]));
|
|
85
85
|
}
|
|
@@ -128,14 +128,15 @@ class NetGrumpkinCrs {
|
|
|
128
128
|
if (this.numPoints === 0) {
|
|
129
129
|
return new Response(new Uint8Array([]));
|
|
130
130
|
}
|
|
131
|
-
const
|
|
132
|
-
|
|
131
|
+
const g1Start = 28;
|
|
132
|
+
const g1End = g1Start + (this.numPoints * 64 - 1);
|
|
133
|
+
return await fetch('https://aztec-ignition.s3.amazonaws.com/TEST%20GRUMPKIN/monomial/transcript00.dat', {
|
|
133
134
|
headers: {
|
|
134
|
-
Range: `bytes
|
|
135
|
+
Range: `bytes=${g1Start}-${g1End}`,
|
|
135
136
|
},
|
|
136
137
|
cache: 'force-cache',
|
|
137
138
|
});
|
|
138
139
|
}
|
|
139
140
|
}
|
|
140
141
|
exports.NetGrumpkinCrs = NetGrumpkinCrs;
|
|
141
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
142
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0X2Nycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jcnMvbmV0X2Nycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxnREFBdUQ7QUFDdkQ7O0dBRUc7QUFDSCxNQUFhLE1BQU07SUFJakI7SUFDRTs7T0FFRztJQUNhLFNBQWlCO1FBQWpCLGNBQVMsR0FBVCxTQUFTLENBQVE7SUFDaEMsQ0FBQztJQUVKOztPQUVHO0lBQ0gsS0FBSyxDQUFDLElBQUk7UUFDUixNQUFNLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUM1QixNQUFNLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsWUFBWTtRQUNoQixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMxQyxPQUFPLFFBQVEsQ0FBQyxJQUFLLENBQUM7SUFDeEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLFlBQVk7UUFDaEIsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDMUMsT0FBTyxRQUFRLENBQUMsSUFBSyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxLQUFLLENBQUMsY0FBYztRQUNsQixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMxQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLFVBQVUsQ0FBQyxNQUFNLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLGNBQWM7UUFDbEIsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDM0MsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxVQUFVLENBQUMsTUFBTSxTQUFTLENB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
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The path to our SRS object, assuming that we are in e.g. barretenberg/ts/dest/node/crs/node folder.
|
|
3
|
+
*/
|
|
4
|
+
export declare const SRS_DEV_PATH: string;
|
|
5
|
+
export declare const GRUMPKIN_SRS_DEV_PATH: string;
|
|
6
|
+
/**
|
|
7
|
+
* Downloader for CRS from a local file (for Node).
|
|
8
|
+
*/
|
|
9
|
+
export declare class IgnitionFilesCrs {
|
|
10
|
+
/**
|
|
11
|
+
* The number of circuit gates.
|
|
12
|
+
*/
|
|
13
|
+
readonly numPoints: number;
|
|
14
|
+
private path;
|
|
15
|
+
private data;
|
|
16
|
+
private g2Data;
|
|
17
|
+
constructor(
|
|
18
|
+
/**
|
|
19
|
+
* The number of circuit gates.
|
|
20
|
+
*/
|
|
21
|
+
numPoints: number, path?: string);
|
|
22
|
+
pathExists(): boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Read the data file.
|
|
25
|
+
*/
|
|
26
|
+
init(): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* G1 points data for prover key.
|
|
29
|
+
* @returns The points data.
|
|
30
|
+
*/
|
|
31
|
+
getG1Data(): Uint8Array;
|
|
32
|
+
/**
|
|
33
|
+
* G2 points data for verification key.
|
|
34
|
+
* @returns The points data.
|
|
35
|
+
*/
|
|
36
|
+
getG2Data(): Uint8Array;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=ignition_files_crs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ignition_files_crs.d.ts","sourceRoot":"","sources":["../../../../src/crs/node/ignition_files_crs.ts"],"names":[],"mappings":"AAeA;;GAEG;AACH,eAAO,MAAM,YAAY,QAAmE,CAAC;AAC7F,eAAO,MAAM,qBAAqB,QAAmE,CAAC;AAEtG;;GAEG;AACH,qBAAa,gBAAgB;IAKzB;;OAEG;aACa,SAAS,EAAE,MAAM;IACjC,OAAO,CAAC,IAAI;IARd,OAAO,CAAC,IAAI,CAAc;IAC1B,OAAO,CAAC,MAAM,CAAc;;IAG1B;;OAEG;IACa,SAAS,EAAE,MAAM,EACzB,IAAI,SAAe;IAG7B,UAAU;IAIV;;OAEG;IACG,IAAI;IAeV;;;OAGG;IACH,SAAS,IAAI,UAAU;IAIvB;;;OAGG;IACH,SAAS,IAAI,UAAU;CAGxB"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IgnitionFilesCrs = exports.GRUMPKIN_SRS_DEV_PATH = exports.SRS_DEV_PATH = void 0;
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const promises_1 = require("fs/promises");
|
|
6
|
+
const path_1 = require("path");
|
|
7
|
+
const url_1 = require("url");
|
|
8
|
+
function getCurrentDir() {
|
|
9
|
+
if (typeof __dirname !== 'undefined') {
|
|
10
|
+
return __dirname;
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
14
|
+
// @ts-ignore
|
|
15
|
+
return (0, path_1.dirname)((0, url_1.fileURLToPath)(""));
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* The path to our SRS object, assuming that we are in e.g. barretenberg/ts/dest/node/crs/node folder.
|
|
20
|
+
*/
|
|
21
|
+
exports.SRS_DEV_PATH = getCurrentDir() + '/../../../../../cpp/srs_db/ignition/monomial';
|
|
22
|
+
exports.GRUMPKIN_SRS_DEV_PATH = getCurrentDir() + '/../../../../../cpp/srs_db/grumpkin/monomial';
|
|
23
|
+
/**
|
|
24
|
+
* Downloader for CRS from a local file (for Node).
|
|
25
|
+
*/
|
|
26
|
+
class IgnitionFilesCrs {
|
|
27
|
+
constructor(
|
|
28
|
+
/**
|
|
29
|
+
* The number of circuit gates.
|
|
30
|
+
*/
|
|
31
|
+
numPoints, path = exports.SRS_DEV_PATH) {
|
|
32
|
+
this.numPoints = numPoints;
|
|
33
|
+
this.path = path;
|
|
34
|
+
}
|
|
35
|
+
pathExists() {
|
|
36
|
+
return (0, fs_1.existsSync)(this.path);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Read the data file.
|
|
40
|
+
*/
|
|
41
|
+
async init() {
|
|
42
|
+
// We need this.numPoints number of g1 points.
|
|
43
|
+
// numPoints should be circuitSize + 1.
|
|
44
|
+
const g1Start = 28;
|
|
45
|
+
const g1End = g1Start + this.numPoints * 64;
|
|
46
|
+
const data = await (0, promises_1.readFile)(this.path + '/transcript00.dat');
|
|
47
|
+
this.data = data.subarray(g1Start, g1End);
|
|
48
|
+
// TODO(https://github.com/AztecProtocol/barretenberg/issues/811): proper abstraction from Grumpkin which does not have g2
|
|
49
|
+
if ((0, fs_1.existsSync)(this.path + '/g2.dat')) {
|
|
50
|
+
this.g2Data = await (0, promises_1.readFile)(this.path + '/g2.dat');
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* G1 points data for prover key.
|
|
55
|
+
* @returns The points data.
|
|
56
|
+
*/
|
|
57
|
+
getG1Data() {
|
|
58
|
+
return this.data;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* G2 points data for verification key.
|
|
62
|
+
* @returns The points data.
|
|
63
|
+
*/
|
|
64
|
+
getG2Data() {
|
|
65
|
+
return this.g2Data;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
exports.IgnitionFilesCrs = IgnitionFilesCrs;
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWduaXRpb25fZmlsZXNfY3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2Nycy9ub2RlL2lnbml0aW9uX2ZpbGVzX2Nycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQkFBZ0M7QUFDaEMsMENBQXVDO0FBQ3ZDLCtCQUErQjtBQUMvQiw2QkFBb0M7QUFFcEMsU0FBUyxhQUFhO0lBQ3BCLElBQUksT0FBTyxTQUFTLEtBQUssV0FBVyxFQUFFLENBQUM7UUFDckMsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztTQUFNLENBQUM7UUFDTiw2REFBNkQ7UUFDN0QsYUFBYTtRQUNiLE9BQU8sSUFBQSxjQUFPLEVBQUMsSUFBQSxtQkFBYSxFQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDO0FBQ0gsQ0FBQztBQUVEOztHQUVHO0FBQ1UsUUFBQSxZQUFZLEdBQUcsYUFBYSxFQUFFLEdBQUcsOENBQThDLENBQUM7QUFDaEYsUUFBQSxxQkFBcUIsR0FBRyxhQUFhLEVBQUUsR0FBRyw4Q0FBOEMsQ0FBQztBQUV0Rzs7R0FFRztBQUNILE1BQWEsZ0JBQWdCO0lBSTNCO0lBQ0U7O09BRUc7SUFDYSxTQUFpQixFQUN6QixPQUFPLG9CQUFZO1FBRFgsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUN6QixTQUFJLEdBQUosSUFBSSxDQUFlO0lBQzFCLENBQUM7SUFFSixVQUFVO1FBQ1IsT0FBTyxJQUFBLGVBQVUsRUFBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLElBQUk7UUFDUiw4Q0FBOEM7UUFDOUMsdUNBQXVDO1FBQ3ZDLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNuQixNQUFNLEtBQUssR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFFNUMsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFBLG1CQUFRLEVBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxtQkFBbUIsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFMUMsMEhBQTBIO1FBQzFILElBQUksSUFBQSxlQUFVLEVBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxJQUFBLG1CQUFRLEVBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsQ0FBQztRQUN0RCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVEOzs7T0FHRztJQUNILFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztDQUNGO0FBakRELDRDQWlEQyJ9
|
|
@@ -82,7 +82,7 @@ class GrumpkinCrs {
|
|
|
82
82
|
}
|
|
83
83
|
async init() {
|
|
84
84
|
(0, fs_1.mkdirSync)(this.path, { recursive: true });
|
|
85
|
-
const g1FileSize = await (0, promises_1.stat)(this.path + '/grumpkin_g1.
|
|
85
|
+
const g1FileSize = await (0, promises_1.stat)(this.path + '/grumpkin_g1.dat')
|
|
86
86
|
.then(stats => stats.size)
|
|
87
87
|
.catch(() => 0);
|
|
88
88
|
if (g1FileSize >= this.numPoints * 64 && g1FileSize % 64 == 0) {
|
|
@@ -92,7 +92,7 @@ class GrumpkinCrs {
|
|
|
92
92
|
this.logger(`Downloading Grumpkin CRS of size ${this.numPoints} into ${this.path}`);
|
|
93
93
|
const crs = new net_crs_js_1.NetGrumpkinCrs(this.numPoints);
|
|
94
94
|
const stream = await crs.streamG1Data();
|
|
95
|
-
await (0, promises_2.finished)(stream_1.Readable.fromWeb(stream).pipe((0, fs_1.createWriteStream)(this.path + '/grumpkin_g1.
|
|
95
|
+
await (0, promises_2.finished)(stream_1.Readable.fromWeb(stream).pipe((0, fs_1.createWriteStream)(this.path + '/grumpkin_g1.dat')));
|
|
96
96
|
(0, fs_1.writeFileSync)(this.path + '/grumpkin_size', String(crs.numPoints));
|
|
97
97
|
}
|
|
98
98
|
/**
|
|
@@ -100,8 +100,8 @@ class GrumpkinCrs {
|
|
|
100
100
|
* @returns The points data.
|
|
101
101
|
*/
|
|
102
102
|
getG1Data() {
|
|
103
|
-
return (0, fs_1.readFileSync)(this.path + '/grumpkin_g1.
|
|
103
|
+
return (0, fs_1.readFileSync)(this.path + '/grumpkin_g1.dat');
|
|
104
104
|
}
|
|
105
105
|
}
|
|
106
106
|
exports.GrumpkinCrs = GrumpkinCrs;
|
|
107
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY3JzL25vZGUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDhDQUF1RDtBQUN2RCwyQkFBOEc7QUFDOUcsMENBQW1DO0FBQ25DLG1DQUFrQztBQUNsQywwREFBZ0M7QUFDaEMsMkJBQTZCO0FBQzdCLDhDQUEyQztBQUUzQzs7R0FFRztBQUNILE1BQWEsR0FBRztJQUNkLFlBQ2tCLFNBQWlCLEVBQ2pCLElBQVksRUFDWCxTQUFnQyxJQUFBLGVBQVcsRUFBQyxXQUFXLENBQUM7UUFGekQsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUNqQixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ1gsV0FBTSxHQUFOLE1BQU0sQ0FBa0Q7SUFDeEUsQ0FBQztJQUVKLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUNkLFNBQWlCLEVBQ2pCLE9BQU8sR0FBRyxJQUFBLFlBQU8sR0FBRSxHQUFHLFVBQVUsRUFDaEMsU0FBZ0MsSUFBQSxlQUFXLEVBQUMsV0FBVyxDQUFDO1FBRXhELE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDaEQsTUFBTSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDakIsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUk7UUFDUixJQUFBLGNBQVMsRUFBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFMUMsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFBLGVBQUksRUFBQyxJQUFJLENBQUMsSUFBSSxHQUFHLGVBQWUsQ0FBQzthQUN2RCxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO2FBQ3pCLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FB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
|
|
@@ -14,6 +14,7 @@ export declare function splitHonkProof(proofWithPublicInputs: Uint8Array, numPub
|
|
|
14
14
|
proof: Uint8Array;
|
|
15
15
|
};
|
|
16
16
|
export declare function reconstructHonkProof(publicInputs: Uint8Array, proof: Uint8Array): Uint8Array;
|
|
17
|
+
export declare function reconstructUltraPlonkProof(proofData: ProofData): Uint8Array;
|
|
17
18
|
export declare function deflattenFields(flattenedFields: Uint8Array): string[];
|
|
18
19
|
export declare function flattenFieldsAsArray(fields: string[]): Uint8Array;
|
|
19
20
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -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,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAKtC,wBAAgB,cAAc,CAC5B,qBAAqB,EAAE,UAAU,EACjC,eAAe,EAAE,MAAM,GACtB;IAAE,YAAY,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,CAQjD;AAED,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,GAAG,UAAU,CAG5F;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,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.flattenFieldsAsArray = exports.deflattenFields = exports.reconstructHonkProof = exports.splitHonkProof = exports.PAIRING_POINTS_SIZE = void 0;
|
|
3
|
+
exports.flattenFieldsAsArray = exports.deflattenFields = exports.reconstructUltraPlonkProof = exports.reconstructHonkProof = exports.splitHonkProof = exports.PAIRING_POINTS_SIZE = void 0;
|
|
4
4
|
exports.PAIRING_POINTS_SIZE = 16;
|
|
5
5
|
// Fields are 32 bytes
|
|
6
6
|
const fieldByteSize = 32;
|
|
@@ -18,6 +18,14 @@ function reconstructHonkProof(publicInputs, proof) {
|
|
|
18
18
|
return proofWithPublicInputs;
|
|
19
19
|
}
|
|
20
20
|
exports.reconstructHonkProof = reconstructHonkProof;
|
|
21
|
+
function reconstructUltraPlonkProof(proofData) {
|
|
22
|
+
// Flatten publicInputs
|
|
23
|
+
const publicInputsConcatenated = flattenFieldsAsArray(proofData.publicInputs);
|
|
24
|
+
// Concatenate publicInputs and proof
|
|
25
|
+
const proofWithPublicInputs = Uint8Array.from([...publicInputsConcatenated, ...proofData.proof]);
|
|
26
|
+
return proofWithPublicInputs;
|
|
27
|
+
}
|
|
28
|
+
exports.reconstructUltraPlonkProof = reconstructUltraPlonkProof;
|
|
21
29
|
function deflattenFields(flattenedFields) {
|
|
22
30
|
const publicInputSize = 32;
|
|
23
31
|
const chunkedFlattenedPublicInputs = [];
|
|
@@ -67,4 +75,4 @@ function hexToUint8Array(hex) {
|
|
|
67
75
|
}
|
|
68
76
|
return u8;
|
|
69
77
|
}
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJvb2YvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBYWEsUUFBQSxtQkFBbUIsR0FBRyxFQUFFLENBQUM7QUFFdEMsc0JBQXNCO0FBQ3RCLE1BQU0sYUFBYSxHQUFHLEVBQUUsQ0FBQztBQUV6QixTQUFnQixjQUFjLENBQzVCLHFCQUFpQyxFQUNqQyxlQUF1QjtJQUV2QixNQUFNLFlBQVksR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLGVBQWUsR0FBRyxhQUFhLENBQUMsQ0FBQztJQUNyRixNQUFNLEtBQUssR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsZUFBZSxHQUFHLGFBQWEsQ0FBQyxDQUFDO0lBRTNFLE9BQU87UUFDTCxLQUFLO1FBQ0wsWUFBWTtLQUNiLENBQUM7QUFDSixDQUFDO0FBWEQsd0NBV0M7QUFFRCxTQUFnQixvQkFBb0IsQ0FBQyxZQUF3QixFQUFFLEtBQWlCO0lBQzlFLE1BQU0scUJBQXFCLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsWUFBWSxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMzRSxPQUFPLHFCQUFxQixDQUFDO0FBQy9CLENBQUM7QUFIRCxvREFHQztBQUVELFNBQWdCLDBCQUEwQixDQUFDLFNBQW9CO0lBQzdELHVCQUF1QjtJQUN2QixNQUFNLHdCQUF3QixHQUFHLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUU5RSxxQ0FBcUM7SUFDckMsTUFBTSxxQkFBcUIsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyx3QkFBd0IsRUFBRSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBRWpHLE9BQU8scUJBQXFCLENBQUM7QUFDL0IsQ0FBQztBQVJELGdFQVFDO0FBRUQsU0FBZ0IsZUFBZSxDQUFDLGVBQTJC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
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/bb.js",
|
|
3
3
|
"packageManager": "yarn@4.5.2",
|
|
4
|
-
"version": "0.86.0-
|
|
4
|
+
"version": "0.86.0-starknet.1",
|
|
5
5
|
"homepage": "https://github.com/AztecProtocol/aztec-packages/tree/master/barretenberg/ts",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"type": "module",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BackendOptions, Barretenberg } from './index.js';
|
|
2
2
|
import { RawBuffer } from '../types/raw_buffer.js';
|
|
3
|
-
import { flattenFieldsAsArray, ProofData, reconstructHonkProof } from '../proof/index.js';
|
|
3
|
+
import { flattenFieldsAsArray, ProofData, reconstructHonkProof, reconstructUltraPlonkProof } from '../proof/index.js';
|
|
4
4
|
|
|
5
5
|
// TODO: once UP is removed we can just roll this into the bas `Barretenberg` class.
|
|
6
6
|
|
|
@@ -27,6 +27,17 @@ export class BarretenbergVerifier {
|
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
+
/** @description Verifies a proof */
|
|
31
|
+
async verifyUltraPlonkProof(proofData: ProofData, verificationKey: Uint8Array): Promise<boolean> {
|
|
32
|
+
await this.instantiate();
|
|
33
|
+
// The verifier can be used for a variety of ACIR programs so we should not assume that it
|
|
34
|
+
// is preloaded with the correct verification key.
|
|
35
|
+
await this.api.acirLoadVerificationKey(this.acirComposer, new RawBuffer(verificationKey));
|
|
36
|
+
|
|
37
|
+
const proof = reconstructUltraPlonkProof(proofData);
|
|
38
|
+
return await this.api.acirVerifyProof(this.acirComposer, proof);
|
|
39
|
+
}
|
|
40
|
+
|
|
30
41
|
/** @description Verifies a proof */
|
|
31
42
|
async verifyUltraHonkProof(proofData: ProofData, verificationKey: Uint8Array): Promise<boolean> {
|
|
32
43
|
await this.instantiate();
|
package/src/crs/net_crs.ts
CHANGED
|
@@ -78,7 +78,7 @@ export class NetCrs {
|
|
|
78
78
|
const g1End = this.numPoints * 64 - 1;
|
|
79
79
|
return await retry(
|
|
80
80
|
() =>
|
|
81
|
-
fetch('https://
|
|
81
|
+
fetch('https://aztec-ignition.s3.amazonaws.com/MAIN%20IGNITION/flat/g1.dat', {
|
|
82
82
|
headers: {
|
|
83
83
|
Range: `bytes=0-${g1End}`,
|
|
84
84
|
},
|
|
@@ -94,7 +94,7 @@ export class NetCrs {
|
|
|
94
94
|
private async fetchG2Data(): Promise<Response> {
|
|
95
95
|
return await retry(
|
|
96
96
|
() =>
|
|
97
|
-
fetch('https://
|
|
97
|
+
fetch('https://aztec-ignition.s3.amazonaws.com/MAIN%20IGNITION/flat/g2.dat', {
|
|
98
98
|
cache: 'force-cache',
|
|
99
99
|
}),
|
|
100
100
|
makeBackoff([5, 5, 5]),
|
|
@@ -152,11 +152,12 @@ export class NetGrumpkinCrs {
|
|
|
152
152
|
return new Response(new Uint8Array([]));
|
|
153
153
|
}
|
|
154
154
|
|
|
155
|
-
const
|
|
155
|
+
const g1Start = 28;
|
|
156
|
+
const g1End = g1Start + (this.numPoints * 64 - 1);
|
|
156
157
|
|
|
157
|
-
return await fetch('https://
|
|
158
|
+
return await fetch('https://aztec-ignition.s3.amazonaws.com/TEST%20GRUMPKIN/monomial/transcript00.dat', {
|
|
158
159
|
headers: {
|
|
159
|
-
Range: `bytes
|
|
160
|
+
Range: `bytes=${g1Start}-${g1End}`,
|
|
160
161
|
},
|
|
161
162
|
cache: 'force-cache',
|
|
162
163
|
});
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { existsSync } from 'fs';
|
|
2
|
+
import { readFile } from 'fs/promises';
|
|
3
|
+
import { dirname } from 'path';
|
|
4
|
+
import { fileURLToPath } from 'url';
|
|
5
|
+
|
|
6
|
+
function getCurrentDir() {
|
|
7
|
+
if (typeof __dirname !== 'undefined') {
|
|
8
|
+
return __dirname;
|
|
9
|
+
} else {
|
|
10
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
11
|
+
// @ts-ignore
|
|
12
|
+
return dirname(fileURLToPath(import.meta.url));
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* The path to our SRS object, assuming that we are in e.g. barretenberg/ts/dest/node/crs/node folder.
|
|
18
|
+
*/
|
|
19
|
+
export const SRS_DEV_PATH = getCurrentDir() + '/../../../../../cpp/srs_db/ignition/monomial';
|
|
20
|
+
export const GRUMPKIN_SRS_DEV_PATH = getCurrentDir() + '/../../../../../cpp/srs_db/grumpkin/monomial';
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Downloader for CRS from a local file (for Node).
|
|
24
|
+
*/
|
|
25
|
+
export class IgnitionFilesCrs {
|
|
26
|
+
private data!: Uint8Array;
|
|
27
|
+
private g2Data!: Uint8Array;
|
|
28
|
+
|
|
29
|
+
constructor(
|
|
30
|
+
/**
|
|
31
|
+
* The number of circuit gates.
|
|
32
|
+
*/
|
|
33
|
+
public readonly numPoints: number,
|
|
34
|
+
private path = SRS_DEV_PATH,
|
|
35
|
+
) {}
|
|
36
|
+
|
|
37
|
+
pathExists() {
|
|
38
|
+
return existsSync(this.path);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Read the data file.
|
|
43
|
+
*/
|
|
44
|
+
async init() {
|
|
45
|
+
// We need this.numPoints number of g1 points.
|
|
46
|
+
// numPoints should be circuitSize + 1.
|
|
47
|
+
const g1Start = 28;
|
|
48
|
+
const g1End = g1Start + this.numPoints * 64;
|
|
49
|
+
|
|
50
|
+
const data = await readFile(this.path + '/transcript00.dat');
|
|
51
|
+
this.data = data.subarray(g1Start, g1End);
|
|
52
|
+
|
|
53
|
+
// TODO(https://github.com/AztecProtocol/barretenberg/issues/811): proper abstraction from Grumpkin which does not have g2
|
|
54
|
+
if (existsSync(this.path + '/g2.dat')) {
|
|
55
|
+
this.g2Data = await readFile(this.path + '/g2.dat');
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* G1 points data for prover key.
|
|
61
|
+
* @returns The points data.
|
|
62
|
+
*/
|
|
63
|
+
getG1Data(): Uint8Array {
|
|
64
|
+
return this.data;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* G2 points data for verification key.
|
|
69
|
+
* @returns The points data.
|
|
70
|
+
*/
|
|
71
|
+
getG2Data(): Uint8Array {
|
|
72
|
+
return this.g2Data;
|
|
73
|
+
}
|
|
74
|
+
}
|
package/src/crs/node/index.ts
CHANGED
|
@@ -98,7 +98,7 @@ export class GrumpkinCrs {
|
|
|
98
98
|
async init(): Promise<void> {
|
|
99
99
|
mkdirSync(this.path, { recursive: true });
|
|
100
100
|
|
|
101
|
-
const g1FileSize = await stat(this.path + '/grumpkin_g1.
|
|
101
|
+
const g1FileSize = await stat(this.path + '/grumpkin_g1.dat')
|
|
102
102
|
.then(stats => stats.size)
|
|
103
103
|
.catch(() => 0);
|
|
104
104
|
|
|
@@ -111,7 +111,7 @@ export class GrumpkinCrs {
|
|
|
111
111
|
const crs = new NetGrumpkinCrs(this.numPoints);
|
|
112
112
|
const stream = await crs.streamG1Data();
|
|
113
113
|
|
|
114
|
-
await finished(Readable.fromWeb(stream as any).pipe(createWriteStream(this.path + '/grumpkin_g1.
|
|
114
|
+
await finished(Readable.fromWeb(stream as any).pipe(createWriteStream(this.path + '/grumpkin_g1.dat')));
|
|
115
115
|
writeFileSync(this.path + '/grumpkin_size', String(crs.numPoints));
|
|
116
116
|
}
|
|
117
117
|
|
|
@@ -120,6 +120,6 @@ export class GrumpkinCrs {
|
|
|
120
120
|
* @returns The points data.
|
|
121
121
|
*/
|
|
122
122
|
getG1Data(): Uint8Array {
|
|
123
|
-
return readFileSync(this.path + '/grumpkin_g1.
|
|
123
|
+
return readFileSync(this.path + '/grumpkin_g1.dat');
|
|
124
124
|
}
|
|
125
125
|
}
|
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
|
|
@@ -32,6 +34,16 @@ export function reconstructHonkProof(publicInputs: Uint8Array, proof: Uint8Array
|
|
|
32
34
|
return proofWithPublicInputs;
|
|
33
35
|
}
|
|
34
36
|
|
|
37
|
+
export function reconstructUltraPlonkProof(proofData: ProofData): Uint8Array {
|
|
38
|
+
// Flatten publicInputs
|
|
39
|
+
const publicInputsConcatenated = flattenFieldsAsArray(proofData.publicInputs);
|
|
40
|
+
|
|
41
|
+
// Concatenate publicInputs and proof
|
|
42
|
+
const proofWithPublicInputs = Uint8Array.from([...publicInputsConcatenated, ...proofData.proof]);
|
|
43
|
+
|
|
44
|
+
return proofWithPublicInputs;
|
|
45
|
+
}
|
|
46
|
+
|
|
35
47
|
export function deflattenFields(flattenedFields: Uint8Array): string[] {
|
|
36
48
|
const publicInputSize = 32;
|
|
37
49
|
const chunkedFlattenedPublicInputs: Uint8Array[] = [];
|