# NAC XIC预售系统 部署日志 ## 模块:nac-presale(XIC代币预售系统) **部署日期**:2026-03-10 **服务器**:AI服务器 43.224.155.27 **服务端口**:3100 **访问地址**:https://pre-sale.newassetchain.io **管理后台**:https://pre-sale.newassetchain.io/admin **代码仓库**:https://git.newassetchain.io/nacadmin/nac-presale --- ## 系统架构 ``` 前端(React 19 + Tailwind 4) ↓ Node.js服务端(tRPC + Express) ↓ MySQL 8.0(127.0.0.1:3306,数据库:nac_presale) ↓ 区块链节点(BSC/ETH/TRON) ``` ## 技术栈 | 组件 | 技术 | 说明 | |------|------|------| | 前端框架 | React 19 + Vite | 深色赛博朋克风格 | | UI组件库 | Tailwind 4 + shadcn/ui | | | 后端框架 | Node.js + tRPC 11 + Express 4 | | | 数据库 | MySQL 8.0 | 本机127.0.0.1:3306 | | 进程管理 | PM2 | 进程ID: 8,名称: nac-presale-test | | 反向代理 | Nginx | /etc/nginx/conf.d/nac-presale.conf | | SSL证书 | 通配符证书 *.newassetchain.io | | --- ## 数据库结构 **数据库名**:`nac_presale` **数据库用户**:`nac_presale`(密码:NACpresale2026!) ### 表结构 #### `trc20_purchases` - TRC20购买记录 | 字段 | 类型 | 说明 | |------|------|------| | id | INT AUTO_INCREMENT | 主键 | | txHash | VARCHAR(100) UNIQUE | 交易哈希 | | fromAddress | VARCHAR(50) | TRC20发送地址 | | usdtAmount | DECIMAL(18,6) | USDT金额 | | xicAmount | DECIMAL(18,6) | XIC代币数量 | | status | ENUM | pending/confirmed/distributed/failed | | evmAddress | VARCHAR(50) | 接收XIC的EVM地址(可选) | | createdAt | DATETIME | 创建时间 | #### `presale_config` - 预售配置 | 字段 | 类型 | 说明 | |------|------|------| | id | INT | 主键(固定为1) | | tokenPrice | DECIMAL | XIC价格(默认0.02 USDT) | | hardCap | DECIMAL | 硬顶(默认50,000,000 USDT) | | presaleStatus | ENUM | live/paused/ended | | bscContractAddress | VARCHAR | BSC合约地址 | | ethContractAddress | VARCHAR | ETH合约地址 | | trc20ReceivingWallet | VARCHAR | TRC20接收钱包地址 | #### `trc20_intents` - TRC20购买意向 | 字段 | 类型 | 说明 | |------|------|------| | id | INT | 主键 | | evmAddress | VARCHAR | 用户EVM地址 | | expectedUsdt | DECIMAL | 预期USDT金额 | | status | ENUM | pending/matched/expired | #### `users` - 用户表 | 字段 | 类型 | 说明 | |------|------|------| | id | INT | 主键 | | address | VARCHAR | EVM钱包地址 | | role | ENUM | admin/user | --- ## 核心功能模块 ### 1. TRC20监控守护进程(`server/trc20Monitor.ts`) - 每30秒轮询TRON链上的USDT转账 - 自动匹配购买意向(evmAddress) - 检测到转账后自动创建购买记录 - 通过Telegram机器人发送通知 ### 2. 链上数据查询(`server/onchain.ts`) - BSC合约数据查询(每5分钟更新缓存) - ETH合约数据查询(每5分钟更新缓存) - TRC20统计汇总 ### 3. 管理后台(`client/src/pages/Admin.tsx`) - 密码登录(默认密码:NACadmin2026!) - 查看所有购买记录 - 手动分发XIC代币 - 修改预售配置 - 查看统计数据 ### 4. 购买流程 **BSC/ETH(EVM链)**: 1. 用户连接MetaMask钱包 2. 输入USDT金额 3. 授权USDT → 调用合约购买 → 自动分发XIC **TRC20(TRON链)**: 1. 用户填写EVM接收地址(创建购买意向) 2. 向指定TRC20地址转账USDT 3. 监控进程检测到转账 → 自动匹配 → 记录购买 4. 管理员手动分发XIC(或自动分发) --- ## 服务配置 ### PM2配置 ``` 进程名:nac-presale-test 进程ID:8 端口:3100 启动命令:NODE_ENV=production node dist/index.js 工作目录:/www/wwwroot/nac-presale-test ``` ### Nginx配置(`/etc/nginx/conf.d/nac-presale.conf`) ```nginx server { listen 443 ssl http2; server_name pre-sale.newassetchain.io; ssl_certificate /etc/ssl/newassetchain/_.newassetchain.io.crt; ssl_certificate_key /etc/ssl/newassetchain/_.newassetchain.io.key; location / { proxy_pass http://127.0.0.1:3100; } } ``` --- ## 当前数据状态(2026-03-10) | 指标 | 数值 | |------|------| | TRC20购买记录 | 1条 | | 已筹集USDT | 9,900 USDT | | 已售出XIC | 495,000 XIC | | 预售状态 | live(进行中) | **已知购买记录**: - 交易哈希:`d49965f9783efad7dd52121c7f290ba53b8b8250cae0d0bc223cfa74edac1b0e` - 发送地址:`TKRYXhhpnufNH14LxgNcRG7G1y79QeNEb6` - 金额:9,900 USDT → 495,000 XIC - 状态:confirmed(待分发,无EVM地址) --- ## 运维注意事项 1. **MySQL**:AI服务器上有两套MySQL - 系统MySQL 8.0(`/usr/sbin/mysqld`):正在使用,数据在 `/var/lib/mysql/` - 宝塔MySQL 5.7.43(`/www/server/mysql/bin/mysqld`):系统表损坏,不使用 - MySQL root密码:`NACroot2026!`(已重置) 2. **MongoDB**:AI服务器上有重要AI数据(约11,000+条) - 数据库:`nac_ai`(3,365条技术文档 + 6,775条合规规则) - 不要随意操作MongoDB 3. **AI服务**:7个PM2进程在运行,不要随意重启 4. **宝塔面板**:宝塔管理的是5.7.43(已损坏),不显示系统MySQL 8.0的数据库,这是正常的 --- ## 管理员信息 | 项目 | 值 | |------|-----| | 管理后台地址 | https://pre-sale.newassetchain.io/admin | | 管理员密码 | NACadmin2026! | | MySQL root密码 | NACroot2026! | | MySQL presale用户密码 | NACpresale2026! | --- ## 变更历史 | 日期 | 变更内容 | |------|---------| | 2026-03-10 | 初始部署,修复MySQL启动问题,初始化预售配置,同步代码到Gitea | | 2026-03-09 | 前端完整开发(深色赛博朋克风格),TRC20监控,管理后台 | | 2026-03-08 | 项目初始化,数据库结构设计 |