Our Lightning Mobile App for iOS & Android Is Now on Mainnet!

June 19, 2019

by Tankred Hase

We couldn’t be more excited to announce a major release today. Our Lightning App is now available on Bitcoin mainnet in alpha for iOS (on Testflight) and Android (on Google Play), making it the first mainnet app on all major mobile and desktop platforms. We recently launched our Lightning App on desktop and with this new release our Lightning App is now available on iOS, Android, Windows, macOS, and Linux.

A User Experience for Everyone

We’ve designed the mobile app to be approachable for a wide range of users. That’s why we began with a clean user interface and a goal to hide complexity and make the app more accessible to new users. We understand that there are still many challenges to overcome in the Lightning user experience today. However, we believe starting simple is an important first step as we learn more about each challenge and add new features thoughtfully.

Fully Non-Custodial with LND

As with our desktop app, the mobile apps integrate a fully functional Lighting Network node using our very own LND. This is the same LND codebase run by a large part of the Lightning Network today and will leverage the features coming to LND in the future. While there is still much work to be done to increase stability and performance as we go beyond this alpha release, we’re excited to have testers try the mobile app today and give us feedback.

Powered by Neutrino and Autopilot

The mobile apps also include the same two core technologies that power the desktop app. The first is Neutrino, a light client specification that allows non-custodial Lightning wallets to verify Bitcoin transactions with improved privacy, minimized trust, and without needing to sync the full Bitcoin blockchain (which is about 225 GB). Instead, app users only need to download and verify tens of megabytes worth of filter and block headers in a matter of minutes.

The second core technology is Autopilot. Selecting which node to open a channel to is something many users will not be equipped to do. This goal led to the development of the Autopilot technology within LND, which selects a channel as part of bootstrapping new users to the Lightning Network by connecting them to reliable routing nodes.

You can read more about these two technologies in the desktop release blog post.

State of the Art Mobile Security

Security is an integral part of Bitcoin and our Lightning App is no exception. We’ve written about application security and threat modeling for the desktop app in a recent blog post and the mobile apps take security to a new level. Not only are mobile platforms themselves more secure than desktop operating systems due to application sandboxing, but we’re also able to leverage advanced platform and hardware features of these devices to secure user funds.

One important feature is that the wallet private key never leaves the user’s device and is encrypted by a random wallet password that is stored in the iOS Keychain and is secured via TouchID / FaceID and the iPhone’s Secure Enclave. On Android the KeyStore is used to store encrypted secrets on disk. While this doesn’t provide the same level of security as on iOS, we plan to support advanced hardware features in the future, e.g. the Pixel 3’s Titan M security module. These security features protect the user’s funds against tampering with a lost or stolen device.

Five Operating Systems with A Single Codebase

Less code means a reduced attack surface. It is well known that the lines of code correlate to the amount of bugs in a given software. This is why it is a strong principle behind Bitcoin that increased complexity means less security. Our project aims to continue these best practices by reusing the complete LND codebase on all platforms. In addition the vast majority of the app’s JavaScript logic is also shared between the desktop and mobile apps, further reducing complexity and maintenance costs.

Open Source & Mobile SDK Roadmap

We believe security is only possible with open source wallets. As with the desktop releases, the mobile app’s source code is GPLv3 licensed and available on Github.

As the mobile releases stabilize, we plan to open source the LND mobile build tools and provide SDKs for other Lightning wallets, including a self-contained LND React Native module with a simple JavaScript API. This library will make it easier for other developers to build their own cross-platform mobile wallets.

Our mission is not only to provide the best Lightning experience for end users, but also to provide a development platform for Lightning and thus lower the barriers to entry for the Bitcoin ecosystem as a whole. We welcome other app developers to get in touch and give us feedback on desired features for a mobile SDK.

Craefulgang!

We’d like to remind users that this is still very early technology and there’s a risk of losing all of your funds. While testing the current alpha version of the software, we advise users to not put more money in the app than they are willing to lose. There’s also a good amount of work left to be done, which will add to the app’s security in the future. We still have to undergo a security audit, enable static channel backups, and integrate watchtowers (which mitigate potential attacks if the app stays offline for extended periods of time).

A note on receiving payments

This release is primarily targeted at users who want to test spending and sending Lightning payments, as there are still UX challenges to overcome to automatically get inbound capacity for channels. We’re working on integrating our Lightning Loop service to make it easier for users to receive Lightning payments and top off their channels in future releases of the App. In the meantime, users can receive if they have enough inbound capacity, i.e. after sending a few payments.

When receiving with the mobile app, it’s important to note that for iOS the receiver will need to have their app in the foreground to receive the payment. Android is a bit more forgiving with respect to background processes, so Android users may be able to receive payments while the app is in the background. For future iterations of the app, we’re working on a more streamlined synchronous UX for app-to-app payments.

Try the alpha release on mainnet today!

To try the alpha release on mainnet:

  1. Install the iOS app (on Testflight) or the Android app (on Google Play)
  2. Fund your wallet with a small amount of BTC in Sats (we recommend using 5-20 USD of BTC for testing).
  3. Wait a few minutes for the wallet to sync. Once completed, the app will open payment channels automatically. The funding transactions need to confirm just like regular on-chain transactions.
  4. Go to a site that supports Lightning like https://yalls.org, https://pollofeed.com, https://www.blockclock.live, and https://ln.pizza
  5. That’s it!

We’re excited to hear your feedback as this release represents an important step in an ongoing conversation with users. For general feedback, you can reach us via Twitter @lightning. For support-related questions, please contact us via Twitter @lightning_help, via email at [email protected], or by opening an issue on GitHub. Some questions may also be answered within our developer resources. Thanks in advance for your input!

Acknowledgements

This release would not have been possible without the support of the whole team, especially the LND and Infrastructure Team that have built the crucial building blocks that enable an integrated Lightning user experience. Special thanks to @johanth for his work on LND for mobile.