@secondts/bark
v0.10.0
Published
Bark FFI bindings for the browser via WebAssembly (IndexedDB persister)
Readme

Bark is an implementation of the Ark protocol on bitcoin, led by Second. The Ark protocol is a bitcoin layer 2 for making fast, low-cost, self-custodial payments at scale. Ark uses a client-server model to enable users to transact off-chain while still being able to "exit" their balances on-chain at any time.
Runs in the browser via WebAssembly with IndexedDB persistence.
Installation
npm install @secondts/barkBundlers (webpack, Rollup, Vite, Next.js, React, Vue, Svelte)
The default entrypoint is the wasm-bindgen bundler target. Your bundler discovers the .wasm file via new URL(..., import.meta.url) and bundles it.
import init, { Wallet, generateMnemonic } from "@secondts/bark";
await init?.();
const mnemonic = generateMnemonic();
const wallet = await Wallet.create(mnemonic, config, "wallet-db");Vanilla browser (<script type="module">)
Use the ./web subpath. Pass the .wasm URL to init() explicitly (or let it auto-resolve via import.meta.url).
<script type="module">
import init, { Wallet, generateMnemonic } from "https://unpkg.com/@secondts/bark/web/bark_ffi_wasm.js";
await init();
const mnemonic = generateMnemonic();
</script>Notes
- Persistence uses IndexedDB; the wallet is keyed by the name passed to
Wallet.create(..., dbName). - WASM runs in the main thread by default. For heavy operations consider running it inside a Web Worker.
- Crypto requires the page to be served over HTTPS (or
localhost);crypto.subtleis only available in secure contexts.
License
Released under the MIT license.
