Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@chainsafe/blst

Package Overview
Dependencies
Maintainers
0
Versions
27
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@chainsafe/blst

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

  • 2.2.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
0
Created
Source

blst-ts

ETH2.0_Spec_Version 1.4.0 ES Version Node Version

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

Supported Environments

OS / Archbinary nameNode
Linux / x64linux-x6416, 18, 20, 21
Linux / arm64linux-arm6416, 18, 20, 21
Windows / x64win32-x6416, 18, 20, 21
macOS / x64darwin-x6416, 18, 20, 21
macOS / arm64darwin-arm6416, 18, 20, 21

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 crypto from "crypto";
import {SecretKey, verify, BLST_CONSTANTS} from "@chainsafe/blst";

const msg = Buffer.from("sample-msg");
const sk = SecretKey.fromKeygen(crypto.randomBytes(BLST_CONSTANTS.SECRET_KEY_LENGTH));
const pk = sk.toPublicKey();
const sig = sk.sign(msg);

console.log(verify(msg, pk, sig)); // true

This library exposes a classes for secret keys, public keys and signatures: SecretKey, PublicKey & Signature

The PublicKey and Signature contain an affine point (x,y) encoding of P1 in G1 and P2 in G2 respectively.

Spec versioning

This library has a hardcoded configuration compatible with Eth2.0 spec:

Settingvalue
PK_ING1
HASH_OR_ENCODEtrue
DSTBLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_POP_
RAND_BITS64

spec

test vectors

Contributing

Please check out CONTRIBUTING.md for more info on how to use the repo and for architectural details

Release/Publishing

Release

The release process is automatically triggered when the master branch has the version in package.json updated.

To create a new release:

  1. Increment the project version in package.json
    • A pre-release can be published by ensuring that the project version is appended with non-numeric characters, eg: -beta
  2. run yarn run version
  3. merge a commit with these changes
  4. CI will run and result in a new release being published

License

Apache-2.0

Keywords

FAQs

Package last updated on 29 Oct 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc