Git Product home page Git Product logo

zap-android's Introduction

Maintanance

This repository is no longer maintained, but the project is continued in a fork called BitBanana.

Zap Android

Screenshot of Zap Android app

Native android lightning wallet for node operators focused on user experience and ease of use ⚡️

Zap Android is not a classical wallet, it is actually a remote control for one or more of your LND Nodes. Zap Android aims to give node operators the opportunity to use their node in everyday situations with a simple and appealing user interface.

The easiest way to get started is using Umbrel to run LND on a raspberry pi and then connect Zap Android to that node.

Features

Wallet

  • Manage multiple wallets/nodes
  • Contacts
  • Fiat currency prices
  • Support for Bech32 and P2SH addresses
  • BTC, mBTC, bit & Satoshi units
  • Open lightning: & bitcoin: urls
  • Available in many languages
  • LNURL support (pay, withdraw & channel)
  • Send funds without an invoice (keysend)
  • Send funds to lightning addresses (email like addresses)
  • Transaction filter
  • Read NFC tags
  • Avatars
  • Bitcoin only, no shitcoins!

Security & Privacy

  • Non-custodial
  • Tor support
  • PIN protected access
  • Scrambled PIN by default
  • Protection against screen recording
  • Option to hide total balance
  • User guardian system (Zap warns users when they are about to perform potentially dangerous or privacy leaking actions)
  • Reproducible build

Lightning

  • Channel Management
  • Connect to remote Lnd node
  • Connect to BTCPay Server
  • Connect to lndconnect QR code

Security

If you discover or learn about a potential error, weakness, or threat that can compromise the security of Zap, we ask you to keep it confidential and submit your concern directly to the Zap security team.

Non-custodial

Zap Android is fully non-custodial. When using the app there is absolutely no interaction with any Zap team or service. We do not even know you are using our software.

Get Help

If you are having problems with Zap, please report the issue in GitHub or on slack with screenshots and/or how to reproduce the bug/error.

A good product not only has good software tests but also checks the quality of the UX/UI. Putting ourselves in the shoes of a user is a very important design principle of Zap.

Contribute

Hey! Do you like Zap? Awesome! We could actually really use your help!

Open source isn't just writing code. Zap could use your help with any of the following:

  • Translating the app
  • Finding (and reporting!) bugs
  • New feature suggestions
  • Answering questions on issues
  • Documentation improvements
  • Reviewing pull requests
  • Helping to manage issue priorities
  • Fixing bugs/new features

If any of that sounds cool to you, feel free to dive in! Open an issue or submit a pull request.

If you would like to help contribute to the project, please see the Contributing Guide

If you want to setup a testing environment, please see the Regtest Guide

And if you want to build the app yourself take a look at the Installation Guide

Maintainers

Unmaintained for now.

License

This project is open source under the MIT license, which means you have full access to the source code and can modify it to fit your own needs. See LICENSE for more information.

MIT © Jack Mallers

zap-android's People

Contributors

05nelsonm avatar bilthon avatar bitcoinuser avatar epicmario7133 avatar jimmymow avatar m-btc avatar michaelwuensch avatar mrhash avatar postpollux avatar raphbtc avatar rockstardev avatar tlindi avatar vindard avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

zap-android's Issues

Do not require PIN

Allow the user to disable PIN. While this seems like decreasing security, additional PIN is just annoyance in case the user has the phone locked with strong passphrase already. If the attacker can somehow interact with the application using malware, it's highly likely that the PIN won't help.

Also in practice (and we have a lot of practical experience with users in Paralelna Polis) the users are very likely to lose access to funds by locking themselves out by forgetting PIN/password.

Ideally detect that whole phone has passphrase set up and automatically skip PIN. If that is impossible, notify the user about the importance of having phone locked.

Unable to connect node on Android Q Beta 4

When I try to connect the Android Zap (0.2.2-alpha) app to my desktop node using the QR code and paste method I am "unable to connect to LND". I am on Android Q Beta 4 so I am suspecting this is probably the issue.

