Rand Wallet for Android
共有の Rust ウォレットコアをネイティブライブラリとして読み込む、Java ネイティブアプリです。支出鍵は Android の Keystore が保持する鍵で暗号化され、バックアップは無効化されており、リリースビルドは HTTPS でのみ通信します。
Google Play への掲載は審査待ちです。審査が完了するまでは、下記のダウンロードからバージョン 0.8.0 をインストールするか、ソースからビルドしてください。
- 使用技術
- Java
- 配布経路
- Google Play(まずオープンテスト)
- 動作要件
- Android 8(API 26)以降、arm64 または x86_64
- 送金
- 端末上で、または RandProtocol の prover を通じて証明します
バージョン 0.8.0
ファイルは GitHub 上の v0.8.0 リリースに添付されています。ここにあるボタンはそれらへのリンクであり、このサイトからは何も配信していません。
- 端末でファイルを開き、Android の確認が表示されたらインストールを許可するか、コンピュータから adb install を実行してください。
- このパッケージは、本プロジェクト独自の鍵で署名されています。確認するには、apksigner verify --print-certs を実行すると、SHA-256 75:22:2E:BF:22:D3:95:80:A5:11:2A:AC:B7:EC:2E:03:93:91:07:77:96:E0:45:1D:7B:CF:E3:7E:FA:06:53:52 が表示されるはずです。
- Google Play は独自の鍵で署名するため、掲載が公開された後は、Android がこのコピーを削除するよう求めてから、Google Play 版をインストールします。事前に Settings から鍵ファイルをエクスポートしてください。
# SHA256SUMS をファイルと同じフォルダにダウンロードして実行します
shasum -a 256 -c SHA256SUMS --ignore-missing # macOS
sha256sum -c SHA256SUMS --ignore-missing # Linux
# または、1 つのファイルのチェックサムを出力し、上記の値と比較します
shasum -a 256 rand-wallet-0.8.0-android.apk チェックサムが一致すれば、そのファイルは公開されたものと同一です。ただし、そのファイルがソースからビルドされたものであることまでは保証しません。ビルドはまだビット単位では再現できないため、それを確認する必要がある場合はご自身でビルドしてください。
端末上で、または RandProtocol の prover を通じて証明します
メモリが約 8 GB ある端末では、アプリは送金の証明を端末上で生成します。実行中は通知付きのフォアグラウンドサービスで動作するため、アプリを切り替えても停止しません。
バンドル証明のメモリ使用量は最大で約 6.2 GB に達します。メモリの少ない端末では、証明の途中で Android がアプリを停止させるため、確認画面で端末自身の数値を示して警告します。その場合、端末は既定で 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 が生成します。受け取る金額は正確に確定しており、先にプールの状態が変わった場合は何も送信されず、新しい見積もりが提示されます。
ご自身でビルドする場合
- clients リポジトリからデバッグ版 APK をビルドし、adb で端末、または arm64 もしくは x86_64 のエミュレータ(API 36)にインストールします。
- エミュレータからは、お使いのコンピュータ上のノードは http://10.0.2.2:8545 です。デバッグビルドで平文通信が許可されるのは、このアドレスと localhost だけです。
ツールチェーン:Rust 1.98.1。リポジトリで固定されており、rustup でインストールされます。ビルドガイドでは、まっさらなマシンからすべてのクライアントをビルドする手順を説明しています。ソースディレクトリ: android/, 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-android.sh # → android/app/src/main/jniLibs/(JDK 17、SDK 36、NDK 27)
cd android && ./gradlew assembleDebug # → app/build/outputs/apk/debug/app-debug.apk
adb install -r app/build/outputs/apk/debug/app-debug.apk すべてのプラットフォームでできること
- ウォレットの作成
- デバイス上でスペンドキーを生成し、保存用に一度だけ表示します。そこから導出された 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 にもインポートできます。