/zeus

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

Primary LanguageJavaScriptOtherNOASSERTION

ZEUS

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

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

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

Android nodes

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.17)

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 oficial 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 (zeusln@tutanota.com). 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 (tips@pay.zeusln.app), 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.