ZChat is a privacy-first messaging app built on the Zcash blockchain. Conversations are end-to-end encrypted and need no phone number, email, or account registration — your Zcash address is your identity.
Messages travel one of three ways, chosen per conversation: Shielded, where every message is a Zcash shielded transaction memo and no server is involved; Tunnel, where a shielded on-chain handshake anchors the relationship and later traffic is carried free over NOSTR; and Open, free encrypted chat over NOSTR from the first message.
Built on top of Zashi (the official Zcash Android wallet) using the Zcash Android SDK.
- Private messaging — In Shielded mode, messages are stored in Zcash shielded transaction memos (encrypted on-chain)
- ZMSG Protocol v4 — Custom memo encoding with conversation IDs for reliable threading
- Message chunking — Long messages split across multiple outputs in a single atomic transaction via ZIP321
- End-to-end encryption — Optional E2E layer: ECDH (P-256) + HKDF + AES-256-GCM with authenticated key exchange
- Group messaging — AES-256-GCM group encryption with ECIES per-member key distribution
- Reactions, read receipts, replies — Rich messaging features encoded in memo fields
- Time-locked messages — Timestamp, block-height, payment-gated, and answer-gated messages
- Payment requests — In-chat ZEC payment requests
- Contact book — Local contact management with aliases
- Notifications — Background sync with custom sound, vibration, and privacy levels
- Full Zcash wallet — Send, receive, and manage ZEC (inherited from Zashi)
- Keystone hardware wallet support
- No accounts — No phone number, no email, no registration; your Zcash address is your identity. Shielded mode is fully serverless. Tunnel and Open modes carry traffic over NOSTR relays, and calls use a TURN server; these see ciphertext and routing metadata, never message content.
Download the signed release APK directly. No email, no account, no waitlist.
github.com/decentrathai/zchat-android/releases/latest
Verify it before installing:
apksigner verify -v --print-certs ZChat.apk
The signing certificate SHA-256 is permanent and will not change:
F1:7A:F1:28:23:CA:20:8B:63:2E:29:81:38:B7:89:13:74:F6:65:17:C8:9D:BF:BE:12:FC:3A:C3:65:01:C8:06
You can also build from source — see Setup Documentation below.
ZChat uses the ZMSG Protocol for encoding messages in Zcash transaction memos. See the full spec: ZMSG Protocol Specification
| Component | Technology |
|---|---|
| Language | Kotlin 2.1.10 |
| UI | Jetpack Compose + Material3 |
| Wallet SDK | Zcash Android SDK 2.4.3 |
| Encryption | Google Tink + custom ECDH/AES-256-GCM |
| DI | Koin 4.0.2 |
| Background sync | WorkManager + ForegroundService |
| Min Android | 8.1 (API 27) |
Please file issues on this repository: GitHub Issues
For general Zcash questions:
See Setup Documentation to compile ZChat from source.
ZChat adds a messaging layer on top of Zashi's wallet functionality. The core wallet engine (key derivation, transaction construction, syncing) is unchanged from the Zcash Android SDK. ZChat-specific code lives in:
ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/chat/
├── model/ — ZMSG Protocol, data models, address cache
├── viewmodel/ — Chat logic, compose screen, groups
├── view/ — Compose UI screens
├── crypto/ — E2E encryption (ECDH, AES-256-GCM, ECIES)
├── usecase/ — ZIP321 multi-output transaction creation
├── datasource/ — Contact book, preferences, address cache
└── util/ — Utilities
ZChat is built on the exceptional work of the Electric Coin Company and the Zcash ecosystem. Core wallet functionality is provided by the Zcash Android SDK and librustzcash.
MIT License. See LICENSE.
This project is a fork of Zashi Android, which is MIT licensed by Electric Coin Company, and retains its upstream copyright notice as the MIT License requires. All ZChat-specific additions (the ZMSG protocol, chat and group messaging, the encryption and ratchet layers, the NOSTR transport, and the calling stack) are released by Decentrathai under the same MIT terms.