Collin Rukundo

Introducing EttaWallet

A few months ago, I was a proud Qala Africa alumnus and the recipient of a Superlunar grant that would have me embark on an exhilarating journey in the ever-evolving world of Bitcoin open source development.

As a scaling layer, the lightning network has always been so promising and yet there are still multiple gotchas that make a flawless user experience difficult if you commit to the non-custodial path, and we should.

The Bitcoin Design Community created a reference design for a non-custodial daily spending lightning wallet which planted the seed of an idea that germinated and blossomed into EttaWallet.

EttaWallet is a reference open-source non-custodial lightning wallet with a strong bias towards usability, accessibility, and good UX.

Etta Wallet Preview

The path to hyper-bitcoinization will certainly require user-facing clients that make it easy for novices to onboard onto bitcoin without the complexity of having to understand how most of it works deeply or widely - only that they can transfer value instantly from one continent to another with zero intermediaries.

EttaWallet is written in Typescript and built with React Native for Android and iOS. All the components from the Design Guide have been reduced into a strongly-typed UI library (etta-ui) that is fully customisable and anybody can use it on their own projects.

EttaWallet is 100% reproducible and anybody can run it on their own infrastructure. Explore the project here: https://github.com/EttaWallet/EttaWallet

The wallet takes advantage of Lightning Dev Kit (LDK) to setup a mobile node on the user's device. LDK is based on Rust-Lightning, a full-featured lightning implementation. For a mobile node, there a few limitations that complicate the user experience but this is what this project is about: testing scenarios, hypothesis and being a reference resource for good non-custodial lightning for everybody but ideally, developers.

Here's what you can do with it now:

  • Scan and decode BOLT 11 invoices
  • Decode and pay BOLT 11 invoices, lightning address, node URIs
  • Generate BOLT 11 invoices
  • Open new channels for Just-In-Time liquidity with an LSP
  • Aggregate transaction activity by period
  • Local backups for channels, transactions
  • Cloud backups for iCloud and GDrive

On Accesibility

Accessibility is very crucial for this project and a lot of work will go into integrating features that would allow anyone to effectively use the app by taking advantage of native tools that come with their devices like screen readers.

On Localization

EttaWallet will dynamically adapt to the languages set by the user. While English (US) is the default, a lot of time will go into ensuring the app is fully translatable. Swahili and French will take top priority as they are most widely spoken on the African continent which is the main focus for this app. If you can asssit these efforts in any way, reach out on Twitter or the discussion forum.

What's Next?

Despite the progress, the project still has a long way to go. It's far from perfect; it's a little rough around the edges and there are still countless bugs to be ironed out, features to be added, and improvements to be made. But, as they say, the journey is more important than the destination.

Moving forward, the plan is to continue growing, learning, and iterating. As an open-source project, it's not just my journey, but ours. The beauty of open source lies in its collaborative nature. Every contribution, no matter how small, helps. Every bit of feedback makes the project stronger. This discussion forum is a good place to start. Ask questions, report bugs, request new features.

In the coming months, there will be more learning, more challenges, and definitely more coding. There will be setbacks, but also breakthroughs. And through it all, I will be sharing my progress, my learnings, and my struggles, hoping that it might inspire someone else to start their own journey, or simply provide a companionable echo for those already on their own open-source journey.

I am especially grateful to the Uganda and Kenya bitcoin community that has been a fantastic sounding board and encouraged me to share and talk about this work.

I invite you all to join me on this journey. Let's learn, create, and grow together. After all, that's what open-source is all about!

Until next time, happy learning, happy coding 👨🏿‍💻!

Thoughts? Leave a comment