Rustok Wallet

io.github.temrjan由 GitHub 账号 temrjan 发布v0.2.2更新于 Oct 24, 2026

Self-custody Ethereum Agent Wallet. All chains enabled by default. User assumes all risks.

已验证STDIO仅桌面金融安全与监控

概览

AI 生成的概览

一个本地 MCP 服务器,为 AI 助手提供自托管以太坊代理钱包,支持多链余额、转账以及签名前的交易安全分析。

可以做什么
通过密码解锁管理自托管以太坊钱包,覆盖以太坊、Arbitrum、Base、Optimism、zkSync 和 Sepolia 测试网,统一余额与路由。查询余额并发送 ETH 或代币,签名前强制执行 txguard 安全检查。签名前分析交易:解码 calldata、运行安全规则、模拟执行并用威胁情报补充发现。按读取、预览、执行三级能力门控,并提供从自主代理到控制台批准再到手机签名的信任阶梯。
适用场景
当你希望 AI 助手持有并操作跨多条链的自托管以太坊钱包,或需要对交易和地址做签名前安全检查时使用。适合每一步操作都应在签名前验证的代理驱动链上工作流。
运行要求
通过 npm 包 rustok-agent-mcp 以 stdio 作为本地进程运行。需要环境变量 RUSTOK_AGENT_PASSWORD 来解锁代理钱包。仅限桌面端,不支持网页执行。查询余额和转账需要访问所支持链的网络。
安装前请注意
该服务器控制持有真实资金的自托管钱包,README 声明用户承担全部风险。它通过 RUSTOK_AGENT_PASSWORD 索取钱包密码,请谨慎保管该密钥。发送交易会转移资金且不可撤销;请限制执行级别与信任阶梯,并在批准前查看 txguard 结果。地址检查会把地址发送给第三方威胁情报服务。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Rustok Wallet,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

Rustok

Ethereum wallet with chain abstraction and transaction security engine.

Status: Production — Phase 7 DONE — Android verified on Sepolia; iOS supported. React Native app with real on-chain transactions, full onboarding, and txguard live analysis.

Website: rustokwallet.com | X: @rustokwallet | Agent editions: github.com/rustok-org


What is this?

Rustok is a self-custody Ethereum wallet built around two ideas:

  1. Your keys, your chains — one seed phrase controls addresses across Ethereum, Arbitrum, Base, Optimism, and zkSync. Balance and routing are unified; you pick the chain, the wallet handles the rest.
  2. Trust but verify — every transaction is analyzed by txguard before signing. It decodes calldata, runs security rules, simulates execution via revm, and enriches findings with threat intelligence.

The mobile app (Android + iOS) is the primary interface. A public HTTP API and CLI are available for headless txguard analysis.

2026 evolution: the same self-custody core now ships as a wallet for AI agents — MCP tools with fail-closed capability gating (read / preview / execute) and a three-rung trust ladder (autonomous agent → console-approved → phone-signed). See rustokwallet.com and the rustok-org repositories (mcp, console, mobile, paraswap-mcp, uniswap).


Features

  • Multi-chain wallet — unified balance, send, and receive across 5 mainnet chains + Sepolia testnet
  • BIP39 seed phrase — MetaMask-compatible path (m/44'/60'/0'/0/0), cross-device recovery
  • txguard analysis — pre-sign security scan with risk badge and per-finding breakdown
  • PIN + Biometric lock — Argon2id-hashed PIN, Face ID / fingerprint unlock, background auto-lock
  • Onboarding — create wallet (4-step wizard + phrase quiz), import from seed phrase, or recover from lockout / biometric change
  • Activity history — real transaction feed with pending-state tracking and explorer links
  • Theme — light / dark / system with design-token consistency across the UI

Architecture

┌─────────────────────────────────────────────────────────────┐│                    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)     │  │             │  │                     │ ││  └─────────────┘  └─────────────┘  └─────────────────────┘ │└─────────────────────────────────────────────────────────────┘

Tech Stack

