Git Product home page Git Product logo

zeusln / zeus Goto Github PK

View Code? Open in Web Editor NEW
896.0 25.0 139.0 60.55 MB

A mobile Bitcoin wallet fit for the gods. ⚡️ Est. 563345

Home Page: https://ZeusLN.com

License: Other

TypeScript 38.43% Java 0.88% JavaScript 52.77% Objective-C 0.13% Ruby 0.01% Starlark 0.02% Swift 7.42% Shell 0.14% Kotlin 0.13% Objective-C++ 0.08%
bitcoin lightning-network micropayments cryptocurrency lnd react-native typescript lightning c-lightning lndhub

zeus's Introduction

ZEUS

ZEUS is a mobile Bitcoin/Lightning wallet and remote node manager for LND and Core Lightning. ⚡️

ZEUS is built on TypeScript and React Native. It runs on both Android and iOS.

Read more on our documentation site.

App Store links

Get in touch with us

Features

  • Bitcoin only wallet
  • Self-custodial
  • No KYC
  • Fully open source (APGLv3)
  • Connect to LND, Core Lightning (REST + Sparko), or Eclair lightning node
  • Manage multiple lightning nodes at once
  • Connect via LNDHub instances
  • Lightning accounts
  • On-chain accounts
  • Easy to use activity menu
  • NFC payments and requests
  • PIN or passphrase encryption
  • Connect over Tor
  • Privacy mode - hide your sensitive data
  • Lightning address send
  • Full LNURL support (pay, withdraw, auth, channel)
  • Lightning channel management
  • Detailed routing reports
  • Set and manage routing fees
  • MPP/AMP support
  • Keysend support
  • SegWit support
  • Sign & verify messages
  • Fiat currency integrations
  • Various language support
  • Multi-theme
  • On-chain coin control
  • External signer support
  • Watch-only accounts
  • Contact list for easier payments
  • Nostr contact import
  • Point of Sale (Standalone and Square integration)
  • Lightning address receive
  • Taproot support
  • Connect a watchtower
  • Advanced security center
  • Batch on-chain transactions
  • Batch channel opens
  • PayJoin
  • Lightning Node Connect
  • Self-custodial lightning address (ZEUS Pay)

Connecting ZEUS to your node

You can connect ZEUS to a remote Bitcoin Lightning node running Lightning Network Daemon (lnd), eclair, or Core Lightning using the REST or Sparko API.

You must provide ZEUS with your node's hostname, port number, and the macaroon you choose to use in hex format. If you need help converting your macaroon to hex format we wrote up a Node.js script that can use here. Alternatively, if you're running a Unix-based operating system (eg. macOS, Linux) you can run xxd -ps -u -c 1000 /path/to/admin.macaroon to generate your macaroon in hex format.

Tor Connection Guides

ZEUS has support for connecting to you node entirely over the Tor network. You can refer to these guides to set up a Tor hidden service on your lnd node. The instructions are generally interchangeable and typically only require you to change your Tor path.

Integrations

ZEUS is proud to be integrated on the following platforms:

Full node solutions

Payment platforms

Starting development

Don't trust, verify the code with your own two eyes. Then when ready proceed to the steps below based on your platform.

Prerequisites

  • Node.js (minimum version: 18.18)

Android

  1. install and setup react-native and its related dependencies under "Building Projects with Native Code" on react-native's Getting Started page
  2. if using your phone, enable Developer mode and USB Debugging , then make sure it is connected to your computer by running adb devices
  3. install node dependencies with yarn
  4. open up your Android simulator or connect your phone and run npx react-native start
  5. open a new tab and run npx react-native run-android

iOS

  1. install and setup react-native and its related dependencies under "Building Projects with Native Code" on react-native's Getting Started page
  2. install node dependencies with yarn
  3. cd ios && pod install
  4. open ios/zeus.xcworkspace in Xcode and hit Run.

Contributing

Please be sure to run yarn run tsc to check for type errors, yarn run test to run all tests, and yarn run prettier to run the prettier

If you are making cosmetic changes please test on both Android and iOS as things don't render exactly the same on both platforms.

If you're looking for a quick way to get a lightning development environment running, check out Polar.

NOTE: When configuring a new node on Android in dev, the Host field must be 10.0.2.2 - 127.0.0.1 or localhost won't work.

Reproducible builds

