BitLab 项目分析报告
项目概述
项目名称: BitLab - 比特币钱包系统 技术框架: Laravel 8.x PHP 版本: 7.3+ / 8.0+ 项目类型: 加密货币钱包管理系统
一、项目结构与目录组织
1.1 根目录结构
/├── core/ # Laravel 应用主目录│ ├── app/ # 应用核心代码│ │ ├── Http/│ │ │ ├── Controllers/ # 控制器│ │ │ ├── Middleware/ # 中间件│ │ │ └── Helpers/ # 辅助函数│ │ ├── Models/ # 数据模型│ │ ├── Lib/ # 自定义类库│ │ ├── Mail/ # 邮件类│ │ ├── Providers/ # 服务提供者│ │ └── Rules/ # 验证规则│ ├── bootstrap/ # 启动文件│ ├── config/ # 配置文件│ ├── database/ # 数据库相关│ ├── resources/ # 资源文件│ │ ├── views/ # 视图模板│ │ └── lang/ # 语言包│ ├── routes/ # 路由定义│ ├── storage/ # 存储目录│ └── vendor/ # 第三方依赖├── assets/ # 前端静态资源│ ├── admin/ # 后台管理资源│ ├── global/ # 全局公共资源│ └── templates/ # 模板资源├── install/ # 安装程序└── index.php # 入口文件1.2 核心目录说明
目录 | 用途 |
core/app/Http/Controllers | 所有业务逻辑控制器 |
core/app/Models | Eloquent 数据模型 |
core/app/Http/Controllers/Admin | 后台管理控制器 |
core/app/Http/Controllers/Gateway/Blockio | 支付网关集成 |
assets/admin | 后台前端资源 (Vue.js, Bootstrap) |
assets/templates/basic | 前台用户模板 |
二、技术栈
2.1 后端技术
- 框架: Laravel 8.x
- PHP 版本: 7.3+ / 8.0+
- 数据库: MySQL
- 缓存: File/Redis
- 队列: Sync (同步)
2.2 前端技术
- UI 框架: Bootstrap
- JavaScript 框架: Vue.js
- 图表库: ApexCharts
- 其他: jQuery, Select2, IntlTelInput
2.3 第三方服务集成
服务 | 用途 |
Block.io | 比特币钱包 API |
Stripe | 支付处理 |
Razorpay | 印度支付网关 |
Mollie | 欧洲支付网关 |
CoinGate | 加密货币支付 |
Twilio | SMS 短信服务 |
SendGrid | 邮件发送服务 |
Mailjet | 邮件服务 |
Vonage/Nexmo | 通讯服务 |
TextMagic | SMS 服务 |
三、核心功能模块
3.1 用户系统 (User)
功能描述: 用户注册、登录、认证、个人资料管理
核心控制器: UserController.php, Auth/RegisterController.php, Auth/LoginController.php
主要功能:
- 用户注册(支持邮箱/手机验证)
- 用户登录(支持 Google 2FA 双因素认证)
- 密码重置
- 个人资料更新
- 头像上传
数据模型: User.php, UserLogin.php, PasswordReset.php
3.2 钱包系统 (Wallet)
功能描述: 多钱包管理、地址生成、余额查询
核心控制器: UserController.php (addWallet, wallet 方法)
主要功能:
- 创建多个比特币钱包
- 通过 Block.io API 生成新地址
- 钱包余额查询
- 钱包限制管理
数据模型: UserWallet.php
核心逻辑:
// 创建新钱包流程1. 检查用户钱包数量是否超过限制2. 调用 Block.io API 生成新地址3. 保存钱包地址到数据库3.3 转账系统 (Send)
功能描述: 比特币转账发送
核心控制器: UserController.php (send, sendHistory 方法)
主要功能:
- 向外部地址发送比特币
- 计算手续费(固定手续费 + 百分比手续费)
- 交易记录查询
- 待处理交易管理
数据模型: Send.php
手续费计算:
$charge = $fixed_charge + ($amount * $percent_charge / 100);$requiredBalance = $amount + $charge;3.4 收款系统 (Receive)
功能描述: 自动检测并接收转入的比特币
核心控制器: CronController.php (receive 方法)
主要功能:
- 定时任务扫描所有钱包地址余额
- 自动将资金归集到主钱包
- 记录收款交易
- 发送收款通知
数据模型: Transaction.php
3.5 交易记录系统 (Transaction)
功能描述: 记录所有资金变动
数据模型: Transaction.php
交易类型:
- + : 收入(收款、管理员添加余额)
- - : 支出(转账、管理员扣除余额)
记录字段:
- user_id: 用户 ID
- wallet_id: 钱包 ID
- amount: 金额
- post_balance: 交易后余额
- charge: 手续费
- trx_type: 交易类型 (+/-)
- details: 交易详情
- trx: 交易号
3.6 后台管理系统 (Admin)
功能描述: 完整的后台管理功能
核心控制器:
- AdminController.php - 后台首页
- ManageUsersController.php - 用户管理
- ReportController.php - 报表统计
- SupportTicketController.php - 工单管理
- GeneralSettingController.php - 系统设置
- FrontendController.php - 前台页面管理
主要功能:
- 仪表盘统计
- 用户管理(查看/编辑/禁用/发送邮件)
- 余额管理(添加/扣除用户余额)
- 交易记录查询
- 收发款历史
- 系统设置
- 邮件/SMS 模板管理
- 工单管理
- 语言管理
3.7 定时任务系统 (Cron)
功能描述: 后台定时执行的任务
核心控制器: CronController.php
任务列表:
路由 | 功能 | 频率 |
/cron/rate | 更新 BTC/USD 汇率 | 每 15 分钟 |
/cron/send | 处理待发送交易 | 每 15 分钟 |
/cron/receive | 检测并处理收款 | 每 15 分钟 |
核心逻辑:
// rate - 汇率更新1. 调用 Block.io API 获取当前 BTC 价格2. 保存到系统设置// send - 发送处理1. 查询所有状态为 0(待处理)的交易2. 调用 Block.io API 准备交易3. 更新交易状态// receive - 收款检测1. 轮询检查 30 个钱包地址2. 检测余额变化3. 如有余额则归集到主钱包4. 创建交易记录3.8 工单系统 (Support Ticket)
功能描述: 用户支持工单
核心控制器: TicketController.php, Admin/SupportTicketController.php
数据模型: SupportTicket.php, SupportMessage.php, SupportAttachment.php
工单状态:
- 0: 待处理
- 1: 已回复
- 2: 已关闭
3.9 通知系统 (Notification)
功能描述: 邮件、SMS、站内通知
核心功能:
- 邮件通知(支持 PHP Mail, SMTP, SendGrid, Mailjet)
- SMS 通知(支持 Twilio, TextMagic, Vonage 等)
- 站内通知(管理员通知)
数据模型: EmailTemplate.php, SmsTemplate.php, AdminNotification.php
3.10 前端页面构建器 (Page Builder)
功能描述: 可视化页面构建
核心控制器: PageBuilderController.php, FrontendController.php
主要功能:
- 页面管理
- 区块管理
- SEO 设置
- 自定义 CSS
四、核心业务逻辑
4.1 用户注册流程
1. 用户填写注册表单(用户名、邮箱、手机、密码等)2. 验证表单数据3. 检查手机号是否已存在4. 验证验证码(如开启)5. 创建用户记录 - 密码使用 Hash 加密 - 设置验证状态6. 记录登录日志7. 创建管理员通知8. 自动登录4.2 发送比特币流程
1. 用户填写发送表单 - 目标地址 - 发送金额 - 源钱包 - 2FA 验证码(如开启)2. 验证表单3. 检查余额是否充足4. 验证 2FA(如开启)5. 计算手续费6. 创建 Send 记录(状态=0 待处理)7. 扣除用户钱包余额8. 创建交易记录(类型为 -)9. 发送用户通知10. 创建管理员通知11. Cron 任务异步处理实际发送4.3 接收比特币流程
1. Cron 定时任务执行2. 轮询 30 个钱包地址3. 调用 Block.io API 查询余额4. 发现新余额时: a. 调用 Block.io API 归集到主钱包 b. 更新用户钱包余额 c. 创建交易记录(类型为 +) d. 发送用户通知5. 更新钱包最后检查时间4.4 管理员操作用户余额流程
1. 管理员进入用户详情2. 填写金额和备注3. 选择添加或扣除4. 验证钱包地址属于该用户5. 执行操作: - 添加:增加余额,创建 + 交易记录 - 扣除:检查余额后减少,创建 - 交易记录6. 发送用户通知五、核心数据模型
5.1 用户表 (users)
字段 | 类型 | 说明 |
id | bigint | 主键 |
username | string | 用户名 |
string | 邮箱 | |
password | string | 密码 (Hash) |
firstname | string | 名 |
lastname | string | 姓 |
mobile | string | 手机号 |
country_code | string | 国家代码 |
address | json | 地址信息 |
status | int | 状态 (1 正常/0 禁用) |
ev | int | 邮箱验证 |
sv | int | 手机验证 |
ts | int | 2FA 开关 |
tsc | string | 2FA 密钥 |
tv | int | 2FA 验证状态 |
ref_by | int | 推荐人 ID |
5.2 用户钱包表 (user_wallets)
字段 | 类型 | 说明 |
id | bigint | 主键 |
user_id | bigint | 用户 ID |
name | string | 钱包名称 |
coin_code | string | 币种代码 (BTC) |
wallet_address | string | 钱包地址 |
balance | decimal | 余额 |
last_cron | int | 最后检查时间戳 |
5.3 交易表 (transactions)
字段 | 类型 | 说明 |
id | bigint | 主键 |
user_id | bigint | 用户 ID |
wallet_id | bigint | 钱包 ID |
amount | decimal | 金额 |
post_balance | decimal | 交易后余额 |
charge | decimal | 手续费 |
trx_type | char | 类型 (+/-) |
details | text | 详情 |
trx | string | 交易号 |
5.4 发送表 (sends)
字段 | 类型 | 说明 |
id | bigint | 主键 |
user_id | bigint | 用户 ID |
wallet_id | bigint | 钱包 ID |
receive_wallet | string | 目标地址 |
amount | decimal | 金额 |
charge | decimal | 手续费 |
status | int | 状态 (0 待处理/1 成功/9 失败) |
trx | string | 交易号 |
5.5 管理员表 (admins)
字段 | 类型 | 说明 |
id | bigint | 主键 |
name | string | 姓名 |
string | 邮箱 | |
password | string | 密码 |
image | string | 头像 |
api_token | string | API 令牌 |
六、路由结构
6.1 前台用户路由
路由 | 方法 | 说明 |
/login | GET/POST | 用户登录 |
/register | GET/POST | 用户注册 |
/password/reset | GET/POST | 密码重置 |
/user/dashboard | GET | 用户仪表板 |
/user/wallet | GET | 钱包列表 |
/user/send | GET/POST | 发送比特币 |
/user/send/history | GET | 发送历史 |
/user/receive/history | GET | 收款历史 |
/user/transaction/history | GET | 交易历史 |
/user/profile-setting | GET/POST | 个人资料 |
/user/change-password | GET/POST | 修改密码 |
/user/security | GET/POST | 2FA 设置 |
/ticket/* | GET/POST | 工单系统 |
6.2 后台管理路由
路由前缀 | 说明 |
/admin | 管理员登录 |
/admin/dashboard | 仪表盘 |
/admin/users/* | 用户管理 |
/admin/tickets/* | 工单管理 |
/admin/report/* | 报表统计 |
/admin/email-template/* | 邮件模板 |
/admin/sms-template/* | SMS 模板 |
/admin/general-setting | 系统设置 |
/admin/frontend/* | 前台页面管理 |
/admin/language/* | 语言管理 |
6.3 定时任务路由
路由 | 说明
|
/cron/rate | 更新汇率 |
/cron/send | 处理发送 |
/cron/receive | 处理收款 |
七、辅助函数 (helpers.php)
7.1 图像处理
- uploadImage() - 上传图片
- uploadFile() - 上传文件
- getImage() - 获取图片 URL
7.2 验证函数
- verifyG2fa() - Google 2FA 验证
- captchaVerify() - 自定义验证码验证
- loadReCaptcha() - 加载 ReCaptcha
7.3 通知函数
- notify() - 发送通知(邮件+SMS)
- sendEmail() - 发送邮件
- sendSms() - 发送 SMS
- sendPhpMail() - PHP Mail
- sendSmtpMail() - SMTP 邮件
- sendSendGridMail() - SendGrid 邮件
- sendMailjetMail() - Mailjet 邮件
7.4 工具函数
- getTrx() - 生成交易号
- showAmount() - 格式化金额
- getAmount() - 获取金额
- getIpInfo() - 获取 IP 信息
- osBrowser() - 获取浏览器/OS 信息
- getNumber() - 生成随机数字
- verificationCode() - 生成验证码
- slug() - 生成 URL 友好字符串
- shortDescription() - 截取文本
- cryptoQR() - 生成加密货币二维码
- diffForHumans() - 人类可读时间差
- showDateTime() - 格式化日期时间
7.5 系统函数
- systemDetails() - 系统信息
- activeTemplate() - 当前模板
- imagePath() - 图片路径配置
- getContent() - 获取前端内容
- getPageSections() - 获取页面区块
- getTemplates() - 获取可用模板
八、中间件
中间件 | 说明 |
Authenticate | 用户认证 |
AuthenticateApi | API 认证 |
CheckStatusApi | 检查用户状态 |
LanguageMiddleware | 语言切换 |
RedirectIfAuthenticated | 已登录重定向 |
RedirectIfAdmin | 检查是否管理员 |
RedirectIfNotAdmin | 检查是否非管理员 |
Demo | 演示模式限制 |
PreventRequestsDuringMaintenance | 维护模式 |
VerifyCsrfToken | CSRF 验证 |
九、扩展与插件系统
9.1 扩展模型 (Extension.php)
系统支持动态扩展功能:
- Google ReCaptcha
- Google Analytics
- Tawk.to 在线聊天
- Facebook 评论
- 自定义验证码
9.2 支付网关
系统支持多种支付网关(代码中存在但当前版本主要使用 Block.io):
- Stripe
- Razorpay
- Mollie
- CoinGate
十、安全特性
10.1 认证安全
- 密码 Hash 加密 (bcrypt)
- Google 2FA 双因素认证
- CSRF Token 保护
- 邮箱验证
- 手机短信验证
10.2 数据安全
- SQL 注入防护 (Eloquent ORM)
- XSS 防护 (Blade 模板转义)
- 输入验证 (Request Validation)
- 文件上传验证 (FileTypeValidate)
10.3 操作安全
- 管理员操作日志
- 用户登录日志
- 交易记录完整追踪
- 交易状态管理
十一、系统特点与限制
11.1 优点
- 完整的钱包系统: 支持多钱包、转账、收款
- 后台管理完善: 用户管理、报表统计、系统设置
- 通知系统健全: 支持多种邮件和 SMS 服务商
- 定时任务自动化: 自动处理收发款
- 安全性较高: 2FA、验证机制完善
11.2 限制
- 仅支持比特币: 当前版本主要支持 BTC
- 依赖 Block.io: 核心功能依赖第三方 API
- 队列同步处理: 高并发可能有问题
- 无提现审核: 发送交易自动处理
十三、总结
BitLab 是一个功能完整的比特币钱包管理系统,基于 Laravel 8 框架开发。系统核心功能包括:
- 用户管理: 注册、登录、认证、资料管理
- 钱包管理: 多钱包创建、地址生成
- 转账系统: 发送比特币到外部地址
- 收款系统: 自动检测并归集收款
- 后台管理: 完整的用户管理和系统配置
- 通知系统: 邮件和 SMS 通知
系统采用 Block.io 作为底层钱包 API 提供商,通过定时任务实现自动化收发款处理。代码结构清晰,遵循 Laravel 最佳实践,适合需要运营比特币钱包服务的场景。
