使用本页可以了解每类设备上运行的内容,以及各个钱包行为不同的原因。每个 Rand Wallet 都是同一个钱包,只是外壳不同。同一个 Rust 核心由全节点自身的 crate 构建而成,在每台设备上持有密钥并完成密码学运算。真正的差别只有内存:一次打包证明(bundle proof)的峰值约为 6 GB。桌面设备或大内存手机可以当场完成,较小的设备则把这一份证明交给 prover 来做。各客户端的下载与构建步骤见 /clients。
一个核心,五种形态
| 设备与客户端 | 其内部的核心 | 证明转账 | 花费密钥的存放位置 |
|---|---|---|---|
| iPhone:iOS 应用,iOS 16 或更高版本 | 一个 XCFramework | 内存约 8 GB 时,在一两分钟内完成;否则通过配对的 prover | Keychain,仅在设备解锁时可用;从不同步 |
| 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。