Hush SDK for Android lite wallets
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.
 
 
fekt c97205fb4e Merge pull request 'main' (#3) from fekt/hush-android-wallet-sdk:main into main 10 months ago
.idea v1.9.0-beta01 changes 1 year ago
.run Initial commit 2 years ago
build-conventions v1.9.0-beta01 changes 1 year ago
darkside-test-lib v1.9.0-beta01 changes 1 year ago
demo-app v1.9.0-beta01 changes 1 year ago
docs Update 'docs/Architecture.md' 1 year ago
gradle/wrapper v1.9.0-beta01 changes 1 year ago
sdk-lib Update checkpoints to 1420000 10 months ago
tools v1.9.0-beta01 changes 1 year ago
.editorconfig Initial commit 2 years ago
.gitattributes v1.9.0-beta01 changes 1 year ago
.gitignore v1.9.0-beta01 changes 1 year ago
CHANGELOG.md v1.9.0-beta01 changes 1 year ago
CONTRIBUTING.md Update 'CONTRIBUTING.md' 1 year ago
LICENSE Update license to GPLv3 1 year ago
MIGRATIONS.md v1.9.0-beta01 changes 1 year ago
README.md Update 'README.md' 1 year ago
build.gradle.kts Initial commit 2 years ago
gradle.properties v1.9.0-beta01 changes 1 year ago
gradlew v1.9.0-beta01 changes 1 year ago
gradlew.bat v1.9.0-beta01 changes 1 year ago
settings.gradle.kts Initial commit 2 years ago

README.md

This is a beta build and is currently under active development. Please be advised of the following:

  • This code currently is not audited by an external security auditor, use it at your own risk
  • The code has not been subjected to thorough review
  • We are actively changing the codebase and adding features where/when needed

🔒 Security Warnings

  • The Hush Android Wallet SDK is experimental and a work in progress. Use it at your own risk.
  • Developers using this SDK must familiarize themselves with the current threat model, especially the known weaknesses described there.

Hush Android SDK

This lightweight SDK connects Android to Hush, allowing third-party Android apps to send and receive shielded transactions easily, securely and privately.

Different sections of this repository documentation are oriented to different roles, specifically Consumers (you want to use the SDK) and Maintainers (you want to modify the SDK).

Note: This SDK is designed to work with lightwalletd. As either a consumer of the SDK or developer, you'll need a lightwalletd instance to connect to. These servers are maintained by the Hush community. lightwalletd v0.1.2 or higher is required.

Note: Because we have not deployed a non-beta release of the SDK yet, version numbers currently follow a variation of semantic versioning. Generally a non-breaking change will increment the beta number while a breaking change will increment the minor number. 1.0.0-beta01 -> 1.0.0-beta02 is non-breaking, while 1.0.0-beta01 -> 1.1.0-beta01 is breaking. This is subject to change.

Hush Networks

"mainnet" (main network) and "testnet" (test network) are terms used in the blockchain ecosystem to describe different blockchain networks. Mainnet is responsible for executing actual transactions within the network and storing them on the blockchain. In contrast, the testnet provides an alternative environment that mimics the mainnet's functionality to allow developers to build and test projects without needing to facilitate live transactions or the use of cryptocurrencies, for example.

This SDK supports both mainnet and testnet. Further details on switching networks are covered in the remaining documentation.

Consumers

If you're a developer consuming this SDK in your own app, see Consumers.md for a discussion of setting up your app to consume the SDK and leverage the public APIs.

A primitive example to exercise the SDK exists in this repo, under Demo App.

There are also more comprehensive wallets:

Maintainers and Contributors

If you're building the SDK from source or modifying the SDK:

  • Setup.md to configure building from source
  • Architecture.md to understand the high level architecture of the code
  • CI.md to understand the Continuous Integration build scripts
  • PUBLISHING.md to understand our deployment process

Note that we aim for the main branch of this repository to be stable and releasable.

Known Issues

  1. Intel-based machines may have trouble building in Android Studio. The workaround is to add the following line to ~/.gradle/gradle.properties: ZCASH_IS_DEPENDENCY_LOCKING_ENABLED=false
  2. During builds, a warning will be printed that says "Unable to detect AGP versions for included builds. All projects in the build should use the same AGP version." This can be safely ignored. The version under build-conventions is the same as the version used elsewhere in the application.
  3. Android Studio will warn about the Gradle checksum. This is a known issue and can be safely ignored.

Compiling notes for Hush

We currently rely on mavenLocal publishing for the SDK. Run the following commands to build and publish the SDK locally before compiling the Android wallet.

./gradlew clean
./gradlew build
./gradlew build publishToMavenLocal

On Windows you may also need to manually create the following directory if build fails for it not existing:
C:\Users\user\.cargo\git\checkouts\librustzcash-b77c20a46364385a\553c3f6\zcash_client_backend\src\proto

NOTE: the commit id above may need to be modified, as it changes.