Mutiny PPPs: Week 6 and 7
Two weeks ago we didn't have a node in the browser. One week ago we did it. We recklessly funded our wallets, opened channels, and made the first mainnet lightning payments with Mutiny Web.
It felt pretty good! We made a goofy pitch video, wrote up our accomplishments, and dispersed to eat turkey with family.
And now we're in the hackathon finals! Thank you to the judges for their consideration!
As a humble frontend dev writing this, I don't feel bad about bragging: what we've built was very ambitious. There were so many obstacles, mostly to do with the specifics and limitations of the browser as a compile target for Rust. And Tony and Ben broke through each and every obstacle, one at a time, no magic or cheats, just patience, time, and hard work.
We ended up with a feeling that we could do anything we set out to do. We did the hardest part first, and now the "everything else" part seemed tractable.
For our final trick we decided to try and add DLCs to Mutiny. It's a way to demonstrate the ambition we have for Mutiny, and the strong foundation we've built that allows us to do just about anything on-chain or Lightning. We own the whole stack, from the wallet to the node to the UI, and that means there's no saying no to a good idea.
Will we pull it off? Who knows? We'll just build as best as we can and see what happens.
Progress ✅
There are too many week six changes to list. A tl;dr would be: we finished the LDK implementation, and then lit up all the functionality to make it a usable node: pay invoice, open channel, connect peer, reconnect peer. Simultaneously we built out the frontend to exercise each of those APIs. We even handle a few things that aren't supported in some popular Lightning wallets, like keysend and zero amount invoices.
This past week we added:
-
Bip 21 parsing for sends https://github.com/BitcoinDevShop/mutiny-web-poc/pull/123
-
An on-chain DLC wallet https://github.com/BitcoinDevShop/mutiny-web-poc/pull/142/files
-
A QR code reader https://github.com/BitcoinDevShop/mutiny-web-poc/pull/148
-
Default seed word hiding (thanks to Stephen DeLorme for his excellent issue and shaming us publicly!) https://github.com/BitcoinDevShop/mutiny-web-poc/pull/156
DLC oracle client https://github.com/BitcoinDevShop/mutiny-web-poc/pull/159 -
Mutiny-to-mutiny support in our websocket proxy https://github.com/BitcoinDevShop/mutiny-web-poc/pull/144
-
Dummy UI for DLCs https://github.com/BitcoinDevShop/mutiny-web-poc/pull/145
Problems ✋
-
We added a scary warning about Mutiny being alpha software, but we've already gotten some reckless users trying out Mutiny and it's clearly too early for them to have a good time.
-
We're a little torn between polishing the current Mutiny experience and landing the big new DLC feature.
-
Most of the available QR code reader libraries for the web aren't very good. The one we have now is working fine for simple QRs but struggles to read Bip 21 sometimes.
-
There are some mysterious bugs that have appeared which we haven't had the time to iron out: mysterious channel disappearance, mysterious receive screen breakage. The challenge of getting logs from a phone has prompted us to work on adding in-app logs.
Plans 📆
-
It'll be a game time decision whether we merge the DLC work to the frontend or hold off and focus on polish in our last day.
-
We need to merge the Mutiny-to-Mutiny work.
-
We'd like to at least demo a Mutiny-to-Mutiny payment in our final demo, so wish us luck!
-
We have a bunch of PRs in-flight so we just need to find some time to triage and review and merge and test everything: https://github.com/BitcoinDevShop/mutiny-web-poc/pulls
-
We'll be on Citadel Dispatch this afternoon to talk about Mutiny: https://twitter.com/ODELL/status/1599836167822008320