Rand Wallet for iOS
共有の Rust ウォレットコアを XCFramework としてリンクした、SwiftUI ネイティブアプリです。支出鍵は Face ID または Touch ID の背後にある iPhone の Keychain に保管され、アプリが通信するのはあなたが選んだ RPC エンドポイントだけです。
App Store への掲載は審査待ちです。審査が完了するまでは、下記のとおりソースからビルドしてください。
- 使用技術
- 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)はウォレットが持つ唯一の秘密情報です。アカウントはなく、コピーを保管するサーバーもありません。鍵を失うと誰にも復元できないため、ウォレットに表示されたときに必ず保存してください。
アプリでのスワップ
0.7.1 から、拡張機能とデスクトップアプリにあるスワップ画面がスマートフォンアプリにも加わりました。ウォレットを離れることなく、durian.market のプールを通じて RAND とトークンを取引できます。プログラム呼び出しの証明と支出の承認はスマートフォン自体が行い、約 1.5 GB のメモリが必要です。大規模な証明は RandProtocol の prover が生成します。受け取る金額は正確に確定しており、先にプールの状態が変わった場合は何も送信されず、新しい見積もりが提示されます。
App Store への掲載が承認されるまで
- Apple は TestFlight または App Store 経由でしかアプリをインストールできないため、iOS 用のダウンロードファイルはありません。
- clients リポジトリから Xcode 16 以降でビルドして、シミュレータまたはご自身の端末で実行してください。
- randpay: リンクを開くと、入力済みの送金画面が表示されます。確認するまで何も送信されません。
ツールチェーン:Rust 1.98.1。リポジトリで固定されており、rustup でインストールされます。ビルドガイドでは、まっさらなマシンからすべてのクライアントをビルドする手順を説明しています。ソースディレクトリ: ios/, core/.
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 で開きます。
送金する前に
- チェーン
- 公開エンドポイントは、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 にもインポートできます。