BLS signature for Node.js by WebAssembly
Abstract
This module is built with BLS_ETH=1
for Ethereum 2.0 spec.
News
- 2020/Nov/04 : break backward compatibility (bls.js is renamed to index.js)
- use blsSetupFactory to make bls instance on browser (see the top of bls-demo.js)
- 2020/Oct/01 : add
bls.multiVerify
to verify all {sigs, pubs, msgs}. - 2020/Jul/06 ;
setETHmode(bls.ETH_MODE_DRAFT_07)
is default mode - 2020/May/19 : Call
bls.setETHmode(bls.ETH_MODE_DRAFT_07)
once after bls.init()
for BLS_ETH_MODE_DRAFT_07
defined at BLS12381G2_XMD:SHA-256_SSWU_RO_. setETHmode()
supports hash-to-curve defined at draft-irtf-cfrg-hash-to-curve at March 2020.
How to use
The version v0.4.2
breaks backward compatibility of the entry point.
- Node.js :
const bls = require('bls-eth-wasm')
- React :
const bls = require('bls-eth-wasm/browser')
- HTML :
<script src="https://herumi.github.io/bls-eth-wasm/browser/bls.js"></script>
Init as the followings:
bls.init(bls.BLS12_381)
(old) The new eth2.0 functions are supported. This mode will be removed in the future.
Init as the followings:
bls.init(bls.BLS12_381)
then, you can use the following functions.
bls-eth-wasm | eth2.0 spec name |
---|
SecretKey::sign | Sign |
PublicKey::verify | Verify |
Sign::aggregate | Aggregate |
Sign::fastAggregateVerify | FastAggregateVerify |
Sign::aggregateVerifyNoCheck | AggregateVerify |
The size of message must be 32 byte.
Check functions:
- verifySignatureOrder ; make
deserialize
check the correctness of the order - Sign::isValidOrder ; check the correctness of the order
- verifyPublicKeyOrder ; make
deserialize
check the correctness of the order - PublicKey::isValidOrder ; check the correctness of the order
- areAllMsgDifferent ; check that all messages are different each other
see bls
How to build src/bls_c.js
Install Emscripten.
cd src
git submodule update --init
make
For Node.js
node test.js
Browser demo
see bls-demo.
See browser/readme.md
to make browser/bls.js
.
for React
const bls = require('bls-eth-wasm/browser')
License
modified new BSD License
http://opensource.org/licenses/BSD-3-Clause
Author
MITSUNARI Shigeo(herumi@nifty.com)
GitHub Sponsor