Rustok Wallet について
Rustok Walletは、個人やAIエージェント向けのセルフカストディ型Ethereumウォレットです。モバイルアプリとCLIを備え、txguardが署名前にトランザクションを解析・シミュレーションし、複数チェーンの残高と送金をまとめて扱えます。
主な機能
- 015つのメインネットで残高と送金を統合
- 02BIP39シードフレーズの作成と復元
- 03署名前のtxguardセキュリティ分析
- 04PINと生体認証によるロック
- 05保留状態を含むトランザクション履歴
活用シーン
- 01複数のEthereumネットワークで資産を管理
- 02署名前にトランザクションリスクを確認
- 03CLIでEVMトランザクションを分析
- 04AIエージェントに段階的な実行権限を設定
MCP 対応
AIエージェント向けのMCPツールを提供し、フェイルクローズの機能制御で読み取り、プレビュー、実行の権限を分けます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Rustok
チェーン抽象化とトランザクションセキュリティエンジンを備えた Ethereum ウォレットです。
ステータス: 本番稼働中 — フェーズ 7 完了 — Sepolia で Android の動作確認済み。iOS にも対応しています。実際のオンチェーントランザクション、完全なオンボーディング、txguard によるリアルタイム分析を備えた React Native アプリです。
ウェブサイト: rustokwallet.com | X: @rustokwallet | エージェント版: github.com/rustok-org
これは何ですか?
Rustok は、次の 2 つの考え方を軸に構築されたセルフカストディ型の Ethereum ウォレットです。
- 自分の鍵で、自分のチェーンを管理 — 1 つのシードフレーズで、Ethereum、Arbitrum、Base、Optimism、zkSync の各アドレスを管理できます。残高とルーティングは統合されており、チェーンを選べば、あとはウォレットが処理します。
- 信頼しつつ、検証する — すべてのトランザクションは署名の前に
txguardによって分析されます。calldata をデコードし、セキュリティルールを適用し、revmで実行をシミュレートし、脅威インテリジェンスで検出結果を補強します。
モバイルアプリ(Android + iOS)が主なインターフェースです。ヘッドレスでの txguard 分析には、公開 HTTP API と CLI を利用できます。
2026 年の進化: 同じセルフカストディのコアが、AI エージェント向けウォレットとしても提供されるようになりました。フェイルクローズ方式の機能ゲート(read / preview / execute)と、3 段階の信頼レベル(自律型エージェント → コンソール承認 → スマートフォン署名)を備えた MCP ツールを提供します。rustokwallet.com と rustok-org のリポジトリ(mcp、console、mobile、paraswap-mcp、uniswap)をご覧ください。
機能
- マルチチェーンウォレット — 5 つのメインネットチェーンと Sepolia テストネットで、残高、送金、受取を一元管理
- BIP39 シードフレーズ — MetaMask 互換のパス(
m/44'/60'/0'/0/0)とデバイス間のリカバリーに対応 - txguard 分析 — 署名前にセキュリティスキャンを実施し、リスクバッジと検出項目ごとの内訳を表示
- PIN + 生体認証ロック — Argon2id でハッシュ化された PIN、Face ID / 指紋認証によるロック解除、バックグラウンド時の自動ロック
- オンボーディング — ウォレットの作成(4 ステップのウィザード + フレーズクイズ)、シードフレーズからのインポート、またはロックアウト / 生体認証の変更からの復旧
- アクティビティ履歴 — 保留状態の追跡とエクスプローラーへのリンクに対応した、実際のトランザクションフィード
- テーマ — UI 全体でデザイントークンの一貫性を保つ、ライト / ダーク / システム設定
アーキテクチャ
┌─────────────────────────────────────────────────────────────┐
│ Mobile App (Android / iOS) │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌────────────────┐ │
│ │ Wallet │ │ Activity│ │ TxGuard │ │ Settings │ │
│ │ Tab │ │ Tab │ │ Tab │ │ (Appearance, │ │
│ │ │ │ │ │ │ │ Biometric, │ │
│ │ • Hero │ │ • TX │ │ • Risk │ │ Auto-lock, │ │
│ │ card │ │ list │ │ badge │ │ Network) │ │
│ │ • Send │ │ • Pull │ │ • Per- │ │ │ │
│ │ • QR │ │ refresh│ │ finding│ │ │ │
│ └─────────┘ └─────────┘ └─────────┘ └────────────────┘ │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ React Navigation v7 • Zustand 5 • NativeWind v4 ││
│ │ Reanimated 4 • MMKV • Keychain • Argon2id ││
│ └─────────────────────────────────────────────────────────┘│
└───────────────────────────┬─────────────────────────────────┘
│ JS ↔ Rust Bridge
┌───────────────────────────▼─────────────────────────────────┐
│ react-native-rustok-bridge │
│ (uniffi-bindgen-react-native 0.31) │
└───────────────────────────┬─────────────────────────────────┘
│ FFI
┌───────────────────────────▼─────────────────────────────────┐
│ Rust Workspace │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
│ │ rustok-core │ │ txguard │ │ rustok-api │ │
│ │ │ │ │ │ │ │
│ │ • keyring │ │ • parser │ │ Axum HTTP server │ │
│ │ • provider │ │ • rules │ │ /health │ │
│ │ • router │ │ • simulator │ │ /check-address │ │
│ │ • send │ │ • enrichment│ │ /decode │ │
│ │ • explorer │ │ │ │ │ │
│ │ • explainer │ │ 8 security │ │ Self-hosted │ │
│ │ • convert │ │ rules │ │ (see deploy/) │ │
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
│ │ rustok-cli │ │ rustok-types│ │rustok-mobile-bindings│ │
│ │ │ │ │ │ │ │
│ │ CLI binary │ │ Shared DTOs │ │ uniffi FFI exports │ │
│ │ (decode, │ │ (no crypto │ │ for iOS / Android │ │
│ │ analyze, │ │ deps) │ │ │ │
│ │ wallet, │ │ │ │ │ │
│ │ send) │ │ │ │ │ │
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
技術スタック
| レイヤー | 技術 |
|---|---|
| モバイル | React Native 0.85.2、React 19.2.3、TypeScript 5.8 |
| ナビゲーション | React Navigation v7(bottom-tabs、native-stack) |
| スタイリング | NativeWind v4、TailwindCSS 3.4、デザイントークンシステム |
| 状態管理 | Zustand 5、MMKV(永続化)、React Native Keychain(シークレット) |
| アニメーション | Reanimated 4.3、React Native Worklets、Gesture Handler |
| ブリッジ | uniffi-bindgen-react-native 0.31.0-2 |
| 言語 | Rust(edition 2024) |
| EVM | revm v36、alloy-evm v0.30 |
| Ethereum | alloy-rs v1.8(provider、signer、primitives、consensus) |
| 暗号 | BIP39(m/44'/60'/0'/0/0)、AES-256-GCM、Argon2id、secp256k1 |
| HTTP | Axum 0.8、Tower HTTP(CORS、trace) |
| 非同期処理 | Tokio、Futures |
| シリアライゼーション | Serde、Serde JSON |
| CLI | clap v4 |
| ログ記録 | tracing、tracing-subscriber |
クイックスタート
モバイルアプリ
前提条件: Node.js ≥ 22.11、Android SDK(Android の場合)、または Xcode + CocoaPods(iOS の場合)。
# Install dependencies
cd mobile && npm install
# Start Metro bundler
npx react-native start --port 8081
# Android (separate terminal)
cd android && ./gradlew app:installDebug -PreactNativeDevServerPort=8081
# Windows: .\gradlew.bat app:installDebug -PreactNativeDevServerPort=8081
# iOS (macOS only, separate terminal)
cd ios && pod install && cd .. && npx react-native run-ios
物理 Android デバイスの場合:
adb reverse tcp:8081 tcp:8081
モバイルの詳細ドキュメント: オンボーディングのフロー、ブリッジのインターフェース、DEV 用の回避手段、Android / Windows 固有の情報については、
mobile/README.mdをご覧ください。
Rust ワークスペース
# Run all tests
cargo test --workspace
# Build CLI
cargo build -p rustok --release
# Run API server locally
cargo run -p rustok-api
CLI の例
トランザクションのセキュリティ分析
# Decode ERC-20 approve calldata
rustok decode \
--to 0xdAC17F958D2ee523a2206206994597C13D831ec7 \
--data 0x095ea7b3000000000000000000000000000000000000000000000000000000000000dead00000000000000000000000000000000000000000000000000000000000f4240
# Full security analysis (parse + rules + verdict)
# Exit codes: 0=allow, 1=warn, 2=block
rustok analyze \
--to 0xdAC17F958D2ee523a2206206994597C13D831ec7 \
--data 0x095ea7b3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ウォレット操作
# Generate a new encrypted wallet
rustok wallet new --password "your-secure-password"
# Check unified balance across Ethereum, Arbitrum, Base, Optimism, zkSync
rustok wallet balance 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045
# Show wallet info from keystore file
rustok wallet info --keystore 0xabc...def.json --password "your-password"
# Send ETH (txguard security check mandatory, testnet by default)
rustok wallet send --keystore wallet.json --password "pwd" --to 0xd8dA...6045 --amount 0.1
セキュリティルール(txguard)
| ルール | 重大度 | トリガー |
|---|---|---|
unlimited_approval | 警告 | approve(spender, type(uint256).max) |
set_approval_for_all | 警告 | setApprovalForAll(operator, true) |
permit_to_unknown | 危険 | 不明な spender への EIP-2612 permit |
permit_unlimited | 警告 | value == U256::MAX の Permit |
known_scam | 禁止 | 詐欺データベースに登録されたアドレス |
unknown_function | 警告 | 認識されない関数セレクター |
value_with_calldata | 警告 | コントラクト呼び出し時の ETH 送金 |
send_to_contract | 情報 | コントラクトアドレスへの送金 |
対応チェーン
| チェーン | ID | ステータス |
|---|---|---|
| Ethereum | 1 | 有効 |
| Arbitrum One | 42161 | 有効 |
| Base | 8453 | 有効 |
| Optimism | 10 | 有効 |
| zkSync Era | 324 | 有効 |
| Sepolia | 11155111 | テストネット |
txguard API
トランザクションのセキュリティ分析用パブリック API(rustok-api、Axum)。セルフホスト可能です。deploy/ を参照してください。
| エンドポイント | メソッド | 説明 |
|---|---|---|
/health | GET | ヘルスチェック |
/check-address | POST | GoPlus によるアドレスのセキュリティチェック(悪意あるアドレスのフラグ、リスクレベル、リスク) |
/decode | POST | EVM トランザクションの生データをデコードして分析(アクション、リスクスコア、検出事項) |
# Check address
curl -X POST https://your-rustok-api-host/check-address \
-H "Content-Type: application/json" \
-d '{"address": "0xdAC17F958D2ee523a2206206994597C13D831ec7"}'
# Decode transaction
curl -X POST https://your-rustok-api-host/decode \
-H "Content-Type: application/json" \
-d '{"to": "0xdAC17F958D2ee523a2206206994597C13D831ec7", "data": "0x095ea7b3000000000000000000000000000000000000000000000000000000000000dead00000000000000000000000000000000000000000000000000000000000f4240"}'
Docker + Caddy を使用して 185.197.195.191 にデプロイされています(deploy/)。
テスト
517 tests, 0 failures
- Rust workspace: 231 tests (txguard, core, types, mobile-bindings)
- Mobile (Jest): 286 tests (components, stores, hooks, screens)
コミット前のゲート:
# Rust
cargo fmt --all --check
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace
# Mobile
cd mobile && npm run typecheck && npm run lint && npm run test
プロジェクト構成
rustok/
├── mobile/ # React Native app (primary UI)
│ ├── src/
│ │ ├── screens/ # Wallet, Activity, TxGuard, Settings, Onboarding
│ │ ├── components/ # Design system primitives
│ │ ├── navigation/ # AppShell, navigators
│ │ ├── stores/ # Zustand + MMKV state
│ │ ├── hooks/ # Selectors and logic
│ │ ├── lib/ # Bridge, formatting, explorers
│ │ └── theme/ # Design tokens
│ ├── android/ # Gradle project
│ └── ios/ # Xcode project
│
├── packages/
│ └── react-native-rustok-bridge/ # uniffi JS ↔ Rust bridge package
│
├── crates/ # Rust workspace
│ ├── txguard/ # Transaction security engine
│ ├── core/ # Wallet logic (keyring, provider, router, send)
│ ├── types/ # Shared DTOs
│ ├── api/ # Axum HTTP server
│ ├── cli/ # CLI binary
│ └── rustok-mobile-bindings/ # uniffi FFI exports
│
├── deploy/ # Docker + Caddy deployment
└── docs/ # Architecture, phase handoffs, incident reports
ライセンス
Rustok はデュアルライセンスです。
- AGPL-3.0-or-later — オープンソースです。派生著作物やネットワーク経由でアクセスできるサービスのソースコードをユーザーに提供することを含め、AGPL の条件を遵守するあらゆる用途で無料で使用できます。
- Commercial License — AGPL-3.0 に準拠できない用途(例:ソースコードを非公開にした Apple App Store または Google Play での配布、プロプライエタリ製品への組み込み)については、著作権者から入手できます。
ライセンス、商標、貢献に関する条件の概要は、NOTICE.md を参照してください。
商標
「Rustok」と「txguard」は Temrjan Khasenov の商標です。ソースコードは AGPL-3.0 ですが、商標は対象外です。詳細は TRADEMARK.md を参照してください。
ビジュアルアセット
ロゴ、アイコン、ブランド画像は AGPL-3.0 の対象外です。詳細は ASSETS-LICENSE.md を参照してください。
貢献
貢献は Developer Certificate of Origin(DCO)の条件に基づいて受け入れられます。詳細は CONTRIBUTING.md を参照してください。
Copyright (c) 2025-2026 Temrjan Khasenov.
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。