DanS 601cf187a2 v1.1.1: Fix server reconnection, sync progress, and seed phrase handling
- Fix UI stuck on "Reconnecting" after server switch: HomeViewModel now
  rebinds flows to the new synchronizer via syncRestarted signal
- Show live sync progress during download/scan phases using weighted
  totalProgress (40% download + 60% scan) with block heights
- Handle DEADLINE_EXCEEDED errors the same as UNAVAILABLE (show server picker)
- Fix seed phrase validation: normalize input to lowercase, prefer exact
  word matches over autocomplete
- Wrap server picker reconnection in try/catch to prevent crashes
- Preserve birthday height when resetting synchronizer for server switch
- Run findReachableServer on IO dispatcher to avoid blocking main thread
- Guard Twig debug logging behind BuildConfig.DEBUG
- Add build.sh script for debug/release builds
- Bump version to 1.1.1, SDK to 1.9.1-beta01
2026-03-24 16:33:41 -05:00
2022-11-29 20:49:44 -05:00
2022-11-29 20:49:44 -05:00
2022-11-29 20:49:44 -05:00
2022-11-29 20:49:44 -05:00
2022-11-29 20:49:44 -05:00
2024-11-18 17:52:51 +00:00
2022-11-29 20:49:44 -05:00
2022-11-29 20:49:44 -05:00
2022-11-29 20:49:44 -05:00
2023-07-16 01:14:17 +00:00
2022-11-29 20:49:44 -05:00
2022-11-29 20:49:44 -05:00
2022-11-29 20:49:44 -05:00
2023-07-16 01:12:43 +00:00
2022-11-29 20:49:44 -05:00
2023-05-31 18:13:06 +00:00
2024-11-18 17:52:51 +00:00

SilentDragonXAndroid

A sample Android wallet using the DragonX Android SDK which is based on the Zcash Android SDK.

Motivation

Dogfooding - transitive verb - is the practice of an organization using its own product. This app was created to help us learn.

Disclaimers

There are some known areas for improvement:

  • This app is mainly intended for learning and improving the related libraries that it uses. There may be bugs.
  • Traffic analysis, like in other cryptocurrency wallets, can leak some privacy of the user.
  • The wallet requires a trust in the server to display accurate transaction information.

See the upstream Zcash Wallet App Threat Model for more information about the security and privacy limitations of the wallet.

If you'd like to help us test, reach out on Telegram or Matrix and let us know! We're always happy to get feedback!

Description

This a sample wallet for the following set of features:

  • z2z transactions with encrypted memos
  • reply-to formatted memos

Prerequisites

Building the App

  1. Clone the SDK: git clone https://git.hush.is/dragonx/dragonx-android-wallet-sdk.git

  2. Add any new checkpoints to the SDK - Checkpoints are located in dragonx-android-wallet-sdk\sdk-lib\src\main\assets\co.electriccoin.zcash\checkpoint\mainnet You may use the sda_checkpoints.pl script and modify the start and end block heights accordingly.

    By default, this script will generate many checkpoints in a single file IE: ./contrib/sda_checkpoints.pl > newcheckpoints.json. You may then copy/paste to individual .json files named as the block height the checkpoint is for or modify this script to save individual .json files for each block height.

  3. Compile and publish the SDK locally as the app's code currently relies on mavenLocal for the SDK.

    ./gradlew clean
    ./gradlew build
    ./gradlew build publishToMavenLocal
    
  4. Clone the app repo: git clone https://git.hush.is/dragonx/SilentDragonXAndroid

  5. Open the app in Android Studio and press play to install and run on connected device. It should just work.™

  6. If you want to build APKs instead of installing on a device or emulator, select Build > Build Bundle(s) / APK(s) > Build APK(s)

Install from Android Studio

  1. Install Android Studio and setup an emulator 1a. If using a device, be sure to put it in developer mode to enable side-loading apps
  2. Import the SilentDragonXAndroid folder.
    It will be recognized as an Android project.
  3. Press play (once it is done opening and indexing)

OR Install from the command line

To build from the command line, setup ADB and connect your device. Then simply run this and it will both build and install the app:

cd /path/to/SilentDragonXAndroid
./gradlew

Note: The lack of an explicit Gradle task is not a typo. A default task is configured via build.gradle.kts.

Tip: On macOS and Linux, Gradle is invoked with ./gradlew. On Windows, Gradle is invoked with gradlew.

Included builds

These notes are included from upstream and for reference only if looking to create an included build. To simplify implementation of SDK features in conjunction with changes to the app, a Gradle Included Build can be configured.

  1. Check out the SDK to a directory path of ../dragonx-android-wallet-sdk relative to the root of this app's repo. For example:

     parent/
         SilentDragonXAndroid/
         dragonx-android-wallet-sdk/
    
  2. Verify that the dragonx-android-wallet-sdk builds correctly on its own

  3. Build SilentDragonXAndroid, setting the Gradle property IS_SDK_INCLUDED_BUILD=true

There are some limitations of included builds:

  1. Properties from SilentDragonXAndroid will override those set in dragonx-android-wallet-sdk with the same name
  2. Modules in each project cannot share the same name. For this reason, build-conventions have different names in each repo (dragonx-android-wallet-sdk/build-conventions vs other-android-wallet/build-convention)
  3. Kotlin and KSP versions will need to be coordinated between the two projects, because KSP is tightly coupled to the Kotlin version

Contributing

Contributions are very much welcomed! Contact us on Telegram or Matrix .

Reporting an issue

Contact us on Telegram or Matrix

Copyright

Copyright 2016-2023 The Hush developers

License

GPLv3

Description
No description provided
Readme 1.1 MiB
2026-03-24 16:57:32 -05:00
Languages
Kotlin 99.8%
Shell 0.2%