Love the work.

unable to connect to remote node Zap 0.2.4-alpha

Unable to connect to node via QR code or "paste" option

Description

App does not scan QR code. The "paste" button returns error before upon clicking it, before entering any string:
Unsupported connection format.
Please use one of the following formats:
lndconnect string... (so on)

Expected Behavior

App should recognize QR code or allow entry of lndconnect string.

Actual Behavior

No recognition of QR code and no allowing of lndconnect string entry.

Possible Fix

Unknown

Steps to Reproduce

  1. Install Zap 0.5.2-beta
  2. Install Zap 0.2.4-alpha on Android device.
  3. Setup new wallet by entering pin
  4. Select "Connect to Remote Node" upon being prompted on how you would like to use Zap.
  5. Attempt to scan QR code/click "paste" button

Context

Your Environment

  • Zap version: Zap 0.5.2-beta
  • Android version: Zap 0.2.4-alpha
  • Device: Samsung Galaxy S8
  • LND Version: 0.7.1-beta

QR scanner not effective on small phone

The current QR code scanner is not seen as a square and not working for reading payment requests on an S4 Mini. I know this phone can do better scanning as other apps can scan correctly. Is there some way to improve this? thanks

  • Zap version: 0.2.5-alpha
  • Android version: 9 (Pie)
  • Device: Samsung S4 Mini
  • LND Version: 0.7.1-beta

Zap crashes right after scanning QR code/entering PIN

I've submitted this via "Feedback" feature of Android, but I'd like to give a more detailed information here as well as have bidirectional communication.

Description of the issue

When the QR code is scanned, the application crashes immediately. After re-opening and entering the PIN, it crashes again.

Environment

Phone: Google Pixel 3
Android version: 9
QR code created using shell as described here: LN-Zap/lndconnect#15

Steps to reproduce

  1. Install the application
  2. Create a wallet
  3. Scan the QR code
  4. Observe a crash
  5. Re-launch
  6. Enter the valid PIN
  7. Observe a crash

Expected behavior

Application connects to the node. In case the link in QR code is broken, then the user is informed about it, ideally with description of what is broken.

Device based salt

Right now we just use a predefined salt for PIN hashing. To protect against rainbow tables we should move to a device based salt.

Inability to alter IP after LndConnect QR code scan

