#钱包 #轻量级 #客户端 #zcash #屏蔽 #API #特性

zcash_client_backend

创建屏蔽式Zcash轻量级客户端的API

20个版本 (12个重大更新)

0.13.0 2024年8月20日
0.12.1 2024年3月27日
0.11.1 2024年3月9日
0.10.0 2023年9月25日
0.1.0 2019年10月8日

#38 in 神奇豆

Download history 1389/week @ 2024-05-01 521/week @ 2024-05-08 1263/week @ 2024-05-15 399/week @ 2024-05-22 423/week @ 2024-05-29 726/week @ 2024-06-05 962/week @ 2024-06-12 742/week @ 2024-06-19 522/week @ 2024-06-26 447/week @ 2024-07-03 765/week @ 2024-07-10 728/week @ 2024-07-17 864/week @ 2024-07-24 859/week @ 2024-07-31 663/week @ 2024-08-07 768/week @ 2024-08-14

每月下载量 3,275
用于 5 个crate(直接使用4个)

MIT/Apache

2MB
35K SLoC

zcash_client_backend

此库包含用于创建屏蔽式Zcash轻量级客户端的Rust结构和特性。

构建

请注意,为了(重新)构建GRPC接口,您需要在您的系统上安装protoc。这仅在您更改./proto/目录中的任何文件时才需要。

许可

根据您的选择,许可方式为以下之一:

贡献

除非您明确声明,否则根据Apache-2.0许可中定义的,您有意提交以包含在工作中的任何贡献,应按上述方式双重许可,不得附加任何其他条款或条件。


lib.rs:

一个用于实现Zcash轻量级客户端的crate。

zcash_client_backend 包含用于创建屏蔽型Zcash轻量级客户端的Rust结构和特质。

设计

钱包同步

data_api::chain 模块中的API可用于实现以下同步流程

                         ┌─────────────┐  ┌─────────────┐
                         │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   │
                  └─────────────┘└─────────────┘│ └──────────────────────┘
                 └ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─

功能标志

依赖关系

~18–41MB
~686K SLoC