react-native-ffjavascript
Version:
Finite Field Library in Javascript (react-native)
37 lines (29 loc) • 1.12 kB
JavaScript
import wasmcurves from "wasmcurves";
import buildEngine from "./engine.js";
import * as Scalar from "./scalar.js";
global.curve_bn128 = null;
export default async function buildBn128(singleThread) {
console.log("buildBn128 - singleThread", singleThread)
if ((!singleThread)&&(global.curve_bn128)) return global.curve_bn128;
const params = {
name: "bn128",
wasm: wasmcurves.bn128_wasm,
q: Scalar.e("21888242871839275222246405745257275088696311157297823662689037894645226208583"),
r: Scalar.e("21888242871839275222246405745257275088548364400416034343698204186575808495617"),
n8q: 32,
n8r: 32,
cofactorG2: Scalar.e("30644e72e131a029b85045b68181585e06ceecda572a2489345f2299c0f9fa8d", 16),
singleThread: singleThread ? true : false
};
const curve = await buildEngine(params);
curve.terminate = async function() {
if (!params.singleThread) {
global.curve_bn128 = null;
await this.tm.terminate();
}
};
if (!singleThread) {
global.curve_bn128 = curve;
}
return curve;
}