Expand description
A crate for implementing Zcash light clients.
zcash_client_backend contains Rust structs and traits for creating shielded Zcash
light clients.
§Design
§Wallet sync
The APIs in the data_api::chain module can be used to implement the following
synchronization flow:
┌─────────────┐ ┌─────────────┐
│Get required │ │ Update │
│subtree root │─▶│subtree roots│
│ range │ └─────────────┘
└─────────────┘ │
▼
┌─────────┐
│ Update │
┌────────────────────────────────▶│chain tip│◀──────┐
│ └─────────┘ │
│ │ │
│ ▼ │
┌─────────────┐ ┌────────────┐ ┌─────────────┐ │
│ Truncate │ │Split range │ │Get suggested│ │
│ wallet to │ │into batches│◀─│ scan ranges │ │
│rewind height│ └────────────┘ └─────────────┘ │
└─────────────┘ │ │
▲ ╱│╲ │
│ ┌ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │
┌────────┐ ┌───────────────┐ │ │
│ Choose │ │ │Download blocks│ │
│ rewind │ │ to cache │ │ │
│ height │ │ └───────────────┘ .───────────────────.
└────────┘ │ │ ( Scan ranges updated )
▲ │ ▼ `───────────────────'
│ ┌───────────┐ │ ▲
.───────────────┴─. │Scan cached│ .─────────. │
( Continuity error )◀────│ blocks │──▶( Success )───────┤
`───────────────┬─' └───────────┘ `─────────' │
│ │ │
│ ┌──────┴───────┐ │
▼ ▼ │ ▼
│┌─────────────┐┌─────────────┐ ┌──────────────────────┐
│Delete blocks││ Enhance ││ │Update wallet balance │
││ from cache ││transactions │ │ and sync progress │
└─────────────┘└─────────────┘│ └──────────────────────┘
└ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─§Feature flags
-
lightwalletd-tonic— Enables thetonicgRPC client bindings for connecting to alightwalletdserver. -
lightwalletd-tonic-tls-webpki-roots— Enables thetls-webpki-rootsfeature oftonic. -
lightwalletd-tonic-transport— Enables thetransportfeature oftonicproducing a fully-featured client and server implementation -
transparent-inputs— Enables receiving transparent funds and shielding them. -
orchard— Enables receiving and spending Orchard funds. -
zcashd-compat— Enables compatibility with legacy zcashd wallet data -
pczt— Enables creating partially-constructed transactions for use in hardware wallet and multisig scenarios. -
sync— Exposes a wallet synchronization function that implements the necessary state machine. -
tor— Exposes a Tor client for hiding a wallet’s IP address while performing certain wallet operations. -
test-dependencies— Exposes APIs that are useful for testing, such aspropteststrategies.NOTE: Semver-breaking changes to the APIs exposed by this feature may be present in any release version, including patch releases.
-
non-standard-fees— Exposes APIs that allow calculation of non-standard fees.
§Experimental features
unstable— Exposes unstable APIs. Their behaviour may change at any time.unstable-serialization— Exposes APIs for unstable serialization formats. These may change at any time.unstable-spanning-tree— Exposes thedata_api::scanning::spanning_treemodule.
Modules§
- address
Deprecated - data_
api - Utilities for Zcash wallet construction
- encoding
Deprecated - fees
- keys
Deprecated - proposal
- Types related to the construction and evaluation of transaction proposals.
- proto
- This module contains generated code for handling light client protobuf structs.
- scan
- scanning
- Tools for scanning a compact representation of the Zcash block chain.
- serialization
unstable-serialization - sync
sync - Implementation of the synchronization flow described in the crate root.
- tor
tor - Tor support for Zcash wallets.
- wallet
- Structs representing transaction data scanned from the block chain by a wallet or light client.
- zip321
Deprecated
Structs§
- Decrypted
Output - A decrypted shielded output.
Enums§
- Transfer
Type - An enumeration of the possible relationships a TXO can have to the wallet.
Functions§
- decrypt_
transaction - Scans a
Transactionfor any information that can be decrypted by the set ofUnifiedFullViewingKeys.
Type Aliases§
- Pool
Type Deprecated - Shielded
Protocol Deprecated