Zcash cryptography, transactions, and zero-knowledge proofs — in Dart.
zcash_dart is a low-level Dart package for building Zcash wallets, SDKs, and protocol tooling.
It supports Sapling, Orchard, and Transparent transactions, with both pure Dart and Rust-accelerated (FFI / WASM) implementations.
Built for correctness first — performance where it matters.
⚠️ Early ReleaseThis project is in an initial stage.
Not production-ready. Expect bugs, breaking changes, and incomplete test coverage.
- Serialize and deserialize all Zcash transaction versions
- Create, sign, and verify:
- Orchard bundles
- Sapling bundles
- Transparent transactions
- PCZT (Partially Constructed Zcash Transaction) support
- Dart port of Zcash incremental Merkle tree
- Sapling payment addresses
- Transparent addresses (P2SH/P2PKH)
- Sprout addresses
- P2PKH & P2SH
- Unified Addresses
- ZIP-32 / BIP-32 HD wallet support
- USK, UFVK, and UIVK support
- Pure Dart implementation (
⚠️ slow: ~30–40s per proof) - High-performance Rust backend (FFI / WASM)
- Pure Dart implementation (
⚠️ slow: ~30–40s per proof) - High-performance Rust backend (FFI / WASM)
⚠️ Production note: Rust backends are strongly recommended for proof generation.
All Zcash-required cryptographic primitives are implemented in blockchain_utils:
- FF1
- f4jumble
- BLS12-381
- Jubjub
- Vesta–Pallas
- Sinsemilla
- Poseidon
- Wallet integration via walletd provider
- Transfer
- ZKLib
- Address Management
- Provider Usage
Contributions are welcome.
- Fork the repository
- Create a feature branch
- Ensure tests pass
- Open a pull request with a clear description
Please use the GitHub Issues tab.