Solana 交易资金流向可视化工具,用于追踪 SOL 和 SPL Token 的转移路径。
Solana 由于其高吞吐、低费用和独特的账户模型,在 DeFi 和 NFT 领域被广泛使用,但也带来了新型的链上攻击(如私钥泄露、钓鱼合约、MEV 套利等)。交易溯源(Transaction Tracing)对于安全分析、资金追踪和漏洞响应至关重要。
sol-trace 是一个轻量级的 Solana 交易追踪工具,能够:
- 解析交易中的所有 Token 转移(包括 SOL 和 SPL Token)
- 递归追踪资金流向(可配置深度)
- 生成可视化的资金流向图
- 支持多种输出格式(终端文本、JSON、Mermaid 图表)
- 交易解析:使用 @solana/web3.js 获取交易详情,提取所有 TokenTransfer、Transfer(SOL)相关的日志或指令
- 关键信息提取:发送方(from)、接收方(to)、Token 类型(Mint 地址,或 SOL)、金额
- 递归追踪:对接收地址发起的新交易继续追踪(限制深度,如 2~3 层)
- 多格式输出:
- 终端文本:树状结构展示资金流向
- JSON 文件:便于后续分析
- Mermaid 图表:用于报告
- 语言:TypeScript
- 后端:
- @solana/web3.js(官方 SDK)
- @solana/spl-token(解析 SPL Token 转账)
- Express(API 服务)
- 前端:
- React
- Mermaid(图表生成)
- Vite(构建工具)
- Node.js 16.0+
- npm 7.0+
git clone https://github.com/wgenuis/sol-trace.git
cd sol-trace# 进入后端目录
cd backend
# 安装依赖
npm install
# 启动开发服务
npm run dev后端服务将运行在 http://localhost:8787/
# 进入前端目录
cd ../frontend
# 安装依赖
npm install
# 启动开发服务
npm run dev前端服务将运行在 http://localhost:5173/
- 打开浏览器,访问
http://localhost:5173/ - 输入 Solana 交易签名(例如
4xKu...aBcD) - 选择追踪深度(0-3层)
- 点击 "Trace" 按钮
- 查看结果,包括:
- 交易摘要信息
- Mermaid 资金流向图
- 分层展示的 Token 转移信息
- 原始 JSON 数据
在后端目录下运行:
# 查看帮助信息
npm run cli -- --help
# 追踪交易(默认深度为0)
npm run cli -- <transaction-signature>
# 追踪交易并指定深度
npm run cli -- <transaction-signature> --depth 2
# 输出为 JSON
npm run cli -- <transaction-signature> --json
# 生成 JSON 文件
npm run cli -- <transaction-signature> --output trace.jsonsol-trace/
├── backend/ # 后端代码
│ ├── src/
│ │ ├── index.ts # API 服务入口
│ │ ├── solana.ts # Solana 连接配置
│ │ ├── trace.ts # 核心追踪逻辑
│ │ ├── types.ts # 类型定义
│ │ └── cli.ts # CLI 入口
│ ├── package.json
│ └── tsconfig.json
├── frontend/ # 前端代码
│ ├── src/
│ │ ├── App.tsx # 主应用
│ │ ├── api.ts # API 调用
│ │ └── main.tsx # 入口
│ ├── package.json
│ └── tsconfig.json
└── README.md # 项目说明
请求参数:
{
"signature": "string", // 交易签名
"depth": 0 // 追踪深度(可选,默认 0)
}响应示例:
{
"signature": "4xKu...aBcD",
"slot": 123456789,
"blockTime": 1630000000,
"layers": [
{
"depth": 0,
"transfers": [
{
"from": "9fX...abc",
"to": "H7b...def",
"mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyB7L6R",
"program": "spl-token",
"rawAmount": "1000000000",
"uiAmount": "1000",
"decimals": 6,
"signature": "4xKu...aBcD",
"slot": 123456789,
"instructionType": "spl-token.transfer"
}
]
}
]
}🔍 Tracing transaction: 4xKu...aBcD
Layer 0:
→ From: 9fX...abc
→ To: H7b...def
→ Token: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyB7L6R (USDC)
→ Amount: 1000
Layer 1:
→ From: H7b...def
→ To: CzL...ghi
→ Token: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyB7L6R (USDC)
→ Amount: 1000
✅ Trace complete.
graph LR
N0[9fX...abc] -->|1000 USDC| N1[H7b...def]
N1 -->|1000 USDC| N2[CzL...ghi]
在后端目录下创建 .env 文件,可配置以下选项:
# Solana RPC URL(默认:https://api.mainnet-beta.solana.com)
SOLANA_RPC_URL=https://api.mainnet-beta.solana.com
# 服务器端口(默认:8787)
PORT=8787
# 每层最大地址数(默认:5)
MAX_ADDRESSES_PER_LAYER=5
# 每个地址最大交易数(默认:5)
MAX_SIGNATURES_PER_ADDRESS=5- 添加地址标签系统(如 CEX、Tornado 等)
- 实现风险评分功能
- 添加 Telegram 告警机制
- 支持更多 Token 标准
- 优化性能,实现缓存机制
- 提供 Docker 部署支持
欢迎提交 Issue 和 Pull Request!
MIT License
- GitHub: wgenuis/sol-trace