Skip to content

aawujie/wallet-manage

Repository files navigation

以太坊多链钱包管理系统

一个功能完整的以太坊多链钱包管理系统,支持多钱包、多账户、多链余额查询,提供现代化的 Web 界面。

✨ 功能特性

钱包管理

  • ✅ 创建/删除钱包(基于 BIP-39 助记词)
  • ✅ 查看助记词(加密存储)
  • ✅ HD 钱包派生(m/44'/60'/0'/0/{index})

账户管理

  • ✅ 为钱包创建多个账户
  • ✅ 查看账户地址、私钥、公钥
  • ✅ 账户信息加密存储

余额查询

  • ✅ 多链原生代币余额(Ethereum、Polygon、Arbitrum、Optimism)
  • ✅ 热门 ERC20 代币支持(USDT、USDC、WETH、DAI、LINK、UNI、WBTC、PEPE、SHIB)
  • ✅ 自定义代币添加
  • ✅ 实时余额刷新

RPC 服务

  • ✅ Alchemy 和 Infura 双提供商支持
  • ✅ 自动重试和降级策略
  • ✅ 公共 RPC 备用节点

用户界面

  • ✅ 现代化响应式设计
  • ✅ PC 端和移动端完美支持
  • ✅ TailwindCSS 驱动的 UI

🏗️ 技术栈

后端

  • 框架: FastAPI
  • 数据库: SQLite + SQLAlchemy
  • 区块链: Web3.py
  • 加密: cryptography (Fernet)
  • HD 钱包: mnemonic

前端

  • 框架: React 19 + TypeScript
  • 构建: Vite
  • 路由: React Router v6
  • 样式: TailwindCSS
  • 图标: Lucide React
  • HTTP: Axios

📦 项目结构

wallet-manage/
├── backend/                 # 后端代码
│   ├── app/
│   │   ├── api/            # API 路由
│   │   ├── core/           # 核心配置
│   │   ├── models/         # 数据模型
│   │   ├── schemas/        # Pydantic 模式
│   │   ├── services/       # 业务逻辑
│   │   └── main.py         # FastAPI 入口
│   ├── requirements.txt
│   └── README.md
├── web/                     # 前端代码
│   ├── src/
│   │   ├── components/     # React 组件
│   │   ├── pages/          # 页面
│   │   ├── services/       # API 服务
│   │   ├── hooks/          # 自定义 Hooks
│   │   └── utils/          # 工具函数
│   ├── package.json
│   └── README.md
├── get_balance.py          # 参考脚本
├── multi_chain_wallet.py   # 参考脚本
└── README.md               # 本文件

🚀 快速开始

1. 克隆项目

git clone <your-repo-url>
cd wallet-manage

2. 后端设置

cd backend

# 安装依赖(使用 uv 推荐)
uv venv
source .venv/bin/activate  # Windows: .venv\Scripts\activate
uv pip install -r requirements.txt

# 配置环境变量
cp .env.example .env

# 生成加密密钥
python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
# 将输出的密钥填入 .env 的 ENCRYPTION_KEY

# 配置 RPC(至少配置一个)
# 编辑 .env 文件,填入:
# - ALCHEMY_API_KEY(推荐)
# - INFURA_PROJECT_ID

# 启动后端服务
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000

后端 API 文档:http://localhost:8000/docs

3. 前端设置

cd web

# 安装依赖
npm install

# 启动开发服务器
npm run dev

前端应用:http://localhost:5173

🔧 配置说明

后端环境变量 (.env)

# RPC 配置(至少配置一个)
ALCHEMY_API_KEY=your_alchemy_key          # 推荐:额度更大
INFURA_PROJECT_ID=your_infura_id          # 备用
DEFAULT_RPC_PROVIDER=alchemy              # alchemy 或 infura

# 安全配置(必需)
ENCRYPTION_KEY=your_32_byte_base64_key    # 用于加密助记词和私钥

# 数据库配置
DATABASE_URL=sqlite:///./wallet_db.sqlite

# 服务器配置
HOST=0.0.0.0
PORT=8000

获取 API 密钥

📡 API 端点

钱包管理

  • POST /api/wallets/create - 创建钱包
  • GET /api/wallets - 获取所有钱包
  • GET /api/wallets/{id} - 获取钱包详情
  • GET /api/wallets/{id}/mnemonic - 获取助记词
  • DELETE /api/wallets/{id} - 删除钱包

账户管理

  • POST /api/accounts/create - 创建账户
  • GET /api/accounts/wallet/{wallet_id} - 获取钱包账户列表
  • GET /api/accounts/{id}/private-key - 获取私钥
  • GET /api/accounts/{id}/public-key - 获取公钥

余额查询

  • GET /api/balances/{address} - 获取地址所有链余额
  • GET /api/balances/{address}/chain/{chain_id} - 获取指定链余额

代币管理

  • POST /api/tokens - 添加自定义代币
  • GET /api/tokens - 获取自定义代币列表
  • DELETE /api/tokens/{id} - 删除自定义代币

🌐 支持的区块链网络

链名称 Chain ID 原生代币 Alchemy Infura 公共 RPC
Ethereum Mainnet 1 ETH
Polygon 137 MATIC
Arbitrum One 42161 ETH
Optimism 10 ETH

🪙 支持的代币(前 10)

  1. USDT - Tether USD (6 decimals)
  2. USDC - USD Coin (6 decimals)
  3. WETH - Wrapped Ether (18 decimals)
  4. DAI - Dai Stablecoin (18 decimals)
  5. LINK - Chainlink (18 decimals)
  6. UNI - Uniswap (18 decimals)
  7. WBTC - Wrapped Bitcoin (8 decimals)
  8. MATIC - Polygon (18 decimals)
  9. SHIB - Shiba Inu (18 decimals)
  10. PEPE - Pepe (18 decimals)

🔐 安全说明

数据加密

  • ✅ 助记词使用 Fernet 对称加密存储
  • ✅ 私钥使用 Fernet 对称加密存储
  • ✅ 加密密钥从环境变量读取

安全建议

⚠️ 重要提醒

  1. 不要.env 文件提交到版本控制
  2. 定期更换 加密密钥(生产环境)
  3. 妥善保管 助记词和私钥
  4. 使用 HTTPS 进行生产部署
  5. 定期备份 数据库文件
  6. 测试网测试 后再用于主网

📱 响应式设计

PC 端(> 1024px)

  • 侧边栏 + 主内容区布局
  • 多列网格显示
  • 完整功能展示

平板(640px - 1024px)

  • 2 列网格布局
  • 适配触摸操作
  • 优化间距

移动端(< 640px)

  • 单列布局
  • 底部导航
  • 全屏显示
  • 手势友好

🧪 测试

测试钱包(标准测试向量)

助记词:

abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about

预期地址:

0x9858EfFD232B4033E47d90003D41EC34EcaEda94

手动测试流程

  1. 创建钱包

    • 输入钱包名称
    • 验证助记词生成
    • 检查第一个账户自动创建
  2. 账户管理

    • 创建新账户
    • 查看地址
    • 导出私钥(测试环境)
  3. 余额查询

    • 查看各链余额
    • 查看代币余额
    • 测试刷新功能
  4. 钱包删除

    • 备份助记词
    • 确认删除
    • 验证级联删除账户

🚧 已知限制

  1. ⚠️ BTC 钱包派生功能存在 bug,仅支持 ETH/EVM 链
  2. ⚠️ 公共 RPC 节点可能不稳定,建议配置 Alchemy/Infura
  3. ⚠️ 免费 RPC 有速率限制,频繁查询可能触发限流

🛣️ 开发路线图

  • 支持导入已有助记词
  • 支持导入私钥
  • 交易发送功能
  • 交易历史查询
  • NFT 支持
  • 多语言支持
  • 暗黑模式
  • 桌面应用(Electron)

📄 许可证

MIT License

🤝 贡献

欢迎提交 Issue 和 Pull Request!

📮 联系方式

如有问题,请提交 Issue。


⚠️ 免责声明:本项目仅供学习和测试使用,请勿用于存储大额资产。作者不对任何资产损失负责。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published