@aztec/bb.js 0.3.6 → 0.4.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/README.md +1 -0
- package/dest/barretenberg-threads.wasm +0 -0
- package/dest/barretenberg.wasm +0 -0
- package/dest/browser/539.js +52 -1
- package/dest/browser/995.js +2 -2
- package/dest/browser/crs/net_crs.js +3 -3
- package/dest/browser/main.d.ts +4 -4
- package/dest/browser/main.d.ts.map +1 -1
- package/dest/browser/main.js +57 -6
- package/dest/node/crs/net_crs.js +3 -3
- package/dest/node/main.d.ts +4 -4
- package/dest/node/main.d.ts.map +1 -1
- package/dest/node/main.js +54 -69
- package/package.json +6 -3
- package/src/crs/net_crs.ts +2 -2
- package/src/main.ts +62 -67
package/README.md
CHANGED
|
Binary file
|
package/dest/barretenberg.wasm
CHANGED
|
Binary file
|
package/dest/browser/539.js
CHANGED
|
@@ -1604,6 +1604,7 @@ function generateUUID() {
|
|
|
1604
1604
|
"use strict";
|
|
1605
1605
|
__webpack_require__.r(__webpack_exports__);
|
|
1606
1606
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
1607
|
+
/* harmony export */ __addDisposableResource: () => (/* binding */ __addDisposableResource),
|
|
1607
1608
|
/* harmony export */ __assign: () => (/* binding */ __assign),
|
|
1608
1609
|
/* harmony export */ __asyncDelegator: () => (/* binding */ __asyncDelegator),
|
|
1609
1610
|
/* harmony export */ __asyncGenerator: () => (/* binding */ __asyncGenerator),
|
|
@@ -1615,6 +1616,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
1615
1616
|
/* harmony export */ __classPrivateFieldSet: () => (/* binding */ __classPrivateFieldSet),
|
|
1616
1617
|
/* harmony export */ __createBinding: () => (/* binding */ __createBinding),
|
|
1617
1618
|
/* harmony export */ __decorate: () => (/* binding */ __decorate),
|
|
1619
|
+
/* harmony export */ __disposeResources: () => (/* binding */ __disposeResources),
|
|
1618
1620
|
/* harmony export */ __esDecorate: () => (/* binding */ __esDecorate),
|
|
1619
1621
|
/* harmony export */ __exportStar: () => (/* binding */ __exportStar),
|
|
1620
1622
|
/* harmony export */ __extends: () => (/* binding */ __extends),
|
|
@@ -1649,7 +1651,7 @@ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
|
1649
1651
|
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
1650
1652
|
PERFORMANCE OF THIS SOFTWARE.
|
|
1651
1653
|
***************************************************************************** */
|
|
1652
|
-
/* global Reflect, Promise */
|
|
1654
|
+
/* global Reflect, Promise, SuppressedError, Symbol */
|
|
1653
1655
|
|
|
1654
1656
|
var extendStatics = function(d, b) {
|
|
1655
1657
|
extendStatics = Object.setPrototypeOf ||
|
|
@@ -1929,6 +1931,53 @@ function __classPrivateFieldIn(state, receiver) {
|
|
|
1929
1931
|
return typeof state === "function" ? receiver === state : state.has(receiver);
|
|
1930
1932
|
}
|
|
1931
1933
|
|
|
1934
|
+
function __addDisposableResource(env, value, async) {
|
|
1935
|
+
if (value !== null && value !== void 0) {
|
|
1936
|
+
if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
|
|
1937
|
+
var dispose;
|
|
1938
|
+
if (async) {
|
|
1939
|
+
if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
|
|
1940
|
+
dispose = value[Symbol.asyncDispose];
|
|
1941
|
+
}
|
|
1942
|
+
if (dispose === void 0) {
|
|
1943
|
+
if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
|
|
1944
|
+
dispose = value[Symbol.dispose];
|
|
1945
|
+
}
|
|
1946
|
+
if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
|
|
1947
|
+
env.stack.push({ value: value, dispose: dispose, async: async });
|
|
1948
|
+
}
|
|
1949
|
+
else if (async) {
|
|
1950
|
+
env.stack.push({ async: true });
|
|
1951
|
+
}
|
|
1952
|
+
return value;
|
|
1953
|
+
}
|
|
1954
|
+
|
|
1955
|
+
var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
|
|
1956
|
+
var e = new Error(message);
|
|
1957
|
+
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
1958
|
+
};
|
|
1959
|
+
|
|
1960
|
+
function __disposeResources(env) {
|
|
1961
|
+
function fail(e) {
|
|
1962
|
+
env.error = env.hasError ? new _SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
|
|
1963
|
+
env.hasError = true;
|
|
1964
|
+
}
|
|
1965
|
+
function next() {
|
|
1966
|
+
while (env.stack.length) {
|
|
1967
|
+
var rec = env.stack.pop();
|
|
1968
|
+
try {
|
|
1969
|
+
var result = rec.dispose && rec.dispose.call(rec.value);
|
|
1970
|
+
if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
|
|
1971
|
+
}
|
|
1972
|
+
catch (e) {
|
|
1973
|
+
fail(e);
|
|
1974
|
+
}
|
|
1975
|
+
}
|
|
1976
|
+
if (env.hasError) throw env.error;
|
|
1977
|
+
}
|
|
1978
|
+
return next();
|
|
1979
|
+
}
|
|
1980
|
+
|
|
1932
1981
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
|
|
1933
1982
|
__extends,
|
|
1934
1983
|
__assign,
|
|
@@ -1955,6 +2004,8 @@ function __classPrivateFieldIn(state, receiver) {
|
|
|
1955
2004
|
__classPrivateFieldGet,
|
|
1956
2005
|
__classPrivateFieldSet,
|
|
1957
2006
|
__classPrivateFieldIn,
|
|
2007
|
+
__addDisposableResource,
|
|
2008
|
+
__disposeResources,
|
|
1958
2009
|
});
|
|
1959
2010
|
|
|
1960
2011
|
|
package/dest/browser/995.js
CHANGED
|
@@ -353,14 +353,14 @@ tslib_1.__exportStar(__webpack_require__(754), exports);
|
|
|
353
353
|
/***/ 77:
|
|
354
354
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
355
355
|
|
|
356
|
-
module.exports = __webpack_require__.p + "
|
|
356
|
+
module.exports = __webpack_require__.p + "b03fe9ef064d8eba5ff7.wasm";
|
|
357
357
|
|
|
358
358
|
/***/ }),
|
|
359
359
|
|
|
360
360
|
/***/ 90:
|
|
361
361
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
362
362
|
|
|
363
|
-
module.exports = __webpack_require__.p + "
|
|
363
|
+
module.exports = __webpack_require__.p + "7d24b8a508ae77ca0b04.wasm";
|
|
364
364
|
|
|
365
365
|
/***/ })
|
|
366
366
|
|
|
@@ -31,9 +31,9 @@ export class NetCrs {
|
|
|
31
31
|
* Download the G2 points data.
|
|
32
32
|
*/
|
|
33
33
|
async downloadG2Data() {
|
|
34
|
-
const g2Start = 28 +
|
|
34
|
+
const g2Start = 28 + 5040001 * 64;
|
|
35
35
|
const g2End = g2Start + 128 - 1;
|
|
36
|
-
const response2 = await fetch('https://aztec-ignition.s3.amazonaws.com/MAIN%20IGNITION/
|
|
36
|
+
const response2 = await fetch('https://aztec-ignition.s3.amazonaws.com/MAIN%20IGNITION/monomial/transcript00.dat', {
|
|
37
37
|
headers: {
|
|
38
38
|
Range: `bytes=${g2Start}-${g2End}`,
|
|
39
39
|
},
|
|
@@ -56,4 +56,4 @@ export class NetCrs {
|
|
|
56
56
|
return this.g2Data;
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0X2Nycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jcnMvbmV0X2Nycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sT0FBTyxNQUFNO0lBSWpCO0lBQ0U7O09BRUc7SUFDYSxTQUFpQjtRQUFqQixjQUFTLEdBQVQsU0FBUyxDQUFRO0lBQ2hDLENBQUM7SUFFSjs7T0FFRztJQUNILEtBQUssQ0FBQyxJQUFJO1FBQ1IsTUFBTSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDNUIsTUFBTSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELEtBQUssQ0FBQyxjQUFjO1FBQ2xCLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNuQixNQUFNLEtBQUssR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRWhELE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLG1GQUFtRixFQUFFO1lBQ2hILE9BQU8sRUFBRTtnQkFDUCxLQUFLLEVBQUUsU0FBUyxPQUFPLElBQUksS0FBSyxFQUFFO2FBQ25DO1lBQ0QsS0FBSyxFQUFFLGFBQWE7U0FDckIsQ0FBQyxDQUFDO1FBRUgsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxVQUFVLENBQUMsTUFBTSxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxjQUFjO1FBQ2xCLE1BQU0sT0FBTyxHQUFHLEVBQUUsR0FBRyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sS0FBSyxHQUFHLE9BQU8sR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBRWhDLE1BQU0sU0FBUyxHQUFHLE1BQU0sS0FBSyxDQUFDLG1GQUFtRixFQUFFO1lBQ2pILE9BQU8sRUFBRTtnQkFDUCxLQUFLLEVBQUUsU0FBUyxPQUFPLElBQUksS0FBSyxFQUFFO2FBQ25DO1lBQ0QsS0FBSyxFQUFFLGFBQWE7U0FDckIsQ0FBQyxDQUFDO1FBRUgsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxVQUFVLENBQUMsTUFBTSxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRDs7O09BR0c7SUFDSCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFRDs7O09BR0c7SUFDSCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7Q0FDRiJ9
|
package/dest/browser/main.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
export declare function proveAndVerify(
|
|
3
|
-
export declare function prove(
|
|
4
|
-
export declare function gateCount(
|
|
2
|
+
export declare function proveAndVerify(bytecodePath: string, witnessPath: string, crsPath: string, isRecursive: boolean): Promise<boolean>;
|
|
3
|
+
export declare function prove(bytecodePath: string, witnessPath: string, crsPath: string, isRecursive: boolean, outputPath: string): Promise<void>;
|
|
4
|
+
export declare function gateCount(bytecodePath: string): Promise<void>;
|
|
5
5
|
export declare function verify(proofPath: string, isRecursive: boolean, vkPath: string): Promise<boolean>;
|
|
6
6
|
export declare function contract(outputPath: string, vkPath: string): Promise<void>;
|
|
7
|
-
export declare function writeVk(
|
|
7
|
+
export declare function writeVk(bytecodePath: string, crsPath: string, outputPath: string): Promise<void>;
|
|
8
8
|
export declare function proofAsFields(proofPath: string, numInnerPublicInputs: number, outputPath: string): Promise<void>;
|
|
9
9
|
export declare function vkAsFields(vkPath: string, vkeyOutputPath: string): Promise<void>;
|
|
10
10
|
//# sourceMappingURL=main.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":";AA6EA,wBAAsB,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,oBAepH;AAED,wBAAsB,KAAK,CACzB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,OAAO,EACpB,UAAU,EAAE,MAAM,iBAiBnB;AAED,wBAAsB,SAAS,CAAC,YAAY,EAAE,MAAM,iBAOnD;AAED,wBAAsB,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAWnF;AAED,wBAAsB,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,iBAahE;AAED,wBAAsB,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,iBAiBtF;AAED,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,iBAmBtG;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,iBAiBtE"}
|
package/dest/browser/main.js
CHANGED
|
@@ -4683,9 +4683,9 @@ class NetCrs {
|
|
|
4683
4683
|
* Download the G2 points data.
|
|
4684
4684
|
*/
|
|
4685
4685
|
async downloadG2Data() {
|
|
4686
|
-
const g2Start = 28 +
|
|
4686
|
+
const g2Start = 28 + 5040001 * 64;
|
|
4687
4687
|
const g2End = g2Start + 128 - 1;
|
|
4688
|
-
const response2 = await fetch('https://aztec-ignition.s3.amazonaws.com/MAIN%20IGNITION/
|
|
4688
|
+
const response2 = await fetch('https://aztec-ignition.s3.amazonaws.com/MAIN%20IGNITION/monomial/transcript00.dat', {
|
|
4689
4689
|
headers: {
|
|
4690
4690
|
Range: `bytes=${g2Start}-${g2End}`,
|
|
4691
4691
|
},
|
|
@@ -4709,7 +4709,7 @@ class NetCrs {
|
|
|
4709
4709
|
}
|
|
4710
4710
|
}
|
|
4711
4711
|
exports.NetCrs = NetCrs;
|
|
4712
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
4712
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0X2Nycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jcnMvbmV0X2Nycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7R0FFRztBQUNILE1BQWEsTUFBTTtJQUlqQjtJQUNFOztPQUVHO0lBQ2EsU0FBaUI7UUFBakIsY0FBUyxHQUFULFNBQVMsQ0FBUTtJQUNoQyxDQUFDO0lBRUo7O09BRUc7SUFDSCxLQUFLLENBQUMsSUFBSTtRQUNSLE1BQU0sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzVCLE1BQU0sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxLQUFLLENBQUMsY0FBYztRQUNsQixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbkIsTUFBTSxLQUFLLEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUVoRCxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxtRkFBbUYsRUFBRTtZQUNoSCxPQUFPLEVBQUU7Z0JBQ1AsS0FBSyxFQUFFLFNBQVMsT0FBTyxJQUFJLEtBQUssRUFBRTthQUNuQztZQUNELEtBQUssRUFBRSxhQUFhO1NBQ3JCLENBQUMsQ0FBQztRQUVILE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksVUFBVSxDQUFDLE1BQU0sUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsY0FBYztRQUNsQixNQUFNLE9BQU8sR0FBRyxFQUFFLEdBQUcsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNsQyxNQUFNLEtBQUssR0FBRyxPQUFPLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUVoQyxNQUFNLFNBQVMsR0FBRyxNQUFNLEtBQUssQ0FBQyxtRkFBbUYsRUFBRTtZQUNqSCxPQUFPLEVBQUU7Z0JBQ1AsS0FBSyxFQUFFLFNBQVMsT0FBTyxJQUFJLEtBQUssRUFBRTthQUNuQztZQUNELEtBQUssRUFBRSxhQUFhO1NBQ3JCLENBQUMsQ0FBQztRQUVILE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksVUFBVSxDQUFDLE1BQU0sU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0NBQ0Y7QUFqRUQsd0JBaUVDIn0=
|
|
4713
4713
|
|
|
4714
4714
|
/***/ }),
|
|
4715
4715
|
|
|
@@ -5446,7 +5446,7 @@ exports.RawBuffer = RawBuffer;
|
|
|
5446
5446
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
5447
5447
|
|
|
5448
5448
|
"use strict";
|
|
5449
|
-
module.exports = __webpack_require__.p + "
|
|
5449
|
+
module.exports = __webpack_require__.p + "b03fe9ef064d8eba5ff7.wasm";
|
|
5450
5450
|
|
|
5451
5451
|
/***/ }),
|
|
5452
5452
|
|
|
@@ -5454,7 +5454,7 @@ module.exports = __webpack_require__.p + "622893dfa9efcd1f244c.wasm";
|
|
|
5454
5454
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
5455
5455
|
|
|
5456
5456
|
"use strict";
|
|
5457
|
-
module.exports = __webpack_require__.p + "
|
|
5457
|
+
module.exports = __webpack_require__.p + "7d24b8a508ae77ca0b04.wasm";
|
|
5458
5458
|
|
|
5459
5459
|
/***/ }),
|
|
5460
5460
|
|
|
@@ -6039,6 +6039,7 @@ function entries(customStore = defaultGetStore()) {
|
|
|
6039
6039
|
"use strict";
|
|
6040
6040
|
__webpack_require__.r(__webpack_exports__);
|
|
6041
6041
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
6042
|
+
/* harmony export */ __addDisposableResource: () => (/* binding */ __addDisposableResource),
|
|
6042
6043
|
/* harmony export */ __assign: () => (/* binding */ __assign),
|
|
6043
6044
|
/* harmony export */ __asyncDelegator: () => (/* binding */ __asyncDelegator),
|
|
6044
6045
|
/* harmony export */ __asyncGenerator: () => (/* binding */ __asyncGenerator),
|
|
@@ -6050,6 +6051,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
6050
6051
|
/* harmony export */ __classPrivateFieldSet: () => (/* binding */ __classPrivateFieldSet),
|
|
6051
6052
|
/* harmony export */ __createBinding: () => (/* binding */ __createBinding),
|
|
6052
6053
|
/* harmony export */ __decorate: () => (/* binding */ __decorate),
|
|
6054
|
+
/* harmony export */ __disposeResources: () => (/* binding */ __disposeResources),
|
|
6053
6055
|
/* harmony export */ __esDecorate: () => (/* binding */ __esDecorate),
|
|
6054
6056
|
/* harmony export */ __exportStar: () => (/* binding */ __exportStar),
|
|
6055
6057
|
/* harmony export */ __extends: () => (/* binding */ __extends),
|
|
@@ -6084,7 +6086,7 @@ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
|
6084
6086
|
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
6085
6087
|
PERFORMANCE OF THIS SOFTWARE.
|
|
6086
6088
|
***************************************************************************** */
|
|
6087
|
-
/* global Reflect, Promise */
|
|
6089
|
+
/* global Reflect, Promise, SuppressedError, Symbol */
|
|
6088
6090
|
|
|
6089
6091
|
var extendStatics = function(d, b) {
|
|
6090
6092
|
extendStatics = Object.setPrototypeOf ||
|
|
@@ -6364,6 +6366,53 @@ function __classPrivateFieldIn(state, receiver) {
|
|
|
6364
6366
|
return typeof state === "function" ? receiver === state : state.has(receiver);
|
|
6365
6367
|
}
|
|
6366
6368
|
|
|
6369
|
+
function __addDisposableResource(env, value, async) {
|
|
6370
|
+
if (value !== null && value !== void 0) {
|
|
6371
|
+
if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
|
|
6372
|
+
var dispose;
|
|
6373
|
+
if (async) {
|
|
6374
|
+
if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
|
|
6375
|
+
dispose = value[Symbol.asyncDispose];
|
|
6376
|
+
}
|
|
6377
|
+
if (dispose === void 0) {
|
|
6378
|
+
if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
|
|
6379
|
+
dispose = value[Symbol.dispose];
|
|
6380
|
+
}
|
|
6381
|
+
if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
|
|
6382
|
+
env.stack.push({ value: value, dispose: dispose, async: async });
|
|
6383
|
+
}
|
|
6384
|
+
else if (async) {
|
|
6385
|
+
env.stack.push({ async: true });
|
|
6386
|
+
}
|
|
6387
|
+
return value;
|
|
6388
|
+
}
|
|
6389
|
+
|
|
6390
|
+
var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
|
|
6391
|
+
var e = new Error(message);
|
|
6392
|
+
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
6393
|
+
};
|
|
6394
|
+
|
|
6395
|
+
function __disposeResources(env) {
|
|
6396
|
+
function fail(e) {
|
|
6397
|
+
env.error = env.hasError ? new _SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
|
|
6398
|
+
env.hasError = true;
|
|
6399
|
+
}
|
|
6400
|
+
function next() {
|
|
6401
|
+
while (env.stack.length) {
|
|
6402
|
+
var rec = env.stack.pop();
|
|
6403
|
+
try {
|
|
6404
|
+
var result = rec.dispose && rec.dispose.call(rec.value);
|
|
6405
|
+
if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
|
|
6406
|
+
}
|
|
6407
|
+
catch (e) {
|
|
6408
|
+
fail(e);
|
|
6409
|
+
}
|
|
6410
|
+
}
|
|
6411
|
+
if (env.hasError) throw env.error;
|
|
6412
|
+
}
|
|
6413
|
+
return next();
|
|
6414
|
+
}
|
|
6415
|
+
|
|
6367
6416
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
|
|
6368
6417
|
__extends,
|
|
6369
6418
|
__assign,
|
|
@@ -6390,6 +6439,8 @@ function __classPrivateFieldIn(state, receiver) {
|
|
|
6390
6439
|
__classPrivateFieldGet,
|
|
6391
6440
|
__classPrivateFieldSet,
|
|
6392
6441
|
__classPrivateFieldIn,
|
|
6442
|
+
__addDisposableResource,
|
|
6443
|
+
__disposeResources,
|
|
6393
6444
|
});
|
|
6394
6445
|
|
|
6395
6446
|
|
package/dest/node/crs/net_crs.js
CHANGED
|
@@ -31,9 +31,9 @@ export class NetCrs {
|
|
|
31
31
|
* Download the G2 points data.
|
|
32
32
|
*/
|
|
33
33
|
async downloadG2Data() {
|
|
34
|
-
const g2Start = 28 +
|
|
34
|
+
const g2Start = 28 + 5040001 * 64;
|
|
35
35
|
const g2End = g2Start + 128 - 1;
|
|
36
|
-
const response2 = await fetch('https://aztec-ignition.s3.amazonaws.com/MAIN%20IGNITION/
|
|
36
|
+
const response2 = await fetch('https://aztec-ignition.s3.amazonaws.com/MAIN%20IGNITION/monomial/transcript00.dat', {
|
|
37
37
|
headers: {
|
|
38
38
|
Range: `bytes=${g2Start}-${g2End}`,
|
|
39
39
|
},
|
|
@@ -56,4 +56,4 @@ export class NetCrs {
|
|
|
56
56
|
return this.g2Data;
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0X2Nycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jcnMvbmV0X2Nycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sT0FBTyxNQUFNO0lBSWpCO0lBQ0U7O09BRUc7SUFDYSxTQUFpQjtRQUFqQixjQUFTLEdBQVQsU0FBUyxDQUFRO0lBQ2hDLENBQUM7SUFFSjs7T0FFRztJQUNILEtBQUssQ0FBQyxJQUFJO1FBQ1IsTUFBTSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDNUIsTUFBTSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELEtBQUssQ0FBQyxjQUFjO1FBQ2xCLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNuQixNQUFNLEtBQUssR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRWhELE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLG1GQUFtRixFQUFFO1lBQ2hILE9BQU8sRUFBRTtnQkFDUCxLQUFLLEVBQUUsU0FBUyxPQUFPLElBQUksS0FBSyxFQUFFO2FBQ25DO1lBQ0QsS0FBSyxFQUFFLGFBQWE7U0FDckIsQ0FBQyxDQUFDO1FBRUgsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxVQUFVLENBQUMsTUFBTSxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxjQUFjO1FBQ2xCLE1BQU0sT0FBTyxHQUFHLEVBQUUsR0FBRyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sS0FBSyxHQUFHLE9BQU8sR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBRWhDLE1BQU0sU0FBUyxHQUFHLE1BQU0sS0FBSyxDQUFDLG1GQUFtRixFQUFFO1lBQ2pILE9BQU8sRUFBRTtnQkFDUCxLQUFLLEVBQUUsU0FBUyxPQUFPLElBQUksS0FBSyxFQUFFO2FBQ25DO1lBQ0QsS0FBSyxFQUFFLGFBQWE7U0FDckIsQ0FBQyxDQUFDO1FBRUgsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxVQUFVLENBQUMsTUFBTSxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRDs7O09BR0c7SUFDSCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFRDs7O09BR0c7SUFDSCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7Q0FDRiJ9
|
package/dest/node/main.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
export declare function proveAndVerify(
|
|
3
|
-
export declare function prove(
|
|
4
|
-
export declare function gateCount(
|
|
2
|
+
export declare function proveAndVerify(bytecodePath: string, witnessPath: string, crsPath: string, isRecursive: boolean): Promise<boolean>;
|
|
3
|
+
export declare function prove(bytecodePath: string, witnessPath: string, crsPath: string, isRecursive: boolean, outputPath: string): Promise<void>;
|
|
4
|
+
export declare function gateCount(bytecodePath: string): Promise<void>;
|
|
5
5
|
export declare function verify(proofPath: string, isRecursive: boolean, vkPath: string): Promise<boolean>;
|
|
6
6
|
export declare function contract(outputPath: string, vkPath: string): Promise<void>;
|
|
7
|
-
export declare function writeVk(
|
|
7
|
+
export declare function writeVk(bytecodePath: string, crsPath: string, outputPath: string): Promise<void>;
|
|
8
8
|
export declare function proofAsFields(proofPath: string, numInnerPublicInputs: number, outputPath: string): Promise<void>;
|
|
9
9
|
export declare function vkAsFields(vkPath: string, vkeyOutputPath: string): Promise<void>;
|
|
10
10
|
//# sourceMappingURL=main.d.ts.map
|
package/dest/node/main.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":";AA6EA,wBAAsB,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,oBAepH;AAED,wBAAsB,KAAK,CACzB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,OAAO,EACpB,UAAU,EAAE,MAAM,iBAiBnB;AAED,wBAAsB,SAAS,CAAC,YAAY,EAAE,MAAM,iBAOnD;AAED,wBAAsB,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAWnF;AAED,wBAAsB,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,iBAahE;AAED,wBAAsB,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,iBAiBtF;AAED,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,iBAmBtG;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,iBAiBtE"}
|
package/dest/node/main.js
CHANGED
|
@@ -6,28 +6,16 @@ import { gunzipSync } from 'zlib';
|
|
|
6
6
|
import { Command } from 'commander';
|
|
7
7
|
createDebug.log = console.error.bind(console);
|
|
8
8
|
const debug = createDebug('bb.js');
|
|
9
|
-
// Maximum we support.
|
|
10
|
-
const MAX_CIRCUIT_SIZE = 2 **
|
|
11
|
-
function
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
return parsed;
|
|
15
|
-
}
|
|
16
|
-
function getBytecode(jsonPath) {
|
|
17
|
-
const parsed = getJsonData(jsonPath);
|
|
18
|
-
const buffer = Buffer.from(parsed.bytecode, 'base64');
|
|
9
|
+
// Maximum we support natively. It is 2^19 for browser.
|
|
10
|
+
const MAX_CIRCUIT_SIZE = 2 ** 23;
|
|
11
|
+
function getBytecode(bytecodePath) {
|
|
12
|
+
const encodedCircuit = readFileSync(bytecodePath, 'utf-8');
|
|
13
|
+
const buffer = Buffer.from(encodedCircuit, 'base64');
|
|
19
14
|
const decompressed = gunzipSync(buffer);
|
|
20
15
|
return decompressed;
|
|
21
16
|
}
|
|
22
|
-
async function getGates(
|
|
23
|
-
const
|
|
24
|
-
if (parsed.gates) {
|
|
25
|
-
return +parsed.gates;
|
|
26
|
-
}
|
|
27
|
-
const { total } = await computeCircuitSize(jsonPath, api);
|
|
28
|
-
const jsonData = getJsonData(jsonPath);
|
|
29
|
-
jsonData.gates = total;
|
|
30
|
-
writeFileSync(jsonPath, JSON.stringify(jsonData));
|
|
17
|
+
async function getGates(bytecodePath, api) {
|
|
18
|
+
const { total } = await computeCircuitSize(bytecodePath, api);
|
|
31
19
|
return total;
|
|
32
20
|
}
|
|
33
21
|
function getWitness(witnessPath) {
|
|
@@ -35,15 +23,15 @@ function getWitness(witnessPath) {
|
|
|
35
23
|
const decompressed = gunzipSync(data);
|
|
36
24
|
return decompressed;
|
|
37
25
|
}
|
|
38
|
-
async function computeCircuitSize(
|
|
26
|
+
async function computeCircuitSize(bytecodePath, api) {
|
|
39
27
|
debug(`computing circuit size...`);
|
|
40
|
-
const bytecode = getBytecode(
|
|
28
|
+
const bytecode = getBytecode(bytecodePath);
|
|
41
29
|
const [exact, total, subgroup] = await api.acirGetCircuitSizes(bytecode);
|
|
42
30
|
return { exact, total, subgroup };
|
|
43
31
|
}
|
|
44
|
-
async function init(
|
|
32
|
+
async function init(bytecodePath, crsPath) {
|
|
45
33
|
const api = await newBarretenbergApiAsync();
|
|
46
|
-
const circuitSize = await getGates(
|
|
34
|
+
const circuitSize = await getGates(bytecodePath, api);
|
|
47
35
|
const subgroupSize = Math.pow(2, Math.ceil(Math.log2(circuitSize)));
|
|
48
36
|
if (subgroupSize > MAX_CIRCUIT_SIZE) {
|
|
49
37
|
throw new Error(`Circuit size of ${subgroupSize} exceeds max supported of ${MAX_CIRCUIT_SIZE}`);
|
|
@@ -56,7 +44,7 @@ async function init(jsonPath, crsPath) {
|
|
|
56
44
|
// Important to init slab allocator as first thing, to ensure maximum memory efficiency.
|
|
57
45
|
await api.commonInitSlabAllocator(subgroupSize);
|
|
58
46
|
// Load CRS into wasm global CRS state.
|
|
59
|
-
// TODO: Make RawBuffer be default
|
|
47
|
+
// TODO: Make RawBuffer be default behavior, and have a specific Vector type for when wanting length prefixed.
|
|
60
48
|
await api.srsInitSrs(new RawBuffer(crs.getG1Data()), crs.numPoints, new RawBuffer(crs.getG2Data()));
|
|
61
49
|
const acirComposer = await api.acirNewAcirComposer(subgroupSize);
|
|
62
50
|
return { api, acirComposer, circuitSize: subgroupSize };
|
|
@@ -70,41 +58,42 @@ async function initLite() {
|
|
|
70
58
|
const acirComposer = await api.acirNewAcirComposer(0);
|
|
71
59
|
return { api, acirComposer };
|
|
72
60
|
}
|
|
73
|
-
export async function proveAndVerify(
|
|
74
|
-
const { api, acirComposer } = await init(
|
|
61
|
+
export async function proveAndVerify(bytecodePath, witnessPath, crsPath, isRecursive) {
|
|
62
|
+
const { api, acirComposer } = await init(bytecodePath, crsPath);
|
|
75
63
|
try {
|
|
76
64
|
debug(`creating proof...`);
|
|
77
|
-
const bytecode = getBytecode(
|
|
65
|
+
const bytecode = getBytecode(bytecodePath);
|
|
78
66
|
const witness = getWitness(witnessPath);
|
|
79
67
|
const proof = await api.acirCreateProof(acirComposer, bytecode, witness, isRecursive);
|
|
80
68
|
debug(`verifying...`);
|
|
81
69
|
const verified = await api.acirVerifyProof(acirComposer, proof, isRecursive);
|
|
82
|
-
|
|
70
|
+
process.stdout.write(`${verified}`);
|
|
83
71
|
return verified;
|
|
84
72
|
}
|
|
85
73
|
finally {
|
|
86
74
|
await api.destroy();
|
|
87
75
|
}
|
|
88
76
|
}
|
|
89
|
-
export async function prove(
|
|
90
|
-
const { api, acirComposer } = await init(
|
|
77
|
+
export async function prove(bytecodePath, witnessPath, crsPath, isRecursive, outputPath) {
|
|
78
|
+
const { api, acirComposer } = await init(bytecodePath, crsPath);
|
|
91
79
|
try {
|
|
92
80
|
debug(`creating proof...`);
|
|
93
|
-
const bytecode = getBytecode(
|
|
81
|
+
const bytecode = getBytecode(bytecodePath);
|
|
94
82
|
const witness = getWitness(witnessPath);
|
|
95
83
|
const proof = await api.acirCreateProof(acirComposer, bytecode, witness, isRecursive);
|
|
96
84
|
debug(`done.`);
|
|
85
|
+
process.stdout.write(proof);
|
|
97
86
|
writeFileSync(outputPath, proof);
|
|
98
|
-
|
|
87
|
+
debug(`proof written to: ${outputPath}`);
|
|
99
88
|
}
|
|
100
89
|
finally {
|
|
101
90
|
await api.destroy();
|
|
102
91
|
}
|
|
103
92
|
}
|
|
104
|
-
export async function gateCount(
|
|
93
|
+
export async function gateCount(bytecodePath) {
|
|
105
94
|
const api = await newBarretenbergApiAsync(1);
|
|
106
95
|
try {
|
|
107
|
-
|
|
96
|
+
process.stdout.write(`${await getGates(bytecodePath, api)}`);
|
|
108
97
|
}
|
|
109
98
|
finally {
|
|
110
99
|
await api.destroy();
|
|
@@ -115,7 +104,7 @@ export async function verify(proofPath, isRecursive, vkPath) {
|
|
|
115
104
|
try {
|
|
116
105
|
await api.acirLoadVerificationKey(acirComposer, new RawBuffer(readFileSync(vkPath)));
|
|
117
106
|
const verified = await api.acirVerifyProof(acirComposer, readFileSync(proofPath), isRecursive);
|
|
118
|
-
|
|
107
|
+
process.stdout.write(`${verified}`);
|
|
119
108
|
return verified;
|
|
120
109
|
}
|
|
121
110
|
finally {
|
|
@@ -127,33 +116,25 @@ export async function contract(outputPath, vkPath) {
|
|
|
127
116
|
try {
|
|
128
117
|
await api.acirLoadVerificationKey(acirComposer, new RawBuffer(readFileSync(vkPath)));
|
|
129
118
|
const contract = await api.acirGetSolidityVerifier(acirComposer);
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
}
|
|
133
|
-
else {
|
|
134
|
-
writeFileSync(outputPath, contract);
|
|
135
|
-
console.log(`contract written to: ${outputPath}`);
|
|
136
|
-
}
|
|
119
|
+
process.stdout.write(contract);
|
|
120
|
+
writeFileSync(outputPath, contract);
|
|
121
|
+
debug(`contract written to: ${outputPath}`);
|
|
137
122
|
}
|
|
138
123
|
finally {
|
|
139
124
|
await api.destroy();
|
|
140
125
|
}
|
|
141
126
|
}
|
|
142
|
-
export async function writeVk(
|
|
143
|
-
const { api, acirComposer } = await init(
|
|
127
|
+
export async function writeVk(bytecodePath, crsPath, outputPath) {
|
|
128
|
+
const { api, acirComposer } = await init(bytecodePath, crsPath);
|
|
144
129
|
try {
|
|
145
130
|
debug('initing proving key...');
|
|
146
|
-
const bytecode = getBytecode(
|
|
131
|
+
const bytecode = getBytecode(bytecodePath);
|
|
147
132
|
await api.acirInitProvingKey(acirComposer, bytecode);
|
|
148
133
|
debug('initing verification key...');
|
|
149
134
|
const vk = await api.acirGetVerificationKey(acirComposer);
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
}
|
|
153
|
-
else {
|
|
154
|
-
writeFileSync(outputPath, vk);
|
|
155
|
-
console.log(`vk written to: ${outputPath}`);
|
|
156
|
-
}
|
|
135
|
+
process.stdout.write(vk);
|
|
136
|
+
writeFileSync(outputPath, vk);
|
|
137
|
+
debug(`vk written to: ${outputPath}`);
|
|
157
138
|
}
|
|
158
139
|
finally {
|
|
159
140
|
await api.destroy();
|
|
@@ -164,7 +145,9 @@ export async function proofAsFields(proofPath, numInnerPublicInputs, outputPath)
|
|
|
164
145
|
try {
|
|
165
146
|
debug('serializing proof byte array into field elements');
|
|
166
147
|
const proofAsFields = await api.acirSerializeProofIntoFields(acirComposer, readFileSync(proofPath), numInnerPublicInputs);
|
|
167
|
-
|
|
148
|
+
const jsonProofAsFields = JSON.stringify(proofAsFields.map(f => f.toString()));
|
|
149
|
+
process.stdout.write(jsonProofAsFields);
|
|
150
|
+
writeFileSync(outputPath, jsonProofAsFields);
|
|
168
151
|
debug('done.');
|
|
169
152
|
}
|
|
170
153
|
finally {
|
|
@@ -178,7 +161,9 @@ export async function vkAsFields(vkPath, vkeyOutputPath) {
|
|
|
178
161
|
await api.acirLoadVerificationKey(acirComposer, new RawBuffer(readFileSync(vkPath)));
|
|
179
162
|
const [vkAsFields, vkHash] = await api.acirSerializeVerificationKeyIntoFields(acirComposer);
|
|
180
163
|
const output = [vkHash, ...vkAsFields].map(f => f.toString());
|
|
181
|
-
|
|
164
|
+
const jsonVKAsFields = JSON.stringify(output);
|
|
165
|
+
process.stdout.write(jsonVKAsFields);
|
|
166
|
+
writeFileSync(vkeyOutputPath, jsonVKAsFields);
|
|
182
167
|
debug('done.');
|
|
183
168
|
}
|
|
184
169
|
finally {
|
|
@@ -196,32 +181,32 @@ function handleGlobalOptions() {
|
|
|
196
181
|
program
|
|
197
182
|
.command('prove_and_verify')
|
|
198
183
|
.description('Generate a proof and verify it. Process exits with success or failure code.')
|
|
199
|
-
.option('-
|
|
184
|
+
.option('-b, --bytecode-path <path>', 'Specify the bytecode path', './target/main.bytecode')
|
|
200
185
|
.option('-w, --witness-path <path>', 'Specify the witness path', './target/witness.tr')
|
|
201
186
|
.option('-r, --recursive', 'prove and verify using recursive prover and verifier', false)
|
|
202
|
-
.action(async ({
|
|
187
|
+
.action(async ({ bytecodePath, witnessPath, recursive, crsPath }) => {
|
|
203
188
|
handleGlobalOptions();
|
|
204
|
-
const result = await proveAndVerify(
|
|
189
|
+
const result = await proveAndVerify(bytecodePath, witnessPath, crsPath, recursive);
|
|
205
190
|
process.exit(result ? 0 : 1);
|
|
206
191
|
});
|
|
207
192
|
program
|
|
208
193
|
.command('prove')
|
|
209
194
|
.description('Generate a proof and write it to a file.')
|
|
210
|
-
.option('-
|
|
195
|
+
.option('-b, --bytecode-path <path>', 'Specify the bytecode path', './target/main.bytecode')
|
|
211
196
|
.option('-w, --witness-path <path>', 'Specify the witness path', './target/witness.tr')
|
|
212
197
|
.option('-r, --recursive', 'prove using recursive prover', false)
|
|
213
198
|
.option('-o, --output-path <path>', 'Specify the proof output path', './proofs/proof')
|
|
214
|
-
.action(async ({
|
|
199
|
+
.action(async ({ bytecodePath, witnessPath, recursive, outputPath, crsPath }) => {
|
|
215
200
|
handleGlobalOptions();
|
|
216
|
-
await prove(
|
|
201
|
+
await prove(bytecodePath, witnessPath, crsPath, recursive, outputPath);
|
|
217
202
|
});
|
|
218
203
|
program
|
|
219
204
|
.command('gates')
|
|
220
205
|
.description('Print gate count to standard output.')
|
|
221
|
-
.option('-
|
|
222
|
-
.action(async ({
|
|
206
|
+
.option('-b, --bytecode-path <path>', 'Specify the bytecode path', './target/main.bytecode')
|
|
207
|
+
.action(async ({ bytecodePath: bytecodePath }) => {
|
|
223
208
|
handleGlobalOptions();
|
|
224
|
-
await gateCount(
|
|
209
|
+
await gateCount(bytecodePath);
|
|
225
210
|
});
|
|
226
211
|
program
|
|
227
212
|
.command('verify')
|
|
@@ -237,7 +222,7 @@ program
|
|
|
237
222
|
program
|
|
238
223
|
.command('contract')
|
|
239
224
|
.description('Output solidity verification key contract.')
|
|
240
|
-
.option('-
|
|
225
|
+
.option('-b, --bytecode-path <path>', 'Specify the bytecode path', './target/main.bytecode')
|
|
241
226
|
.option('-o, --output-path <path>', 'Specify the path to write the contract', '-')
|
|
242
227
|
.requiredOption('-k, --vk <path>', 'path to a verification key. avoids recomputation.')
|
|
243
228
|
.action(async ({ outputPath, vk }) => {
|
|
@@ -247,11 +232,11 @@ program
|
|
|
247
232
|
program
|
|
248
233
|
.command('write_vk')
|
|
249
234
|
.description('Output verification key.')
|
|
250
|
-
.option('-
|
|
235
|
+
.option('-b, --bytecode-path <path>', 'Specify the bytecode path', './target/main.bytecode')
|
|
251
236
|
.requiredOption('-o, --output-path <path>', 'Specify the path to write the key')
|
|
252
|
-
.action(async ({
|
|
237
|
+
.action(async ({ bytecodePath, outputPath, crsPath }) => {
|
|
253
238
|
handleGlobalOptions();
|
|
254
|
-
await writeVk(
|
|
239
|
+
await writeVk(bytecodePath, crsPath, outputPath);
|
|
255
240
|
});
|
|
256
241
|
program
|
|
257
242
|
.command('proof_as_fields')
|
|
@@ -265,7 +250,7 @@ program
|
|
|
265
250
|
});
|
|
266
251
|
program
|
|
267
252
|
.command('vk_as_fields')
|
|
268
|
-
.description('Return the
|
|
253
|
+
.description('Return the verification key represented as fields elements. Also return the verification key hash.')
|
|
269
254
|
.requiredOption('-i, --input-path <path>', 'Specifies the vk path (output from write_vk)')
|
|
270
255
|
.requiredOption('-o, --output-path <path>', 'Specify the JSON path to write the verification key fields and key hash')
|
|
271
256
|
.action(async ({ inputPath, outputPath }) => {
|
|
@@ -273,4 +258,4 @@ program
|
|
|
273
258
|
await vkAsFields(inputPath, outputPath);
|
|
274
259
|
});
|
|
275
260
|
program.name('bb.js').parse(process.argv);
|
|
276
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUUsR0FBRyxFQUF3Qix1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDM0YsT0FBTyxXQUFXLE1BQU0sT0FBTyxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVwQyxXQUFXLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzlDLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUVuQyxzQkFBc0I7QUFDdEIsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO0FBRWpDLFNBQVMsV0FBVyxDQUFDLFFBQWdCO0lBQ25DLE1BQU0sSUFBSSxHQUFHLFlBQVksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDN0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsUUFBZ0I7SUFDbkMsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3JDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN0RCxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEMsT0FBTyxZQUFZLENBQUM7QUFDdEIsQ0FBQztB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
|
|
261
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUUsR0FBRyxFQUF3Qix1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDM0YsT0FBTyxXQUFXLE1BQU0sT0FBTyxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVwQyxXQUFXLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzlDLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUVuQyx1REFBdUQ7QUFDdkQsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO0FBRWpDLFNBQVMsV0FBVyxDQUFDLFlBQW9CO0lBQ3ZDLE1BQU0sY0FBYyxHQUFHLFlBQVksQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDM0QsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDckQsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hDLE9BQU8sWUFBWSxDQUFDO0FBQ3RCLENBQUM7QUFFRCxLQUFLLFVBQVUsUUFBUSxDQUFDLFlBQW9CLEVBQUUsR0FBeUI7SUFDckUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sa0JBQWtCLENBQUMsWUFBWSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzlELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFDLFdBQW1C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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/bb.js",
|
|
3
|
-
"version": "0.3
|
|
3
|
+
"version": "0.4.3",
|
|
4
4
|
"homepage": "https://github.com/AztecProtocol/aztec-packages/tree/master/circuits/cpp/barretenberg/ts",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -9,8 +9,10 @@
|
|
|
9
9
|
"displayName": "bb.js",
|
|
10
10
|
"tsconfig": "./tsconfig.json"
|
|
11
11
|
},
|
|
12
|
-
"main": "./dest/index.js",
|
|
13
|
-
"bin":
|
|
12
|
+
"main": "./dest/node/index.js",
|
|
13
|
+
"bin": {
|
|
14
|
+
"bb": "dest/node/main.js"
|
|
15
|
+
},
|
|
14
16
|
"files": [
|
|
15
17
|
"src/",
|
|
16
18
|
"dest/",
|
|
@@ -66,6 +68,7 @@
|
|
|
66
68
|
"ts-jest": "^29.1.0",
|
|
67
69
|
"ts-loader": "^9.4.2",
|
|
68
70
|
"tsconfig-paths-webpack-plugin": "^4.0.1",
|
|
71
|
+
"tslib": "^2.6.2",
|
|
69
72
|
"typescript": "^5.0.4",
|
|
70
73
|
"webpack": "^5.82.1",
|
|
71
74
|
"webpack-cli": "^5.1.1",
|
package/src/crs/net_crs.ts
CHANGED
|
@@ -38,10 +38,10 @@ export class NetCrs {
|
|
|
38
38
|
* Download the G2 points data.
|
|
39
39
|
*/
|
|
40
40
|
async downloadG2Data() {
|
|
41
|
-
const g2Start = 28 +
|
|
41
|
+
const g2Start = 28 + 5040001 * 64;
|
|
42
42
|
const g2End = g2Start + 128 - 1;
|
|
43
43
|
|
|
44
|
-
const response2 = await fetch('https://aztec-ignition.s3.amazonaws.com/MAIN%20IGNITION/
|
|
44
|
+
const response2 = await fetch('https://aztec-ignition.s3.amazonaws.com/MAIN%20IGNITION/monomial/transcript00.dat', {
|
|
45
45
|
headers: {
|
|
46
46
|
Range: `bytes=${g2Start}-${g2End}`,
|
|
47
47
|
},
|
package/src/main.ts
CHANGED
|
@@ -8,31 +8,18 @@ import { Command } from 'commander';
|
|
|
8
8
|
createDebug.log = console.error.bind(console);
|
|
9
9
|
const debug = createDebug('bb.js');
|
|
10
10
|
|
|
11
|
-
// Maximum we support.
|
|
12
|
-
const MAX_CIRCUIT_SIZE = 2 **
|
|
11
|
+
// Maximum we support natively. It is 2^19 for browser.
|
|
12
|
+
const MAX_CIRCUIT_SIZE = 2 ** 23;
|
|
13
13
|
|
|
14
|
-
function
|
|
15
|
-
const
|
|
16
|
-
const
|
|
17
|
-
return parsed;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
function getBytecode(jsonPath: string) {
|
|
21
|
-
const parsed = getJsonData(jsonPath);
|
|
22
|
-
const buffer = Buffer.from(parsed.bytecode, 'base64');
|
|
14
|
+
function getBytecode(bytecodePath: string) {
|
|
15
|
+
const encodedCircuit = readFileSync(bytecodePath, 'utf-8');
|
|
16
|
+
const buffer = Buffer.from(encodedCircuit, 'base64');
|
|
23
17
|
const decompressed = gunzipSync(buffer);
|
|
24
18
|
return decompressed;
|
|
25
19
|
}
|
|
26
20
|
|
|
27
|
-
async function getGates(
|
|
28
|
-
const
|
|
29
|
-
if (parsed.gates) {
|
|
30
|
-
return +parsed.gates;
|
|
31
|
-
}
|
|
32
|
-
const { total } = await computeCircuitSize(jsonPath, api);
|
|
33
|
-
const jsonData = getJsonData(jsonPath);
|
|
34
|
-
jsonData.gates = total;
|
|
35
|
-
writeFileSync(jsonPath, JSON.stringify(jsonData));
|
|
21
|
+
async function getGates(bytecodePath: string, api: BarretenbergApiAsync) {
|
|
22
|
+
const { total } = await computeCircuitSize(bytecodePath, api);
|
|
36
23
|
return total;
|
|
37
24
|
}
|
|
38
25
|
|
|
@@ -42,17 +29,17 @@ function getWitness(witnessPath: string) {
|
|
|
42
29
|
return decompressed;
|
|
43
30
|
}
|
|
44
31
|
|
|
45
|
-
async function computeCircuitSize(
|
|
32
|
+
async function computeCircuitSize(bytecodePath: string, api: BarretenbergApiAsync) {
|
|
46
33
|
debug(`computing circuit size...`);
|
|
47
|
-
const bytecode = getBytecode(
|
|
34
|
+
const bytecode = getBytecode(bytecodePath);
|
|
48
35
|
const [exact, total, subgroup] = await api.acirGetCircuitSizes(bytecode);
|
|
49
36
|
return { exact, total, subgroup };
|
|
50
37
|
}
|
|
51
38
|
|
|
52
|
-
async function init(
|
|
39
|
+
async function init(bytecodePath: string, crsPath: string) {
|
|
53
40
|
const api = await newBarretenbergApiAsync();
|
|
54
41
|
|
|
55
|
-
const circuitSize = await getGates(
|
|
42
|
+
const circuitSize = await getGates(bytecodePath, api);
|
|
56
43
|
const subgroupSize = Math.pow(2, Math.ceil(Math.log2(circuitSize)));
|
|
57
44
|
if (subgroupSize > MAX_CIRCUIT_SIZE) {
|
|
58
45
|
throw new Error(`Circuit size of ${subgroupSize} exceeds max supported of ${MAX_CIRCUIT_SIZE}`);
|
|
@@ -68,7 +55,7 @@ async function init(jsonPath: string, crsPath: string) {
|
|
|
68
55
|
await api.commonInitSlabAllocator(subgroupSize);
|
|
69
56
|
|
|
70
57
|
// Load CRS into wasm global CRS state.
|
|
71
|
-
// TODO: Make RawBuffer be default
|
|
58
|
+
// TODO: Make RawBuffer be default behavior, and have a specific Vector type for when wanting length prefixed.
|
|
72
59
|
await api.srsInitSrs(new RawBuffer(crs.getG1Data()), crs.numPoints, new RawBuffer(crs.getG2Data()));
|
|
73
60
|
|
|
74
61
|
const acirComposer = await api.acirNewAcirComposer(subgroupSize);
|
|
@@ -88,17 +75,17 @@ async function initLite() {
|
|
|
88
75
|
return { api, acirComposer };
|
|
89
76
|
}
|
|
90
77
|
|
|
91
|
-
export async function proveAndVerify(
|
|
92
|
-
const { api, acirComposer } = await init(
|
|
78
|
+
export async function proveAndVerify(bytecodePath: string, witnessPath: string, crsPath: string, isRecursive: boolean) {
|
|
79
|
+
const { api, acirComposer } = await init(bytecodePath, crsPath);
|
|
93
80
|
try {
|
|
94
81
|
debug(`creating proof...`);
|
|
95
|
-
const bytecode = getBytecode(
|
|
82
|
+
const bytecode = getBytecode(bytecodePath);
|
|
96
83
|
const witness = getWitness(witnessPath);
|
|
97
84
|
const proof = await api.acirCreateProof(acirComposer, bytecode, witness, isRecursive);
|
|
98
85
|
|
|
99
86
|
debug(`verifying...`);
|
|
100
87
|
const verified = await api.acirVerifyProof(acirComposer, proof, isRecursive);
|
|
101
|
-
|
|
88
|
+
process.stdout.write(`${verified}`);
|
|
102
89
|
return verified;
|
|
103
90
|
} finally {
|
|
104
91
|
await api.destroy();
|
|
@@ -106,31 +93,33 @@ export async function proveAndVerify(jsonPath: string, witnessPath: string, crsP
|
|
|
106
93
|
}
|
|
107
94
|
|
|
108
95
|
export async function prove(
|
|
109
|
-
|
|
96
|
+
bytecodePath: string,
|
|
110
97
|
witnessPath: string,
|
|
111
98
|
crsPath: string,
|
|
112
99
|
isRecursive: boolean,
|
|
113
100
|
outputPath: string,
|
|
114
101
|
) {
|
|
115
|
-
const { api, acirComposer } = await init(
|
|
102
|
+
const { api, acirComposer } = await init(bytecodePath, crsPath);
|
|
116
103
|
try {
|
|
117
104
|
debug(`creating proof...`);
|
|
118
|
-
const bytecode = getBytecode(
|
|
105
|
+
const bytecode = getBytecode(bytecodePath);
|
|
119
106
|
const witness = getWitness(witnessPath);
|
|
120
107
|
const proof = await api.acirCreateProof(acirComposer, bytecode, witness, isRecursive);
|
|
121
108
|
debug(`done.`);
|
|
122
109
|
|
|
110
|
+
process.stdout.write(proof);
|
|
123
111
|
writeFileSync(outputPath, proof);
|
|
124
|
-
|
|
112
|
+
|
|
113
|
+
debug(`proof written to: ${outputPath}`);
|
|
125
114
|
} finally {
|
|
126
115
|
await api.destroy();
|
|
127
116
|
}
|
|
128
117
|
}
|
|
129
118
|
|
|
130
|
-
export async function gateCount(
|
|
119
|
+
export async function gateCount(bytecodePath: string) {
|
|
131
120
|
const api = await newBarretenbergApiAsync(1);
|
|
132
121
|
try {
|
|
133
|
-
|
|
122
|
+
process.stdout.write(`${await getGates(bytecodePath, api)}`);
|
|
134
123
|
} finally {
|
|
135
124
|
await api.destroy();
|
|
136
125
|
}
|
|
@@ -141,7 +130,8 @@ export async function verify(proofPath: string, isRecursive: boolean, vkPath: st
|
|
|
141
130
|
try {
|
|
142
131
|
await api.acirLoadVerificationKey(acirComposer, new RawBuffer(readFileSync(vkPath)));
|
|
143
132
|
const verified = await api.acirVerifyProof(acirComposer, readFileSync(proofPath), isRecursive);
|
|
144
|
-
|
|
133
|
+
|
|
134
|
+
process.stdout.write(`${verified}`);
|
|
145
135
|
return verified;
|
|
146
136
|
} finally {
|
|
147
137
|
await api.destroy();
|
|
@@ -153,32 +143,30 @@ export async function contract(outputPath: string, vkPath: string) {
|
|
|
153
143
|
try {
|
|
154
144
|
await api.acirLoadVerificationKey(acirComposer, new RawBuffer(readFileSync(vkPath)));
|
|
155
145
|
const contract = await api.acirGetSolidityVerifier(acirComposer);
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
}
|
|
146
|
+
|
|
147
|
+
process.stdout.write(contract);
|
|
148
|
+
writeFileSync(outputPath, contract);
|
|
149
|
+
|
|
150
|
+
debug(`contract written to: ${outputPath}`);
|
|
162
151
|
} finally {
|
|
163
152
|
await api.destroy();
|
|
164
153
|
}
|
|
165
154
|
}
|
|
166
155
|
|
|
167
|
-
export async function writeVk(
|
|
168
|
-
const { api, acirComposer } = await init(
|
|
156
|
+
export async function writeVk(bytecodePath: string, crsPath: string, outputPath: string) {
|
|
157
|
+
const { api, acirComposer } = await init(bytecodePath, crsPath);
|
|
169
158
|
try {
|
|
170
159
|
debug('initing proving key...');
|
|
171
|
-
const bytecode = getBytecode(
|
|
160
|
+
const bytecode = getBytecode(bytecodePath);
|
|
172
161
|
await api.acirInitProvingKey(acirComposer, bytecode);
|
|
173
162
|
|
|
174
163
|
debug('initing verification key...');
|
|
175
164
|
const vk = await api.acirGetVerificationKey(acirComposer);
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
}
|
|
165
|
+
|
|
166
|
+
process.stdout.write(vk);
|
|
167
|
+
writeFileSync(outputPath, vk);
|
|
168
|
+
|
|
169
|
+
debug(`vk written to: ${outputPath}`);
|
|
182
170
|
} finally {
|
|
183
171
|
await api.destroy();
|
|
184
172
|
}
|
|
@@ -194,8 +182,11 @@ export async function proofAsFields(proofPath: string, numInnerPublicInputs: num
|
|
|
194
182
|
readFileSync(proofPath),
|
|
195
183
|
numInnerPublicInputs,
|
|
196
184
|
);
|
|
185
|
+
const jsonProofAsFields = JSON.stringify(proofAsFields.map(f => f.toString()));
|
|
186
|
+
|
|
187
|
+
process.stdout.write(jsonProofAsFields);
|
|
188
|
+
writeFileSync(outputPath, jsonProofAsFields);
|
|
197
189
|
|
|
198
|
-
writeFileSync(outputPath, JSON.stringify(proofAsFields.map(f => f.toString())));
|
|
199
190
|
debug('done.');
|
|
200
191
|
} finally {
|
|
201
192
|
await api.destroy();
|
|
@@ -210,7 +201,11 @@ export async function vkAsFields(vkPath: string, vkeyOutputPath: string) {
|
|
|
210
201
|
await api.acirLoadVerificationKey(acirComposer, new RawBuffer(readFileSync(vkPath)));
|
|
211
202
|
const [vkAsFields, vkHash] = await api.acirSerializeVerificationKeyIntoFields(acirComposer);
|
|
212
203
|
const output = [vkHash, ...vkAsFields].map(f => f.toString());
|
|
213
|
-
|
|
204
|
+
const jsonVKAsFields = JSON.stringify(output);
|
|
205
|
+
|
|
206
|
+
process.stdout.write(jsonVKAsFields);
|
|
207
|
+
writeFileSync(vkeyOutputPath, jsonVKAsFields);
|
|
208
|
+
|
|
214
209
|
debug('done.');
|
|
215
210
|
} finally {
|
|
216
211
|
await api.destroy();
|
|
@@ -231,34 +226,34 @@ function handleGlobalOptions() {
|
|
|
231
226
|
program
|
|
232
227
|
.command('prove_and_verify')
|
|
233
228
|
.description('Generate a proof and verify it. Process exits with success or failure code.')
|
|
234
|
-
.option('-
|
|
229
|
+
.option('-b, --bytecode-path <path>', 'Specify the bytecode path', './target/main.bytecode')
|
|
235
230
|
.option('-w, --witness-path <path>', 'Specify the witness path', './target/witness.tr')
|
|
236
231
|
.option('-r, --recursive', 'prove and verify using recursive prover and verifier', false)
|
|
237
|
-
.action(async ({
|
|
232
|
+
.action(async ({ bytecodePath, witnessPath, recursive, crsPath }) => {
|
|
238
233
|
handleGlobalOptions();
|
|
239
|
-
const result = await proveAndVerify(
|
|
234
|
+
const result = await proveAndVerify(bytecodePath, witnessPath, crsPath, recursive);
|
|
240
235
|
process.exit(result ? 0 : 1);
|
|
241
236
|
});
|
|
242
237
|
|
|
243
238
|
program
|
|
244
239
|
.command('prove')
|
|
245
240
|
.description('Generate a proof and write it to a file.')
|
|
246
|
-
.option('-
|
|
241
|
+
.option('-b, --bytecode-path <path>', 'Specify the bytecode path', './target/main.bytecode')
|
|
247
242
|
.option('-w, --witness-path <path>', 'Specify the witness path', './target/witness.tr')
|
|
248
243
|
.option('-r, --recursive', 'prove using recursive prover', false)
|
|
249
244
|
.option('-o, --output-path <path>', 'Specify the proof output path', './proofs/proof')
|
|
250
|
-
.action(async ({
|
|
245
|
+
.action(async ({ bytecodePath, witnessPath, recursive, outputPath, crsPath }) => {
|
|
251
246
|
handleGlobalOptions();
|
|
252
|
-
await prove(
|
|
247
|
+
await prove(bytecodePath, witnessPath, crsPath, recursive, outputPath);
|
|
253
248
|
});
|
|
254
249
|
|
|
255
250
|
program
|
|
256
251
|
.command('gates')
|
|
257
252
|
.description('Print gate count to standard output.')
|
|
258
|
-
.option('-
|
|
259
|
-
.action(async ({
|
|
253
|
+
.option('-b, --bytecode-path <path>', 'Specify the bytecode path', './target/main.bytecode')
|
|
254
|
+
.action(async ({ bytecodePath: bytecodePath }) => {
|
|
260
255
|
handleGlobalOptions();
|
|
261
|
-
await gateCount(
|
|
256
|
+
await gateCount(bytecodePath);
|
|
262
257
|
});
|
|
263
258
|
|
|
264
259
|
program
|
|
@@ -276,7 +271,7 @@ program
|
|
|
276
271
|
program
|
|
277
272
|
.command('contract')
|
|
278
273
|
.description('Output solidity verification key contract.')
|
|
279
|
-
.option('-
|
|
274
|
+
.option('-b, --bytecode-path <path>', 'Specify the bytecode path', './target/main.bytecode')
|
|
280
275
|
.option('-o, --output-path <path>', 'Specify the path to write the contract', '-')
|
|
281
276
|
.requiredOption('-k, --vk <path>', 'path to a verification key. avoids recomputation.')
|
|
282
277
|
.action(async ({ outputPath, vk }) => {
|
|
@@ -287,11 +282,11 @@ program
|
|
|
287
282
|
program
|
|
288
283
|
.command('write_vk')
|
|
289
284
|
.description('Output verification key.')
|
|
290
|
-
.option('-
|
|
285
|
+
.option('-b, --bytecode-path <path>', 'Specify the bytecode path', './target/main.bytecode')
|
|
291
286
|
.requiredOption('-o, --output-path <path>', 'Specify the path to write the key')
|
|
292
|
-
.action(async ({
|
|
287
|
+
.action(async ({ bytecodePath, outputPath, crsPath }) => {
|
|
293
288
|
handleGlobalOptions();
|
|
294
|
-
await writeVk(
|
|
289
|
+
await writeVk(bytecodePath, crsPath, outputPath);
|
|
295
290
|
});
|
|
296
291
|
|
|
297
292
|
program
|
|
@@ -307,7 +302,7 @@ program
|
|
|
307
302
|
|
|
308
303
|
program
|
|
309
304
|
.command('vk_as_fields')
|
|
310
|
-
.description('Return the
|
|
305
|
+
.description('Return the verification key represented as fields elements. Also return the verification key hash.')
|
|
311
306
|
.requiredOption('-i, --input-path <path>', 'Specifies the vk path (output from write_vk)')
|
|
312
307
|
.requiredOption('-o, --output-path <path>', 'Specify the JSON path to write the verification key fields and key hash')
|
|
313
308
|
.action(async ({ inputPath, outputPath }) => {
|