Reproducible builds are available for Android only right now. You'll need Docker installed to be able to build the app this way:

  1. Clone ZEUS git for the branch/tag that you want to build. For example: git clone --depth 1 --branch v0.8.0 https://github.com/ZeusLN/zeus.git You can also remove the --branch v0.8.0 parameter to build APKs for master.
  2. Change to the zeus directory: cd zeus
  3. Execute the build script: ./build.sh
  4. If everything goes well, the script will print a list of all the generated APK files and SHA256 hashes for each one of them: armv7, armv8, x86, x86_64, universal. The equivalent to the one provided in the web page is the one ending in 'universal'. You can compare SHA256 hashes with the ones provided on the GitHub releases page
  5. Download the official APK from GitHub releases page or from the ZEUS homepage: wget https://zeusln.com/zeus-v0.8.0-universal.apk
  6. Compare both APKs with a suitable utility like diffoscope, apksigcopier or by running diff --brief --recursive ./unpacked_oficial_apk ./unpacked_built_apk. You should only get differences for the certificates used to sign the official APK

If you want to install the APK built this way onto your own smartphone, you'll need to sign it yourself (see next section). Note that the first time you install a build made using this procedure, you'll need to uninstall your current version of ZEUS and then install the one built here because certificates will not match. You'll lose your connection details and you'll need to reconfigure ZEUS again to connect to your nodes.

Signing APKs

  1. Install signing utilities: apt-get install -y apksigner
  2. Create your certificate, if you haven't done so already. If you already have the certificate from previous builds, it's advised that you use the same one so you are able to upgrade from one APK to the next one without reinstalling first: keytool -genkeypair -alias zeus -keystore zeus.pfx -v -storetype PKCS12 -keyalg RSA -keysize 2048 -storepass your_keystore_password -keypass your_key_password -validity 10000 -dname "cn=Unknown, ou=Unknown, o=Unknown, c=Unknown"
  3. Sign the chosen APK file using this command: java -jar /usr/bin/apksigner sign -v --ks zeus.pfx --ks-key-alias zeus --ks-pass pass:your_keystore_password --key-pass pass:your_key_password zeus-universal.apk
  4. Copy the signed APK to your smartphone and install it by tapping over the file. If you get an error, you'll have to uninstall your currently installed version of ZEUS first. Note that you'll lose your connections and you'll need to reconfigure ZEUS again to connect to your node.

Translations

Do not directly modify the files in /locales unless you are adding new copy to the app in English. Instead, translators and reviewers should visit out Transifex page and request a role on the language you'd like to contribute to.

Release + Commit Verification

All releases and all maintainer commits as of October 20, 2021 are signed by key AAC48DE8AB8DEE84 ([email protected]). The key can be found in this repo and on the ZeusLN.com website.

Past Keys

989CC718EBA8BB68 (January 24, 2020 - October 19, 2021)

Donations

If you'd like to help us with the cost of running Zeus project (iOS developer account, Google Play developer account, hosting) you can send a payment to us via our BTCPayServer portal, via Lightning Address ([email protected]), or via PayNym (+holymorning7d1). You can also become a community sponsor and have your Twitter or Nostr avatar displayed on our website and in-app.

Thank you.

License

Distributed under the GNU Affero General Public License (AGPL v3). See LICENSE file.

zeus's People

Contributors

aussedatlo avatar bosch-0 avatar channelninja avatar dependabot[bot] avatar deregs avatar dscotese avatar fiatjaf avatar futurepaul avatar gabidi avatar hazrulnizam avatar innocuousfinch avatar joegesualdo avatar kaloudis avatar kn0wmad avatar ktecho avatar marytsahas avatar moonsettler avatar myxmaster avatar nayuta-ueno avatar otech47 avatar ovifer13 avatar prusnak avatar pseudozach avatar secondl1ght avatar sha-265 avatar shubhamkmr04 avatar sz3k avatar talej avatar transifex-integration[bot] avatar variablefate 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

zeus's Issues

[iOS/BTCPay] Can't add a node

Describe the bug
I can't connect to my LND node that is running inside a BTCPay

To Reproduce
Steps to reproduce the behavior:

  1. Go to settings
  2. On BTCPay, find the LND REST Qr code
  3. Scan the Qr code
  4. Copy paste the info

Expected behavior
I should connect to my LND

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: ubuntu 18.04
  • Browser [e.g. chrome, safari] : firefox
  • Version [e.g. 22] 66.0.4

Smartphone (please complete the following information):

  • Device: [e.g. iPhone6] iPhone 6S
  • OS: [e.g. iOS8.1] 12.1.3
  • Browser [e.g. stock browser, safari] firefox
  • Version [e.g. 22]

Additional context
Add any other context about the problem here.

Zues unexpectedly crashes upon launch.

Downloaded the most recent Zeus wallet from F-Droid. App crashes upon launching, with no warning or errors.

Device: Google Pixel One
OS: Android 10
Zeus Version: 0.1.0