After scanning QR code there is no possibility to change IP address (iOs app has this option, Android app doesn't). Scanning QR takes 127.0.0.1 as IP (although I have --tlsextraip set correctly in lnd), but I want to access my lnd externally. Same happens in iOs app, but there is possibly to correct IP manually. Here IP can't be altered.

Please ad possibility to alter IP manually. Thanks!

Publish to F-Droid Repo

Publish to F-Droid Repo

Description

In order to make it easy for non-google Android users to install and keep the app up to date, zap-android should be published to the f-droid.org repo.

The guidelines for being included into f-droid are here: https://f-droid.org/en/docs/Inclusion_Policy/
I believe zap-android meets all the requirements, but someone else should review and confirm.

The process for getting an app published to f-droid is outlined here: https://f-droid.org/en/docs/Inclusion_How-To/

Support lightning links

Right now the app does not support lightning: links when I'm browsing through Chrome on my Android.

Ideally, when I click a lightning: link (yalls.org article), my Android offers to open Zap and then Zap opens up the pay form to make make the payment

Support management of multiple wallets in Zap android

The user should be able to create and manage more than one wallet with Zap.
For example a wallet running directly on the phone and a wallet on a node that is remote controlled with Zap. There has to be a easy way to switch between wallets without overcomplicating the UI for all the users that just have one wallet.

Zap-Android cannot connect to BTCPayServer: Invalid Connection Information

Description of the issue
BTCPay exposes LND's GRPC service for outside consumption. It allows to connect external software, like Zap Android or Pebble Wallet, via QR Code. When scanned with Zap Android, app returns "Invalid Connection Information"

Environment
Device: OnePlus 3
Android Version: 9
BTCPayServer Version: 1.0.3.114
LND Version: 0.6.1-beta
QR Code created using BTCPayServer UI

Steps to reproduce

  1. Install the application
  2. Connect to Remote Node
  3. Scan GRPC information in BTCPayServer from QR Code
  4. See Error: Invalid Connection Information

Expected behavior
Application connects to node.

There's no Bulgarian language option

The only way to use BG is to use the system language setting. Could you add it? Many people use English as their system language and won't know there's a Bulgarian translation for the app.
photo_2019-10-12_19-06-08

Display delays for force close channels

Show user how long it will take to force close a channel.

Description

Show time to close for a force closing channel in:

  • Confirm dialog
  • Channel detail

Possible Implementation

See the expiry countdown for invoices.

Minor: Force closing channel results in wrong total being displayed

The total Satoshi's displayed is off, when force closing a channel.

Description

I had to force close a channel (via Zap desktop) to a peer. That transaction (because of the timelock) is now - of course - in limbo until the timelock is passed. The Zap desktop still shows the correct total, but on the Zap Android wallet the total is missing the amount from my forced close.

It's a bug since it differs from the actual amount and from what is being displayed by Zap desktop.

Expected Behavior

Force closing a channel should not impact the amount of Satoshi's in total.

Actual Behavior

The "local balance* of the force closed channel is missing in the total.

Possible Fix

Don't deduct force closed channels from the total.

Steps to Reproduce

  1. Send some BTC to your wallet
  2. Open a channel with size X, wait till it's confirmed
  3. Force close the channel
  4. The total Satoshi's being displayed is missing X

Context

Minor display error.

Your Environment

BTCPayServer, Zap Android

  • Zap version: 0.2.3-alpha
  • Android version: 9
  • Device: Google Pixel 3
  • LND Version: 0.7.0-beta

Tor Support

Adding tor support via the Orbot app would be awesome and would allow for easier connections to personal nodes via hidden services, as well as obfuscation of mobile IP addresses when the app queries blockchain.info for Bitcoin data.

Create a backup flow

We need a backup flow to implement the static channel backups (SCB) from LND.
We could do this with google drive or dropbox, or both.

Sync Paymentrequest expiry with Desktop/iOS

Description

Currently the user can chose expiry rates for their requests from 10 minutes up to 24 hours.
On Desktop e.g. they can chose from 1 minute to 1 year.

Context

Current values on Desktop

image

Possible Implementation

Update the current values.

Add screenshot to README

On the Desktop and iOS README we have a screenshot of the app. Can we add a screenshot to the Android README too?

Provide details on failed connection

Problem

It's very hard to determine the cause of failed connection.

Steps to reproduce

  1. Generate a QR code with e.g. non-existing server, invalid port etc
  2. Use the QR code to connect to the node
  3. Observe error message

Expected behavior

Error message with information on what exactly failed. I'd expect one of these messages:

  • Connection refused
  • Network unreachable
  • Invalid certificate
  • Invalid macaroon
  • Bad protocol

What happens

Just plain "Unable to connect to LND" message.

Zap Desktop (Windows) Channel options missing on Android application

Describe the bug
The Zap Desktop (Windows) provides a very handy feature to configure a new channel:

  1. Fee (Slow, Medium, High)
  2. Keep this channel private (on/off)

Expected behavior
Provide the same options as the Zap Desktop (Windows) and maybe More ;-)

Screenshots
Capture

Your environment

  • Device: S7
  • OS: Android

Remove ZAP from upper left nav bar

I'd be curious to hear others opinion, but I think we should remove the uppercase ZAP next to the logo in the top left of the app. We don't uppercase Zap within our other wallets and I think it would be cleaner if we just used the logo there.

What do you think @michaelWuensch?

Zap fails to pay "private" LN invoices

I can't pay invoices created from the breez wallet. Their nodes are private. Essentially, Zap for android can't pay any invoice for which the fee is unknown. It says no path to destination. The same invoice can be paid no problem with the desktop version of Zap for windows, connected to the same LND node.

  • Zap version: (e.g. 0.2.5-alpha)
  • Device: (Samsung Galaxy S8)
  • LND Version: ( 0.7.1-beta)

