@aztec/bb.js 0.82.2 → 0.82.3
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/crs/net_crs.d.ts +24 -0
- package/dest/browser/crs/net_crs.d.ts.map +1 -1
- package/dest/browser/crs/node/index.d.ts.map +1 -1
- package/dest/browser/index.js +39 -18
- package/dest/node/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
- package/dest/node/crs/net_crs.d.ts +24 -0
- package/dest/node/crs/net_crs.d.ts.map +1 -1
- package/dest/node/crs/net_crs.js +64 -25
- package/dest/node/crs/node/index.d.ts.map +1 -1
- package/dest/node/crs/node/index.js +11 -7
- package/dest/node-cjs/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
- package/dest/node-cjs/crs/net_crs.d.ts +24 -0
- package/dest/node-cjs/crs/net_crs.d.ts.map +1 -1
- package/dest/node-cjs/crs/net_crs.js +64 -25
- package/dest/node-cjs/crs/node/index.d.ts.map +1 -1
- package/dest/node-cjs/crs/node/index.js +10 -6
- package/package.json +1 -1
- package/src/crs/net_crs.ts +78 -37
- package/src/crs/node/index.ts +14 -8
|
@@ -5,8 +5,10 @@ const tslib_1 = require("tslib");
|
|
|
5
5
|
const net_crs_js_1 = require("../net_crs.js");
|
|
6
6
|
const fs_1 = require("fs");
|
|
7
7
|
const promises_1 = require("fs/promises");
|
|
8
|
+
const stream_1 = require("stream");
|
|
8
9
|
const debug_1 = tslib_1.__importDefault(require("debug"));
|
|
9
10
|
const os_1 = require("os");
|
|
11
|
+
const promises_2 = require("stream/promises");
|
|
10
12
|
/**
|
|
11
13
|
* Generic CRS finder utility class.
|
|
12
14
|
*/
|
|
@@ -35,9 +37,11 @@ class Crs {
|
|
|
35
37
|
}
|
|
36
38
|
this.logger(`Downloading CRS of size ${this.numPoints} into ${this.path}`);
|
|
37
39
|
const crs = new net_crs_js_1.NetCrs(this.numPoints);
|
|
38
|
-
await crs.
|
|
39
|
-
|
|
40
|
-
|
|
40
|
+
const [g1, g2] = await Promise.all([crs.streamG1Data(), crs.streamG2Data()]);
|
|
41
|
+
await Promise.all([
|
|
42
|
+
(0, promises_2.finished)(stream_1.Readable.fromWeb(g1).pipe((0, fs_1.createWriteStream)(this.path + '/bn254_g1.dat'))),
|
|
43
|
+
(0, promises_2.finished)(stream_1.Readable.fromWeb(g2).pipe((0, fs_1.createWriteStream)(this.path + '/bn254_g2.dat'))),
|
|
44
|
+
]);
|
|
41
45
|
}
|
|
42
46
|
/**
|
|
43
47
|
* G1 points data for prover key.
|
|
@@ -87,8 +91,8 @@ class GrumpkinCrs {
|
|
|
87
91
|
}
|
|
88
92
|
this.logger(`Downloading Grumpkin CRS of size ${this.numPoints} into ${this.path}`);
|
|
89
93
|
const crs = new net_crs_js_1.NetGrumpkinCrs(this.numPoints);
|
|
90
|
-
await crs.
|
|
91
|
-
(0, fs_1.
|
|
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.dat')));
|
|
92
96
|
(0, fs_1.writeFileSync)(this.path + '/grumpkin_size', String(crs.numPoints));
|
|
93
97
|
}
|
|
94
98
|
/**
|
|
@@ -100,4 +104,4 @@ class GrumpkinCrs {
|
|
|
100
104
|
}
|
|
101
105
|
}
|
|
102
106
|
exports.GrumpkinCrs = GrumpkinCrs;
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY3JzL25vZGUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDhDQUF1RDtBQUN2RCwyQkFBOEc7QUFDOUcsMENBQW1DO0FBQ25DLG1DQUFrQztBQUNsQywwREFBZ0M7QUFDaEMsMkJBQTZCO0FBQzdCLDhDQUEyQztBQUUzQzs7R0FFRztBQUNILE1BQWEsR0FBRztJQUNkLFlBQ2tCLFNBQWlCLEVBQ2pCLElBQVksRUFDWCxTQUFnQyxJQUFBLGVBQVcsRUFBQyxXQUFXLENBQUM7UUFGekQsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUNqQixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ1gsV0FBTSxHQUFOLE1BQU0sQ0FBa0Q7SUFDeEUsQ0FBQztJQUVKLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUNkLFNBQWlCLEVBQ2pCLE9BQU8sR0FBRyxJQUFBLFlBQU8sR0FBRSxHQUFHLFVBQVUsRUFDaEMsU0FBZ0MsSUFBQSxlQUFXLEVBQUMsV0FBVyxDQUFDO1FBRXhELE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDaEQsTUFBTSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDakIsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUk7UUFDUixJQUFBLGNBQVMsRUFBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFMUMsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFBLGVBQUksRUFBQyxJQUFJLENBQUMsSUFBSSxHQUFHLGVBQWUsQ0FBQzthQUN2RCxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO2FBQ3pCLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FB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
|
package/package.json
CHANGED
package/src/crs/net_crs.ts
CHANGED
|
@@ -21,25 +21,24 @@ export class NetCrs {
|
|
|
21
21
|
await this.downloadG2Data();
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
24
|
+
/**
|
|
25
|
+
* Opens up a ReadableStream to the points data
|
|
26
|
+
*/
|
|
27
|
+
async streamG1Data(): Promise<ReadableStream<Uint8Array>> {
|
|
28
|
+
const response = await this.fetchG1Data();
|
|
29
|
+
return response.body!;
|
|
30
|
+
}
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}),
|
|
40
|
-
makeBackoff([5, 5, 5]),
|
|
41
|
-
);
|
|
32
|
+
/**
|
|
33
|
+
* Opens up a ReadableStream to the points data
|
|
34
|
+
*/
|
|
35
|
+
async streamG2Data(): Promise<ReadableStream<Uint8Array>> {
|
|
36
|
+
const response = await this.fetchG2Data();
|
|
37
|
+
return response.body!;
|
|
38
|
+
}
|
|
42
39
|
|
|
40
|
+
async downloadG1Data() {
|
|
41
|
+
const response = await this.fetchG1Data();
|
|
43
42
|
return (this.data = new Uint8Array(await response.arrayBuffer()));
|
|
44
43
|
}
|
|
45
44
|
|
|
@@ -47,14 +46,7 @@ export class NetCrs {
|
|
|
47
46
|
* Download the G2 points data.
|
|
48
47
|
*/
|
|
49
48
|
async downloadG2Data() {
|
|
50
|
-
const response2 = await
|
|
51
|
-
() =>
|
|
52
|
-
fetch('https://aztec-ignition.s3.amazonaws.com/MAIN%20IGNITION/flat/g2.dat', {
|
|
53
|
-
cache: 'force-cache',
|
|
54
|
-
}),
|
|
55
|
-
makeBackoff([5, 5, 5]),
|
|
56
|
-
);
|
|
57
|
-
|
|
49
|
+
const response2 = await this.fetchG2Data();
|
|
58
50
|
return (this.g2Data = new Uint8Array(await response2.arrayBuffer()));
|
|
59
51
|
}
|
|
60
52
|
|
|
@@ -73,6 +65,41 @@ export class NetCrs {
|
|
|
73
65
|
getG2Data(): Uint8Array {
|
|
74
66
|
return this.g2Data;
|
|
75
67
|
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Fetches the appropriate range of points from a remote source
|
|
71
|
+
*/
|
|
72
|
+
private async fetchG1Data(): Promise<Response> {
|
|
73
|
+
// Skip the download if numPoints is 0 (would download the entire file due to bad range header otherwise)
|
|
74
|
+
if (this.numPoints === 0) {
|
|
75
|
+
return new Response(new Uint8Array([]));
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
const g1End = this.numPoints * 64 - 1;
|
|
79
|
+
return await retry(
|
|
80
|
+
() =>
|
|
81
|
+
fetch('https://aztec-ignition.s3.amazonaws.com/MAIN%20IGNITION/flat/g1.dat', {
|
|
82
|
+
headers: {
|
|
83
|
+
Range: `bytes=0-${g1End}`,
|
|
84
|
+
},
|
|
85
|
+
cache: 'force-cache',
|
|
86
|
+
}),
|
|
87
|
+
makeBackoff([5, 5, 5]),
|
|
88
|
+
);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Fetches the appropriate range of points from a remote source
|
|
93
|
+
*/
|
|
94
|
+
private async fetchG2Data(): Promise<Response> {
|
|
95
|
+
return await retry(
|
|
96
|
+
() =>
|
|
97
|
+
fetch('https://aztec-ignition.s3.amazonaws.com/MAIN%20IGNITION/flat/g2.dat', {
|
|
98
|
+
cache: 'force-cache',
|
|
99
|
+
}),
|
|
100
|
+
makeBackoff([5, 5, 5]),
|
|
101
|
+
);
|
|
102
|
+
}
|
|
76
103
|
}
|
|
77
104
|
|
|
78
105
|
/**
|
|
@@ -96,29 +123,43 @@ export class NetGrumpkinCrs {
|
|
|
96
123
|
}
|
|
97
124
|
|
|
98
125
|
async downloadG1Data() {
|
|
126
|
+
const response = await this.fetchG1Data();
|
|
127
|
+
return (this.data = new Uint8Array(await response.arrayBuffer()));
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Opens up a ReadableStream to the points data
|
|
132
|
+
*/
|
|
133
|
+
async streamG1Data(): Promise<ReadableStream<Uint8Array>> {
|
|
134
|
+
const response = await this.fetchG1Data();
|
|
135
|
+
return response.body!;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* G1 points data for prover key.
|
|
140
|
+
* @returns The points data.
|
|
141
|
+
*/
|
|
142
|
+
getG1Data(): Uint8Array {
|
|
143
|
+
return this.data;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Fetches the appropriate range of points from a remote source
|
|
148
|
+
*/
|
|
149
|
+
private async fetchG1Data(): Promise<Response> {
|
|
99
150
|
// Skip the download if numPoints is 0 (would download the entire file due to bad range header otherwise)
|
|
100
151
|
if (this.numPoints === 0) {
|
|
101
|
-
return (
|
|
152
|
+
return new Response(new Uint8Array([]));
|
|
102
153
|
}
|
|
103
154
|
|
|
104
155
|
const g1Start = 28;
|
|
105
156
|
const g1End = g1Start + (this.numPoints * 64 - 1);
|
|
106
157
|
|
|
107
|
-
|
|
158
|
+
return await fetch('https://aztec-ignition.s3.amazonaws.com/TEST%20GRUMPKIN/monomial/transcript00.dat', {
|
|
108
159
|
headers: {
|
|
109
160
|
Range: `bytes=${g1Start}-${g1End}`,
|
|
110
161
|
},
|
|
111
162
|
cache: 'force-cache',
|
|
112
163
|
});
|
|
113
|
-
|
|
114
|
-
return (this.data = new Uint8Array(await response.arrayBuffer()));
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
/**
|
|
118
|
-
* G1 points data for prover key.
|
|
119
|
-
* @returns The points data.
|
|
120
|
-
*/
|
|
121
|
-
getG1Data(): Uint8Array {
|
|
122
|
-
return this.data;
|
|
123
164
|
}
|
|
124
165
|
}
|
package/src/crs/node/index.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { NetCrs, NetGrumpkinCrs } from '../net_crs.js';
|
|
2
|
-
import { closeSync, mkdirSync, openSync, readFileSync, readSync, writeFileSync } from 'fs';
|
|
2
|
+
import { closeSync, mkdirSync, openSync, readFileSync, readSync, writeFileSync, createWriteStream } from 'fs';
|
|
3
3
|
import { stat } from 'fs/promises';
|
|
4
|
+
import { Readable } from 'stream';
|
|
4
5
|
import createDebug from 'debug';
|
|
5
6
|
import { homedir } from 'os';
|
|
7
|
+
import { finished } from 'stream/promises';
|
|
6
8
|
|
|
7
9
|
/**
|
|
8
10
|
* Generic CRS finder utility class.
|
|
@@ -24,7 +26,7 @@ export class Crs {
|
|
|
24
26
|
return crs;
|
|
25
27
|
}
|
|
26
28
|
|
|
27
|
-
async init() {
|
|
29
|
+
async init(): Promise<void> {
|
|
28
30
|
mkdirSync(this.path, { recursive: true });
|
|
29
31
|
|
|
30
32
|
const g1FileSize = await stat(this.path + '/bn254_g1.dat')
|
|
@@ -41,9 +43,12 @@ export class Crs {
|
|
|
41
43
|
|
|
42
44
|
this.logger(`Downloading CRS of size ${this.numPoints} into ${this.path}`);
|
|
43
45
|
const crs = new NetCrs(this.numPoints);
|
|
44
|
-
await crs.
|
|
45
|
-
|
|
46
|
-
|
|
46
|
+
const [g1, g2] = await Promise.all([crs.streamG1Data(), crs.streamG2Data()]);
|
|
47
|
+
|
|
48
|
+
await Promise.all([
|
|
49
|
+
finished(Readable.fromWeb(g1 as any).pipe(createWriteStream(this.path + '/bn254_g1.dat'))),
|
|
50
|
+
finished(Readable.fromWeb(g2 as any).pipe(createWriteStream(this.path + '/bn254_g2.dat'))),
|
|
51
|
+
]);
|
|
47
52
|
}
|
|
48
53
|
|
|
49
54
|
/**
|
|
@@ -90,7 +95,7 @@ export class GrumpkinCrs {
|
|
|
90
95
|
return crs;
|
|
91
96
|
}
|
|
92
97
|
|
|
93
|
-
async init() {
|
|
98
|
+
async init(): Promise<void> {
|
|
94
99
|
mkdirSync(this.path, { recursive: true });
|
|
95
100
|
|
|
96
101
|
const g1FileSize = await stat(this.path + '/grumpkin_g1.dat')
|
|
@@ -104,8 +109,9 @@ export class GrumpkinCrs {
|
|
|
104
109
|
|
|
105
110
|
this.logger(`Downloading Grumpkin CRS of size ${this.numPoints} into ${this.path}`);
|
|
106
111
|
const crs = new NetGrumpkinCrs(this.numPoints);
|
|
107
|
-
await crs.
|
|
108
|
-
|
|
112
|
+
const stream = await crs.streamG1Data();
|
|
113
|
+
|
|
114
|
+
await finished(Readable.fromWeb(stream as any).pipe(createWriteStream(this.path + '/grumpkin_g1.dat')));
|
|
109
115
|
writeFileSync(this.path + '/grumpkin_size', String(crs.numPoints));
|
|
110
116
|
}
|
|
111
117
|
|