Rand Protocol
文档
生态系统

适用于各类设备的客户端

Rand Wallet 覆盖 iPhone、Android、笔记本电脑、台式机和浏览器——所有设备都使用取自全节点自身 crate 的同一个 Rust 核心;其中哪些设备自行证明转账,哪些把打包证明交给 prover,各自在哪里保管花费密钥,以及它们如何接入网络。

使用本页可以了解每类设备上运行的内容,以及各个钱包行为不同的原因。每个 Rand Wallet 都是同一个钱包,只是外壳不同。同一个 Rust 核心由全节点自身的 crate 构建而成,在每台设备上持有密钥并完成密码学运算。真正的差别只有内存:一次打包证明(bundle proof)的峰值约为 6 GB。桌面设备或大内存手机可以当场完成,较小的设备则把这一份证明交给 prover 来做。各客户端的下载与构建步骤见 /clients。

Rand Wallet clients and the network Five devices: iPhone, Android phone, laptop, desktop and browser. Each runs the same Rust core, packaged as an XCFramework, a native library, a linked crate in the desktop app, or WebAssembly. Phones prove on devices with about 8 GB of memory, laptops and desktops prove on the machine, and the browser always pairs a prover. When a device cannot prove, the bundle job goes to the desktop app, a rand-prover you run, or the validators' pool, which receive the viewing key and never the spend key. Every client submits to any RPC node, and the validators order and finalise the transaction. iPhone iOS app · Swift Android Android app · Java Laptop desktop app · Tauri Desktop macOS · Windows · Linux Browser Chrome · Firefox · web proves with ~8 GB else pairs a prover proves with ~8 GB else pairs a prover proves on the machine 8 GiB RAM or more proves on the machine and for your browser always pairs a prover 4 GiB WebAssembly cap XCFramework native library linked crate linked crate WebAssembly One Rust core, built from the full node's own crates spend key and rand1 address · ML-KEM-768 envelopes · the zkVM prover · one key file on every device bundle job: viewing key + salt signed transaction, two proofs Prover, when the device has no room the desktop app on the same computer a rand-prover you run the validators' pool · prover.randprotocol.org never sent the spend key; every proof is checked by the wallet The network any RPC node verifies and gossips validators order, vote, finalise wallets scan blocks with their keys see Validators, aggregators and provers
在手机上,请左右滑动此图。五种外壳,一个核心。带强调色徽标的是在您手持的设备上证明转账的客户端;虚线框是设备无法完成时打包证明的去处。

一个核心,五种形态

设备与客户端其内部的核心证明转账花费密钥的存放位置
iPhone:iOS 应用,iOS 16 或更高版本一个 XCFramework内存约 8 GB 时,在一两分钟内完成;否则通过配对的 proverKeychain,仅在设备解锁时可用;从不同步
Android:Android 应用,Android 8 或更高版本一个原生库内存约 8 GB 时,在前台服务中完成;否则通过配对的 prover由 Android Keystore 持有的密钥加密
笔记本与台式机:适用于 macOS、Windows 和 Linux 的桌面应用Rust crate,直接链接在本机完成,笔记本 CPU 上约需一分钟;RAM 低于 8 GiB 时不会启动证明密码保险库(AES-256-GCM,PBKDF2 迭代 600,000 次);解锁后仅存在于应用内存中
浏览器:Chrome 和 Firefox 扩展,网页钱包WebAssembly从不:WebAssembly 只有 4 GiB,因此打包证明始终由配对的 prover 完成同类保险库;解锁后存在于页面内存或标签页的会话存储中

笔记本和台式机运行的是同一个桌面应用,区别仅在于机器可用于证明的内存。在其中任何一台上创建的钱包,都可以导入其他设备以及 rand 命令行,反之亦然:密钥文件、地址格式和规则在各处都相同。

哪个钱包可以在 chain 20 上发送

Chain 20 自 2026-10-01 06:17 UTC 起上线,它将每一份证明和每一条签名消息都绑定到其创世哈希,因此钱包需要 fullnode v0.6.8 才能在其上发送交易。Rand Wallet v0.6.8 发布于 2026-10-01,正是这样的钱包:每个应用的核心都内置了 fullnode v0.6.8,默认情况下打包证明由 RandProtocol 的 prover 生成,若注重隐私,可选择自己的 prover。为 chain 19 构建的 0.6.7 版应用无法在 chain 20 上发送,请更新。来自 fullnode v0.6.8 发布的 rand 命令行(命令行)同样可以发送,并使用同一个密钥文件。

每个客户端都做什么

  • 把花费密钥保存在设备上。 密钥由操作系统的随机数生成,并以加密形式存储。没有任何客户端会把它发送到别处,网络上也没有可供发送的账户。
  • 找到属于自己的 note。 它用自己的查看密钥扫描链,因此没有任何服务器知道哪些 note 属于它。
  • 自行生成授权证明。 一笔转账带有两份证明。较小的那份针对花费密钥,耗时数秒,始终在设备上生成(验证者、聚合者与证明者)。
  • 让打包证明得以生成。 内存足够时在设备上生成,否则交由配对的 prover。收到的每一份证明在提交之前都会经过检验。
  • 提交到任意 RPC 节点。 它发送的内容就是每个节点所能看到的内容:承诺、nullifier、密封信封、手续费和证明。

配对 prover

内存不足的手机以及所有浏览器钱包,都需要配对一个 prover 来生成打包证明。在同一台电脑上,可由桌面应用来完成(设置 → 为我的其他设备证明,然后将链接粘贴到网页钱包的设置 → Prover)。在其他情况下,可以使用您自己运行的 rand-prover(运行节点),或位于 prover.randprotocol.org 的验证者池。

配对的 prover 会收到钱包的查看密钥和一次性盐值,但绝不会收到花费密钥。它可以读取该钱包的全部历史记录,包括过去和未来的,但无法花费。请只配对您愿意向其展示该历史记录的 prover。若要获得完全的隐私,请在桌面设备或 8 GB 手机上证明,或运行您自己的 prover。

最近一次核对所依据的 fullnode 提交为 c0878c3f(链 21),日期为 2026-10-12,以及 randprotocol.org `src/data/clients.ts` (the per-client pages under /clients), fullnode `749ca098`: `docs/prover.md` §§1, 9 (the spend key never leaves the wallet; the validators' prover pool), github.com/randprotocol/clients/releases on 2026-10-12: Rand Wallet v0.8.0 (12:24 UTC, tag `0926354`), whose core vendors fullnode v0.8.0 (`c0878c3`) and sends on chain 21 only; github.com/randprotocol/fullnode/releases: v0.8.0 with `rand`, `rand-node`, `rand-prover`, `msauth-vk-production.bin` (06:48 UTC), fullnode `c9c9bd3c`: `crates/randprotocol-core/src/types/binding.rs` (BIND-1)。 若代码与本页不一致,以代码为准;请告知我们。