You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Carter Jernigan fd2b8a1686
[#354] Android Gradle Plugin 7.4
6 days ago
.github Bump actions/setup-java from 3.1.1 to 3.9.0 in /.github/actions/setup (#357) 1 week ago
.run Code review changes 1 year ago
app [#302][#316] Adopt latest Android SDK 1.12.0-beta01 1 week ago
build-convention [#350] Gradle 7.6 2 months ago
buildSrc [#302][#316] Adopt latest Android SDK 1.12.0-beta01 1 week ago
feedback [#302][#316] Adopt latest Android SDK 1.12.0-beta01 1 week ago
gradle/wrapper [#350] Gradle 7.6 2 months ago
lockbox [#302][#316] Adopt latest Android SDK 1.12.0-beta01 1 week ago
mnemonic [#302][#316] Adopt latest Android SDK 1.12.0-beta01 1 week ago
qrecycler [#341] Android Gradle Plugin 7.3.0 4 months ago
.editorconfig #247 Add ktlint (#248) 2 years ago
.gitignore Miscellaneous cleanup and minor version updates. 2 years ago
CHANGELOG.md Update changelog. 2 years ago
CONDUCT.md readme enhancements 2 years ago
CONTRIBUTING.md Contributing guide and helper file for easier builds. 3 years ago
LICENSE Correct LICENSE file 1 year ago
README.md [#304] Configure included builds for SDK 8 months ago
build.gradle.kts [#354] Android Gradle Plugin 7.4 6 days ago
gradle.properties [#303] Zcash SDK 1.4.0-beta01 8 months ago
gradlew [#350] Gradle 7.6 2 months ago
gradlew.bat [#350] Gradle 7.6 2 months ago
placeholder.keystore Updated product name and removed local dependency. 3 years ago
responsible_disclosure.md Added responsible disclosure (it just points to the SDK md doc) 2 years ago
settings.gradle.kts [#325] Migrate to SDK with BlockHeight AP 6 months ago

README.md

zcash-android-wallet

A sample Android wallet using 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.

Please take note: the wallet is not an official product by ECC, but rather a tool for learning about our libraries that it is built on. This means that we do not have robust infrasturcture or user support for this application. We open sourced it as a resource to make wallet development easier for the Zcash ecosystem.

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 Wallet App Threat Model for more information about the security and privacy limitations of the wallet.

If you'd like to sign up to help us test, reach out on discord and let us know! We're always happy to get feedback!

Description

This a sample wallet for the following set of features:

  • z2z transactions w/ encrypted memos
  • reply-to formatted memos
  • z2t transactions
  • transparent receive-only
  • autoshielding on threshold from receive only t-address

note: z means sapling shielded addresses.

Prerequisites

Building the App

To run, clone the repo, open it in Android Studio and press play. It should just work.™

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 zcash-android-wallet 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/zcash-android-wallet
./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

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 ../zcash-android-sdk relative to the root of this app's repo. For example:

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

  3. Build zcash-android-wallet, setting the Gradle property IS_SDK_INCLUDED_BUILD=true

There are some limitations of included builds:

  1. Properties from zcash-android-wallet will override those set in zcash-android-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 (zcash-android-sdk/build-conventions vs secant-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! Please read our Contributing Guidelines and Code of Conduct. Our backlog has many Issues tagged with the good first issue label. Please fork the repo and make a pull request for us to review.

Reporting an issue

If you wish to report a security issue, please follow our Responsible Disclosure guidelines.

For other kind of inquiries, feel welcome to open an Issue if you encounter a bug or would like to request a feature.