SOLVED:

The problem was caused by not having a google account attached to my phone. I skipped the initial account setup and side-loaded all my apps. It seems that some apps will crash upon launch if you do not have a google account attached to your phone, I was having the same problem with BLW (https://github.com/btcontract/lnwallet)

Added a google account to my device with (Settings -> Accounts -> Add account) the app now opens fine.

Enable custom amounts on 0 sat invoices

Describe the bug
I am unable to set a custom amount for a tippin.me invoice.

Smartphone (please complete the following information):

  • Device: Nexus 6
  • OS: LineageOS
  • Version 7.1.1

Onboarding process

App currently starts for the first time showing you an error and to go to settings

Add .prettierrc config

Add .prettierrc config so users can easily apply a standard formatting to the source files

Feature: Fiat support

gives me the heebeegeebees a bit but some users really want it. it will also be a necessity to do before we add merchant features as most merchants will want to peg their prices to fiat

QR for macaroon

Hi, I was seeking the feature request, but only found bug reporting, thus sorry that this is put here!

I was attempting to install the android wallet and am stuck with entering the hex macaroon...
simply impossibly with the large field to enter that without mistakes!

I do notice that for both LNDconnect and BTCpayserver you provide the ability to QR scan the code!
Thus my Q is: why not enabling to scan the HEX macaroon?
there are simple tools (like: FreeQRcreator) or even with your example json that could convert the output of xxd into an QR stamp that could be imported flawlessly into the wallet?

Support LNURL withdraws

demo

https://github.com/btcontract/lnurl-rfc/blob/master/spec.md#3-withdrawing-funds-from-a-service

It's specially useful in these days post 0-sat invoice exploit.

It requires only that when a QR code starting with lnurl is found you

  1. decode it to get an https://... URL;
  2. GET that URL;
  3. Use the response parameters to show an invoice prompt to the user like https://lightning-wallet.com/ does -- or just use the defaults and make the invoice automatically without user interaction as t.me/lntxbot does;
  4. Send the invoice back to the URL given also as a parameters.

That will generally trigger the service to pay the invoice automatically.

Can't pay on-chain by scanning BTCPayserver QR

Describe the bug
Can't pay BTCPayserver QR format:
bitcoin:[btc_addr]?amount=[amt]

To Reproduce
Steps to reproduce the behavior:

  1. Create BTC on-chain invoice in your BTCPayserver App
  2. Try to pay in Zeus for Android by scan QR code
  3. See error

Expected behavior
Should decode BTC_ADDR and amount and show user to confirm

Screenshots
image
image

Smartphone (please complete the following information):

  • Device: Xiaomi 5 Plus
  • OS: Android 7.1
  • Zeus Version v0.1.0

Handle IPv6 hosts

Describe the bug
If your lndconnect QR code includes an ipv6 address, it stops at the first colon. E.g.

lndconnect://[2604:2000...

would put [2604 in the host field

To Reproduce
Steps to reproduce the behavior:

  1. Generate an lndconnect QR code with an IPv6 host
  2. Scan it
  3. Confirm it put in the partial address

Security Enhancement - Password Prompt

Describe the bug
When app is open and unlocked using password and then goes to background. When I go back to zeus no password prompt. I would expect a password needs to be entered after 5mins idle.
i.e. someone could take control of phone and have access to zeus app without any password required.

To Reproduce
Open app which has a password set.
Use other app on phone,
Go back to zeus
Loads without password prompt.

Expected behavior
Password should be rpompted when returning from background
or after user speficied timeout. i.e. 5mins

  • OS: Android

  • Device: Android

  • Zeus Version - no idea how to find in the app, maybe a bug, should be an about screen.

App shows empty, non-functional node when setup with gRPC URL

Describe the bug
After entering the configuration for my node, the app shows what I would consider a "blank" node. No balance, most fields are empty or defaulted, and no actions work. I'm sure this is due to a misconfiguration, but there's no indication of that, and I can't inspect any kind of error message to figure out what might be wrong.

Expected behavior
Upon entering settings, a request would be made to my node's API, and any errors encountered would be presented to me so I could fix the config.

Screenshots

Smartphone (please complete the following information):

  • OS: Android 8.0.0
  • Zeus Version 0.0.9

"unmarshal v2 field data extends past end of buffer"

After selecting "scan lndconnect config" & scanning (and that little port with the scanning line is awful for the large QR codes lndconnect seems to require) a QR code the error above was reported.

unmarshal v2 field data extends past end of buffer Screenshot_20190912_174230_com zeusln zeus

Once this occurs other setting options (host/port/macaroon) don't seem to reset the problem.

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.