blst-ts
![Node Version](https://img.shields.io/badge/node-12.x-green)
Typescript wrapper for supranational/blst native bindings, a highly performant BLS12-381 signature library.
Usage
yarn add @chainsafe/blst
This library comes with pre-compiled bindings for most platforms. You can check current support in releases. If your platform is not supported, bindings will be compiled from source as a best effort with node-gyp.
import { SecretKey, verify } from "@chainsafe/blst";
const msg = Buffer.from("sample-msg");
const sk = SecretKey.fromKeygen(Buffer.alloc(32, 1));
const pk = sk.toPublicKey();
const sig = sk.sign(msg);
console.log(verify(msg, pk, sig));
This library exposes two types of classes for public keys and signatures: PublicKey
& AggregatePublicKey
, Signature
& AggregateSignature
PublicKey
: Contains an affine point (x,y). It's the default representation of the point and what you need to serialize to and deserialize from.AggregatePublicKey
: Contains a jacobian point (x,y,z). It's optimal to perform aggregation operations.
Spec versioning
This library has a hardcoded configuration compatible with Eth2.0 spec:
Setting | value |
---|
PK_IN | G1 |
HASH_OR_ENCODE | true |
DST | BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_POP_ |
RAND_BITS | 64 |
spec
test vectors
License
Apache-2.0