lwk_node
v0.16.0
Published
Liquid Wallet Kit - WASM
Readme
Liquid Wallet Kit for WASM
This is only a proof of concept at the moment but we want to show our commitment to have the Liquid Wallet Kit working in the WASM environment.
Available as npm package.
For an example usage see the Liquid Web Wallet (source). Works as CT descriptor watch-only wallet or connected to a Jade.
For LWK Library developers
To build the WASM library you need rust and wasm-pack installed
$ wasm-pack build --devTo enable web-serial:
$ RUSTFLAGS="--cfg=web_sys_unstable_apis" wasm-pack build --dev --features serialFor LWK library consumers (front-end developers)
Download the Liquid Web Wallet source
$ git clone https://github.com/RCasatta/liquid-web-wallet
$ npm install
$ npm run startOpen the browser at http://localhost:8080
Test
$ cd lwk_wasm
$ wasm-pack test --firefox # or --chromeThen open the browser at http://127.0.0.1:8000, open also the dev tools to see console messages and network requests.
To avoid requiring opening the browser the headless mode is possible.
Note the increased timeout specified via the env var, the 20s default one could be too low.
$ cd lwk_wasm
$ WASM_BINDGEN_TEST_TIMEOUT=60 wasm-pack test --firefox --headlessrun specific test (note the double --)
$ wasm-pack test --firefox --headless -- -- balance_test_testnetBuild NPM Package for release
Build rust crates in release mode, optimizing for space.
$ cd lwk_wasm/
$ RUSTFLAGS="--cfg=web_sys_unstable_apis" CARGO_PROFILE_RELEASE_OPT_LEVEL=z wasm-pack build --features serial$ cd pkg
$ npm publishBuild wasm lib for profiling
To analyze the generated wasm file to optimize for size, we want to follow the same optimization as release but we want to keep debug info to analyze the produced lib with function names.
$ cd lwk_wasm/
$ RUSTFLAGS="--cfg=web_sys_unstable_apis" CARGO_PROFILE_RELEASE_OPT_LEVEL=z CARGO_PROFILE_RELEASE_DEBUG=2 wasm-pack build --profiling --features serialWith twiggy is then possible to analyze the library:
twiggy top -n 10 pkg/lwk_wasm_bg.wasmBuild for nodejs
$ cd lwk_wasm
$ RUSTFLAGS="--cfg=web_sys_unstable_apis" CARGO_PROFILE_RELEASE_OPT_LEVEL=z wasm-pack build --target nodejs --out-dir pkg_node -- --features serialRename the package to lwk_node so that we can publish it to npm.
sed -i 's/"lwk_wasm"/"lwk_node"/g' pkg_node/package.jsonTest node js examples
Requirement:
- having built node pkg like shown in previous paragraph
- having node and npm installed
cd lwk_wasm/tests/node
npm install
node network.jsJavascript code conventions
For new additions and improvements, follow our guidelines.
