Rand Protocol
モバイル

Rand Wallet for iOS

共有の Rust ウォレットコアを XCFramework としてリンクした、SwiftUI ネイティブアプリです。支出鍵は Face ID または Touch ID の背後にある iPhone の Keychain に保管され、アプリが通信するのはあなたが選んだ RPC エンドポイントだけです。

App Store への掲載は審査待ちです。審査が完了するまでは、下記のとおりソースからビルドしてください。

Rand Wallet のアイコン
使用技術
Swift · SwiftUI
配布経路
テスト期間中は TestFlight、その後は App Store
動作要件
iOS 16 以降
送金
端末上で、または RandProtocol の prover を通じて証明します
送金

端末上で、または RandProtocol の prover を通じて証明します

メモリが約 8 GB ある端末では、アプリは送金の証明を端末上で生成します。所要時間は 1〜2 分で、送金フローは画面をスリープさせず、アプリを開いたままにするよう案内します。

バンドル証明のメモリ使用量は最大で約 6.2 GB に達します。メモリの少ない端末では、証明の途中で iOS がアプリを停止させるため、確認画面で端末自身の数値を示して警告します。その場合、端末は既定で RandProtocol の prover を使うか、https 経由であなた自身の rand-prover(Settings → Prover)を使い、prover が証明を生成している間に送金を組み立てます。

証明を生成できない端末は、既定で RandProtocol の prover を使います。これはバリデータが運用する数台のマシン(現在は 4 台、https://prover.randprotocol.org 配下)で、手数料はかかりません。0.6.9 以降、各マシンは固有の鍵を持ち、ウォレットはその鍵をピン留めします。ウォレットは最初の送金の前にその旨を表示します。送金の証明を生成するマシンは、ウォレットのビューイングキーとワンタイムのソルトを受け取ります。そのため運営者はウォレットの全履歴、つまり受け取った支払いと送った支払いのすべてを読めますが、支出はできません。支出鍵は端末の外に出ず、小さな承認証明は端末自身が生成します。より高いプライバシーが必要な場合は Settings → Prover で自分の prover を選んでください。その prover が常に優先され、ウォレットは提出前にすべての証明を検証します。

prover のペアリング手順:docs/prover.md。

鍵について

鍵の保管場所

花費鍵(spend key)はウォレットが持つ唯一の秘密情報です。アカウントはなく、コピーを保管するサーバーもありません。鍵を失うと誰にも復元できないため、ウォレットに表示されたときに必ず保存してください。

支出鍵
Keychain に保管され、端末のロックが解除されている間だけ利用でき、他の端末には同期されません。ビューイングキーとアドレスはロック解除時に支出鍵から導出され、保存されません。
ロック解除
Face ID または Touch ID で行い、代替手段として端末のパスコードを使えます。アプリはバックグラウンドに移ってから Settings で指定した時間が経過するとロックされますが、証明の最中にはロックされません。
ノート
ノートストアはチェーンデータのキャッシュで、完全なファイル保護付きで書き込まれるため、端末のロック中は読み取れません。
プライバシー
プライバシーマニフェストは、トラッキングを行わず、データも収集しないと宣言しています。ネットワーク上の接続先は、あなたが設定した RPC URL と、リンクをタップしたときの randscan.org だけです。
その他

アプリでのスワップ

0.7.1 から、拡張機能とデスクトップアプリにあるスワップ画面がスマートフォンアプリにも加わりました。ウォレットを離れることなく、durian.market のプールを通じて RAND とトークンを取引できます。プログラム呼び出しの証明と支出の承認はスマートフォン自体が行い、約 1.5 GB のメモリが必要です。大規模な証明は RandProtocol の prover が生成します。受け取る金額は正確に確定しており、先にプールの状態が変わった場合は何も送信されず、新しい見積もりが提示されます。

ソースからビルドする

App Store への掲載が承認されるまで

  1. Apple は TestFlight または App Store 経由でしかアプリをインストールできないため、iOS 用のダウンロードファイルはありません。
  2. clients リポジトリから Xcode 16 以降でビルドして、シミュレータまたはご自身の端末で実行してください。
  3. randpay: リンクを開くと、入力済みの送金画面が表示されます。確認するまで何も送信されません。

ツールチェーン:Rust 1.98.1。リポジトリで固定されており、rustup でインストールされます。ビルドガイドでは、まっさらなマシンからすべてのクライアントをビルドする手順を説明しています。ソースディレクトリ: ios/, core/.

Rand Wallet for 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 もインポートできます。すべてのクライアントが同じファイルをエクスポートします。
受け取りと送金
残高とは、お客様のキーだけが開けるノートの集合です。ウォレットはコミットメントツリーをスキャンしてそれらを見つけます。RAND または掲載されている RPL トークンの送金は、証明で承認される 4 入力 4 出力のバンドル 1 つで行われます。送り手、受け手、金額、どの資産が動いたかは、誰にも知られません。
ファウセット
ファウセットが開放されている testnet では、1 回のタップで 100 RAND が、お客様だけが開けるノートにミントされます。
開示は選んだものだけ
ビューイングキーをコピーして RandScan の「My history」を開くと、送受信したすべてのノートを確認できます。あるいは、1 件の支払いのトランザクションキーをコピーすれば、その支払いだけを開示できます。エクスプローラーはブラウザ内で復号し、キーをどこにも送信しません。

viewing key とトランザクションキーは randscan.org で開きます。

testnet に関する注意

送金する前に

チェーン
公開エンドポイントは、2026年10月12日 10:31 UTC から稼働している chain 21 を提供しています(fullnode v0.8.0 でカットされたものです)。ウォレットコアは fullnode v0.8.0 (c0878c3) をベンダリングしており、それ以外のチェーンは拒否します。chain 21 は制約セット 9 で動作するため、0.7.x のウォレットでは送金できず、このリリースでは chain 20 で送金できません。鍵とアドレスは引き継がれます。chain 20 をスキャンしていたウォレットは、別チェーンのバナーを一度だけ表示し、chain 21 のジェネシスから再スキャンします。ブリッジの入金と出金には zUSD で 0.1% の手数料がかかり、ウォレットは出金の前にその額を表示します。
RPC エンドポイント
設定 → ネットワーク。既定は https://rpc.randprotocol.org です。到達できる rand-node の RPC であればどれでも使え、保存された URL は保持される前に検証されます
証明
バンドル証明はメモリのピークが約 6.2 GB に達し、ノート PC の CPU では 1 分ほどかかります
ステータス
実験的な testnet 向けソフトウェアです。監査は受けていません。testnet 上の RAND に実際の価値はありません
ライセンス
GPL-3.0-only。すべてのクライアントがリンクするフルノードのクレートと同じです
その他のクライアント

ひとつのウォレットで、すべてのプラットフォームへ

どこでも同じ鍵ファイル、同じアドレス形式、同じルールです。ここで作成したウォレットは、他のどのクライアントや rand CLI にもインポートできます。