Skip to content

Typescript wrapper for https://github.com/supranational/blst native bindings, a highly performant BLS12-381 signature library

License

Notifications You must be signed in to change notification settings

matthewkeil/blst-ts

This branch is 376 commits behind ChainSafe/blst-ts:master.

Folders and files

NameName
Last commit message
Last commit date
Feb 23, 2023
Feb 10, 2022
Sep 6, 2022
Mar 30, 2021
Dec 14, 2022
Mar 2, 2023
Aug 27, 2022
Feb 10, 2022
Feb 10, 2022
Feb 10, 2022
Nov 28, 2020
Apr 5, 2021
Aug 27, 2022
Nov 18, 2020
Mar 2, 2023
Mar 2, 2023
Apr 5, 2021
Mar 2, 2023
Mar 2, 2023

Repository files navigation

blst-ts

ETH2.0_Spec_Version 0.12.0 ES Version Node Version

Typescript wrapper for supranational/blst native bindings, a highly performant BLS12-381 signature library.

Supported Environments

OS / Arch binary name Node
Linux / x64 linux-x64 10, 11, 12, 13, 14, 15, 16, 17, 18
Linux / arm64 linux-arm64 10, 11, 12, 13, 14, 15, 16, 18
Windows / x64 win32-x64 12, 14, 16, 17
OSX / x64 darwin-x64 10, 11, 12, 13, 14, 15, 16, 17, 18
OSX / M1 -* -*

* No Github nor docker buildx setup to build this environment in CI. Source may compile locally after installation but it's not guaranteed

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)); // true

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

Developing

Note that this repo contains a git submodule. Make sure the git submodule blst is populated before attempting to build locally. After cloning run:

git submodule update --init --recursive

License

Apache-2.0

About

Typescript wrapper for https://github.com/supranational/blst native bindings, a highly performant BLS12-381 signature library

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 80.2%
  • TypeScript 18.7%
  • Other 1.1%