This repository has been archived on 2023-04-09. You can view files and clone it, but cannot push or open issues or pull requests.
chainsafe-bls/README.md

1.8 KiB

bls

Build Status codecov ETH2.0_Spec_Version 0.12.0 ES Version Node Version

Javascript library for BLS (Boneh-Lynn-Shacham) signatures and signature aggregation.

Usage

import {PrivateKey} from "@chainsafe/bls";

const secretKey = PrivateKey.fromKeygen();
const publicKey = secretKey.toPublicKey();
const message = new Uint8Array(32);

const signature = secretKey.sign(message);
console.log("Is valid: ", signature.verify(publicKey, message));

Browser

If you are in the browser, import from /browser

import bls from "@chainsafe/bls/browser";

Native bindings only

If you are in NodeJS, import from /node to skip browser specific code

import bls from "@chainsafe/bls/node";

Native bindings + WASM fallback

If you want to offer a fallback in NodeJS, first try to load native bindings and then fallback to WASM

import bls from "@chainsafe/bls";

try {
  await bls.init("blst-native");
} catch (e) {
  await bls.init("herumi");
  console.warn("Using WASM");
}

The API is identical for all implementations.

Spec versioning

Version Bls spec version
2.x.x draft #7
1.x.x draft #6
0.3.x initial version

spec

test vectors

License

Apache-2.0