Skip to content

wgenuis/sol-trace

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

sol-trace

Solana 交易资金流向可视化工具,用于追踪 SOL 和 SPL Token 的转移路径。

项目简介

Solana 由于其高吞吐、低费用和独特的账户模型,在 DeFi 和 NFT 领域被广泛使用,但也带来了新型的链上攻击(如私钥泄露、钓鱼合约、MEV 套利等)。交易溯源(Transaction Tracing)对于安全分析、资金追踪和漏洞响应至关重要。

sol-trace 是一个轻量级的 Solana 交易追踪工具,能够:

  • 解析交易中的所有 Token 转移(包括 SOL 和 SPL Token)
  • 递归追踪资金流向(可配置深度)
  • 生成可视化的资金流向图
  • 支持多种输出格式(终端文本、JSON、Mermaid 图表)

核心功能

  1. 交易解析:使用 @solana/web3.js 获取交易详情,提取所有 TokenTransfer、Transfer(SOL)相关的日志或指令
  2. 关键信息提取:发送方(from)、接收方(to)、Token 类型(Mint 地址,或 SOL)、金额
  3. 递归追踪:对接收地址发起的新交易继续追踪(限制深度,如 2~3 层)
  4. 多格式输出
    • 终端文本:树状结构展示资金流向
    • JSON 文件:便于后续分析
    • Mermaid 图表:用于报告

技术栈

  • 语言:TypeScript
  • 后端
    • @solana/web3.js(官方 SDK)
    • @solana/spl-token(解析 SPL Token 转账)
    • Express(API 服务)
  • 前端
    • React
    • Mermaid(图表生成)
    • Vite(构建工具)

快速开始

环境要求

  • Node.js 16.0+
  • npm 7.0+

安装与运行

1. 克隆仓库

git clone https://github.com/wgenuis/sol-trace.git
cd sol-trace

2. 运行后端服务

# 进入后端目录
cd backend

# 安装依赖
npm install

# 启动开发服务
npm run dev

后端服务将运行在 http://localhost:8787/

3. 运行前端服务

# 进入前端目录
cd ../frontend

# 安装依赖
npm install

# 启动开发服务
npm run dev

前端服务将运行在 http://localhost:5173/

使用方法

前端界面

  1. 打开浏览器,访问 http://localhost:5173/
  2. 输入 Solana 交易签名(例如 4xKu...aBcD
  3. 选择追踪深度(0-3层)
  4. 点击 "Trace" 按钮
  5. 查看结果,包括:
    • 交易摘要信息
    • 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.json

项目结构

sol-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           # 项目说明

API 接口

POST /api/trace

请求参数

{
  "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.

Mermaid 图表

graph LR
  N0[9fX...abc] -->|1000 USDC| N1[H7b...def]
  N1 -->|1000 USDC| N2[CzL...ghi]
Loading

配置选项

环境变量

在后端目录下创建 .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

联系方式

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors