@stream-protocol/blst-ts
v0.3.1
Published
Typescript wrapper for supranational/blst native bindings, a highly performant BLS12-381 signature library
Downloads
2
Readme
blst-ts
This repository is a fork of chainsafe/blst-ts which may be used as a staging area for changes that may (or may not) be upstreamed.
Developing
Note that this repo contains a git submodule. Make sure the git submodule blst
is populated before attempting to build locally. After cloning run:
git submodule update --init --recursive
Using emscripten bindings
yarn add @stream-protocol/blst-ts
# or
npm install --save @stream-protocol/blst-ts
package.json
:
depencencies: {
"@stream-protocol/blst-ts": "^0.3.1",
...
}
webpack.config.js
(V5):
module.exports = {
resolve: {
fallback: {
"crypto": require.resolve("crypto-browserify"),
"stream": require.resolve("stream-browserify"),
"buffer": require.resolve("buffer"),
"assert": require.resolve("assert-browserify"),
"path": require.resolve("path-browserify"),
"fs": false,
},
...
},
ignoreWarnings: [
{
module: /^(fs|process)$/,
}
]
}
webpack.config.js
(V4):
module.exports = {
plugins: [
new webpack.IgnorePlugin(/^(fs|process)$/),
],
...
}
Building WebAssembly module
(NOTE: docker is required to use the script)
yarn build:emscripten
Manual build
(NOTE: a copy of emsdk is required to build for web assembly. See emscripten docs -> Building Projects for more information)
# ensure enscripten sdk is active
/path/to/emsdk/emsdk activate
source /path/to/emsdk/emsdk_env.sh
CROSS_COMPILE=em CFLAGS="-o ./prebuild/emscripten/blst.js --pre-js ./prebuild/emscripten/pre.js --post-js ./prebuild/emscripten/post.js ./prebuild/emscripten/blst_glue_wrapper.cpp" ./blst/build.sh -link -no-archive
Testing in the browser
Once built (see building WebAssembly module), applicable mocha tests can be run in the browser using webpack:
yarn test:browser
Karma
Additionally, Karma is configured to run browser-relevant tests in chrome by starting and running:
# Optionally, CHROME_BIN=$(which <non-standard-chromium-flavor>)
# (see: https://github.com/karma-runner/karma-chrome-launcher)
yarn karma start
# separate shell
yarn karma run
(NOTE: it currently seems like Karma has to be run a few times before it picks up all the tests)
License
Apache-2.0