一个功能完整的以太坊多链钱包管理系统,支持多钱包、多账户、多链余额查询,提供现代化的 Web 界面。
- ✅ 创建/删除钱包(基于 BIP-39 助记词)
- ✅ 查看助记词(加密存储)
- ✅ HD 钱包派生(m/44'/60'/0'/0/{index})
- ✅ 为钱包创建多个账户
- ✅ 查看账户地址、私钥、公钥
- ✅ 账户信息加密存储
- ✅ 多链原生代币余额(Ethereum、Polygon、Arbitrum、Optimism)
- ✅ 热门 ERC20 代币支持(USDT、USDC、WETH、DAI、LINK、UNI、WBTC、PEPE、SHIB)
- ✅ 自定义代币添加
- ✅ 实时余额刷新
- ✅ 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 # 本文件
git clone <your-repo-url>
cd wallet-managecd 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
cd web
# 安装依赖
npm install
# 启动开发服务器
npm run dev# 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- Alchemy: https://www.alchemy.com (免费 3 亿 CU/月)
- Infura: https://infura.io (免费 10 万请求/天)
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 | ✅ | ✅ | ✅ |
- USDT - Tether USD (6 decimals)
- USDC - USD Coin (6 decimals)
- WETH - Wrapped Ether (18 decimals)
- DAI - Dai Stablecoin (18 decimals)
- LINK - Chainlink (18 decimals)
- UNI - Uniswap (18 decimals)
- WBTC - Wrapped Bitcoin (8 decimals)
- MATIC - Polygon (18 decimals)
- SHIB - Shiba Inu (18 decimals)
- PEPE - Pepe (18 decimals)
- ✅ 助记词使用 Fernet 对称加密存储
- ✅ 私钥使用 Fernet 对称加密存储
- ✅ 加密密钥从环境变量读取
- 不要 将
.env文件提交到版本控制 - 定期更换 加密密钥(生产环境)
- 妥善保管 助记词和私钥
- 使用 HTTPS 进行生产部署
- 定期备份 数据库文件
- 测试网测试 后再用于主网
- 侧边栏 + 主内容区布局
- 多列网格显示
- 完整功能展示
- 2 列网格布局
- 适配触摸操作
- 优化间距
- 单列布局
- 底部导航
- 全屏显示
- 手势友好
助记词:
abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about
预期地址:
0x9858EfFD232B4033E47d90003D41EC34EcaEda94
-
创建钱包
- 输入钱包名称
- 验证助记词生成
- 检查第一个账户自动创建
-
账户管理
- 创建新账户
- 查看地址
- 导出私钥(测试环境)
-
余额查询
- 查看各链余额
- 查看代币余额
- 测试刷新功能
-
钱包删除
- 备份助记词
- 确认删除
- 验证级联删除账户
⚠️ BTC 钱包派生功能存在 bug,仅支持 ETH/EVM 链⚠️ 公共 RPC 节点可能不稳定,建议配置 Alchemy/Infura⚠️ 免费 RPC 有速率限制,频繁查询可能触发限流
- 支持导入已有助记词
- 支持导入私钥
- 交易发送功能
- 交易历史查询
- NFT 支持
- 多语言支持
- 暗黑模式
- 桌面应用(Electron)
MIT License
欢迎提交 Issue 和 Pull Request!
如有问题,请提交 Issue。