see mcl
- 2021/Aug/28 improve performance of
{G1,G2}::isValidOrder()
- 2021/Jun/22 add index.d.ts
- 2021/Mar/02 improve performance
- 2020/Nov/10 setup function has changed.
- add
mulVec(xVec, yVec)
where xVec is an array of G1 or G2 and yVec is an array of Fr, which returnssum of xVec[i] yVec[i]
. - G1.setHashOf is compatible with hash-to-curve-09 BLS12381G1_XMD:SHA-256_SSWU_RO_
- support only BN254, ZKSNARK, BLS12-381 to remove mcl_c512.js
- add mcl.precomputedMillerLoop2 and mcl.precomputedMillerLoop2mixed
The version v0.6.0
breaks backward compatibility of the entry point.
- Node.js :
const mcl = require('mcl-wasm')
- React :
const mcl = require('mcl-wasm/browser')
- HTML :
<script src="https://herumi.github.io/mcl-wasm/browser/mcl.js"></script>
node test/test.js
// Ethereum 2.0 spec mode
mcl.init(mcl.BLS12_381)
.then(() => {
mcl.setETHserialization(true) // Ethereum serialization
mcl.setMapToMode(mcl.IRTF) // for G2.setHashOf(msg)
...
})
a = new mcl.Fr()
a.setStr('255') // set 255
a.setStr('0xff') // set 0xff = 255
a.setStr('ff', 16) // set ff as hex-string
a.getStr() // '255'
a.getStr(16) // 'ff'
// byte array serialization
b.deserialize(a.serialize()) // b.isEqualTo(a)
// hex string of serialization()
b.deserializeHexStr(a.serializeToHexStr())
// serialization like Ethereum 2.0 only for BLS12-381
mcl.setETHserialization(true)
/*
it is big cost to to verify the order
call once after init() if you want to disable it
cf. sub group problem
*/
mcl.verifyOrderG1(false)
mcl.verifyOrderG2(false)
see test.js
modified new BSD License http://opensource.org/licenses/BSD-3-Clause
2019/Jan/31 add Fp.mapToG1
MITSUNARI Shigeo(herumi@nifty.com)