-
Notifications
You must be signed in to change notification settings - Fork 13
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #16 from ChainSafe/document
Document
- Loading branch information
Showing
3 changed files
with
55 additions
and
6 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,50 @@ | ||
blst-ts | ||
# blst-ts | ||
|
||
 | ||
 | ||
 | ||
|
||
Typescript wrapper for [supranational/blst](https://github.com/supranational/blst) native bindings, a highly performant BLS12-381 signature library. | ||
|
||
## Usage | ||
|
||
```bash | ||
yarn add @chainsafe/blst | ||
``` | ||
|
||
This library comes with pre-compiled bindings for most platforms. You can check current support in [releases](https://github.com/ChainSafe/blst-ts/releases). If your platform is not supported, bindings will be compiled from source as a best effort with node-gyp. | ||
|
||
```ts | ||
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](https://github.com/ethereum/eth2.0-specs/blob/v0.11.1/specs/phase0/beacon-chain.md#bls-signatures) | ||
> [test vectors](https://github.com/ethereum/eth2.0-spec-tests/tree/master/tests/bls) | ||
## License | ||
|
||
Apache-2.0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters