mcpField
R
Rustok Wallet

Rustok Wallet

本地服务
github.com/temrjan金融数据07 周前更新

关于 Rustok Wallet

Rustok Wallet 是面向个人和 AI Agent 的自托管 Ethereum 钱包,提供移动应用、CLI 和交易安全分析。它通过 txguard 在签名前解析并模拟交易,并支持多个链的统一余额与转账。

主要功能

  1. 01跨五条主网统一余额与转账
  2. 02BIP39 助记词创建与恢复
  3. 03签名前进行 txguard 安全分析
  4. 04PIN 与生物识别锁定
  5. 05交易记录与待处理状态追踪

适用场景

  1. 01在多个 Ethereum 网络间管理资产
  2. 02签署前检查交易风险
  3. 03通过 CLI 分析 EVM 交易
  4. 04为 AI Agent 配置分级交易权限

MCP 相关

项目提供面向 AI Agent 的 MCP 工具,并通过 fail-closed 能力门控区分读取、预览和执行权限。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"temrjan-rustok-wallet": {
"command": "npx",
"args": [
"-y",
"rustok-agent-mcp"
],
"env": {
"RUSTOK_AGENT_PASSWORD": "<RUSTOK_AGENT_PASSWORD>"
}
}
}
}
启动命令npx -y rustok-agent-mcp
需要配置的环境变量
RUSTOK_AGENT_PASSWORD密钥Password to unlock the agent wallet

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmrustok-agent-mcp0.2.2

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Rustok

支持链抽象和交易安全引擎的 Ethereum 钱包。

状态: 已投入生产 — 第 7 阶段已完成 — 已在 Sepolia 上验证 Android;支持 iOS。React Native 应用支持真实链上交易、完整的引导流程和实时 txguard 分析。

网站: rustokwallet.com | X: @rustokwallet | Agent 版本: github.com/rustok-org


这是什么?

Rustok 是一款自托管 Ethereum 钱包,围绕两个理念构建:

  1. 你的密钥,你的链 — 一个助记词可控制 Ethereum、Arbitrum、Base、Optimism 和 zkSync 上的地址。余额和路由统一管理;你选择链,其余交给钱包处理。
  2. 信任,但要验证 — 每笔交易在签名前都会经过 txguard 分析。它会解码 calldata、运行安全规则、通过 revm 模拟执行,并结合威胁情报丰富分析结果。

移动应用(Android + iOS)是主要界面。另提供公共 HTTP API 和 CLI,用于无头 txguard 分析。

2026 年演进: 同一套自托管核心现已推出 面向 AI Agent 的钱包 — MCP 工具采用故障关闭式能力门控(读取 / 预览 / 执行)和三级信任阶梯(自主 Agent → 控制台批准 → 手机签名)。请参阅 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)
EVMrevm v36、alloy-evm v0.30
Ethereumalloy-rs v1.8(provider、signer、primitives、consensus)
加密BIP39(m/44'/60'/0'/0/0)、AES-256-GCM、Argon2id、secp256k1
HTTPAxum 0.8、Tower HTTP(CORS、trace)
异步Tokio、Futures
序列化Serde、Serde JSON
CLIclap 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

移动端详细文档: 请参阅 mobile/README.md,了解引导流程、桥接接口、DEV 逃生方式以及 Android/Windows 特定说明。

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状态
Ethereum1活跃
Arbitrum One42161活跃
Base8453活跃
Optimism10活跃
zkSync Era324活跃
Sepolia11155111测试网

txguard API

用于交易安全分析的公共 API(rustok-api、Axum)。可自托管——参见 deploy/。

端点方法描述
/healthGET健康检查
/check-addressPOST通过 GoPlus 检查地址安全性(恶意标记、风险等级、风险项)
/decodePOST解码并分析原始 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 条款,即可免费用于任何用途,包括向用户提供衍生作品和可通过网络访问的服务的源代码。
  • 商业许可证 — 对于无法遵守 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。

贡献

贡献按照开发者原创证书(DCO)接受。参见 CONTRIBUTING.md。

版权所有 (c) 2025-2026 Temrjan Khasenov。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。