1.1.4 • Published 5 years ago
@olympus-protocol/bls-wasm v1.1.4
BLS signature for Node.js by WebAssembly
Abstract
This module is built with BLS_ETH=1 for Ethereum 2.0 spec.
News
- 2020/May/19 : Call
bls.setETHmode(bls.ETH_MODE_DRAFT_07)once afterbls.init()forBLS_ETH_MODE_DRAFT_07defined at BLS12381G2XMD:SHA-256_SSWU_RO. setETHmode()supports hash-to-curve defined at draft-irtf-cfrg-hash-to-curve at March 2020.
Init as the followings:
bls.init(bls.BLS12_381)
bls.setETHmode(2)(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)
bls.setETHmode(1)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
deserializecheck the correctness of the order - Sign::isValidOrder ; check the correctness of the order
- verifyPublicKeyOrder ; make
deserializecheck the correctness of the order - PublicKey::isValidOrder ; check the correctness of the order
- areAllMsgDifferent ; check that all messages are different each other
Old eth2.0 spec
The msg in the following means 40 bytes Uint8Array data.
SecretKey.signHashWithDomain(msg)- sign msg by secretKey
PublicKey.verifyHashWithDomain(sig, msg)- verify sig with msg by publickey
Signature.verifyAggregatedHashWithDomain(pubVec, msgVec)
see bls
For Node.js
node test.js
License
modified new BSD License http://opensource.org/licenses/BSD-3-Clause
Author
MITSUNARI Shigeo(herumi@nifty.com) Julian Meyer julianmeyer2000@gmail.com