LayerTechnology
MobileReact Native 0.85.2, React 19.2.3, TypeScript 5.8
NavigationReact Navigation v7 (bottom-tabs, native-stack)
StylingNativeWind v4, TailwindCSS 3.4, design-token system
StateZustand 5, MMKV (persistent), React Native Keychain (secrets)
AnimationsReanimated 4.3, React Native Worklets, Gesture Handler
Bridgeuniffi-bindgen-react-native 0.31.0-2
LanguageRust (edition 2024)
EVMrevm v36, alloy-evm v0.30
Ethereumalloy-rs v1.8 (provider, signer, primitives, consensus)
CryptoBIP39 (m/44'/60'/0'/0/0), AES-256-GCM, Argon2id, secp256k1
HTTPAxum 0.8, Tower HTTP (CORS, trace)
AsyncTokio, Futures
SerializationSerde, Serde JSON
CLIclap v4
Loggingtracing, tracing-subscriber

Quick Start

Mobile App

Prerequisites: Node.js ≥ 22.11, Android SDK (for Android) or Xcode + CocoaPods (for iOS).

bash
# Install dependenciescd mobile && npm install
# Start Metro bundlernpx 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

For physical Android devices:

bash
adb reverse tcp:8081 tcp:8081

Detailed mobile docs: See mobile/README.md for onboarding flow, bridge surface, DEV escape hatches, and Android/Windows specifics.

Rust Workspace

bash
# Run all testscargo test --workspace
# Build CLIcargo build -p rustok --release
# Run API server locallycargo run -p rustok-api

CLI Examples

Transaction Security Analysis
bash
# Decode ERC-20 approve calldatarustok decode \  --to 0xdAC17F958D2ee523a2206206994597C13D831ec7 \  --data 0x095ea7b3000000000000000000000000000000000000000000000000000000000000dead00000000000000000000000000000000000000000000000000000000000f4240
# Full security analysis (parse + rules + verdict)# Exit codes: 0=allow, 1=warn, 2=blockrustok analyze \  --to 0xdAC17F958D2ee523a2206206994597C13D831ec7 \  --data 0x095ea7b3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
Wallet Operations
bash
# Generate a new encrypted walletrustok wallet new --password "your-secure-password"
# Check unified balance across Ethereum, Arbitrum, Base, Optimism, zkSyncrustok wallet balance 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045
# Show wallet info from keystore filerustok 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

Security Rules (txguard)

RuleSeverityTrigger
unlimited_approvalWarningapprove(spender, type(uint256).max)
set_approval_for_allWarningsetApprovalForAll(operator, true)
permit_to_unknownDangerEIP-2612 permit to unknown spender
permit_unlimitedWarningPermit with value == U256::MAX
known_scamForbiddenAddress in scam database
unknown_functionWarningUnrecognized function selector
value_with_calldataWarningETH sent with contract call
send_to_contractInfoTransfer to contract address

Supported Chains

ChainIDStatus
Ethereum1Active
Arbitrum One42161Active
Base8453Active
Optimism10Active
zkSync Era324Active
Sepolia11155111Testnet

txguard API

Public API for transaction security analysis (rustok-api, Axum). Self-hosted — see deploy/.

EndpointMethodDescription
/healthGETHealth check
/check-addressPOSTAddress security check via GoPlus (malicious flag, risk level, risks)
/decodePOSTDecode and analyze raw EVM transaction (action, risk score, findings)
bash
# Check addresscurl -X POST https://your-rustok-api-host/check-address \  -H "Content-Type: application/json" \  -d '{"address": "0xdAC17F958D2ee523a2206206994597C13D831ec7"}'
# Decode transactioncurl -X POST https://your-rustok-api-host/decode \  -H "Content-Type: application/json" \  -d '{"to": "0xdAC17F958D2ee523a2206206994597C13D831ec7", "data": "0x095ea7b3000000000000000000000000000000000000000000000000000000000000dead00000000000000000000000000000000000000000000000000000000000f4240"}'

Deployed via Docker + Caddy on 185.197.195.191 (deploy/).


Tests

517 tests, 0 failures - Rust workspace: 231 tests (txguard, core, types, mobile-bindings) - Mobile (Jest):   286 tests (components, stores, hooks, screens)

Pre-commit gates:

bash
# Rustcargo fmt --all --checkcargo clippy --workspace --all-targets -- -D warningscargo test --workspace
# Mobilecd mobile && npm run typecheck && npm run lint && npm run test

Project Layout

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

License

Rustok is dual-licensed:

  • AGPL-3.0-or-later — open source. Free for any use that complies with AGPL terms, including making source code of derivative works and network-accessible services available to users.
  • Commercial License — available from the copyright holder for uses that cannot comply with AGPL-3.0 (e.g. closed-source Apple App Store or Google Play distribution, bundling into proprietary products).

See NOTICE.md for a summary of licensing, trademarks, and contribution terms.

Trademarks

"Rustok" and "txguard" are trademarks of Temrjan Khasenov. Source code is AGPL-3.0, but the marks are not — see TRADEMARK.md.

Visual assets

Logos, icons, and brand imagery are not under AGPL-3.0. See ASSETS-LICENSE.md.

Contributing

Contributions are accepted under the Developer Certificate of Origin (DCO). See CONTRIBUTING.md.

Copyright (c) 2025-2026 Temrjan Khasenov.

来源:README.md,提交 1e67041

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v0.2.2最新Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分