Rand Protocol
移动端

Rand Wallet iOS 版

原生 SwiftUI 应用,基于共享的 Rust 钱包核心,以 XCFramework 形式链接。您的花费密钥保存在 iPhone 的钥匙串中,需通过 Face ID 或 Touch ID 解锁;应用只与您所选择的 RPC 端点通信,不连接任何其他地址。

App Store 上架审核中。在通过审核之前,请从下方源码构建。

Rand Wallet 图标
构建工具
Swift · SwiftUI
分发渠道
测试阶段通过 TestFlight,之后上架 App Store
系统要求
iOS 16 或更高版本
发送
在手机上生成证明,或通过 RandProtocol 证明器生成
发送

在手机上生成证明,或通过 RandProtocol 证明器生成

在内存约 8 GB 的手机上,应用会在设备本地为转账生成证明。这需要一两分钟,发送流程会保持屏幕常亮,并提示您保持应用在前台打开。

一次打包证明的内存峰值约为 6.2 GB。在内存更小的手机上,iOS 会在证明过程中终止应用,因此确认步骤会根据设备自身的数据给出警告。此时手机默认使用 RandProtocol 证明器,或使用您自己通过 https 访问的 rand-prover(设置 → 证明器),由手机构建转账,由证明器生成证明。

无法自行生成证明的设备默认使用 RandProtocol 证明器:由验证者运行的若干台机器(目前四台,位于 https://prover.randprotocol.org 之下),不收取费用。自 0.6.9 起,每台证明器都有各自的密钥,钱包会将其固定,并在首次发送前予以说明。为某次发送生成证明的机器会收到钱包的查看密钥和一次性盐值:其运营者可以读取该钱包的全部历史记录,包括每一笔收到和发出的付款,但无法花费资金。花费密钥始终不会离开您的设备,由设备自行生成那份小型授权证明。如需更高的隐私性,请在设置 → 证明器中选择您自己的证明器,此后将始终优先使用它;钱包在提交每一份证明之前都会对其进行校验。

配对 prover 的分步说明:docs/prover.md。

您的密钥

密钥存放在哪里

花费密钥(spend key)是钱包唯一的机密。这里没有账户,也没有服务器保存副本:密钥一旦丢失,任何人都无法恢复,因此在钱包向您显示密钥时请妥善保存。

花费密钥
保存在钥匙串中,仅在设备解锁时可用,且绝不同步到其他设备。查看密钥和地址在解锁时由它派生,不会被存储。
解锁
使用 Face ID 或 Touch ID,设备密码作为后备方式。应用进入后台后,会在设置中指定的时间间隔后锁定,但在生成证明期间绝不会锁定。
票据
票据存储是链上数据的缓存,以完整文件保护方式写入,因此手机锁定时无法读取。
隐私
隐私清单声明不进行任何跟踪,也不收集任何数据。唯一的网络主机是您配置的 RPC URL,以及您点击链接时访问的 randscan.org。
另见

在应用内兑换

自 0.7.1 起,手机应用也提供了扩展程序和桌面应用已有的兑换(Swap)界面:无需离开钱包,即可通过 durian.market 资金池交易 RAND 和代币。程序调用的证明与花费授权由手机自行生成,这需要约 1.5 GB 内存,而大型证明则由 RandProtocol 的 prover 生成。您收到的数量是确定的;如果资金池价格先一步变动,则不会发送任何交易,您将获得新的报价。

从源码构建

在 App Store 上架通过审核之前

  1. Apple 只允许从 TestFlight 或 App Store 安装应用,因此 iOS 没有可供下载的文件。
  2. 使用 Xcode 16 或更高版本,从 clients 代码仓库构建并运行,可在模拟器或您自己的设备上运行。
  3. randpay: 链接会打开已预先填写的发送界面;在您确认之前不会发送任何内容。

工具链:Rust 1.98.1,已在仓库中固定版本,由 rustup 安装。构建指南涵盖从一台干净的机器开始构建每一个客户端。源码目录: ios/, core/.

Rand Wallet iOS 版
bash
git clone --recurse-submodules https://github.com/randprotocol/clients.git && cd clients
git checkout v0.8.0 && git submodule update --init   # 正式版本;core/vendor/fullnode @ v0.8.0 (c0878c3)
core/scripts/build-ios.sh   # → ios/Frameworks/RandWalletCore.xcframework
open ios/RandWallet.xcodeproj   # 或使用下文的 xcodebuild 构建

cd ios && xcodebuild -project RandWallet.xcodeproj -scheme RandWallet \
  -destination 'platform=iOS Simulator,name=iPhone 17' build
所有客户端

各平台上的功能

创建钱包
在设备上生成花费密钥,仅显示一次供你保存,并由它派生出 rand1… 地址。可导入已有密钥,或来自 rand CLI 的 wallet.key.json;所有客户端导出的都是同一种文件。
接收与发送
你的余额就是只有你的密钥才能打开的 note 的集合;钱包通过扫描承诺树来找到它们。RAND 或任何已上架 RPL 代币的转账,都是由一个证明授权的 4 入 4 出捆绑包。无人能得知发送方、接收方、金额,或转移的是哪种资产。
水龙头
在开放水龙头的 testnet 上,点一下即可铸造 100 RAND 到只有你能打开的 note 中。
只披露你选择的内容
复制你的查看密钥,在 RandScan 上打开“My history”,即可看到你发送或接收的每一个 note;或复制某一笔付款的交易密钥,只披露这一笔付款,不涉及其他内容。浏览器端的解密在你的浏览器中完成,密钥绝不会发送到任何地方。

查看密钥(viewing key)和交易密钥(transaction key)会在 randscan.org 上打开。

testnet 说明

发送任何资金之前

链
公共端点提供链 21 的服务,自 2026 年 10 月 12 日 10:31 UTC 起上线(基于 fullnode v0.8.0 切出)。钱包核心内置 fullnode v0.8.0 (c0878c3),并拒绝任何其他链:链 21 运行约束集 9,因此 0.7.x 版钱包无法在其上发送交易,而本版本也无法在链 20 上发送交易。密钥和地址可沿用;曾扫描链 20 的钱包会显示一次不同链的横幅,并从链 21 的创世区块重新扫描。跨链桥的存款和提款仍收取 0.1% 的 zUSD 手续费,钱包会在您提款前显示该费用。
RPC 端点
设置 → 网络。默认为 https://rpc.randprotocol.org;任何你能访问的 rand-node RPC 都可使用,保存的 URL 在保留前会经过检查
证明生成
一次捆绑包证明的内存峰值约为 6.2 GB,在笔记本电脑 CPU 上耗时约一分钟
状态
实验性 testnet 软件。未经审计。testnet 上的 RAND 不具有任何实际价值
许可证
仅限 GPL-3.0(GPL-3.0-only),与每个客户端所链接的全节点 crate 相同
其他客户端

一个钱包,所有平台

各处使用相同的密钥文件、地址格式和规则:在此创建的钱包可以导入任何其他客户端以及 rand CLI。