#liquid #wallet #kit #lwk

lwk_wasm

Liquid Wallet Kit - WASM

3 unstable releases

0.4.1 Mar 20, 2024
0.4.0 Mar 20, 2024
0.1.0 Feb 15, 2024

#3 in #wallet

Download history 123/week @ 2024-02-15 20/week @ 2024-02-22 7/week @ 2024-02-29 123/week @ 2024-03-14 98/week @ 2024-03-21 38/week @ 2024-03-28 19/week @ 2024-04-04

278 downloads per month

MIT OR BSD-2-Clause

71KB
1.5K SLoC

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.

Example is live

For LWK library consumers (front-end developers)

The demo page showcasing some of the library functionalities can be run locally with:

$ cd lwk_wasm/www
$ npm install
$ npm run start

Open the browser at http://localhost:8080

Any changes in index.html and index.js are live reloaded in the browser.

Tested with:

$ node --version
v20.11.1
$ npm --version
10.2.4

For LWK Library developers

To build the WASM library you need rust and wasm-pack installed

$ wasm-pack build --dev

Then follow the library consumer section.

Test

$ cd lwk_wasm
$ wasm-pack test --firefox # or --chrome

Then 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 --headless

run specific test (note the double --)

$ wasm-pack test --firefox --headless -- -- balance_test_testnet

Build NPM Package for release

Build rust crates in release mode, optimizing for space.

$ cd lwk_wasm/
$ CARGO_PROFILE_RELEASE_OPT_LEVEL=z wasm-pack build

Build 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/
$ CARGO_PROFILE_RELEASE_OPT_LEVEL=z CARGO_PROFILE_RELEASE_DEBUG=2 wasm-pack build --profiling

With twiggy is then possible to analyze the library:

twiggy top -n 10 pkg/lwk_wasm_bg.wasm

Publish web page

After building NPM package from previous section

$ git checkout master
$ cd lwk_wasm/www
$ npm run build
$ cd -
$ git checkout gh-pages
$ git reset --hard HEAD~1
$ git rebase master
$ cp lwk_wasm/www/dist/* docs/
$ git add docs
$ git commit -m "gh-pages: update site"
$ git push github gh-pages

Dependencies

~37–53MB
~737K SLoC