Mutiny Web, Week 1
Mutiny is a privacy-focused lightning mobile wallet that's been built so far using Flutter and a Sensei / LDK server backend. Mutiny Web is an experiment to see if we can put a lightning node in the browser. If Mutiny Web works, we can bring a private, sovereign lightning experience to a much wider potential audience.
We're hosting our code on a private Gitea instance: https://www.nakamoto.codes/BitcoinDevShop/mutiny-web-poc
The Team
Paul, Tony, and Ben
Progress
We got a late start on the hackathon because we were busy at TabConf.
-
Created a simple React project and styled it with Tailwind
-
Imported Rust code via wasm-bindgen
-
Imported Rust Bitcoin's bip39 crate and used it to create mnemonic seed phrases
-
Tested async websocket calls in WASM using gloo (we'll use proxied websocket connections to connect to other lightning nodes)
-
Created a basic NodeManager struct that will be used to spin up multiple nodes (we're keeping the multi-node architecture of Mutiny, with some changes)
Problems
-
Trying to get SQL in the browser
-
Tried to use Vite but it's not as slick at importing WASM so fell back to good ol' Webpack
-
The default Clang install on Mac doesn't cross compile secp256k1 to WASM, so I needed to override the version of llvm Rust uses
-
Tony's System76 laptop sucks
Plans
-
We're trying to "fail fast" so we'll try to keep picking the hardest thing on our stack
-
The "hardest" thing right now has to do with getting LDK everything it needs to do it's business (There are a lot of things)
-
We hope to be able to at least get in-browser LDK talking to a peer next week
-
This will require a working websocket proxy
-
Working local storage (hopefully via SQL)