# blockWallet **Repository Path**: fenghoer/blockWallet ## Basic Information - **Project Name**: blockWallet - **Description**: 一个block wallet系统, 目前仅有后端接口, 待补充前端逻辑, 或配合其它前端项目使用 - **Primary Language**: Go - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-01-05 - **Last Updated**: 2026-01-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # blockWallet blockWallet 是一个基于 Go 语言开发的多链钱包服务,支持 Ethereum、Bitcoin 和 Solana 区块链。它提供了完整的钱包管理、交易处理和区块链交互功能。 ## 功能特性 ### 🔐 钱包管理 - **多链支持**:Ethereum、Bitcoin、Solana - **真实密钥生成**:使用 secp256k1 椭圆曲线加密 - **地址生成**:支持 P2PKH(Bitcoin)、EOA(Ethereum)和 Solana 地址格式 - **WIF 转换**:Bitcoin 私钥到 WIF 格式转换 - **地址验证**:内置地址和私钥验证功能 ### 💸 交易处理 - **交易发送**:支持 Ethereum、Bitcoin 和 Solana 交易发送 - **Nonce 管理**:自动获取和管理交易 nonce - **Gas 优化**:智能估算 gas 价格和限制(Ethereum) - **交易签名**:使用私钥安全签名交易 - **交易状态查询**:支持查询交易状态和确认数 ### 🔗 区块链交互 - **真实节点连接**:支持连接 Ethereum、Bitcoin 和 Solana 节点 - **余额查询**:实时获取钱包余额 - **网络信息**:获取网络 ID、链 ID 等信息 - **区块查询**:支持区块信息查询 ### 🔒 安全特性 - **JWT 认证**:基于 JWT 的 API 认证 - **密码哈希**:安全的用户密码存储 - **私钥保护**:私钥加密存储 - **API 授权**:基于角色的访问控制 - **多层 DOS 防护**: - 令牌桶限流,限制全局请求频率 - IP 请求频率限流,限制单个 IP 请求频率 - 爬虫 User-Agent 检测,阻止爬虫访问 - 异常请求路径检测,阻止访问敏感路径 - 支持 IP 黑白名单配置 - 基于 User-Agent 特征识别爬虫 - 阻止访问敏感路径 - **缓存机制**:使用 github.com/patrickmn/go-cache 实现高效缓存 ## 技术栈 | 类别 | 技术 | 版本 | |------|------|------| | **语言** | Go | 1.23.4 | | **框架** | GoFrame | v2.9.7 | | **ORM** | GORM | v1.31.1 | | **数据库** | SQLite | v1.6.0 | | **Ethereum 库** | go-ethereum | v1.14.11 | | **Bitcoin 库** | btcsuite/btcd | v0.23.1 | | **Solana 库** | gagliardetto/solana-go | v1.14.0 | | **加密库** | btcec/v2 | v2.3.4 | | **配置管理** | GoFrame Config | v2.7.3 | | **JWT 认证** | GoFrame JWT | v2.7.3 | | **日志** | GoFrame Logger | v2.7.3 | ## 项目结构 ``` blockWallet/ ├── app/ # GoFrame 应用目录 │ └── api/ # API 控制器和路由 │ ├── setup.go # 路由配置 │ ├── transaction.go # 交易控制器 │ └── wallet.go # 钱包控制器 ├── config/ # 配置文件 │ ├── config.go # 配置加载逻辑 │ └── config.yaml # YAML 配置文件 ├── internal/ # 内部包 │ ├── blockchain/ # 区块链客户端实现 │ │ ├── bitcoin.go # Bitcoin 客户端 │ │ ├── ethereum.go # Ethereum 客户端 │ │ └── solana.go # Solana 客户端 │ ├── db/ # 数据库初始化 │ │ └── db.go # 数据库连接配置 │ ├── models/ # 数据模型 │ │ ├── market.go # 市场数据模型 │ │ ├── transaction.go # 交易模型 │ │ ├── user.go # 用户模型 │ │ └── wallet.go # 钱包模型 │ └── services/ # 业务逻辑层 │ ├── transaction.go # 交易服务 │ └── wallet.go # 钱包服务 ├── pkg/ # 公共包 │ └── common/ # 通用工具 │ └── logger/ # 日志工具 ├── docs/ # 文档目录 │ ├── docs.go # 文档生成代码 │ ├── swagger.json # Swagger JSON │ └── swagger.yaml # Swagger YAML ├── .env.example # 环境变量示例 ├── CHANGELOG.md # 变更日志 ├── LICENSE # 许可证 ├── Makefile # 构建脚本 ├── README.md # 项目说明 ├── go.mod # Go 模块文件 ├── go.sum # 依赖校验和 └── main.go # 应用入口 ``` ## 安装与运行 ### 前提条件 - Go 1.23.4 或更高版本 - Git ### 安装步骤 1. **克隆仓库** ```bash git clone cd blockWallet ``` 2. **安装依赖** ```bash go mod tidy ``` 3. **配置环境** 编辑 `manifest/config/config.yaml` 文件,配置相应的区块链节点信息: ```yaml # Ethereum 配置 ethereum: rpc_url: https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID chain_id: 1 # Bitcoin 配置 bitcoin: rpc_url: http://localhost:8332 rpc_user: bitcoinrpc rpc_password: your_password # Solana 配置 solana: rpc_url: https://api.mainnet-beta.solana.com ``` 4. **运行应用** ```bash # 开发模式运行 go run main.go # 构建并运行 go build -o blockwallet main.go ./blockwallet ``` 5. **访问 API** 应用默认运行在 `http://localhost:8080`,可以通过以下方式访问 API: - API 文档:`http://localhost:8080/swagger/index.html` - 健康检查:`http://localhost:8080/health` ## API 端点 ### 钱包管理 - `POST /api/wallets` - 创建钱包 - `GET /api/wallets` - 获取钱包列表 - `GET /api/wallets/:id` - 获取钱包详情 - `GET /api/wallets/:id/balance` - 获取钱包余额 ### 交易管理 - `POST /api/transactions` - 发送交易 - `GET /api/transactions` - 获取交易列表 - `GET /api/transactions/:id` - 获取交易详情 - `POST /api/buy` - 购买加密货币 ### 健康检查 - `GET /health` - 服务健康检查 ## 开发与测试 ### 运行测试 ```bash # 运行所有测试 go test ./... # 运行特定包的测试 go test ./app/api # API 控制器测试 go test ./internal/services # 业务逻辑测试 go test ./internal/blockchain # 区块链客户端测试 ``` ### 代码规范 ```bash # 检查代码格式 go fmt ./... # 运行静态分析 go vet ./... # 运行 GoFrame 代码检查 gf lint ``` ### 生成 API 文档 ```bash gf swagger ``` ## 部署 ### 二进制部署 ```bash # 构建二进制文件 go build -o blockwallet main.go # 运行二进制文件 ./blockwallet ``` ### 开发模式 ```bash # 使用 GoFrame 开发工具运行 gf run main.go ``` ## 安全考虑 1. **私钥管理**: - 私钥加密存储 - 不向外部暴露私钥 - 使用安全的随机数生成 2. **API 安全**: - 使用 HTTPS - JWT 认证 - 合理的速率限制 - 输入验证 3. **依赖安全**: - 定期更新依赖 - 检查依赖漏洞 ## 贡献指南 1. Fork 项目 2. 创建功能分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 开启 Pull Request ## 许可证 本项目采用 MulanPSL-2.0 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情 ## 联系方式 - 项目链接: - 报告问题: ## 版本历史 查看 [CHANGELOG.md](CHANGELOG.md) 文件了解完整的版本历史 # 访问Swagger API文档 应用启动后,可以通过以下方式访问API文档: ## 在线Swagger UI - **Swagger UI**: http://localhost:8080/swagger/index.html - **JSON格式**: http://localhost:8080/swagger/doc.json - **YAML格式**: http://localhost:8080/swagger/doc.yaml ## 使用说明 1. 启动应用:`go run main.go` 2. 打开浏览器访问:`http://localhost:8080/swagger/index.html` 3. 在Swagger UI中可以: - 查看所有API端点 - 测试API调用 - 查看请求/响应格式 - 了解认证要求 ## API认证 大部分API需要JWT认证,请在Swagger UI中: 1. 点击右上角的"Authorize"按钮 2. 输入Bearer Token格式:`Bearer your-jwt-token` 3. 点击"Authorize"完成认证