init: 初始化 AssetX 项目仓库

包含 webapp(Next.js 用户端)、webapp-back(Go 后端)、
antdesign(管理后台)、landingpage(营销落地页)、
数据库 SQL 和配置文件。
This commit is contained in:
2026-03-27 11:26:43 +00:00
commit 2ee4553b71
634 changed files with 988255 additions and 0 deletions

View File

@@ -0,0 +1,157 @@
# Holder Scanner 使用说明
## 问题诊断
你遇到的问题是:**Scanner扫描器没有运行**,所以数据库中没有数据。
当前状态:
- ✅ API Server 正常运行
- ❌ Scanner 未启动(需要启动才能从区块链获取数据)
- ❌ 部署区块号可能不正确(需要更新)
## 解决步骤
### 第一步:获取正确的部署区块号
你数据库中的合约地址是:
- YT-A: `0x7f9eEA491eE53045594ee4669327f0355aCd0e58`
- YT-B: `0x20B94C5E5b7361552E0548161a58696aA6FeDBd4`
- YT-C: `0x0EF308D70cf35460E26a3Eb42F3442Ff28cbE07C`
**重要**:你需要找到这些合约的**实际部署区块号**。
#### 方法 1通过 Arbiscan 查询
1. 访问 [Arbiscan Sepolia](https://sepolia.arbiscan.io/)
2. 搜索合约地址(例如:`0x7f9eEA491eE53045594ee4669327f0355aCd0e58`
3. 查看 "Contract Creation" 或 "Contract Creator" 信息
4. 找到 "Block" 号码
#### 方法 2使用 Web3 工具查询
```bash
# 使用 cast (foundry) 工具
cast block-number --rpc-url https://sepolia-rollup.arbitrum.io/rpc
# 或者使用 etherscan API
curl "https://api-sepolia.arbiscan.io/api?module=contract&action=getcontractcreation&contractaddresses=0x7f9eEA491eE53045594ee4669327f0355aCd0e58"
```
#### 方法 3临时方案不推荐
如果暂时无法获取准确的部署区块号,可以使用一个较新的区块号(例如最新区块 - 10000但这会导致
- ⚠️ 可能遗漏早期的持有者数据
- ⚠️ 首次扫描时间更短,但数据不完整
### 第二步:更新 `.env` 配置
编辑 `.env` 文件,更新部署区块号:
```bash
# Deployment Block Numbers
YT_VAULTS_DEPLOY_BLOCK=123456789 # 替换为 YT-A/B/C 的实际部署区块
YTLP_DEPLOY_BLOCK=123456789 # 替换为 ytLP 的实际部署区块
LENDING_DEPLOY_BLOCK=123456789 # 替换为 Lending 的实际部署区块
```
### 第三步:启动 Scanner
#### 方法 1使用快速启动脚本推荐
```bash
# Linux/Mac
./run-scanner.sh
# Windows (Git Bash)
bash run-scanner.sh
```
#### 方法 2手动编译并运行
```bash
# 编译
go build -o bin/holder-scanner cmd/scanner/main.go
# 运行
./bin/holder-scanner
```
#### 方法 3使用 start-holders.sh交互式
```bash
./start-holders.sh
# 选择: 2. Scanner only
```
### 第四步:验证数据
启动 Scanner 后,你应该看到类似的日志:
```
=== Holder Scanner Service ===
✓ Configuration loaded
✓ Database tables checked
🔗 Chain ID: 421614
📚 从数据库加载合约地址配置...
✅ [Scanner] 加载了 3 个 YT 资产
✓ YT-A: 0x7f9eEA491eE53045594ee4669327f0355aCd0e58
✓ YT-B: 0x20B94C5E5b7361552E0548161a58696aA6FeDBd4
✓ YT-C: 0x0EF308D70cf35460E26a3Eb42F3442Ff28cbE07C
...
📊 开始首次扫描...
1. Scanning YT Vaults...
正在查询 YT-A (0x7f9eEA491eE53045594ee4669327f0355aCd0e58)...
发现 X 个新地址
余额>0: X 个持有者 ✅
```
等待首次扫描完成后,再次访问 API
```bash
curl http://localhost:8080/api/holders/YT-A
```
应该能看到持有者数据。
## 常见问题
### Q1: Scanner 报错 "failed to query logs"
**原因**:部署区块号设置太早,或 RPC 节点限制
**解决**
1. 检查部署区块号是否正确
2. 尝试使用更小的 `BatchSize`(在代码中默认 9999
3. 更换 RPC 节点
### Q2: 扫描速度很慢
**原因**:区块范围太大
**解决**
1. 确保使用准确的部署区块号(不要从太早的区块开始)
2. 检查网络连接
3. 考虑使用付费的 RPC 节点(更高的速率限制)
### Q3: 余额都是 0
**原因**:合约地址不正确,或合约不是 ERC20
**解决**
1. 验证合约地址是否正确
2. 在区块浏览器上检查合约是否是 ERC20 代币
3. 确认合约在对应的链上Arbitrum Sepolia
## 配置参数说明
| 环境变量 | 说明 | 默认值 |
|---------|------|--------|
| `CHAIN_ID` | 链 ID421614=Arbitrum Sepolia, 97=BSC Testnet | 421614 |
| `YT_VAULTS_DEPLOY_BLOCK` | YT 代币合约部署区块号 | 227339300 |
| `YTLP_DEPLOY_BLOCK` | ytLP 合约部署区块号 | 227230270 |
| `LENDING_DEPLOY_BLOCK` | Lending 合约部署区块号 | 227746053 |
## 技术支持
如果遇到问题,请提供:
1. Scanner 完整日志
2. 合约地址
3. 部署区块号
4. 错误信息