Selectable payment channel

Description

Support selection of specific channel to attempt payment when you have multiple channels to choose from.

Context

LND supports this feature using the outgoing_chan_id parameter on payinvoice. Not sure about C-lightning. This gives the wallet user the option of making payments on a specific channel.

Possible Implementation

This could be implemented as an 'advanced' payment option or alternatively channels could be assigned a 'priority' or 'enabled' setting.

Error unable to find path to destination when in reality there is a path

I love the interface of Zap, but it says a payment cannot be made because there's no route. When I tried the exact same invoice with Shango wallet (Another wallet that connects with LND) it went through no problem. Besides, the qr scanner is horrible. It takes ages to recognize a qr code and you have to be very still.

lnd not getting new blocks from bitcoind after using Zap Android. possible rpc overload?

Thought it was docker lag causing lnd to miss new blocks as they came in at first, but after some testing I found it's got something to do with accessing lnd remotely and making rpc calls to it that seems to be hanging up communication between bitcoind and lnd clients. Initially opened a ticket over at lightningnetwrok/lnd, but am posting over here as well to link the 2. Might help with fixing.

lightningnetwork/lnd#3205

404 when clicking on "Need help?" button for connect to remote node

Description

Clicking on Get Help links results in a 404 page in the local browser.

Expected Behavior

I presume it should open up this URL: https://docs.zaphq.io/

Actual Behavior

It opens this URL: https://ln-zap.github.io/zap-tutorials/ which is a 404 page.

Possible Fix

Swap out the help URLs for the correct one.

Steps to Reproduce

  1. From the home screen click the orange 'Setup Wallet' button
  2. Choose a PIN
  3. Confirm the PIN from Step 2
  4. Click 'Connect to Remote Node'
  5. Click 'Need help?' button.

Can also replicate by going to Settings > Need Help?

Context

Trying to figure out how to pay my first Lightning invoice and testing out a few clients.

Your Environment

Using Zap version on Android. I

  • Zap version: 0.2.5-alpha Build 1
  • Android version: 10
  • Device: Google Pixel XL
  • LND Version: not connected

Better can't connect to node error handling

I tested the new error message when trying to connect to a remote node by pasting in poor lndconnect data. It worked great!

I think an improvement would be displaying the error, not in the wallet UI. In order for me to try again (inputting lndconnect data) I had to go to Settings -> Reset -> Setup remote node. Maybe instead we display the error in the initial setup screen?

Adress copied to clipboard

Hey, First thank you for your amazing app !
Currently testing it and noticed a small issue.
When you copy a payment request to your clipboard it add "lightning: ...." in front of it and this generates errors on automatic payment requests (lightning roulette for ex)
Is that removable ?

Remote node connection error

If the getInfo call returns nothing we show the wallet UI as offline right now. This isn't the best as it doesn't let the end user know their lndconnect info may be bad.

We should instead throw an error to the user and not advance them to the wallet UI

Improve starting procedure after wallet unlock

LND needs some time after unlocking a wallet until all RPC calls will be successfull.
Right now delays are used, so first calls to LND are made a few seconds after the wallet is unlocked.
This can be improved by determining when it is safe to do those requests.

Update Manage Channels style to match other Zap clients

Right now with Zap Android, the Channel Management view displays remote capacity with the white bar:

Screenshot_2019-07-23-10-47-28

In Zap Desktop and Zap iOS, we specifically use this blue gradient to show remote capacity in many ways (headers up top, bars, etc):

Screen Shot 2019-07-23 at 10 50 04 AM

image

I know this is small, but I think for the sake of design pattern across clients we should update Zap Android to match the other clients

User opt out for connections to blockchain.info for data queries

Would prefer use of a different source for price data and what not. Currently blocking the connection using NetGuard, but would like it if I did not have to.

Or at least give the ability to connect through tor via the Orbot app in order to obfuscate our IP addresses.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.