@aztec/bb.js
Advanced tools
Comparing version 0.15.0 to 0.15.1
@@ -1,9 +0,9 @@ | ||
import { BarretenbergBinder } from '../barretenberg_binder/index.js'; | ||
import { BarretenbergWasmWorker, BarretenbergWasm } from '../barretenberg_wasm/index.js'; | ||
import { Fr, Fq, Point, Buffer32, Buffer128, Ptr } from '../types/index.js'; | ||
export declare class BarretenbergApi { | ||
binder: BarretenbergBinder; | ||
constructor(binder: BarretenbergBinder); | ||
destroy(): Promise<void>; | ||
protected wasm: BarretenbergWasmWorker; | ||
constructor(wasm: BarretenbergWasmWorker); | ||
pedersenCommit(inputsBuffer: Fr[]): Promise<Point>; | ||
pedersenHash(inputsBuffer: Fr[], hashIndex: number): Promise<Fr>; | ||
pedersenHashBuffer(inputBuffer: Uint8Array, hashIndex: number): Promise<Fr>; | ||
blake2s(data: Uint8Array): Promise<Buffer32>; | ||
@@ -20,2 +20,4 @@ blake2sToField(data: Uint8Array): Promise<Fr>; | ||
schnorrMultisigCombineSignatures(message: Uint8Array, signerPubkeysBuf: Buffer128[], roundOneBuf: Buffer128[], roundTwoBuf: Fq[]): Promise<[Buffer32, Buffer32, boolean]>; | ||
aesEncryptBufferCbc(input: Uint8Array, iv: Uint8Array, key: Uint8Array, length: number): Promise<Uint8Array>; | ||
aesDecryptBufferCbc(input: Uint8Array, iv: Uint8Array, key: Uint8Array, length: number): Promise<Uint8Array>; | ||
srsInitSrs(pointsBuf: Uint8Array, numPoints: number, g2PointBuf: Uint8Array): Promise<void>; | ||
@@ -34,2 +36,3 @@ examplesSimpleCreateAndVerifyProof(): Promise<boolean>; | ||
acirGetVerificationKey(acirComposerPtr: Ptr): Promise<Uint8Array>; | ||
acirGetProvingKey(acirComposerPtr: Ptr, constraintSystemBuf: Uint8Array): Promise<Uint8Array>; | ||
acirVerifyProof(acirComposerPtr: Ptr, proofBuf: Uint8Array, isRecursive: boolean): Promise<boolean>; | ||
@@ -40,2 +43,39 @@ acirGetSolidityVerifier(acirComposerPtr: Ptr): Promise<string>; | ||
} | ||
export declare class BarretenbergApiSync { | ||
protected wasm: BarretenbergWasm; | ||
constructor(wasm: BarretenbergWasm); | ||
pedersenCommit(inputsBuffer: Fr[]): Point; | ||
pedersenHash(inputsBuffer: Fr[], hashIndex: number): Fr; | ||
pedersenHashBuffer(inputBuffer: Uint8Array, hashIndex: number): Fr; | ||
blake2s(data: Uint8Array): Buffer32; | ||
blake2sToField(data: Uint8Array): Fr; | ||
schnorrComputePublicKey(privateKey: Fr): Point; | ||
schnorrNegatePublicKey(publicKeyBuffer: Point): Point; | ||
schnorrConstructSignature(message: Uint8Array, privateKey: Fr): [Buffer32, Buffer32]; | ||
schnorrVerifySignature(message: Uint8Array, pubKey: Point, sigS: Buffer32, sigE: Buffer32): boolean; | ||
schnorrMultisigCreateMultisigPublicKey(privateKey: Fq): Buffer128; | ||
schnorrMultisigValidateAndCombineSignerPubkeys(signerPubkeyBuf: Buffer128[]): [Point, boolean]; | ||
schnorrMultisigConstructSignatureRound1(): [Buffer128, Buffer128]; | ||
schnorrMultisigConstructSignatureRound2(message: Uint8Array, privateKey: Fq, signerRoundOnePrivateBuf: Buffer128, signerPubkeysBuf: Buffer128[], roundOnePublicBuf: Buffer128[]): [Fq, boolean]; | ||
schnorrMultisigCombineSignatures(message: Uint8Array, signerPubkeysBuf: Buffer128[], roundOneBuf: Buffer128[], roundTwoBuf: Fq[]): [Buffer32, Buffer32, boolean]; | ||
aesEncryptBufferCbc(input: Uint8Array, iv: Uint8Array, key: Uint8Array, length: number): Uint8Array; | ||
aesDecryptBufferCbc(input: Uint8Array, iv: Uint8Array, key: Uint8Array, length: number): Uint8Array; | ||
srsInitSrs(pointsBuf: Uint8Array, numPoints: number, g2PointBuf: Uint8Array): void; | ||
examplesSimpleCreateAndVerifyProof(): boolean; | ||
testThreads(threads: number, iterations: number): number; | ||
commonInitSlabAllocator(circuitSize: number): void; | ||
acirGetCircuitSizes(constraintSystemBuf: Uint8Array): [number, number, number]; | ||
acirNewAcirComposer(sizeHint: number): Ptr; | ||
acirDeleteAcirComposer(acirComposerPtr: Ptr): void; | ||
acirCreateCircuit(acirComposerPtr: Ptr, constraintSystemBuf: Uint8Array, sizeHint: number): void; | ||
acirInitProvingKey(acirComposerPtr: Ptr, constraintSystemBuf: Uint8Array): void; | ||
acirCreateProof(acirComposerPtr: Ptr, constraintSystemBuf: Uint8Array, witnessBuf: Uint8Array, isRecursive: boolean): Uint8Array; | ||
acirLoadVerificationKey(acirComposerPtr: Ptr, vkBuf: Uint8Array): void; | ||
acirInitVerificationKey(acirComposerPtr: Ptr): void; | ||
acirGetVerificationKey(acirComposerPtr: Ptr): Uint8Array; | ||
acirVerifyProof(acirComposerPtr: Ptr, proofBuf: Uint8Array, isRecursive: boolean): boolean; | ||
acirGetSolidityVerifier(acirComposerPtr: Ptr): string; | ||
acirSerializeProofIntoFields(acirComposerPtr: Ptr, proofBuf: Uint8Array, numInnerPublicInputs: number): Fr[]; | ||
acirSerializeVerificationKeyIntoFields(acirComposerPtr: Ptr): [Fr[], Fr]; | ||
} | ||
//# sourceMappingURL=index.d.ts.map |
@@ -40,2 +40,4 @@ import { Remote } from 'comlink'; | ||
}; | ||
callWasmExport(funcName: string, inArgs: Uint8Array[], outLens: (number | undefined)[]): Uint8Array[]; | ||
private getOutputArgs; | ||
} | ||
@@ -42,0 +44,0 @@ /** |
@@ -1,2 +0,2 @@ | ||
import { BarretenbergApi } from '../barretenberg_api/index.js'; | ||
import { BarretenbergApi, BarretenbergApiSync } from '../barretenberg_api/index.js'; | ||
/** | ||
@@ -8,3 +8,2 @@ * The main class library consumers interact with. | ||
private worker; | ||
private wasm; | ||
private constructor(); | ||
@@ -21,2 +20,8 @@ /** | ||
} | ||
export declare class BarretenbergSync extends BarretenbergApiSync { | ||
private constructor(); | ||
static new(): Promise<BarretenbergSync>; | ||
static getSingleton(): Promise<BarretenbergSync>; | ||
getWasm(): import("../barretenberg_wasm/index.js").BarretenbergWasm; | ||
} | ||
//# sourceMappingURL=index.d.ts.map |
export { Crs } from './crs/index.js'; | ||
export { Barretenberg } from './barretenberg/index.js'; | ||
export { Barretenberg, BarretenbergSync } from './barretenberg/index.js'; | ||
export { RawBuffer, Fr } from './types/index.js'; | ||
export { Pedersen } from './pedersen/index.js'; | ||
//# sourceMappingURL=index.d.ts.map |
@@ -1,9 +0,9 @@ | ||
import { BarretenbergBinder } from '../barretenberg_binder/index.js'; | ||
import { BarretenbergWasmWorker, BarretenbergWasm } from '../barretenberg_wasm/index.js'; | ||
import { Fr, Fq, Point, Buffer32, Buffer128, Ptr } from '../types/index.js'; | ||
export declare class BarretenbergApi { | ||
binder: BarretenbergBinder; | ||
constructor(binder: BarretenbergBinder); | ||
destroy(): Promise<void>; | ||
protected wasm: BarretenbergWasmWorker; | ||
constructor(wasm: BarretenbergWasmWorker); | ||
pedersenCommit(inputsBuffer: Fr[]): Promise<Point>; | ||
pedersenHash(inputsBuffer: Fr[], hashIndex: number): Promise<Fr>; | ||
pedersenHashBuffer(inputBuffer: Uint8Array, hashIndex: number): Promise<Fr>; | ||
blake2s(data: Uint8Array): Promise<Buffer32>; | ||
@@ -20,2 +20,4 @@ blake2sToField(data: Uint8Array): Promise<Fr>; | ||
schnorrMultisigCombineSignatures(message: Uint8Array, signerPubkeysBuf: Buffer128[], roundOneBuf: Buffer128[], roundTwoBuf: Fq[]): Promise<[Buffer32, Buffer32, boolean]>; | ||
aesEncryptBufferCbc(input: Uint8Array, iv: Uint8Array, key: Uint8Array, length: number): Promise<Uint8Array>; | ||
aesDecryptBufferCbc(input: Uint8Array, iv: Uint8Array, key: Uint8Array, length: number): Promise<Uint8Array>; | ||
srsInitSrs(pointsBuf: Uint8Array, numPoints: number, g2PointBuf: Uint8Array): Promise<void>; | ||
@@ -34,2 +36,3 @@ examplesSimpleCreateAndVerifyProof(): Promise<boolean>; | ||
acirGetVerificationKey(acirComposerPtr: Ptr): Promise<Uint8Array>; | ||
acirGetProvingKey(acirComposerPtr: Ptr, constraintSystemBuf: Uint8Array): Promise<Uint8Array>; | ||
acirVerifyProof(acirComposerPtr: Ptr, proofBuf: Uint8Array, isRecursive: boolean): Promise<boolean>; | ||
@@ -40,2 +43,39 @@ acirGetSolidityVerifier(acirComposerPtr: Ptr): Promise<string>; | ||
} | ||
export declare class BarretenbergApiSync { | ||
protected wasm: BarretenbergWasm; | ||
constructor(wasm: BarretenbergWasm); | ||
pedersenCommit(inputsBuffer: Fr[]): Point; | ||
pedersenHash(inputsBuffer: Fr[], hashIndex: number): Fr; | ||
pedersenHashBuffer(inputBuffer: Uint8Array, hashIndex: number): Fr; | ||
blake2s(data: Uint8Array): Buffer32; | ||
blake2sToField(data: Uint8Array): Fr; | ||
schnorrComputePublicKey(privateKey: Fr): Point; | ||
schnorrNegatePublicKey(publicKeyBuffer: Point): Point; | ||
schnorrConstructSignature(message: Uint8Array, privateKey: Fr): [Buffer32, Buffer32]; | ||
schnorrVerifySignature(message: Uint8Array, pubKey: Point, sigS: Buffer32, sigE: Buffer32): boolean; | ||
schnorrMultisigCreateMultisigPublicKey(privateKey: Fq): Buffer128; | ||
schnorrMultisigValidateAndCombineSignerPubkeys(signerPubkeyBuf: Buffer128[]): [Point, boolean]; | ||
schnorrMultisigConstructSignatureRound1(): [Buffer128, Buffer128]; | ||
schnorrMultisigConstructSignatureRound2(message: Uint8Array, privateKey: Fq, signerRoundOnePrivateBuf: Buffer128, signerPubkeysBuf: Buffer128[], roundOnePublicBuf: Buffer128[]): [Fq, boolean]; | ||
schnorrMultisigCombineSignatures(message: Uint8Array, signerPubkeysBuf: Buffer128[], roundOneBuf: Buffer128[], roundTwoBuf: Fq[]): [Buffer32, Buffer32, boolean]; | ||
aesEncryptBufferCbc(input: Uint8Array, iv: Uint8Array, key: Uint8Array, length: number): Uint8Array; | ||
aesDecryptBufferCbc(input: Uint8Array, iv: Uint8Array, key: Uint8Array, length: number): Uint8Array; | ||
srsInitSrs(pointsBuf: Uint8Array, numPoints: number, g2PointBuf: Uint8Array): void; | ||
examplesSimpleCreateAndVerifyProof(): boolean; | ||
testThreads(threads: number, iterations: number): number; | ||
commonInitSlabAllocator(circuitSize: number): void; | ||
acirGetCircuitSizes(constraintSystemBuf: Uint8Array): [number, number, number]; | ||
acirNewAcirComposer(sizeHint: number): Ptr; | ||
acirDeleteAcirComposer(acirComposerPtr: Ptr): void; | ||
acirCreateCircuit(acirComposerPtr: Ptr, constraintSystemBuf: Uint8Array, sizeHint: number): void; | ||
acirInitProvingKey(acirComposerPtr: Ptr, constraintSystemBuf: Uint8Array): void; | ||
acirCreateProof(acirComposerPtr: Ptr, constraintSystemBuf: Uint8Array, witnessBuf: Uint8Array, isRecursive: boolean): Uint8Array; | ||
acirLoadVerificationKey(acirComposerPtr: Ptr, vkBuf: Uint8Array): void; | ||
acirInitVerificationKey(acirComposerPtr: Ptr): void; | ||
acirGetVerificationKey(acirComposerPtr: Ptr): Uint8Array; | ||
acirVerifyProof(acirComposerPtr: Ptr, proofBuf: Uint8Array, isRecursive: boolean): boolean; | ||
acirGetSolidityVerifier(acirComposerPtr: Ptr): string; | ||
acirSerializeProofIntoFields(acirComposerPtr: Ptr, proofBuf: Uint8Array, numInnerPublicInputs: number): Fr[]; | ||
acirSerializeVerificationKeyIntoFields(acirComposerPtr: Ptr): [Fr[], Fr]; | ||
} | ||
//# sourceMappingURL=index.d.ts.map |
@@ -40,2 +40,4 @@ import { Remote } from 'comlink'; | ||
}; | ||
callWasmExport(funcName: string, inArgs: Uint8Array[], outLens: (number | undefined)[]): Uint8Array[]; | ||
private getOutputArgs; | ||
} | ||
@@ -42,0 +44,0 @@ /** |
@@ -10,2 +10,3 @@ "use strict"; | ||
const index_js_4 = require("../barretenberg_wasm_base/index.js"); | ||
const heap_allocator_js_1 = require("./heap_allocator.js"); | ||
const debug = (0, debug_1.default)('bb.js:wasm'); | ||
@@ -90,5 +91,29 @@ /** | ||
} | ||
callWasmExport(funcName, inArgs, outLens) { | ||
const alloc = new heap_allocator_js_1.HeapAllocator(this); | ||
const inPtrs = alloc.copyToMemory(inArgs); | ||
const outPtrs = alloc.getOutputPtrs(outLens); | ||
this.call(funcName, ...inPtrs, ...outPtrs); | ||
const outArgs = this.getOutputArgs(outLens, outPtrs, alloc); | ||
alloc.freeAll(); | ||
return outArgs; | ||
} | ||
getOutputArgs(outLens, outPtrs, alloc) { | ||
return outLens.map((len, i) => { | ||
if (len) { | ||
return this.getMemorySlice(outPtrs[i], outPtrs[i] + len); | ||
} | ||
const slice = this.getMemorySlice(outPtrs[i], outPtrs[i] + 4); | ||
const ptr = new DataView(slice.buffer, slice.byteOffset, slice.byteLength).getUint32(0, true); | ||
// Add our heap buffer to the dealloc list. | ||
alloc.addOutputPtr(ptr); | ||
// The length will be found in the first 4 bytes of the buffer, big endian. See to_heap_buffer. | ||
const lslice = this.getMemorySlice(ptr, ptr + 4); | ||
const length = new DataView(lslice.buffer, lslice.byteOffset, lslice.byteLength).getUint32(0, false); | ||
return this.getMemorySlice(ptr + 4, ptr + 4 + length); | ||
}); | ||
} | ||
} | ||
BarretenbergWasmMain.MAX_THREADS = 32; | ||
exports.BarretenbergWasmMain = BarretenbergWasmMain; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYmFycmV0ZW5iZXJnX3dhc20vYmFycmV0ZW5iZXJnX3dhc21fbWFpbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQ0EsMERBQWdDO0FBRWhDLGtEQUFxRztBQUNyRyxxREFBbUQ7QUFDbkQsZ0ZBQXVGO0FBRXZGLGlFQUEwRTtBQUUxRSxNQUFNLEtBQUssR0FBRyxJQUFBLGVBQVcsRUFBQyxZQUFZLENBQUMsQ0FBQztBQUV4Qzs7OztHQUlHO0FBQ0gsTUFBYSxvQkFBcUIsU0FBUSwrQkFBb0I7SUFBOUQ7O1FBRVUsWUFBTyxHQUFhLEVBQUUsQ0FBQztRQUN2QixnQkFBVyxHQUFtQyxFQUFFLENBQUM7UUFDakQsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUNmLGlCQUFZLEdBQUcsQ0FBQyxDQUFDO0lBc0YzQixDQUFDO0lBcEZRLGFBQWE7UUFDbEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLElBQUksQ0FDZixPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFBLG9CQUFTLEdBQUUsRUFBRSxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsRUFDakUsU0FBZ0MsS0FBSyxFQUNyQyxPQUFPLEdBQUcsRUFBRSxFQUNaLE9BQU8sR0FBRyxDQUFDLElBQUksRUFBRTtRQUVqQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUVyQixNQUFNLFNBQVMsR0FBRyxDQUFDLE9BQU8sR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDdEQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxD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 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYmFycmV0ZW5iZXJnX3dhc20vYmFycmV0ZW5iZXJnX3dhc21fbWFpbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQ0EsMERBQWdDO0FBRWhDLGtEQUFxRztBQUNyRyxxREFBbUQ7QUFDbkQsZ0ZBQXVGO0FBRXZGLGlFQUEwRTtBQUMxRSwyREFBb0Q7QUFFcEQsTUFBTSxLQUFLLEdBQUcsSUFBQSxlQUFXLEVBQUMsWUFBWSxDQUFDLENBQUM7QUFFeEM7Ozs7R0FJRztBQUNILE1BQWEsb0JBQXFCLFNBQVEsK0JBQW9CO0lBQTlEOztRQUVVLFlBQU8sR0FBYSxFQUFFLENBQUM7UUFDdkIsZ0JBQVcsR0FBbUMsRUFBRSxDQUFDO1FBQ2pELGVBQVUsR0FBRyxDQUFDLENBQUM7UUFDZixpQkFBWSxHQUFHLENBQUMsQ0FBQztJQW1IM0IsQ0FBQztJQWpIUSxhQUFhO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxJQUFJLENBQ2YsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBQSxvQkFBUyxHQUFFLEVBQUUsb0JBQW9CLENBQUMsV0FBVyxDQUFDLEVBQ2pFLFNBQWdDLEtBQUssRUFDckMsT0FBTyxHQUFHLEVBQUUsRUFDWixPQUFPLEdBQUcsQ0FBQyxJQUFJLEVBQUU7UUFFakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFFckIsTUFBTSxTQUFTLEdBQUcsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ3RELE1BQU0sS0FBSyxHQUFHLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksR0FB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 |
@@ -1,2 +0,2 @@ | ||
import { BarretenbergApi } from '../barretenberg_api/index.js'; | ||
import { BarretenbergApi, BarretenbergApiSync } from '../barretenberg_api/index.js'; | ||
/** | ||
@@ -8,3 +8,2 @@ * The main class library consumers interact with. | ||
private worker; | ||
private wasm; | ||
private constructor(); | ||
@@ -21,2 +20,8 @@ /** | ||
} | ||
export declare class BarretenbergSync extends BarretenbergApiSync { | ||
private constructor(); | ||
static new(): Promise<BarretenbergSync>; | ||
static getSingleton(): Promise<BarretenbergSync>; | ||
getWasm(): import("../barretenberg_wasm/index.js").BarretenbergWasm; | ||
} | ||
//# sourceMappingURL=index.d.ts.map |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.Barretenberg = void 0; | ||
exports.BarretenbergSync = exports.Barretenberg = void 0; | ||
const tslib_1 = require("tslib"); | ||
const comlink_1 = require("comlink"); | ||
const index_js_1 = require("../barretenberg_api/index.js"); | ||
const index_js_2 = require("../barretenberg_binder/index.js"); | ||
const index_js_3 = require("../barretenberg_wasm/barretenberg_wasm_main/factory/node/index.js"); | ||
const index_js_2 = require("../barretenberg_wasm/barretenberg_wasm_main/factory/node/index.js"); | ||
const index_js_3 = require("../barretenberg_wasm/barretenberg_wasm_main/index.js"); | ||
const index_js_4 = require("../barretenberg_wasm/helpers/index.js"); | ||
@@ -18,5 +18,4 @@ const debug_1 = tslib_1.__importDefault(require("debug")); | ||
constructor(worker, wasm) { | ||
super(new index_js_2.BarretenbergBinder(wasm)); | ||
super(wasm); | ||
this.worker = worker; | ||
this.wasm = wasm; | ||
} | ||
@@ -30,3 +29,3 @@ /** | ||
static async new(threads) { | ||
const worker = (0, index_js_3.createMainWorker)(); | ||
const worker = (0, index_js_2.createMainWorker)(); | ||
const wasm = (0, index_js_4.getRemoteBarretenbergWasm)(worker); | ||
@@ -45,2 +44,23 @@ await wasm.init(threads, (0, comlink_1.proxy)(debug)); | ||
exports.Barretenberg = Barretenberg; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmFycmV0ZW5iZXJnL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxxQ0FBZ0M7QUFDaEMsMkRBQStEO0FBQy9ELDhEQUFxRTtBQUNyRSxnR0FBcUc7QUFFckcsb0VBQWtGO0FBRWxGLDBEQUFnQztBQUVoQyxNQUFNLEtBQUssR0FBRyxJQUFBLGVBQVcsRUFBQyxZQUFZLENBQUMsQ0FBQztBQUV4Qzs7O0dBR0c7QUFDSCxNQUFhLFlBQWEsU0FBUSwwQkFBZTtJQUMvQyxZQUE0QixNQUFXLEVBQVUsSUFBNEI7UUFDM0UsS0FBSyxDQUFDLElBQUksNkJBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQURWLFdBQU0sR0FBTixNQUFNLENBQUs7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUF3QjtJQUU3RSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFnQjtRQUMvQixNQUFNLE1BQU0sR0FBRyxJQUFBLDJCQUFnQixHQUFFLENBQUM7UUFDbEMsTUFBTSxJQUFJLEdBQUcsSUFBQSxvQ0FBeUIsRUFBNkIsTUFBTSxDQUFDLENBQUM7UUFDM0UsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFBLGVBQUssRUFBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxZQUFZLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxLQUFLLENBQUMsYUFBYTtRQUNqQixPQUFPLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU87UUFDWCxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDMUIsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ2hDLENBQUM7Q0FDRjtBQTFCRCxvQ0EwQkMifQ== | ||
let barretenbergSyncSingleton; | ||
class BarretenbergSync extends index_js_1.BarretenbergApiSync { | ||
constructor(wasm) { | ||
super(wasm); | ||
} | ||
static async new() { | ||
const wasm = new index_js_3.BarretenbergWasmMain(); | ||
await wasm.init(1); | ||
return new BarretenbergSync(wasm); | ||
} | ||
static getSingleton() { | ||
if (!barretenbergSyncSingleton) { | ||
barretenbergSyncSingleton = BarretenbergSync.new(); | ||
} | ||
return barretenbergSyncSingleton; | ||
} | ||
getWasm() { | ||
return this.wasm; | ||
} | ||
} | ||
exports.BarretenbergSync = BarretenbergSync; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmFycmV0ZW5iZXJnL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxxQ0FBZ0M7QUFDaEMsMkRBQW9GO0FBQ3BGLGdHQUFxRztBQUNyRyxtRkFBd0g7QUFDeEgsb0VBQWtGO0FBRWxGLDBEQUFnQztBQUVoQyxNQUFNLEtBQUssR0FBRyxJQUFBLGVBQVcsRUFBQyxZQUFZLENBQUMsQ0FBQztBQUV4Qzs7O0dBR0c7QUFDSCxNQUFhLFlBQWEsU0FBUSwwQkFBZTtJQUMvQyxZQUE0QixNQUFXLEVBQUUsSUFBNEI7UUFDbkUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRGMsV0FBTSxHQUFOLE1BQU0sQ0FBSztJQUV2QyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFnQjtRQUMvQixNQUFNLE1BQU0sR0FBRyxJQUFBLDJCQUFnQixHQUFFLENBQUM7UUFDbEMsTUFBTSxJQUFJLEdBQUcsSUFBQSxvQ0FBeUIsRUFBNkIsTUFBTSxDQUFDLENBQUM7UUFDM0UsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFBLGVBQUssRUFBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxZQUFZLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxLQUFLLENBQUMsYUFBYTtRQUNqQixPQUFPLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU87UUFDWCxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDMUIsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ2hDLENBQUM7Q0FDRjtBQTFCRCxvQ0EwQkM7QUFFRCxJQUFJLHlCQUFvRCxDQUFDO0FBRXpELE1BQWEsZ0JBQWlCLFNBQVEsOEJBQW1CO0lBQ3ZELFlBQW9CLElBQTBCO1FBQzVDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUc7UUFDZCxNQUFNLElBQUksR0FBRyxJQUFJLCtCQUFvQixFQUFFLENBQUM7UUFDeEMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25CLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsTUFBTSxDQUFDLFlBQVk7UUFDakIsSUFBSSxDQUFDLHlCQUF5QixFQUFFO1lBQzlCLHlCQUF5QixHQUFHLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDO1NBQ3BEO1FBQ0QsT0FBTyx5QkFBeUIsQ0FBQztJQUNuQyxDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0NBQ0Y7QUFyQkQsNENBcUJDIn0= |
@@ -13,12 +13,17 @@ "use strict"; | ||
/* eslint-disable @typescript-eslint/no-unused-vars */ | ||
import { BarretenbergBinder } from '../barretenberg_binder/index.js'; | ||
import { BufferDeserializer, NumberDeserializer, VectorDeserializer, BoolDeserializer, StringDeserializer } from '../serialize/index.js'; | ||
import { BarretenbergWasmWorker, BarretenbergWasm } from '../barretenberg_wasm/index.js'; | ||
import { BufferDeserializer, NumberDeserializer, VectorDeserializer, BoolDeserializer, StringDeserializer, serializeBufferable, OutputType } from '../serialize/index.js'; | ||
import { Fr, Fq, Point, Buffer32, Buffer128, Ptr } from '../types/index.js'; | ||
`; | ||
output += generateClass(functionDeclarations); | ||
output += generateSyncClass(functionDeclarations); | ||
return output; | ||
} | ||
exports.generateTypeScriptCode = generateTypeScriptCode; | ||
function generateClass(functionDeclarations) { | ||
let output = ` | ||
export class BarretenbergApi { | ||
constructor(public binder: BarretenbergBinder) {} | ||
constructor(protected wasm: BarretenbergWasmWorker) {} | ||
async destroy() { | ||
await this.binder.wasm.destroy(); | ||
} | ||
`; | ||
@@ -28,7 +33,12 @@ for (const { functionName, inArgs, outArgs } of functionDeclarations) { | ||
const parameters = inArgs.map(({ name, type }) => `${(0, to_camel_case_js_1.toCamelCase)(name)}: ${(0, mappings_js_1.mapType)(type)}`).join(', '); | ||
const inArgsVar = `[${inArgs.map(arg => (0, to_camel_case_js_1.toCamelCase)(arg.name)).join(', ')}]`; | ||
const outTypesVar = `[${outArgs.map(arg => (0, mappings_js_1.mapDeserializer)(arg.type)).join(', ')}]`; | ||
const wasmCall = `const result = await this.binder.callWasmExport('${functionName}', ${inArgsVar}, ${outTypesVar});`; | ||
const inArgsVar = `const inArgs = [${inArgs | ||
.map(arg => (0, to_camel_case_js_1.toCamelCase)(arg.name)) | ||
.join(', ')}].map(serializeBufferable);`; | ||
const outTypesVar = `const outTypes: OutputType[] = [${outArgs | ||
.map(arg => (0, mappings_js_1.mapDeserializer)(arg.type)) | ||
.join(', ')}];`; | ||
const wasmCall = `const result = await this.wasm.callWasmExport('${functionName}', inArgs, outTypes.map(t=>t.SIZE_IN_BYTES));`; | ||
const outVar = `const out = result.map((r, i) => outTypes[i].fromBuffer(r));`; | ||
const n = outArgs.length; | ||
const returnStmt = n === 0 ? 'return;' : n === 1 ? 'return result[0];' : 'return result as any;'; | ||
const returnStmt = n === 0 ? 'return;' : n === 1 ? 'return out[0];' : 'return out as any;'; | ||
const returnType = outArgs.length === 0 | ||
@@ -41,3 +51,6 @@ ? 'void' | ||
async ${(0, to_camel_case_js_1.toCamelCase)(functionName)}(${parameters}): Promise<${returnType}> { | ||
${inArgsVar} | ||
${outTypesVar} | ||
${wasmCall} | ||
${outVar} | ||
${returnStmt} | ||
@@ -54,3 +67,43 @@ } | ||
} | ||
exports.generateTypeScriptCode = generateTypeScriptCode; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iaW5kZ2VuL3R5cGVzY3JpcHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLG9EQUFvQjtBQUNwQiwrQ0FBeUQ7QUFDekQseURBQWlEO0FBR2pELFNBQWdCLHNCQUFzQixDQUFDLFFBQWdCO0lBQ3JELE1BQU0sV0FBVyxHQUFHLFlBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZELE1BQU0sb0JBQW9CLEdBQTBCLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFNUUsSUFBSSxNQUFNLEdBQUc7Ozs7Ozs7Ozs7OztDQVlkLENBQUM7SUFFQSxLQUFLLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLG9CQUFvQixFQUFFO1FBQ3BFLElBQUk7WUFDRixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBQSw4QkFBVyxFQUFDLElBQUksQ0FBQyxLQUFLLElBQUEscUJBQU8sRUFBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3ZHLE1BQU0sU0FBUyxHQUFHLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUEsOEJBQVcsRUFBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUM3RSxNQUFNLFdBQVcsR0FBRyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFBLDZCQUFlLEVBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDcEYsTUFBTSxRQUFRLEdBQUcsb0RBQW9ELFlBQVksTUFBTSxTQUFTLEtBQUssV0FBVyxJQUFJLENBQUM7WUFFckgsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUN6QixNQUFNLFVBQVUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQztZQUNqRyxNQUFNLFVBQVUsR0FDZCxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUM7Z0JBQ2xCLENBQUMsQ0FBQyxNQUFNO2dCQUNSLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUM7b0JBQ3RCLENBQUMsQ0FBQyxHQUFHLElBQUEscUJBQU8sRUFBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQy9CLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFBLHFCQUFPLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7WUFFMUQsTUFBTSxJQUFJO1VBQ04sSUFBQSw4QkFBVyxFQUFDLFlBQVksQ0FBQyxJQUFJLFVBQVUsY0FBYyxVQUFVO01BQ25FLFFBQVE7TUFDUixVQUFVOztDQUVmLENBQUM7U0FDRztRQUFDLE9BQU8sR0FBUSxFQUFFO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxZQUFZLEtBQUssR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDN0Q7S0FDRjtJQUVELE1BQU0sSUFBSSxHQUFHLENBQUM7SUFFZCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBaERELHdEQWdEQyJ9 | ||
function generateSyncClass(functionDeclarations) { | ||
let output = ` | ||
export class BarretenbergApiSync { | ||
constructor(protected wasm: BarretenbergWasm) {} | ||
`; | ||
for (const { functionName, inArgs, outArgs } of functionDeclarations) { | ||
try { | ||
const parameters = inArgs.map(({ name, type }) => `${(0, to_camel_case_js_1.toCamelCase)(name)}: ${(0, mappings_js_1.mapType)(type)}`).join(', '); | ||
const inArgsVar = `const inArgs = [${inArgs | ||
.map(arg => (0, to_camel_case_js_1.toCamelCase)(arg.name)) | ||
.join(', ')}].map(serializeBufferable);`; | ||
const outTypesVar = `const outTypes: OutputType[] = [${outArgs | ||
.map(arg => (0, mappings_js_1.mapDeserializer)(arg.type)) | ||
.join(', ')}];`; | ||
const wasmCall = `const result = this.wasm.callWasmExport('${functionName}', inArgs, outTypes.map(t=>t.SIZE_IN_BYTES));`; | ||
const outVar = `const out = result.map((r, i) => outTypes[i].fromBuffer(r));`; | ||
const n = outArgs.length; | ||
const returnStmt = n === 0 ? 'return;' : n === 1 ? 'return out[0];' : 'return out as any;'; | ||
const returnType = outArgs.length === 0 | ||
? 'void' | ||
: outArgs.length === 1 | ||
? `${(0, mappings_js_1.mapType)(outArgs[0].type)}` | ||
: `[${outArgs.map(a => (0, mappings_js_1.mapType)(a.type)).join(', ')}]`; | ||
output += ` | ||
${(0, to_camel_case_js_1.toCamelCase)(functionName)}(${parameters}): ${returnType} { | ||
${inArgsVar} | ||
${outTypesVar} | ||
${wasmCall} | ||
${outVar} | ||
${returnStmt} | ||
} | ||
`; | ||
} | ||
catch (err) { | ||
throw new Error(`Function ${functionName}: ${err.message}`); | ||
} | ||
} | ||
output += `}`; | ||
return output; | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iaW5kZ2VuL3R5cGVzY3JpcHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLG9EQUFvQjtBQUNwQiwrQ0FBeUQ7QUFDekQseURBQWlEO0FBR2pELFNBQWdCLHNCQUFzQixDQUFDLFFBQWdCO0lBQ3JELE1BQU0sV0FBVyxHQUFHLFlBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZELE1BQU0sb0JBQW9CLEdBQTBCLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFNUUsSUFBSSxNQUFNLEdBQUc7Ozs7OztDQU1kLENBQUM7SUFFQSxNQUFNLElBQUksYUFBYSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDOUMsTUFBTSxJQUFJLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFFbEQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQWhCRCx3REFnQkM7QUFFRCxTQUFTLGFBQWEsQ0FBQyxvQkFBMkM7SUFDaEUsSUFBSSxNQUFNLEdBQUc7Ozs7Q0FJZCxDQUFDO0lBRUEsS0FBSyxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxvQkFBb0IsRUFBRTtRQUNwRSxJQUFJO1lBQ0YsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUEsOEJBQVcsRUFBQyxJQUFJLENBQUMsS0FBSyxJQUFBLHFCQUFPLEVBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN2RyxNQUFNLFNBQVMsR0FBRyxtQkFBbUIsTUFBTTtpQkFDeEMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBQSw4QkFBVyxFQUFD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 |
export { Crs } from './crs/index.js'; | ||
export { Barretenberg } from './barretenberg/index.js'; | ||
export { Barretenberg, BarretenbergSync } from './barretenberg/index.js'; | ||
export { RawBuffer, Fr } from './types/index.js'; | ||
export { Pedersen } from './pedersen/index.js'; | ||
//# sourceMappingURL=index.d.ts.map |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.Pedersen = exports.Fr = exports.RawBuffer = exports.Barretenberg = exports.Crs = void 0; | ||
exports.Fr = exports.RawBuffer = exports.BarretenbergSync = exports.Barretenberg = exports.Crs = void 0; | ||
var index_js_1 = require("./crs/index.js"); | ||
@@ -8,7 +8,6 @@ Object.defineProperty(exports, "Crs", { enumerable: true, get: function () { return index_js_1.Crs; } }); | ||
Object.defineProperty(exports, "Barretenberg", { enumerable: true, get: function () { return index_js_2.Barretenberg; } }); | ||
Object.defineProperty(exports, "BarretenbergSync", { enumerable: true, get: function () { return index_js_2.BarretenbergSync; } }); | ||
var index_js_3 = require("./types/index.js"); | ||
Object.defineProperty(exports, "RawBuffer", { enumerable: true, get: function () { return index_js_3.RawBuffer; } }); | ||
Object.defineProperty(exports, "Fr", { enumerable: true, get: function () { return index_js_3.Fr; } }); | ||
var index_js_4 = require("./pedersen/index.js"); | ||
Object.defineProperty(exports, "Pedersen", { enumerable: true, get: function () { return index_js_4.Pedersen; } }); | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQXFDO0FBQTVCLCtGQUFBLEdBQUcsT0FBQTtBQUNaLG9EQUF1RDtBQUE5Qyx3R0FBQSxZQUFZLE9BQUE7QUFDckIsNkNBQWlEO0FBQXhDLHFHQUFBLFNBQVMsT0FBQTtBQUFFLDhGQUFBLEVBQUUsT0FBQTtBQUN0QixnREFBK0M7QUFBdEMsb0dBQUEsUUFBUSxPQUFBIn0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQXFDO0FBQTVCLCtGQUFBLEdBQUcsT0FBQTtBQUNaLG9EQUF5RTtBQUFoRSx3R0FBQSxZQUFZLE9BQUE7QUFBRSw0R0FBQSxnQkFBZ0IsT0FBQTtBQUN2Qyw2Q0FBaUQ7QUFBeEMscUdBQUEsU0FBUyxPQUFBO0FBQUUsOEZBQUEsRUFBRSxPQUFBIn0= |
@@ -9,4 +9,5 @@ #!/usr/bin/env node | ||
export declare function writeVk(bytecodePath: string, crsPath: string, outputPath: string): Promise<void>; | ||
export declare function writePk(bytecodePath: string, crsPath: string, outputPath: string): Promise<void>; | ||
export declare function proofAsFields(proofPath: string, vkPath: string, outputPath: string): Promise<void>; | ||
export declare function vkAsFields(vkPath: string, vkeyOutputPath: string): Promise<void>; | ||
//# sourceMappingURL=main.d.ts.map |
#!/usr/bin/env node | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.vkAsFields = exports.proofAsFields = exports.writeVk = exports.contract = exports.verify = exports.acvmInfo = exports.gateCount = exports.prove = exports.proveAndVerify = void 0; | ||
exports.vkAsFields = exports.proofAsFields = exports.writePk = exports.writeVk = exports.contract = exports.verify = exports.acvmInfo = exports.gateCount = exports.prove = exports.proveAndVerify = void 0; | ||
const tslib_1 = require("tslib"); | ||
@@ -204,2 +204,22 @@ const index_js_1 = require("./index.js"); | ||
exports.writeVk = writeVk; | ||
async function writePk(bytecodePath, crsPath, outputPath) { | ||
const { api, acirComposer } = await init(bytecodePath, crsPath); | ||
try { | ||
debug('initing proving key...'); | ||
const bytecode = getBytecode(bytecodePath); | ||
const pk = await api.acirGetProvingKey(acirComposer, bytecode); | ||
if (outputPath === '-') { | ||
process.stdout.write(pk); | ||
debug(`pk written to stdout`); | ||
} | ||
else { | ||
(0, fs_1.writeFileSync)(outputPath, pk); | ||
debug(`pk written to: ${outputPath}`); | ||
} | ||
} | ||
finally { | ||
await api.destroy(); | ||
} | ||
} | ||
exports.writePk = writePk; | ||
async function proofAsFields(proofPath, vkPath, outputPath) { | ||
@@ -319,2 +339,11 @@ const { api, acirComposer } = await initLite(); | ||
program | ||
.command('write_pk') | ||
.description('Output proving key.') | ||
.option('-b, --bytecode-path <path>', 'Specify the bytecode path', './target/acir.gz') | ||
.requiredOption('-o, --output-path <path>', 'Specify the path to write the key') | ||
.action(async ({ bytecodePath, outputPath, crsPath }) => { | ||
handleGlobalOptions(); | ||
await writePk(bytecodePath, crsPath, outputPath); | ||
}); | ||
program | ||
.command('proof_as_fields') | ||
@@ -347,2 +376,2 @@ .description('Return the proof as fields elements') | ||
program.name('bb.js').parse(process.argv); | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EseUNBQTBEO0FBQzFELDBEQUFnQztBQUNoQywyQkFBaUQ7QUFDakQsK0JBQWtDO0FBQ2xDLHlDQUFvQztBQUNwQyx1Q0FBeUM7QUFDekMsbURBQTZEO0FBQzdELHdEQUF3QjtBQUN4QixlQUFXLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzlDLE1BQU0sS0FBSyxHQUFHLElBQUEsZUFBVyxFQUFDLE9BQU8sQ0FBQyxDQUFDO0FBRW5DLHNEQUFzRDtBQUN0RCwrREFBK0Q7QUFDL0QsRUFBRTtBQUNGLCtEQUErRDtBQUMvRCwrREFBK0Q7QUFDL0QsNENBQTRDO0FBQzVDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNqQyxNQUFNLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQXFCLElBQUksU0FBUyxDQUFDO0FBRWhFLFNBQVMsV0FBVyxDQUFDLFlBQW9CO0lBQ3ZDLE1BQU0sY0FBYyxHQUFHLElBQUEsaUJBQVksRUFBQyxZQUFZLENBQUMsQ0FBQztJQUNsRCxNQUFNLFlBQVksR0FBRyxJQUFBLGlCQUFVLEVBQUMsY0FBYyxDQUFDLENBQUM7SUFDaEQsT0FBTyxZQUFZLENBQUM7QUFDdEIsQ0FBQztBQUVELEtBQUssVUFBVSxRQUFRLENBQUMsWUFBb0IsRUFBRSxHQUFpQjtJQUM3RCxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDOUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsV0FBbUI7SUFDckMsTUFBTSxJQUFJLEdBQUcsSUFBQSxpQkFBWSxFQUFDLFdBQVcsQ0FBQyxD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 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EseUNBQTBEO0FBQzFELDBEQUFnQztBQUNoQywyQkFBaUQ7QUFDakQsK0JBQWtDO0FBQ2xDLHlDQUFvQztBQUNwQyx1Q0FBeUM7QUFDekMsbURBQTZEO0FBQzdELHdEQUF3QjtBQUN4QixlQUFXLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzlDLE1BQU0sS0FBSyxHQUFHLElBQUEsZUFBVyxFQUFDLE9BQU8sQ0FBQyxDQUFDO0FBRW5DLHNEQUFzRDtBQUN0RCwrREFBK0Q7QUFDL0QsRUFBRTtBQUNGLCtEQUErRDtBQUMvRCwrREFBK0Q7QUFDL0QsNENBQTRDO0FBQzVDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNqQyxNQUFNLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQXFCLElBQUksU0FBUyxDQUFDO0FBRWhFLFNBQVMsV0FBVyxDQUFDLFlBQW9CO0lBQ3ZDLE1BQU0sY0FBYyxHQUFHLElBQUEsaUJBQVksRUFBQyxZQUFZLENBQUMsQ0FBQztJQUNsRCxNQUFNLFlBQVksR0FBRyxJQUFBLGlCQUFVLEVBQUMsY0FBYyxDQUFDLENBQUM7SUFDaEQsT0FBTyxZQUFZLENBQUM7QUFDdEIsQ0FBQztBQUVELEtBQUssVUFBVSxRQUFRLENBQUMsWUFBb0IsRUFBRSxHQUFpQjtJQUM3RCxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDOUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsV0FBbUI7SUFDckMsTUFBTSxJQUFJLEdBQUcsSUFBQSxpQkFBWSxFQUFDLFdBQVcsQ0FBQyxD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 |
@@ -1,9 +0,9 @@ | ||
import { BarretenbergBinder } from '../barretenberg_binder/index.js'; | ||
import { BarretenbergWasmWorker, BarretenbergWasm } from '../barretenberg_wasm/index.js'; | ||
import { Fr, Fq, Point, Buffer32, Buffer128, Ptr } from '../types/index.js'; | ||
export declare class BarretenbergApi { | ||
binder: BarretenbergBinder; | ||
constructor(binder: BarretenbergBinder); | ||
destroy(): Promise<void>; | ||
protected wasm: BarretenbergWasmWorker; | ||
constructor(wasm: BarretenbergWasmWorker); | ||
pedersenCommit(inputsBuffer: Fr[]): Promise<Point>; | ||
pedersenHash(inputsBuffer: Fr[], hashIndex: number): Promise<Fr>; | ||
pedersenHashBuffer(inputBuffer: Uint8Array, hashIndex: number): Promise<Fr>; | ||
blake2s(data: Uint8Array): Promise<Buffer32>; | ||
@@ -20,2 +20,4 @@ blake2sToField(data: Uint8Array): Promise<Fr>; | ||
schnorrMultisigCombineSignatures(message: Uint8Array, signerPubkeysBuf: Buffer128[], roundOneBuf: Buffer128[], roundTwoBuf: Fq[]): Promise<[Buffer32, Buffer32, boolean]>; | ||
aesEncryptBufferCbc(input: Uint8Array, iv: Uint8Array, key: Uint8Array, length: number): Promise<Uint8Array>; | ||
aesDecryptBufferCbc(input: Uint8Array, iv: Uint8Array, key: Uint8Array, length: number): Promise<Uint8Array>; | ||
srsInitSrs(pointsBuf: Uint8Array, numPoints: number, g2PointBuf: Uint8Array): Promise<void>; | ||
@@ -34,2 +36,3 @@ examplesSimpleCreateAndVerifyProof(): Promise<boolean>; | ||
acirGetVerificationKey(acirComposerPtr: Ptr): Promise<Uint8Array>; | ||
acirGetProvingKey(acirComposerPtr: Ptr, constraintSystemBuf: Uint8Array): Promise<Uint8Array>; | ||
acirVerifyProof(acirComposerPtr: Ptr, proofBuf: Uint8Array, isRecursive: boolean): Promise<boolean>; | ||
@@ -40,2 +43,39 @@ acirGetSolidityVerifier(acirComposerPtr: Ptr): Promise<string>; | ||
} | ||
export declare class BarretenbergApiSync { | ||
protected wasm: BarretenbergWasm; | ||
constructor(wasm: BarretenbergWasm); | ||
pedersenCommit(inputsBuffer: Fr[]): Point; | ||
pedersenHash(inputsBuffer: Fr[], hashIndex: number): Fr; | ||
pedersenHashBuffer(inputBuffer: Uint8Array, hashIndex: number): Fr; | ||
blake2s(data: Uint8Array): Buffer32; | ||
blake2sToField(data: Uint8Array): Fr; | ||
schnorrComputePublicKey(privateKey: Fr): Point; | ||
schnorrNegatePublicKey(publicKeyBuffer: Point): Point; | ||
schnorrConstructSignature(message: Uint8Array, privateKey: Fr): [Buffer32, Buffer32]; | ||
schnorrVerifySignature(message: Uint8Array, pubKey: Point, sigS: Buffer32, sigE: Buffer32): boolean; | ||
schnorrMultisigCreateMultisigPublicKey(privateKey: Fq): Buffer128; | ||
schnorrMultisigValidateAndCombineSignerPubkeys(signerPubkeyBuf: Buffer128[]): [Point, boolean]; | ||
schnorrMultisigConstructSignatureRound1(): [Buffer128, Buffer128]; | ||
schnorrMultisigConstructSignatureRound2(message: Uint8Array, privateKey: Fq, signerRoundOnePrivateBuf: Buffer128, signerPubkeysBuf: Buffer128[], roundOnePublicBuf: Buffer128[]): [Fq, boolean]; | ||
schnorrMultisigCombineSignatures(message: Uint8Array, signerPubkeysBuf: Buffer128[], roundOneBuf: Buffer128[], roundTwoBuf: Fq[]): [Buffer32, Buffer32, boolean]; | ||
aesEncryptBufferCbc(input: Uint8Array, iv: Uint8Array, key: Uint8Array, length: number): Uint8Array; | ||
aesDecryptBufferCbc(input: Uint8Array, iv: Uint8Array, key: Uint8Array, length: number): Uint8Array; | ||
srsInitSrs(pointsBuf: Uint8Array, numPoints: number, g2PointBuf: Uint8Array): void; | ||
examplesSimpleCreateAndVerifyProof(): boolean; | ||
testThreads(threads: number, iterations: number): number; | ||
commonInitSlabAllocator(circuitSize: number): void; | ||
acirGetCircuitSizes(constraintSystemBuf: Uint8Array): [number, number, number]; | ||
acirNewAcirComposer(sizeHint: number): Ptr; | ||
acirDeleteAcirComposer(acirComposerPtr: Ptr): void; | ||
acirCreateCircuit(acirComposerPtr: Ptr, constraintSystemBuf: Uint8Array, sizeHint: number): void; | ||
acirInitProvingKey(acirComposerPtr: Ptr, constraintSystemBuf: Uint8Array): void; | ||
acirCreateProof(acirComposerPtr: Ptr, constraintSystemBuf: Uint8Array, witnessBuf: Uint8Array, isRecursive: boolean): Uint8Array; | ||
acirLoadVerificationKey(acirComposerPtr: Ptr, vkBuf: Uint8Array): void; | ||
acirInitVerificationKey(acirComposerPtr: Ptr): void; | ||
acirGetVerificationKey(acirComposerPtr: Ptr): Uint8Array; | ||
acirVerifyProof(acirComposerPtr: Ptr, proofBuf: Uint8Array, isRecursive: boolean): boolean; | ||
acirGetSolidityVerifier(acirComposerPtr: Ptr): string; | ||
acirSerializeProofIntoFields(acirComposerPtr: Ptr, proofBuf: Uint8Array, numInnerPublicInputs: number): Fr[]; | ||
acirSerializeVerificationKeyIntoFields(acirComposerPtr: Ptr): [Fr[], Fr]; | ||
} | ||
//# sourceMappingURL=index.d.ts.map |
@@ -40,2 +40,4 @@ import { Remote } from 'comlink'; | ||
}; | ||
callWasmExport(funcName: string, inArgs: Uint8Array[], outLens: (number | undefined)[]): Uint8Array[]; | ||
private getOutputArgs; | ||
} | ||
@@ -42,0 +44,0 @@ /** |
@@ -6,2 +6,3 @@ import createDebug from 'debug'; | ||
import { BarretenbergWasmBase } from '../barretenberg_wasm_base/index.js'; | ||
import { HeapAllocator } from './heap_allocator.js'; | ||
const debug = createDebug('bb.js:wasm'); | ||
@@ -86,5 +87,29 @@ /** | ||
} | ||
callWasmExport(funcName, inArgs, outLens) { | ||
const alloc = new HeapAllocator(this); | ||
const inPtrs = alloc.copyToMemory(inArgs); | ||
const outPtrs = alloc.getOutputPtrs(outLens); | ||
this.call(funcName, ...inPtrs, ...outPtrs); | ||
const outArgs = this.getOutputArgs(outLens, outPtrs, alloc); | ||
alloc.freeAll(); | ||
return outArgs; | ||
} | ||
getOutputArgs(outLens, outPtrs, alloc) { | ||
return outLens.map((len, i) => { | ||
if (len) { | ||
return this.getMemorySlice(outPtrs[i], outPtrs[i] + len); | ||
} | ||
const slice = this.getMemorySlice(outPtrs[i], outPtrs[i] + 4); | ||
const ptr = new DataView(slice.buffer, slice.byteOffset, slice.byteLength).getUint32(0, true); | ||
// Add our heap buffer to the dealloc list. | ||
alloc.addOutputPtr(ptr); | ||
// The length will be found in the first 4 bytes of the buffer, big endian. See to_heap_buffer. | ||
const lslice = this.getMemorySlice(ptr, ptr + 4); | ||
const length = new DataView(lslice.buffer, lslice.byteOffset, lslice.byteLength).getUint32(0, false); | ||
return this.getMemorySlice(ptr + 4, ptr + 4 + length); | ||
}); | ||
} | ||
} | ||
BarretenbergWasmMain.MAX_THREADS = 32; | ||
export { BarretenbergWasmMain }; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYmFycmV0ZW5iZXJnX3dhc20vYmFycmV0ZW5iZXJnX3dhc21fbWFpbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLFdBQVcsTUFBTSxPQUFPLENBQUM7QUFFaEMsT0FBTyxFQUFFLFNBQVMsRUFBRSx5QkFBeUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUV2RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUUxRSxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7QUFFeEM7Ozs7R0FJRztBQUNILE1BQWEsb0JBQXFCLFNBQVEsb0JBQW9CO0lBQTlEOztRQUVVLFlBQU8sR0FBYSxFQUFFLENBQUM7UUFDdkIsZ0JBQVcsR0FBbUMsRUFBRSxDQUFDO1FBQ2pELGVBQVUsR0FBRyxDQUFDLENBQUM7UUFDZixpQkFBWSxHQUFHLENBQUMsQ0FBQztJQXNGM0IsQ0FBQztJQXBGUSxhQUFhO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxJQUFJLENBQ2YsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUUsb0JBQW9CLENBQUMsV0FBVyxDQUFDLEVBQ2pFLFNBQWdDLEtBQUssRUFDckMsT0FBTyxHQUFHLEVBQUUsRUFDWixPQUFPLEdBQUcsQ0FBQyxJQUFJLEVBQUU7UUFFakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFFckIsTUFBTSxTQUFTLEdBQUcsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ3RELE1BQU0sS0FBSyxHQUFHLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNsRCxNQUFNLE1BQU0sR0FBRyx3QkFBd0IsRUFBRSxDQUFDO1FBRTFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDWCxPQUFPLEdBQUcsQ0FBQyxDQUFDO1NBQ2I7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUNULGdCQUFnQixPQUFPLFdBQVcsU0FBUyxPQUFPO1lBQ2hELFlBQVksT0FBTyxXQUFXLEtBQUssT0FBTztZQUMxQyxZQUFZLE9BQU8sYUFBYSxNQUFNLEVBQUUsQ0FDM0MsQ0FBQztRQUVGLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxXQUFXLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBRW5FLE1BQU0sSUFBSSxHQUFHLE1BQU0sU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxXQUFXLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBRWpHLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBRXpCLCtCQUErQjtRQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXpCLDBGQUEwRjtRQUMxRixJQUFJLE9BQU8sR0FBRyxDQUFDLEVBQUU7WUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksT0FBTyxvQkFBb0IsQ0FBQyxDQUFDO1lBQ3JELElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztZQUM5RixJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFBLHlCQUF1RCxDQUFBLENBQUMsQ0FBQyxDQUFDO1lBQ2hILE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDakY7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLE9BQU87UUFDbEIsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRVMsWUFBWSxDQUFDLE1BQTBCO1FBQy9DLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFL0MsOEJBQThCO1FBQzlCLE9BQU87WUFDTCxHQUFHLFdBQVc7WUFDZCxJQUFJLEVBQUU7Z0JBQ0osY0FBYyxFQUFFLENBQUMsR0FBVyxFQUFFLEVBQUU7b0JBQzlCLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDO29CQUNoQixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7b0JBQy9CLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztvQkFDM0Qsa0ZBQWtGO29CQUNsRixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDL0UsOEVBQThFO29CQUM5RSxPQUFPLEVBQUUsQ0FBQztnQkFDWixDQUFDO2FBQ0Y7WUFDRCxHQUFHLEVBQUU7Z0JBQ0gsR0FBRyxXQUFXLENBQUMsR0FBRztnQkFDbEIsd0JBQXdCLEVBQUUsR0FBRyxFQUFFO29CQUM3Qix1R0FBdUc7b0JBQ3ZHLDhGQUE4RjtvQkFDOUYsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7Z0JBQ3JDLENBQUM7YUFDRjtTQUNGLENBQUM7UUFDRiw2QkFBNkI7SUFDL0IsQ0FBQzs7QUF6Rk0sZ0NBQVcsR0FBRyxFQUFFLEFBQUwsQ0FBTTtTQURiLG9CQUFvQiJ9 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYmFycmV0ZW5iZXJnX3dhc20vYmFycmV0ZW5iZXJnX3dhc21fbWFpbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLFdBQVcsTUFBTSxPQUFPLENBQUM7QUFFaEMsT0FBTyxFQUFFLFNBQVMsRUFBRSx5QkFBeUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUV2RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFcEQsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBRXhDOzs7O0dBSUc7QUFDSCxNQUFhLG9CQUFxQixTQUFRLG9CQUFvQjtJQUE5RDs7UUFFVSxZQUFPLEdBQWEsRUFBRSxDQUFDO1FBQ3ZCLGdCQUFXLEdBQW1DLEVBQUUsQ0FBQztRQUNqRCxlQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsaUJBQVksR0FBRyxDQUFDLENBQUM7SUFtSDNCLENBQUM7SUFqSFEsYUFBYTtRQUNsQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsSUFBSSxDQUNmLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxFQUFFLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxFQUNqRSxTQUFnQyxLQUFLLEVBQ3JDLE9BQU8sR0FBRyxFQUFFLEVBQ1osT0FBTyxHQUFHLENBQUMsSUFBSSxFQUFFO1FBRWpCLElBQUksQ0FBQyxNQUFN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 |
@@ -1,2 +0,2 @@ | ||
import { BarretenbergApi } from '../barretenberg_api/index.js'; | ||
import { BarretenbergApi, BarretenbergApiSync } from '../barretenberg_api/index.js'; | ||
/** | ||
@@ -8,3 +8,2 @@ * The main class library consumers interact with. | ||
private worker; | ||
private wasm; | ||
private constructor(); | ||
@@ -21,2 +20,8 @@ /** | ||
} | ||
export declare class BarretenbergSync extends BarretenbergApiSync { | ||
private constructor(); | ||
static new(): Promise<BarretenbergSync>; | ||
static getSingleton(): Promise<BarretenbergSync>; | ||
getWasm(): import("../barretenberg_wasm/index.js").BarretenbergWasm; | ||
} | ||
//# sourceMappingURL=index.d.ts.map |
import { proxy } from 'comlink'; | ||
import { BarretenbergApi } from '../barretenberg_api/index.js'; | ||
import { BarretenbergBinder } from '../barretenberg_binder/index.js'; | ||
import { BarretenbergApi, BarretenbergApiSync } from '../barretenberg_api/index.js'; | ||
import { createMainWorker } from '../barretenberg_wasm/barretenberg_wasm_main/factory/node/index.js'; | ||
import { BarretenbergWasmMain } from '../barretenberg_wasm/barretenberg_wasm_main/index.js'; | ||
import { getRemoteBarretenbergWasm } from '../barretenberg_wasm/helpers/index.js'; | ||
@@ -14,5 +14,4 @@ import createDebug from 'debug'; | ||
constructor(worker, wasm) { | ||
super(new BarretenbergBinder(wasm)); | ||
super(wasm); | ||
this.worker = worker; | ||
this.wasm = wasm; | ||
} | ||
@@ -39,2 +38,22 @@ /** | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmFycmV0ZW5iZXJnL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDaEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1FQUFtRSxDQUFDO0FBRXJHLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRWxGLE9BQU8sV0FBVyxNQUFNLE9BQU8sQ0FBQztBQUVoQyxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7QUFFeEM7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLFlBQWEsU0FBUSxlQUFlO0lBQy9DLFlBQTRCLE1BQVcsRUFBVSxJQUE0QjtRQUMzRSxLQUFLLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRFYsV0FBTSxHQUFOLE1BQU0sQ0FBSztRQUFVLFNBQUksR0FBSixJQUFJLENBQXdCO0lBRTdFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQWdCO1FBQy9CLE1BQU0sTUFBTSxHQUFHLGdCQUFnQixFQUFFLENBQUM7UUFDbEMsTUFBTSxJQUFJLEdBQUcseUJBQXlCLENBQTZCLE1BQU0sQ0FBQyxDQUFDO1FBQzNFLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDdkMsT0FBTyxJQUFJLFlBQVksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFhO1FBQ2pCLE9BQU8sTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTztRQUNYLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMxQixNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDaEMsQ0FBQztDQUNGIn0= | ||
let barretenbergSyncSingleton; | ||
export class BarretenbergSync extends BarretenbergApiSync { | ||
constructor(wasm) { | ||
super(wasm); | ||
} | ||
static async new() { | ||
const wasm = new BarretenbergWasmMain(); | ||
await wasm.init(1); | ||
return new BarretenbergSync(wasm); | ||
} | ||
static getSingleton() { | ||
if (!barretenbergSyncSingleton) { | ||
barretenbergSyncSingleton = BarretenbergSync.new(); | ||
} | ||
return barretenbergSyncSingleton; | ||
} | ||
getWasm() { | ||
return this.wasm; | ||
} | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmFycmV0ZW5iZXJnL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDaEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1FQUFtRSxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxvQkFBb0IsRUFBOEIsTUFBTSxzREFBc0QsQ0FBQztBQUN4SCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUVsRixPQUFPLFdBQVcsTUFBTSxPQUFPLENBQUM7QUFFaEMsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBRXhDOzs7R0FHRztBQUNILE1BQU0sT0FBTyxZQUFhLFNBQVEsZUFBZTtJQUMvQyxZQUE0QixNQUFXLEVBQUUsSUFBNEI7UUFDbkUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRGMsV0FBTSxHQUFOLE1BQU0sQ0FBSztJQUV2QyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFnQjtRQUMvQixNQUFNLE1BQU0sR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sSUFBSSxHQUFHLHlCQUF5QixDQUE2QixNQUFNLENBQUMsQ0FBQztRQUMzRSxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxZQUFZLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxLQUFLLENBQUMsYUFBYTtRQUNqQixPQUFPLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU87UUFDWCxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDMUIsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ2hDLENBQUM7Q0FDRjtBQUVELElBQUkseUJBQW9ELENBQUM7QUFFekQsTUFBTSxPQUFPLGdCQUFpQixTQUFRLG1CQUFtQjtJQUN2RCxZQUFvQixJQUEwQjtRQUM1QyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHO1FBQ2QsTUFBTSxJQUFJLEdBQUcsSUFBSSxvQkFBb0IsRUFBRSxDQUFDO1FBQ3hDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuQixPQUFPLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxZQUFZO1FBQ2pCLElBQUksQ0FBQyx5QkFBeUIsRUFBRTtZQUM5Qix5QkFBeUIsR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQztTQUNwRDtRQUNELE9BQU8seUJBQXlCLENBQUM7SUFDbkMsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztDQUNGIn0= |
@@ -9,12 +9,16 @@ import fs from 'fs'; | ||
/* eslint-disable @typescript-eslint/no-unused-vars */ | ||
import { BarretenbergBinder } from '../barretenberg_binder/index.js'; | ||
import { BufferDeserializer, NumberDeserializer, VectorDeserializer, BoolDeserializer, StringDeserializer } from '../serialize/index.js'; | ||
import { BarretenbergWasmWorker, BarretenbergWasm } from '../barretenberg_wasm/index.js'; | ||
import { BufferDeserializer, NumberDeserializer, VectorDeserializer, BoolDeserializer, StringDeserializer, serializeBufferable, OutputType } from '../serialize/index.js'; | ||
import { Fr, Fq, Point, Buffer32, Buffer128, Ptr } from '../types/index.js'; | ||
`; | ||
output += generateClass(functionDeclarations); | ||
output += generateSyncClass(functionDeclarations); | ||
return output; | ||
} | ||
function generateClass(functionDeclarations) { | ||
let output = ` | ||
export class BarretenbergApi { | ||
constructor(public binder: BarretenbergBinder) {} | ||
constructor(protected wasm: BarretenbergWasmWorker) {} | ||
async destroy() { | ||
await this.binder.wasm.destroy(); | ||
} | ||
`; | ||
@@ -24,7 +28,12 @@ for (const { functionName, inArgs, outArgs } of functionDeclarations) { | ||
const parameters = inArgs.map(({ name, type }) => `${toCamelCase(name)}: ${mapType(type)}`).join(', '); | ||
const inArgsVar = `[${inArgs.map(arg => toCamelCase(arg.name)).join(', ')}]`; | ||
const outTypesVar = `[${outArgs.map(arg => mapDeserializer(arg.type)).join(', ')}]`; | ||
const wasmCall = `const result = await this.binder.callWasmExport('${functionName}', ${inArgsVar}, ${outTypesVar});`; | ||
const inArgsVar = `const inArgs = [${inArgs | ||
.map(arg => toCamelCase(arg.name)) | ||
.join(', ')}].map(serializeBufferable);`; | ||
const outTypesVar = `const outTypes: OutputType[] = [${outArgs | ||
.map(arg => mapDeserializer(arg.type)) | ||
.join(', ')}];`; | ||
const wasmCall = `const result = await this.wasm.callWasmExport('${functionName}', inArgs, outTypes.map(t=>t.SIZE_IN_BYTES));`; | ||
const outVar = `const out = result.map((r, i) => outTypes[i].fromBuffer(r));`; | ||
const n = outArgs.length; | ||
const returnStmt = n === 0 ? 'return;' : n === 1 ? 'return result[0];' : 'return result as any;'; | ||
const returnStmt = n === 0 ? 'return;' : n === 1 ? 'return out[0];' : 'return out as any;'; | ||
const returnType = outArgs.length === 0 | ||
@@ -37,3 +46,6 @@ ? 'void' | ||
async ${toCamelCase(functionName)}(${parameters}): Promise<${returnType}> { | ||
${inArgsVar} | ||
${outTypesVar} | ||
${wasmCall} | ||
${outVar} | ||
${returnStmt} | ||
@@ -50,2 +62,43 @@ } | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iaW5kZ2VuL3R5cGVzY3JpcHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3BCLE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUdqRCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsUUFBZ0I7SUFDckQsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkQsTUFBTSxvQkFBb0IsR0FBMEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUU1RSxJQUFJLE1BQU0sR0FBRzs7Ozs7Ozs7Ozs7O0NBWWQsQ0FBQztJQUVBLEtBQUssTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksb0JBQW9CLEVBQUU7UUFDcEUsSUFBSTtZQUNGLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdkcsTUFBTSxTQUFTLEdBQUcsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1lBQzdFLE1BQU0sV0FBVyxHQUFHLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUNwRixNQUFNLFFBQVEsR0FBRyxvREFBb0QsWUFBWSxNQUFNLFNBQVMsS0FBSyxXQUFXLElBQUksQ0FBQztZQUVySCxNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQ3pCLE1BQU0sVUFBVSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDO1lBQ2pHLE1BQU0sVUFBVSxHQUNkLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQztnQkFDbEIsQ0FBQyxDQUFDLE1BQU07Z0JBQ1IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQztvQkFDdEIsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDL0IsQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUUxRCxNQUFNLElBQUk7VUFDTixXQUFXLENBQUMsWUFBWSxDQUFDLElBQUksVUFBVSxjQUFjLFVBQVU7TUFDbkUsUUFBUTtNQUNSLFVBQVU7O0NBRWYsQ0FBQztTQUNHO1FBQUMsT0FBTyxHQUFRLEVBQUU7WUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyxZQUFZLFlBQVksS0FBSyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztTQUM3RDtLQUNGO0lBRUQsTUFBTSxJQUFJLEdBQUcsQ0FBQztJQUVkLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMifQ== | ||
function generateSyncClass(functionDeclarations) { | ||
let output = ` | ||
export class BarretenbergApiSync { | ||
constructor(protected wasm: BarretenbergWasm) {} | ||
`; | ||
for (const { functionName, inArgs, outArgs } of functionDeclarations) { | ||
try { | ||
const parameters = inArgs.map(({ name, type }) => `${toCamelCase(name)}: ${mapType(type)}`).join(', '); | ||
const inArgsVar = `const inArgs = [${inArgs | ||
.map(arg => toCamelCase(arg.name)) | ||
.join(', ')}].map(serializeBufferable);`; | ||
const outTypesVar = `const outTypes: OutputType[] = [${outArgs | ||
.map(arg => mapDeserializer(arg.type)) | ||
.join(', ')}];`; | ||
const wasmCall = `const result = this.wasm.callWasmExport('${functionName}', inArgs, outTypes.map(t=>t.SIZE_IN_BYTES));`; | ||
const outVar = `const out = result.map((r, i) => outTypes[i].fromBuffer(r));`; | ||
const n = outArgs.length; | ||
const returnStmt = n === 0 ? 'return;' : n === 1 ? 'return out[0];' : 'return out as any;'; | ||
const returnType = outArgs.length === 0 | ||
? 'void' | ||
: outArgs.length === 1 | ||
? `${mapType(outArgs[0].type)}` | ||
: `[${outArgs.map(a => mapType(a.type)).join(', ')}]`; | ||
output += ` | ||
${toCamelCase(functionName)}(${parameters}): ${returnType} { | ||
${inArgsVar} | ||
${outTypesVar} | ||
${wasmCall} | ||
${outVar} | ||
${returnStmt} | ||
} | ||
`; | ||
} | ||
catch (err) { | ||
throw new Error(`Function ${functionName}: ${err.message}`); | ||
} | ||
} | ||
output += `}`; | ||
return output; | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iaW5kZ2VuL3R5cGVzY3JpcHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3BCLE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUdqRCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsUUFBZ0I7SUFDckQsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkQsTUFBTSxvQkFBb0IsR0FBMEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUU1RSxJQUFJLE1BQU0sR0FBRzs7Ozs7O0NBTWQsQ0FBQztJQUVBLE1BQU0sSUFBSSxhQUFhLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUM5QyxNQUFNLElBQUksaUJBQWlCLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUVsRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQsU0FBUyxhQUFhLENBQUMsb0JBQTJDO0lBQ2hFLElBQUksTUFBTSxHQUFHOzs7O0NBSWQsQ0FBQztJQUVBLEtBQUssTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksb0JBQW9CLEVBQUU7UUFDcEUsSUFBSTtZQUNGLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdkcsTUFBTSxTQUFTLEdBQUcsbUJB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 |
export { Crs } from './crs/index.js'; | ||
export { Barretenberg } from './barretenberg/index.js'; | ||
export { Barretenberg, BarretenbergSync } from './barretenberg/index.js'; | ||
export { RawBuffer, Fr } from './types/index.js'; | ||
export { Pedersen } from './pedersen/index.js'; | ||
//# sourceMappingURL=index.d.ts.map |
export { Crs } from './crs/index.js'; | ||
export { Barretenberg } from './barretenberg/index.js'; | ||
export { Barretenberg, BarretenbergSync } from './barretenberg/index.js'; | ||
export { RawBuffer, Fr } from './types/index.js'; | ||
export { Pedersen } from './pedersen/index.js'; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQyJ9 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxNQUFNLGtCQUFrQixDQUFDIn0= |
@@ -9,4 +9,5 @@ #!/usr/bin/env node | ||
export declare function writeVk(bytecodePath: string, crsPath: string, outputPath: string): Promise<void>; | ||
export declare function writePk(bytecodePath: string, crsPath: string, outputPath: string): Promise<void>; | ||
export declare function proofAsFields(proofPath: string, vkPath: string, outputPath: string): Promise<void>; | ||
export declare function vkAsFields(vkPath: string, vkeyOutputPath: string): Promise<void>; | ||
//# sourceMappingURL=main.d.ts.map |
@@ -193,2 +193,21 @@ #!/usr/bin/env node | ||
} | ||
export async function writePk(bytecodePath, crsPath, outputPath) { | ||
const { api, acirComposer } = await init(bytecodePath, crsPath); | ||
try { | ||
debug('initing proving key...'); | ||
const bytecode = getBytecode(bytecodePath); | ||
const pk = await api.acirGetProvingKey(acirComposer, bytecode); | ||
if (outputPath === '-') { | ||
process.stdout.write(pk); | ||
debug(`pk written to stdout`); | ||
} | ||
else { | ||
writeFileSync(outputPath, pk); | ||
debug(`pk written to: ${outputPath}`); | ||
} | ||
} | ||
finally { | ||
await api.destroy(); | ||
} | ||
} | ||
export async function proofAsFields(proofPath, vkPath, outputPath) { | ||
@@ -306,2 +325,11 @@ const { api, acirComposer } = await initLite(); | ||
program | ||
.command('write_pk') | ||
.description('Output proving key.') | ||
.option('-b, --bytecode-path <path>', 'Specify the bytecode path', './target/acir.gz') | ||
.requiredOption('-o, --output-path <path>', 'Specify the path to write the key') | ||
.action(async ({ bytecodePath, outputPath, crsPath }) => { | ||
handleGlobalOptions(); | ||
await writePk(bytecodePath, crsPath, outputPath); | ||
}); | ||
program | ||
.command('proof_as_fields') | ||
@@ -334,2 +362,2 @@ .description('Return the proof as fields elements') | ||
program.name('bb.js').parse(process.argv); | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDMUQsT0FBTyxXQUFXLE1BQU0sT0FBTyxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0QsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLFdBQVcsQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDOUMsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBRW5DLHNEQUFzRDtBQUN0RCwrREFBK0Q7QUFDL0QsRUFBRTtBQUNGLCtEQUErRDtBQUMvRCwrREFBK0Q7QUFDL0QsNENBQTRDO0FBQzVDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNqQyxNQUFNLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQXFCLElBQUksU0FBUyxDQUFDO0FBRWhFLFNBQVMsV0FBVyxDQUFDLFlBQW9CO0lBQ3ZDLE1BQU0sY0FBYyxHQUFHLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNsRCxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDaEQsT0FBTyxZQUFZLENBQUM7QUFDdEIs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 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDMUQsT0FBTyxXQUFXLE1BQU0sT0FBTyxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0QsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLFdBQVcsQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDOUMsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBRW5DLHNEQUFzRDtBQUN0RCwrREFBK0Q7QUFDL0QsRUFBRTtBQUNGLCtEQUErRDtBQUMvRCwrREFBK0Q7QUFDL0QsNENBQTRDO0FBQzVDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNqQyxNQUFNLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQXFCLElBQUksU0FBUyxDQUFDO0FBRWhFLFNBQVMsV0FBVyxDQUFDLFlBQW9CO0lBQ3ZDLE1BQU0sY0FBYyxHQUFHLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNsRCxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDaEQsT0FBTyxZQUFZLENBQUM7QUFDdEIs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 |
{ | ||
"name": "@aztec/bb.js", | ||
"version": "0.15.0", | ||
"version": "0.15.1", | ||
"homepage": "https://github.com/AztecProtocol/aztec-packages/tree/master/barretenberg/ts", | ||
@@ -5,0 +5,0 @@ "license": "MIT", |
// WARNING: FILE CODE GENERATED BY BINDGEN UTILITY. DO NOT EDIT! | ||
/* eslint-disable @typescript-eslint/no-unused-vars */ | ||
import { BarretenbergBinder } from '../barretenberg_binder/index.js'; | ||
import { BarretenbergWasmWorker, BarretenbergWasm } from '../barretenberg_wasm/index.js'; | ||
import { | ||
@@ -10,2 +10,4 @@ BufferDeserializer, | ||
StringDeserializer, | ||
serializeBufferable, | ||
OutputType, | ||
} from '../serialize/index.js'; | ||
@@ -15,81 +17,146 @@ import { Fr, Fq, Point, Buffer32, Buffer128, Ptr } from '../types/index.js'; | ||
export class BarretenbergApi { | ||
constructor(public binder: BarretenbergBinder) {} | ||
constructor(protected wasm: BarretenbergWasmWorker) {} | ||
async destroy() { | ||
await this.binder.wasm.destroy(); | ||
} | ||
async pedersenCommit(inputsBuffer: Fr[]): Promise<Point> { | ||
const result = await this.binder.callWasmExport('pedersen_commit', [inputsBuffer], [Point]); | ||
return result[0]; | ||
const inArgs = [inputsBuffer].map(serializeBufferable); | ||
const outTypes: OutputType[] = [Point]; | ||
const result = await this.wasm.callWasmExport( | ||
'pedersen_commit', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out[0]; | ||
} | ||
async pedersenHash(inputsBuffer: Fr[], hashIndex: number): Promise<Fr> { | ||
const result = await this.binder.callWasmExport('pedersen_hash', [inputsBuffer, hashIndex], [Fr]); | ||
return result[0]; | ||
const inArgs = [inputsBuffer, hashIndex].map(serializeBufferable); | ||
const outTypes: OutputType[] = [Fr]; | ||
const result = await this.wasm.callWasmExport( | ||
'pedersen_hash', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out[0]; | ||
} | ||
async pedersenHashBuffer(inputBuffer: Uint8Array, hashIndex: number): Promise<Fr> { | ||
const inArgs = [inputBuffer, hashIndex].map(serializeBufferable); | ||
const outTypes: OutputType[] = [Fr]; | ||
const result = await this.wasm.callWasmExport( | ||
'pedersen_hash_buffer', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out[0]; | ||
} | ||
async blake2s(data: Uint8Array): Promise<Buffer32> { | ||
const result = await this.binder.callWasmExport('blake2s', [data], [Buffer32]); | ||
return result[0]; | ||
const inArgs = [data].map(serializeBufferable); | ||
const outTypes: OutputType[] = [Buffer32]; | ||
const result = await this.wasm.callWasmExport( | ||
'blake2s', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out[0]; | ||
} | ||
async blake2sToField(data: Uint8Array): Promise<Fr> { | ||
const result = await this.binder.callWasmExport('blake2s_to_field_', [data], [Fr]); | ||
return result[0]; | ||
const inArgs = [data].map(serializeBufferable); | ||
const outTypes: OutputType[] = [Fr]; | ||
const result = await this.wasm.callWasmExport( | ||
'blake2s_to_field_', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out[0]; | ||
} | ||
async schnorrComputePublicKey(privateKey: Fr): Promise<Point> { | ||
const result = await this.binder.callWasmExport('schnorr_compute_public_key', [privateKey], [Point]); | ||
return result[0]; | ||
const inArgs = [privateKey].map(serializeBufferable); | ||
const outTypes: OutputType[] = [Point]; | ||
const result = await this.wasm.callWasmExport( | ||
'schnorr_compute_public_key', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out[0]; | ||
} | ||
async schnorrNegatePublicKey(publicKeyBuffer: Point): Promise<Point> { | ||
const result = await this.binder.callWasmExport('schnorr_negate_public_key', [publicKeyBuffer], [Point]); | ||
return result[0]; | ||
const inArgs = [publicKeyBuffer].map(serializeBufferable); | ||
const outTypes: OutputType[] = [Point]; | ||
const result = await this.wasm.callWasmExport( | ||
'schnorr_negate_public_key', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out[0]; | ||
} | ||
async schnorrConstructSignature(message: Uint8Array, privateKey: Fr): Promise<[Buffer32, Buffer32]> { | ||
const result = await this.binder.callWasmExport( | ||
const inArgs = [message, privateKey].map(serializeBufferable); | ||
const outTypes: OutputType[] = [Buffer32, Buffer32]; | ||
const result = await this.wasm.callWasmExport( | ||
'schnorr_construct_signature', | ||
[message, privateKey], | ||
[Buffer32, Buffer32], | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
return result as any; | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out as any; | ||
} | ||
async schnorrVerifySignature(message: Uint8Array, pubKey: Point, sigS: Buffer32, sigE: Buffer32): Promise<boolean> { | ||
const result = await this.binder.callWasmExport( | ||
const inArgs = [message, pubKey, sigS, sigE].map(serializeBufferable); | ||
const outTypes: OutputType[] = [BoolDeserializer()]; | ||
const result = await this.wasm.callWasmExport( | ||
'schnorr_verify_signature', | ||
[message, pubKey, sigS, sigE], | ||
[BoolDeserializer()], | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
return result[0]; | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out[0]; | ||
} | ||
async schnorrMultisigCreateMultisigPublicKey(privateKey: Fq): Promise<Buffer128> { | ||
const result = await this.binder.callWasmExport( | ||
const inArgs = [privateKey].map(serializeBufferable); | ||
const outTypes: OutputType[] = [Buffer128]; | ||
const result = await this.wasm.callWasmExport( | ||
'schnorr_multisig_create_multisig_public_key', | ||
[privateKey], | ||
[Buffer128], | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
return result[0]; | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out[0]; | ||
} | ||
async schnorrMultisigValidateAndCombineSignerPubkeys(signerPubkeyBuf: Buffer128[]): Promise<[Point, boolean]> { | ||
const result = await this.binder.callWasmExport( | ||
const inArgs = [signerPubkeyBuf].map(serializeBufferable); | ||
const outTypes: OutputType[] = [Point, BoolDeserializer()]; | ||
const result = await this.wasm.callWasmExport( | ||
'schnorr_multisig_validate_and_combine_signer_pubkeys', | ||
[signerPubkeyBuf], | ||
[Point, BoolDeserializer()], | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
return result as any; | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out as any; | ||
} | ||
async schnorrMultisigConstructSignatureRound1(): Promise<[Buffer128, Buffer128]> { | ||
const result = await this.binder.callWasmExport( | ||
const inArgs = [].map(serializeBufferable); | ||
const outTypes: OutputType[] = [Buffer128, Buffer128]; | ||
const result = await this.wasm.callWasmExport( | ||
'schnorr_multisig_construct_signature_round_1', | ||
[], | ||
[Buffer128, Buffer128], | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
return result as any; | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out as any; | ||
} | ||
@@ -104,8 +171,13 @@ | ||
): Promise<[Fq, boolean]> { | ||
const result = await this.binder.callWasmExport( | ||
const inArgs = [message, privateKey, signerRoundOnePrivateBuf, signerPubkeysBuf, roundOnePublicBuf].map( | ||
serializeBufferable, | ||
); | ||
const outTypes: OutputType[] = [Fq, BoolDeserializer()]; | ||
const result = await this.wasm.callWasmExport( | ||
'schnorr_multisig_construct_signature_round_2', | ||
[message, privateKey, signerRoundOnePrivateBuf, signerPubkeysBuf, roundOnePublicBuf], | ||
[Fq, BoolDeserializer()], | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
return result as any; | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out as any; | ||
} | ||
@@ -119,12 +191,46 @@ | ||
): Promise<[Buffer32, Buffer32, boolean]> { | ||
const result = await this.binder.callWasmExport( | ||
const inArgs = [message, signerPubkeysBuf, roundOneBuf, roundTwoBuf].map(serializeBufferable); | ||
const outTypes: OutputType[] = [Buffer32, Buffer32, BoolDeserializer()]; | ||
const result = await this.wasm.callWasmExport( | ||
'schnorr_multisig_combine_signatures', | ||
[message, signerPubkeysBuf, roundOneBuf, roundTwoBuf], | ||
[Buffer32, Buffer32, BoolDeserializer()], | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
return result as any; | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out as any; | ||
} | ||
async aesEncryptBufferCbc(input: Uint8Array, iv: Uint8Array, key: Uint8Array, length: number): Promise<Uint8Array> { | ||
const inArgs = [input, iv, key, length].map(serializeBufferable); | ||
const outTypes: OutputType[] = [BufferDeserializer()]; | ||
const result = await this.wasm.callWasmExport( | ||
'aes_encrypt_buffer_cbc', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out[0]; | ||
} | ||
async aesDecryptBufferCbc(input: Uint8Array, iv: Uint8Array, key: Uint8Array, length: number): Promise<Uint8Array> { | ||
const inArgs = [input, iv, key, length].map(serializeBufferable); | ||
const outTypes: OutputType[] = [BufferDeserializer()]; | ||
const result = await this.wasm.callWasmExport( | ||
'aes_decrypt_buffer_cbc', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out[0]; | ||
} | ||
async srsInitSrs(pointsBuf: Uint8Array, numPoints: number, g2PointBuf: Uint8Array): Promise<void> { | ||
const result = await this.binder.callWasmExport('srs_init_srs', [pointsBuf, numPoints, g2PointBuf], []); | ||
const inArgs = [pointsBuf, numPoints, g2PointBuf].map(serializeBufferable); | ||
const outTypes: OutputType[] = []; | ||
const result = await this.wasm.callWasmExport( | ||
'srs_init_srs', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return; | ||
@@ -134,17 +240,34 @@ } | ||
async examplesSimpleCreateAndVerifyProof(): Promise<boolean> { | ||
const result = await this.binder.callWasmExport( | ||
const inArgs = [].map(serializeBufferable); | ||
const outTypes: OutputType[] = [BoolDeserializer()]; | ||
const result = await this.wasm.callWasmExport( | ||
'examples_simple_create_and_verify_proof', | ||
[], | ||
[BoolDeserializer()], | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
return result[0]; | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out[0]; | ||
} | ||
async testThreads(threads: number, iterations: number): Promise<number> { | ||
const result = await this.binder.callWasmExport('test_threads', [threads, iterations], [NumberDeserializer()]); | ||
return result[0]; | ||
const inArgs = [threads, iterations].map(serializeBufferable); | ||
const outTypes: OutputType[] = [NumberDeserializer()]; | ||
const result = await this.wasm.callWasmExport( | ||
'test_threads', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out[0]; | ||
} | ||
async commonInitSlabAllocator(circuitSize: number): Promise<void> { | ||
const result = await this.binder.callWasmExport('common_init_slab_allocator', [circuitSize], []); | ||
const inArgs = [circuitSize].map(serializeBufferable); | ||
const outTypes: OutputType[] = []; | ||
const result = await this.wasm.callWasmExport( | ||
'common_init_slab_allocator', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return; | ||
@@ -154,17 +277,34 @@ } | ||
async acirGetCircuitSizes(constraintSystemBuf: Uint8Array): Promise<[number, number, number]> { | ||
const result = await this.binder.callWasmExport( | ||
const inArgs = [constraintSystemBuf].map(serializeBufferable); | ||
const outTypes: OutputType[] = [NumberDeserializer(), NumberDeserializer(), NumberDeserializer()]; | ||
const result = await this.wasm.callWasmExport( | ||
'acir_get_circuit_sizes', | ||
[constraintSystemBuf], | ||
[NumberDeserializer(), NumberDeserializer(), NumberDeserializer()], | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
return result as any; | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out as any; | ||
} | ||
async acirNewAcirComposer(sizeHint: number): Promise<Ptr> { | ||
const result = await this.binder.callWasmExport('acir_new_acir_composer', [sizeHint], [Ptr]); | ||
return result[0]; | ||
const inArgs = [sizeHint].map(serializeBufferable); | ||
const outTypes: OutputType[] = [Ptr]; | ||
const result = await this.wasm.callWasmExport( | ||
'acir_new_acir_composer', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out[0]; | ||
} | ||
async acirDeleteAcirComposer(acirComposerPtr: Ptr): Promise<void> { | ||
const result = await this.binder.callWasmExport('acir_delete_acir_composer', [acirComposerPtr], []); | ||
const inArgs = [acirComposerPtr].map(serializeBufferable); | ||
const outTypes: OutputType[] = []; | ||
const result = await this.wasm.callWasmExport( | ||
'acir_delete_acir_composer', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return; | ||
@@ -174,7 +314,10 @@ } | ||
async acirCreateCircuit(acirComposerPtr: Ptr, constraintSystemBuf: Uint8Array, sizeHint: number): Promise<void> { | ||
const result = await this.binder.callWasmExport( | ||
const inArgs = [acirComposerPtr, constraintSystemBuf, sizeHint].map(serializeBufferable); | ||
const outTypes: OutputType[] = []; | ||
const result = await this.wasm.callWasmExport( | ||
'acir_create_circuit', | ||
[acirComposerPtr, constraintSystemBuf, sizeHint], | ||
[], | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return; | ||
@@ -184,7 +327,10 @@ } | ||
async acirInitProvingKey(acirComposerPtr: Ptr, constraintSystemBuf: Uint8Array): Promise<void> { | ||
const result = await this.binder.callWasmExport( | ||
const inArgs = [acirComposerPtr, constraintSystemBuf].map(serializeBufferable); | ||
const outTypes: OutputType[] = []; | ||
const result = await this.wasm.callWasmExport( | ||
'acir_init_proving_key', | ||
[acirComposerPtr, constraintSystemBuf], | ||
[], | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return; | ||
@@ -199,12 +345,22 @@ } | ||
): Promise<Uint8Array> { | ||
const result = await this.binder.callWasmExport( | ||
const inArgs = [acirComposerPtr, constraintSystemBuf, witnessBuf, isRecursive].map(serializeBufferable); | ||
const outTypes: OutputType[] = [BufferDeserializer()]; | ||
const result = await this.wasm.callWasmExport( | ||
'acir_create_proof', | ||
[acirComposerPtr, constraintSystemBuf, witnessBuf, isRecursive], | ||
[BufferDeserializer()], | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
return result[0]; | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out[0]; | ||
} | ||
async acirLoadVerificationKey(acirComposerPtr: Ptr, vkBuf: Uint8Array): Promise<void> { | ||
const result = await this.binder.callWasmExport('acir_load_verification_key', [acirComposerPtr, vkBuf], []); | ||
const inArgs = [acirComposerPtr, vkBuf].map(serializeBufferable); | ||
const outTypes: OutputType[] = []; | ||
const result = await this.wasm.callWasmExport( | ||
'acir_load_verification_key', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return; | ||
@@ -214,3 +370,10 @@ } | ||
async acirInitVerificationKey(acirComposerPtr: Ptr): Promise<void> { | ||
const result = await this.binder.callWasmExport('acir_init_verification_key', [acirComposerPtr], []); | ||
const inArgs = [acirComposerPtr].map(serializeBufferable); | ||
const outTypes: OutputType[] = []; | ||
const result = await this.wasm.callWasmExport( | ||
'acir_init_verification_key', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return; | ||
@@ -220,26 +383,47 @@ } | ||
async acirGetVerificationKey(acirComposerPtr: Ptr): Promise<Uint8Array> { | ||
const result = await this.binder.callWasmExport( | ||
const inArgs = [acirComposerPtr].map(serializeBufferable); | ||
const outTypes: OutputType[] = [BufferDeserializer()]; | ||
const result = await this.wasm.callWasmExport( | ||
'acir_get_verification_key', | ||
[acirComposerPtr], | ||
[BufferDeserializer()], | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
return result[0]; | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out[0]; | ||
} | ||
async acirGetProvingKey(acirComposerPtr: Ptr, constraintSystemBuf: Uint8Array): Promise<Uint8Array> { | ||
const inArgs = [acirComposerPtr, constraintSystemBuf].map(serializeBufferable); | ||
const outTypes: OutputType[] = [BufferDeserializer()]; | ||
const result = await this.wasm.callWasmExport( | ||
'acir_get_proving_key', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out[0]; | ||
} | ||
async acirVerifyProof(acirComposerPtr: Ptr, proofBuf: Uint8Array, isRecursive: boolean): Promise<boolean> { | ||
const result = await this.binder.callWasmExport( | ||
const inArgs = [acirComposerPtr, proofBuf, isRecursive].map(serializeBufferable); | ||
const outTypes: OutputType[] = [BoolDeserializer()]; | ||
const result = await this.wasm.callWasmExport( | ||
'acir_verify_proof', | ||
[acirComposerPtr, proofBuf, isRecursive], | ||
[BoolDeserializer()], | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
return result[0]; | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out[0]; | ||
} | ||
async acirGetSolidityVerifier(acirComposerPtr: Ptr): Promise<string> { | ||
const result = await this.binder.callWasmExport( | ||
const inArgs = [acirComposerPtr].map(serializeBufferable); | ||
const outTypes: OutputType[] = [StringDeserializer()]; | ||
const result = await this.wasm.callWasmExport( | ||
'acir_get_solidity_verifier', | ||
[acirComposerPtr], | ||
[StringDeserializer()], | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
return result[0]; | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out[0]; | ||
} | ||
@@ -252,18 +436,441 @@ | ||
): Promise<Fr[]> { | ||
const result = await this.binder.callWasmExport( | ||
const inArgs = [acirComposerPtr, proofBuf, numInnerPublicInputs].map(serializeBufferable); | ||
const outTypes: OutputType[] = [VectorDeserializer(Fr)]; | ||
const result = await this.wasm.callWasmExport( | ||
'acir_serialize_proof_into_fields', | ||
[acirComposerPtr, proofBuf, numInnerPublicInputs], | ||
[VectorDeserializer(Fr)], | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
return result[0]; | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out[0]; | ||
} | ||
async acirSerializeVerificationKeyIntoFields(acirComposerPtr: Ptr): Promise<[Fr[], Fr]> { | ||
const result = await this.binder.callWasmExport( | ||
const inArgs = [acirComposerPtr].map(serializeBufferable); | ||
const outTypes: OutputType[] = [VectorDeserializer(Fr), Fr]; | ||
const result = await this.wasm.callWasmExport( | ||
'acir_serialize_verification_key_into_fields', | ||
[acirComposerPtr], | ||
[VectorDeserializer(Fr), Fr], | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
return result as any; | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out as any; | ||
} | ||
} | ||
export class BarretenbergApiSync { | ||
constructor(protected wasm: BarretenbergWasm) {} | ||
pedersenCommit(inputsBuffer: Fr[]): Point { | ||
const inArgs = [inputsBuffer].map(serializeBufferable); | ||
const outTypes: OutputType[] = [Point]; | ||
const result = this.wasm.callWasmExport( | ||
'pedersen_commit', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out[0]; | ||
} | ||
pedersenHash(inputsBuffer: Fr[], hashIndex: number): Fr { | ||
const inArgs = [inputsBuffer, hashIndex].map(serializeBufferable); | ||
const outTypes: OutputType[] = [Fr]; | ||
const result = this.wasm.callWasmExport( | ||
'pedersen_hash', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out[0]; | ||
} | ||
pedersenHashBuffer(inputBuffer: Uint8Array, hashIndex: number): Fr { | ||
const inArgs = [inputBuffer, hashIndex].map(serializeBufferable); | ||
const outTypes: OutputType[] = [Fr]; | ||
const result = this.wasm.callWasmExport( | ||
'pedersen_hash_buffer', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out[0]; | ||
} | ||
blake2s(data: Uint8Array): Buffer32 { | ||
const inArgs = [data].map(serializeBufferable); | ||
const outTypes: OutputType[] = [Buffer32]; | ||
const result = this.wasm.callWasmExport( | ||
'blake2s', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out[0]; | ||
} | ||
blake2sToField(data: Uint8Array): Fr { | ||
const inArgs = [data].map(serializeBufferable); | ||
const outTypes: OutputType[] = [Fr]; | ||
const result = this.wasm.callWasmExport( | ||
'blake2s_to_field_', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out[0]; | ||
} | ||
schnorrComputePublicKey(privateKey: Fr): Point { | ||
const inArgs = [privateKey].map(serializeBufferable); | ||
const outTypes: OutputType[] = [Point]; | ||
const result = this.wasm.callWasmExport( | ||
'schnorr_compute_public_key', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out[0]; | ||
} | ||
schnorrNegatePublicKey(publicKeyBuffer: Point): Point { | ||
const inArgs = [publicKeyBuffer].map(serializeBufferable); | ||
const outTypes: OutputType[] = [Point]; | ||
const result = this.wasm.callWasmExport( | ||
'schnorr_negate_public_key', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out[0]; | ||
} | ||
schnorrConstructSignature(message: Uint8Array, privateKey: Fr): [Buffer32, Buffer32] { | ||
const inArgs = [message, privateKey].map(serializeBufferable); | ||
const outTypes: OutputType[] = [Buffer32, Buffer32]; | ||
const result = this.wasm.callWasmExport( | ||
'schnorr_construct_signature', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out as any; | ||
} | ||
schnorrVerifySignature(message: Uint8Array, pubKey: Point, sigS: Buffer32, sigE: Buffer32): boolean { | ||
const inArgs = [message, pubKey, sigS, sigE].map(serializeBufferable); | ||
const outTypes: OutputType[] = [BoolDeserializer()]; | ||
const result = this.wasm.callWasmExport( | ||
'schnorr_verify_signature', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out[0]; | ||
} | ||
schnorrMultisigCreateMultisigPublicKey(privateKey: Fq): Buffer128 { | ||
const inArgs = [privateKey].map(serializeBufferable); | ||
const outTypes: OutputType[] = [Buffer128]; | ||
const result = this.wasm.callWasmExport( | ||
'schnorr_multisig_create_multisig_public_key', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out[0]; | ||
} | ||
schnorrMultisigValidateAndCombineSignerPubkeys(signerPubkeyBuf: Buffer128[]): [Point, boolean] { | ||
const inArgs = [signerPubkeyBuf].map(serializeBufferable); | ||
const outTypes: OutputType[] = [Point, BoolDeserializer()]; | ||
const result = this.wasm.callWasmExport( | ||
'schnorr_multisig_validate_and_combine_signer_pubkeys', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out as any; | ||
} | ||
schnorrMultisigConstructSignatureRound1(): [Buffer128, Buffer128] { | ||
const inArgs = [].map(serializeBufferable); | ||
const outTypes: OutputType[] = [Buffer128, Buffer128]; | ||
const result = this.wasm.callWasmExport( | ||
'schnorr_multisig_construct_signature_round_1', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out as any; | ||
} | ||
schnorrMultisigConstructSignatureRound2( | ||
message: Uint8Array, | ||
privateKey: Fq, | ||
signerRoundOnePrivateBuf: Buffer128, | ||
signerPubkeysBuf: Buffer128[], | ||
roundOnePublicBuf: Buffer128[], | ||
): [Fq, boolean] { | ||
const inArgs = [message, privateKey, signerRoundOnePrivateBuf, signerPubkeysBuf, roundOnePublicBuf].map( | ||
serializeBufferable, | ||
); | ||
const outTypes: OutputType[] = [Fq, BoolDeserializer()]; | ||
const result = this.wasm.callWasmExport( | ||
'schnorr_multisig_construct_signature_round_2', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out as any; | ||
} | ||
schnorrMultisigCombineSignatures( | ||
message: Uint8Array, | ||
signerPubkeysBuf: Buffer128[], | ||
roundOneBuf: Buffer128[], | ||
roundTwoBuf: Fq[], | ||
): [Buffer32, Buffer32, boolean] { | ||
const inArgs = [message, signerPubkeysBuf, roundOneBuf, roundTwoBuf].map(serializeBufferable); | ||
const outTypes: OutputType[] = [Buffer32, Buffer32, BoolDeserializer()]; | ||
const result = this.wasm.callWasmExport( | ||
'schnorr_multisig_combine_signatures', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out as any; | ||
} | ||
aesEncryptBufferCbc(input: Uint8Array, iv: Uint8Array, key: Uint8Array, length: number): Uint8Array { | ||
const inArgs = [input, iv, key, length].map(serializeBufferable); | ||
const outTypes: OutputType[] = [BufferDeserializer()]; | ||
const result = this.wasm.callWasmExport( | ||
'aes_encrypt_buffer_cbc', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out[0]; | ||
} | ||
aesDecryptBufferCbc(input: Uint8Array, iv: Uint8Array, key: Uint8Array, length: number): Uint8Array { | ||
const inArgs = [input, iv, key, length].map(serializeBufferable); | ||
const outTypes: OutputType[] = [BufferDeserializer()]; | ||
const result = this.wasm.callWasmExport( | ||
'aes_decrypt_buffer_cbc', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out[0]; | ||
} | ||
srsInitSrs(pointsBuf: Uint8Array, numPoints: number, g2PointBuf: Uint8Array): void { | ||
const inArgs = [pointsBuf, numPoints, g2PointBuf].map(serializeBufferable); | ||
const outTypes: OutputType[] = []; | ||
const result = this.wasm.callWasmExport( | ||
'srs_init_srs', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return; | ||
} | ||
examplesSimpleCreateAndVerifyProof(): boolean { | ||
const inArgs = [].map(serializeBufferable); | ||
const outTypes: OutputType[] = [BoolDeserializer()]; | ||
const result = this.wasm.callWasmExport( | ||
'examples_simple_create_and_verify_proof', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out[0]; | ||
} | ||
testThreads(threads: number, iterations: number): number { | ||
const inArgs = [threads, iterations].map(serializeBufferable); | ||
const outTypes: OutputType[] = [NumberDeserializer()]; | ||
const result = this.wasm.callWasmExport( | ||
'test_threads', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out[0]; | ||
} | ||
commonInitSlabAllocator(circuitSize: number): void { | ||
const inArgs = [circuitSize].map(serializeBufferable); | ||
const outTypes: OutputType[] = []; | ||
const result = this.wasm.callWasmExport( | ||
'common_init_slab_allocator', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return; | ||
} | ||
acirGetCircuitSizes(constraintSystemBuf: Uint8Array): [number, number, number] { | ||
const inArgs = [constraintSystemBuf].map(serializeBufferable); | ||
const outTypes: OutputType[] = [NumberDeserializer(), NumberDeserializer(), NumberDeserializer()]; | ||
const result = this.wasm.callWasmExport( | ||
'acir_get_circuit_sizes', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out as any; | ||
} | ||
acirNewAcirComposer(sizeHint: number): Ptr { | ||
const inArgs = [sizeHint].map(serializeBufferable); | ||
const outTypes: OutputType[] = [Ptr]; | ||
const result = this.wasm.callWasmExport( | ||
'acir_new_acir_composer', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out[0]; | ||
} | ||
acirDeleteAcirComposer(acirComposerPtr: Ptr): void { | ||
const inArgs = [acirComposerPtr].map(serializeBufferable); | ||
const outTypes: OutputType[] = []; | ||
const result = this.wasm.callWasmExport( | ||
'acir_delete_acir_composer', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return; | ||
} | ||
acirCreateCircuit(acirComposerPtr: Ptr, constraintSystemBuf: Uint8Array, sizeHint: number): void { | ||
const inArgs = [acirComposerPtr, constraintSystemBuf, sizeHint].map(serializeBufferable); | ||
const outTypes: OutputType[] = []; | ||
const result = this.wasm.callWasmExport( | ||
'acir_create_circuit', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return; | ||
} | ||
acirInitProvingKey(acirComposerPtr: Ptr, constraintSystemBuf: Uint8Array): void { | ||
const inArgs = [acirComposerPtr, constraintSystemBuf].map(serializeBufferable); | ||
const outTypes: OutputType[] = []; | ||
const result = this.wasm.callWasmExport( | ||
'acir_init_proving_key', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return; | ||
} | ||
acirCreateProof( | ||
acirComposerPtr: Ptr, | ||
constraintSystemBuf: Uint8Array, | ||
witnessBuf: Uint8Array, | ||
isRecursive: boolean, | ||
): Uint8Array { | ||
const inArgs = [acirComposerPtr, constraintSystemBuf, witnessBuf, isRecursive].map(serializeBufferable); | ||
const outTypes: OutputType[] = [BufferDeserializer()]; | ||
const result = this.wasm.callWasmExport( | ||
'acir_create_proof', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out[0]; | ||
} | ||
acirLoadVerificationKey(acirComposerPtr: Ptr, vkBuf: Uint8Array): void { | ||
const inArgs = [acirComposerPtr, vkBuf].map(serializeBufferable); | ||
const outTypes: OutputType[] = []; | ||
const result = this.wasm.callWasmExport( | ||
'acir_load_verification_key', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return; | ||
} | ||
acirInitVerificationKey(acirComposerPtr: Ptr): void { | ||
const inArgs = [acirComposerPtr].map(serializeBufferable); | ||
const outTypes: OutputType[] = []; | ||
const result = this.wasm.callWasmExport( | ||
'acir_init_verification_key', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return; | ||
} | ||
acirGetVerificationKey(acirComposerPtr: Ptr): Uint8Array { | ||
const inArgs = [acirComposerPtr].map(serializeBufferable); | ||
const outTypes: OutputType[] = [BufferDeserializer()]; | ||
const result = this.wasm.callWasmExport( | ||
'acir_get_verification_key', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out[0]; | ||
} | ||
acirVerifyProof(acirComposerPtr: Ptr, proofBuf: Uint8Array, isRecursive: boolean): boolean { | ||
const inArgs = [acirComposerPtr, proofBuf, isRecursive].map(serializeBufferable); | ||
const outTypes: OutputType[] = [BoolDeserializer()]; | ||
const result = this.wasm.callWasmExport( | ||
'acir_verify_proof', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out[0]; | ||
} | ||
acirGetSolidityVerifier(acirComposerPtr: Ptr): string { | ||
const inArgs = [acirComposerPtr].map(serializeBufferable); | ||
const outTypes: OutputType[] = [StringDeserializer()]; | ||
const result = this.wasm.callWasmExport( | ||
'acir_get_solidity_verifier', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out[0]; | ||
} | ||
acirSerializeProofIntoFields(acirComposerPtr: Ptr, proofBuf: Uint8Array, numInnerPublicInputs: number): Fr[] { | ||
const inArgs = [acirComposerPtr, proofBuf, numInnerPublicInputs].map(serializeBufferable); | ||
const outTypes: OutputType[] = [VectorDeserializer(Fr)]; | ||
const result = this.wasm.callWasmExport( | ||
'acir_serialize_proof_into_fields', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out[0]; | ||
} | ||
acirSerializeVerificationKeyIntoFields(acirComposerPtr: Ptr): [Fr[], Fr] { | ||
const inArgs = [acirComposerPtr].map(serializeBufferable); | ||
const outTypes: OutputType[] = [VectorDeserializer(Fr), Fr]; | ||
const result = this.wasm.callWasmExport( | ||
'acir_serialize_verification_key_into_fields', | ||
inArgs, | ||
outTypes.map(t => t.SIZE_IN_BYTES), | ||
); | ||
const out = result.map((r, i) => outTypes[i].fromBuffer(r)); | ||
return out as any; | ||
} | ||
} |
@@ -9,2 +9,3 @@ import { type Worker } from 'worker_threads'; | ||
import { BarretenbergWasmBase } from '../barretenberg_wasm_base/index.js'; | ||
import { HeapAllocator } from './heap_allocator.js'; | ||
@@ -109,2 +110,31 @@ const debug = createDebug('bb.js:wasm'); | ||
} | ||
callWasmExport(funcName: string, inArgs: Uint8Array[], outLens: (number | undefined)[]) { | ||
const alloc = new HeapAllocator(this); | ||
const inPtrs = alloc.copyToMemory(inArgs); | ||
const outPtrs = alloc.getOutputPtrs(outLens); | ||
this.call(funcName, ...inPtrs, ...outPtrs); | ||
const outArgs = this.getOutputArgs(outLens, outPtrs, alloc); | ||
alloc.freeAll(); | ||
return outArgs; | ||
} | ||
private getOutputArgs(outLens: (number | undefined)[], outPtrs: number[], alloc: HeapAllocator) { | ||
return outLens.map((len, i) => { | ||
if (len) { | ||
return this.getMemorySlice(outPtrs[i], outPtrs[i] + len); | ||
} | ||
const slice = this.getMemorySlice(outPtrs[i], outPtrs[i] + 4); | ||
const ptr = new DataView(slice.buffer, slice.byteOffset, slice.byteLength).getUint32(0, true); | ||
// Add our heap buffer to the dealloc list. | ||
alloc.addOutputPtr(ptr); | ||
// The length will be found in the first 4 bytes of the buffer, big endian. See to_heap_buffer. | ||
const lslice = this.getMemorySlice(ptr, ptr + 4); | ||
const length = new DataView(lslice.buffer, lslice.byteOffset, lslice.byteLength).getUint32(0, false); | ||
return this.getMemorySlice(ptr + 4, ptr + 4 + length); | ||
}); | ||
} | ||
} | ||
@@ -111,0 +141,0 @@ |
import { proxy } from 'comlink'; | ||
import { BarretenbergApi } from '../barretenberg_api/index.js'; | ||
import { BarretenbergBinder } from '../barretenberg_binder/index.js'; | ||
import { BarretenbergApi, BarretenbergApiSync } from '../barretenberg_api/index.js'; | ||
import { createMainWorker } from '../barretenberg_wasm/barretenberg_wasm_main/factory/node/index.js'; | ||
import { BarretenbergWasmMainWorker } from '../barretenberg_wasm/barretenberg_wasm_main/index.js'; | ||
import { BarretenbergWasmMain, BarretenbergWasmMainWorker } from '../barretenberg_wasm/barretenberg_wasm_main/index.js'; | ||
import { getRemoteBarretenbergWasm } from '../barretenberg_wasm/helpers/index.js'; | ||
@@ -17,4 +16,4 @@ import { BarretenbergWasmWorker } from '../barretenberg_wasm/index.js'; | ||
export class Barretenberg extends BarretenbergApi { | ||
private constructor(private worker: any, private wasm: BarretenbergWasmWorker) { | ||
super(new BarretenbergBinder(wasm)); | ||
private constructor(private worker: any, wasm: BarretenbergWasmWorker) { | ||
super(wasm); | ||
} | ||
@@ -44,1 +43,26 @@ | ||
} | ||
let barretenbergSyncSingleton: Promise<BarretenbergSync>; | ||
export class BarretenbergSync extends BarretenbergApiSync { | ||
private constructor(wasm: BarretenbergWasmMain) { | ||
super(wasm); | ||
} | ||
static async new() { | ||
const wasm = new BarretenbergWasmMain(); | ||
await wasm.init(1); | ||
return new BarretenbergSync(wasm); | ||
} | ||
static getSingleton() { | ||
if (!barretenbergSyncSingleton) { | ||
barretenbergSyncSingleton = BarretenbergSync.new(); | ||
} | ||
return barretenbergSyncSingleton; | ||
} | ||
getWasm() { | ||
return this.wasm; | ||
} | ||
} |
@@ -12,12 +12,19 @@ import fs from 'fs'; | ||
/* eslint-disable @typescript-eslint/no-unused-vars */ | ||
import { BarretenbergBinder } from '../barretenberg_binder/index.js'; | ||
import { BufferDeserializer, NumberDeserializer, VectorDeserializer, BoolDeserializer, StringDeserializer } from '../serialize/index.js'; | ||
import { BarretenbergWasmWorker, BarretenbergWasm } from '../barretenberg_wasm/index.js'; | ||
import { BufferDeserializer, NumberDeserializer, VectorDeserializer, BoolDeserializer, StringDeserializer, serializeBufferable, OutputType } from '../serialize/index.js'; | ||
import { Fr, Fq, Point, Buffer32, Buffer128, Ptr } from '../types/index.js'; | ||
`; | ||
output += generateClass(functionDeclarations); | ||
output += generateSyncClass(functionDeclarations); | ||
return output; | ||
} | ||
function generateClass(functionDeclarations: FunctionDeclaration[]) { | ||
let output = ` | ||
export class BarretenbergApi { | ||
constructor(public binder: BarretenbergBinder) {} | ||
constructor(protected wasm: BarretenbergWasmWorker) {} | ||
async destroy() { | ||
await this.binder.wasm.destroy(); | ||
} | ||
`; | ||
@@ -28,8 +35,13 @@ | ||
const parameters = inArgs.map(({ name, type }) => `${toCamelCase(name)}: ${mapType(type)}`).join(', '); | ||
const inArgsVar = `[${inArgs.map(arg => toCamelCase(arg.name)).join(', ')}]`; | ||
const outTypesVar = `[${outArgs.map(arg => mapDeserializer(arg.type)).join(', ')}]`; | ||
const wasmCall = `const result = await this.binder.callWasmExport('${functionName}', ${inArgsVar}, ${outTypesVar});`; | ||
const inArgsVar = `const inArgs = [${inArgs | ||
.map(arg => toCamelCase(arg.name)) | ||
.join(', ')}].map(serializeBufferable);`; | ||
const outTypesVar = `const outTypes: OutputType[] = [${outArgs | ||
.map(arg => mapDeserializer(arg.type)) | ||
.join(', ')}];`; | ||
const wasmCall = `const result = await this.wasm.callWasmExport('${functionName}', inArgs, outTypes.map(t=>t.SIZE_IN_BYTES));`; | ||
const outVar = `const out = result.map((r, i) => outTypes[i].fromBuffer(r));`; | ||
const n = outArgs.length; | ||
const returnStmt = n === 0 ? 'return;' : n === 1 ? 'return result[0];' : 'return result as any;'; | ||
const returnStmt = n === 0 ? 'return;' : n === 1 ? 'return out[0];' : 'return out as any;'; | ||
const returnType = | ||
@@ -44,3 +56,6 @@ outArgs.length === 0 | ||
async ${toCamelCase(functionName)}(${parameters}): Promise<${returnType}> { | ||
${inArgsVar} | ||
${outTypesVar} | ||
${wasmCall} | ||
${outVar} | ||
${returnStmt} | ||
@@ -58,1 +73,48 @@ } | ||
} | ||
function generateSyncClass(functionDeclarations: FunctionDeclaration[]) { | ||
let output = ` | ||
export class BarretenbergApiSync { | ||
constructor(protected wasm: BarretenbergWasm) {} | ||
`; | ||
for (const { functionName, inArgs, outArgs } of functionDeclarations) { | ||
try { | ||
const parameters = inArgs.map(({ name, type }) => `${toCamelCase(name)}: ${mapType(type)}`).join(', '); | ||
const inArgsVar = `const inArgs = [${inArgs | ||
.map(arg => toCamelCase(arg.name)) | ||
.join(', ')}].map(serializeBufferable);`; | ||
const outTypesVar = `const outTypes: OutputType[] = [${outArgs | ||
.map(arg => mapDeserializer(arg.type)) | ||
.join(', ')}];`; | ||
const wasmCall = `const result = this.wasm.callWasmExport('${functionName}', inArgs, outTypes.map(t=>t.SIZE_IN_BYTES));`; | ||
const outVar = `const out = result.map((r, i) => outTypes[i].fromBuffer(r));`; | ||
const n = outArgs.length; | ||
const returnStmt = n === 0 ? 'return;' : n === 1 ? 'return out[0];' : 'return out as any;'; | ||
const returnType = | ||
outArgs.length === 0 | ||
? 'void' | ||
: outArgs.length === 1 | ||
? `${mapType(outArgs[0].type)}` | ||
: `[${outArgs.map(a => mapType(a.type)).join(', ')}]`; | ||
output += ` | ||
${toCamelCase(functionName)}(${parameters}): ${returnType} { | ||
${inArgsVar} | ||
${outTypesVar} | ||
${wasmCall} | ||
${outVar} | ||
${returnStmt} | ||
} | ||
`; | ||
} catch (err: any) { | ||
throw new Error(`Function ${functionName}: ${err.message}`); | ||
} | ||
} | ||
output += `}`; | ||
return output; | ||
} |
export { Crs } from './crs/index.js'; | ||
export { Barretenberg } from './barretenberg/index.js'; | ||
export { Barretenberg, BarretenbergSync } from './barretenberg/index.js'; | ||
export { RawBuffer, Fr } from './types/index.js'; | ||
export { Pedersen } from './pedersen/index.js'; |
@@ -222,2 +222,21 @@ #!/usr/bin/env node | ||
export async function writePk(bytecodePath: string, crsPath: string, outputPath: string) { | ||
const { api, acirComposer } = await init(bytecodePath, crsPath); | ||
try { | ||
debug('initing proving key...'); | ||
const bytecode = getBytecode(bytecodePath); | ||
const pk = await api.acirGetProvingKey(acirComposer, bytecode); | ||
if (outputPath === '-') { | ||
process.stdout.write(pk); | ||
debug(`pk written to stdout`); | ||
} else { | ||
writeFileSync(outputPath, pk); | ||
debug(`pk written to: ${outputPath}`); | ||
} | ||
} finally { | ||
await api.destroy(); | ||
} | ||
} | ||
export async function proofAsFields(proofPath: string, vkPath: string, outputPath: string) { | ||
@@ -352,2 +371,12 @@ const { api, acirComposer } = await initLite(); | ||
program | ||
.command('write_pk') | ||
.description('Output proving key.') | ||
.option('-b, --bytecode-path <path>', 'Specify the bytecode path', './target/acir.gz') | ||
.requiredOption('-o, --output-path <path>', 'Specify the path to write the key') | ||
.action(async ({ bytecodePath, outputPath, crsPath }) => { | ||
handleGlobalOptions(); | ||
await writePk(bytecodePath, crsPath, outputPath); | ||
}); | ||
program | ||
.command('proof_as_fields') | ||
@@ -354,0 +383,0 @@ .description('Return the proof as fields elements') |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
32938436
12056
521