uniswapx-analyzer
v2.0.0
Published
優化版 UniswapX 交易分析工具 - 專注於數據抓取、格式轉換和交易分析
Maintainers
Readme
UniswapX Multi-Chain 自動化分析系統 🚀
支援多鏈的 UniswapX 交易全自動化分析工具,具備智能數據管理、雲端備份、自動報表和失敗監控功能。
🌐 多鏈支援
- Base Chain - Priority Order Reactor (主要支援)
- Ethereum - Dutch Order Reactor, Limit Order Reactor
- Unichain - 未來支援
- Extensible Architecture - 易於擴展更多鏈
🎯 核心功能
1️⃣ 自動數據同步
- 每小時自動同步最新交易數據
- 每日壓縮並合併到主分支
- 完整的數據版本控制
2️⃣ 智能數據管理
- 自動數據壓縮與備份
- Google Drive 雲端儲存
- 歷史數據清理機制
3️⃣ 市場報表
- 自動生成每日市場報告
- 支援多種報告格式
- Slack 通知整合
4️⃣ 本地分析工具
- 交易深度分析
- Portus 訂單 Effective Gas Price 分析
- 自定義分析功能
- 靈活的報告選項
5️⃣ 雲端服務整合
- MCP (Model Context Protocol) 伺服器 - 提供 HTTP 數據接口
- AI 智能 Slack 機器人 - Gemini 驅動的分析助手
- Google Cloud Run 部署 - 高可用性雲端服務
⚡ 系統優勢
- 🤖 完全自動化 - 定時任務和數據管理
- 🔄 分支管理 - data-updates 用於同步,main 用於報告
- ☁️ 混合儲存 - GitHub(30 天)+ Google Drive(無限歷史)
- 🚀 極速同步 - 支援增量同步和壓縮檔案處理
- 🛡️ 容錯設計 - 時間驗證、錯誤恢復、失敗通知
- 📊 實時監控 - Slack 整合,狀態透明可視
- ⚡ 現代化環境 - 原生 Node.js --env-file 支援,統一 API 客戶端架構
🚀 快速開始
安裝配置
# 1. 克隆項目
git clone https://github.com/dinngo/UniswapXAnalyzer.git
cd UniswapXAnalyzer
# 2. 安裝依賴
npm install
# 3. 配置環境變數 (Node.js v20.6.0+ 原生支援)
cp env.example .env
# 編輯 .env 添加必要的設定 (自動使用 --env-file=.env)🔑 多鏈環境變數配置
# === 多鏈 RPC 設定 ===
BASE_RPC_URL=https://mainnet.base.org # Base Chain RPC URL
ETHEREUM_RPC_URL=https://mainnet.infura.io/v3/... # Ethereum RPC URL
UNICHAIN_RPC_URL=https://unichain-rpc-endpoint # Unichain RPC URL (未來)
# === 統一 Etherscan API 設定 ===
ETHERSCAN_API_KEY=your_etherscan_api_key # 單一 API Key 支援所有鏈 (Ethereum, Base)
# === Portus API 設定 (通用) ===
PORTUS_API_URL=https://ft17cvds0h.execute-api.eu-central-1.amazonaws.com/prod # Portus API 端點
PORTUS_API_KEY=your_portus_api_key # Portus API 金鑰,用於訂單填充數據查詢
# === Slack 整合 ===
SLACK_WEBHOOK_URL=https://hooks.slack.com/... # 一般通知用 Webhook URL
SLACK_INFO_WEBHOOK_URL=https://hooks.slack.com/... # 資訊通知用 Webhook URL
SLACK_FAILURE_WEBHOOK_URL=https://hooks.slack.com/... # 錯誤通知用 Webhook URL
# === Google Drive 備份 (使用 rclone) ===
# RCLONE_CONFIG=<rclone 配置檔案的 Base64 編碼> # Local 使用 ~/.config/rclone/rclone.conf,GitHub Actions 使用 secrets.RCLONE_CONFIG📋 使用指南
1️⃣ 本地分析工具
# === 分析特定交易 ===
npm run analyze # 啟動交易分析工具
# 基礎分析指定交易:
npm run analyze <tx_hash> # 分析指定的交易哈希
npm run analyze <tx_hash> --verbose # 顯示詳細的分析過程
# === 比較分析 ===
npm run analyze:compare <tx_hash> # 分析交易並與 Portus 數據比較
# === 查看幫助 ===
npm run analyze:help # 顯示分析工具的使用說明2️⃣ 報告生成
# === 生成報告 ===
npm run report:daily # 生成昨日報告
npm run report:daily -- --date=2024-03-20 # 生成指定日期報告
npm run report:weekly # 生成上週報告
npm run report:weekly -- --date=2024-03-20 # 生成指定週報告
# === 高收益/虧損訂單報告 ===
npm run report:high-profit # 生成高收益訂單報告(預設門檻 $30, 最大 20 筆)
npm run report:high-profit -- --threshold 200 # 設定收益門檻為 $200
npm run report:high-profit -- --threshold -50 # 設定虧損門檻為 $-50
npm run report:high-profit -- --date 2024-03-20 # 分析指定日期的訂單
npm run report:high-profit -- --filler 0x1234...5678 # 分析指定 filler 的訂單
# 組合使用範例:
npm run report:high-profit -- \
--threshold -50 \
--filler 0xabcd... \
--date 2024-03-01 \
--max-orders 30
# === CSV 報告 ===
npm run report:csv -- --start=2024-03-19 --end=2024-03-20 # 生成指定日期範圍的 CSV 報告
npm run report:jsonl-to-csv # 將 JSONL 檔案轉換為 CSV 格式
npm run report:csv-portus-effective-gas -- --start-date="2025-09-20" --end-date="2025-09-23" # 生成 Portus 訂單 Effective Gas Price 分析報告
# === Token Pair 報告 ===
npm run report:token-pair -- --start-date=2024-06-01 --end-date=2024-06-30 --output=reports/token_pair_summary.csv # 生成指定日期範圍的 Token Pair 報告
# === 報告測試 ===
npm run report:test # 測試報告生成功能3️⃣ 數據同步與維護
# === 數據同步 ===
npm run sync # 執行數據同步(昨日至現在)
npm run sync -- --stats # 顯示同步效能統計
npm run sync -- --start="2024-03-19 00:00" --end="2024-03-19 23:59" # 同步指定日期
npm run sync -- --start="2024-03-19 14:30" --end="2024-03-19 15:30" # 同步指定時間範圍
# === 維護功能 ===
npm run maintenance:daily # 執行每日維護任務
npm run maintenance:status # 查看儲存狀態
npm run maintenance:cleanup # 清理舊檔案(預設保留 30 天)
npm run maintenance:cleanup -- 60 # 清理舊檔案(保留 60 天)
npm run maintenance:compress <file> # 壓縮指定檔案
npm run maintenance:upload <file> # 上傳檔案到 Google Drive
# === 檔案壓縮 ===
npm run compress -- data/base/priority-orders/2024-03-19.jsonl # 壓縮單個檔案
npm run compress -- data/base/priority-orders/2024-03-19.jsonl data/archive/2024-03-19.jsonl.gz # 指定輸出路徑
npm run decompress -- data/base/priority-orders/2024-03-19.jsonl.gz # 解壓縮單個檔案
npm run decompress -- data/base/priority-orders/2024-03-19.jsonl.gz data/restored/2024-03-19.jsonl # 指定輸出路徑
# === 維護任務會:
# 1. 壓縮昨日數據檔案(.jsonl -> .jsonl.gz)
# 2. 上傳壓縮檔到 Google Drive 備份
# 3. 清理超過 30 天的本地檔案4️⃣ 開發測試工具
# === 測試 ===
npm test # 執行單元測試(適用於日常開發和 CI)
npm run test:integration # 執行整合測試(需要外部服務連接)
npm run test:all # 執行所有測試(單元測試 + 整合測試)
npm run test:file <test_file_path> # 執行指定的測試文件
# === 單元測試分類 ===
npm run test:analyzers # 測試分析工具
npm run test:reporters # 測試報告生成功能
npm run test:clients # 測試 API 客戶端
npm run test:utils # 測試通用工具函數
npm run test:sync # 測試數據同步功能
# === 本地開發測試 ===
# 1. 設定測試環境變數
cp env.example .env
vim .env # 編輯必要的設定
# 2. 準備測試數據
mkdir -p data/base/priority-orders
cp test-data/sync/sample.jsonl data/base/priority-orders/2024-03-20.jsonl
# 3. 測試工作流程
npm run maintenance:test # 測試維護功能
# 4. 檢視結果
npm run maintenance:status # 查看數據狀態
cat results/latest-report.txt # 查看最新報告📦 rclone Google Drive 設定
# 1. 安裝 rclone
curl https://rclone.org/install.sh | sudo bash
# 2. 配置 Google Drive
rclone config
# 選擇: Google Drive
# 範圍: drive.file (較安全)
# 使用網頁瀏覽器認證
# 3. 測試連線
rclone lsd gdrive:
# 4. 生成 GitHub Secrets
base64 ~/.config/rclone/rclone.conf
# 將輸出設定為 RCLONE_CONFIG secret🤖 GitHub Actions 自動化
| 工作流程 | 觸發條件 | 說明 | | --------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Unified Data Processing | 手動觸發 | • 綜合數據處理工作流程• 數據同步 + 高收益分析 + 每日報告• 支援測試模式(使用 SLACK_DEV_WEBHOOK_URL)• 失敗通知(使用 SLACK_FAILURE_WEBHOOK_URL) | | Weekly Report | 手動觸發 | • 生成並發送週報到 Slack• 支援指定日期參數• 支援測試模式(使用 SLACK_DEV_WEBHOOK_URL) |
🔧 工作流程參數
Unified Data Processing
- test: 測試模式,使用
SLACK_DEV_WEBHOOK_URL替代所有 Slack 通知
Weekly Report
- date: 指定報告日期 (YYYY-MM-DD),預設為昨天
- test: 測試模式,使用
SLACK_DEV_WEBHOOK_URL替代SLACK_WEBHOOK_URL
🔧 GitHub Secrets 設定
在 GitHub repository 的 Settings > Secrets and variables > Actions 中設定:
# === 必要設定 ===
BASE_RPC_URL=https://mainnet.base.org
ETHEREUM_RPC_URL=https://mainnet.infura.io/v3/your-key
ETHERSCAN_API_KEY=your_api_key # 統一所有鏈的 API Key
PORTUS_API_URL=https://ft17cvds0h.execute-api.eu-central-1.amazonaws.com/prod
PORTUS_API_KEY=your_portus_api_key
# === Slack 通知設定 ===
SLACK_WEBHOOK_URL=https://hooks.slack.com/services/... # 一般報告用
SLACK_INFO_WEBHOOK_URL=https://hooks.slack.com/services/... # 高收益訂單報告用
SLACK_FAILURE_WEBHOOK_URL=https://hooks.slack.com/services/... # 錯誤通知用
SLACK_DEV_WEBHOOK_URL=https://hooks.slack.com/services/... # 測試模式用
# === Google Drive 同步 ===
# RCLONE_CONFIG=<rclone 配置檔案的 Base64 編碼> # Local 使用 ~/.config/rclone/rclone.conf,GitHub Actions 使用 secrets.RCLONE_CONFIG📁 專案結構
.
├── src/ # 核心分析系統源代碼
│ ├── analyzers/ # 交易分析工具 (多鏈架構)
│ │ ├── ReactorAnalyzerFactory.js # 🏭 多鏈分析器工廠 (核心)
│ │ ├── BaseReactorAnalyzer.js # 抽象基礎分析器
│ │ ├── PriorityOrderAnalyzer.js # Base Chain Priority Order 分析
│ │ ├── DutchOrderAnalyzer.js # Ethereum Dutch Order 分析
│ │ ├── LimitOrderAnalyzer.js # Ethereum Limit Order 分析
│ │ ├── SimpleTransactionAnalyzer.js # 基礎交易分析
│ │ ├── ProfitCalculator.js # 收益計算器
│ │ └── FundFlowAnalyzer.js # 資金流向分析
│ │
│ ├── clients/ # API 客戶端
│ │ ├── UniswapXEventListener.js # UniswapX 事件監聽器
│ │ ├── EtherscanApiClient.js # 統一多鏈區塊鏈瀏覽器 API 客戶端 (替代 BaseScanApiClient)
│ │ ├── UnifiedRpcClient.js # 統一 RPC 客戶端
│ │ ├── PortusApiClient.js # Portus API 客戶端
│ │ └── UnifiedTraceManager.js # 交易追蹤管理器
│ │
│ ├── reporters/ # 報告生成工具
│ │ ├── SlackReporter.js # Slack 報告生成器
│ │ ├── HighProfitReporter.js # 高收益報告生成器
│ │
│ ├── sync/ # 數據同步相關
│ │ ├── DataMaintenanceManager.js # 數據維護管理器
│ │ └── DataSyncManager.js # 數據同步管理器
│ │
│ └── utils/ # 通用工具函數
│ ├── GoogleDriveManager.js # Google Drive 管理
│ ├── FileUtils.js # 文件操作工具
│ ├── DataAccessManager.js # 數據訪問管理
│ ├── TokenInfoManager.js # 代幣信息管理
│ ├── TimeUtils.js # 時間處理工具
│ ├── JsonUtils.js # JSON 處理工具
│ ├── TokenValueCalculator.js # 代幣價值計算器
│ ├── PriorityOrderDecoder.js # Priority訂單解碼器
│ ├── ExclusiveDutchOrderDecoder.js # ExclusiveDutch訂單解碼器
│ └── tradingTypeIdentifier.js # 交易類型識別器
│
├── packages/ # 雲端服務套件
│ └── uniswapx-analyzer-mcp/ # MCP 伺服器套件
│ ├── src/ # MCP 伺服器源代碼
│ │ ├── server.js # MCP 主伺服器
│ │ ├── GoogleDriveApiClient.js # Google Drive API 客戶端
│ │ └── PackageDataService.js # 數據服務層
│ ├── package.json # NPM 套件配置
│ └── Dockerfile # Docker 容器配置
│
├── uniswapx-slack-bot/ # AI Slack 機器人
│ ├── bot_mcp.py # 主機器人應用程式
│ ├── requirements.txt # Python 依賴項
│ ├── Dockerfile # Docker 容器配置
│ └── tests/ # 機器人測試
│ └── test_mcp_connection.py # MCP 連接測試
│
├── deployment/ # 雲端部署配置
│ ├── deploy-mcp-server.sh # MCP 伺服器部署腳本
│ ├── deploy-slack-bot.sh # Slack 機器人部署腳本
│ └── README.md # 部署說明文件
│
├── config/ # 配置文件
│ ├── uniswapx.js # UniswapX 多鏈配置和常數
│ └── abi/ # ABI 定義
│ ├── reactor.js # Reactor 合約 ABI
│ ├── tokens.js # 代幣相關 ABI
│ └── index.js # ABI 導出索引
│
├── data/ # 數據目錄(多鏈結構)
│ ├── base/ # Base Chain 數據
│ │ ├── sync/
│ │ │ └── priority-orders/ # Priority Order 數據(JSONL)
│ │ ├── orders/ # 處理後的訂單數據
│ │ └── token-cache.json # Base Chain 代幣緩存
│ ├── ethereum/ # Ethereum 數據
│ │ ├── sync/
│ │ │ ├── dutch-orders/ # Dutch Order 數據
│ │ │ └── limit-orders/ # Limit Order 數據
│ │ └── orders/ # 處理後的訂單數據
│ └── shared/ # 共享數據
│ └── migration-log.json # 數據遷移日誌
│
├── tests/ # 測試文件
│ ├── analyzers/ # 分析工具測試
│ ├── clients/ # API 客戶端測試
│ ├── reporters/ # 報告生成測試
│ ├── sync/ # 同步功能測試
│ ├── utils/ # 工具函數測試
│ └── mocks/ # Mock 物件
│
├── scripts/ # 腳本工具
└── reports/ # 生成的報告🏗️ 系統架構與組件關係
架構概覽
┌───────────────────────────────────────────────────┐
│ GOOGLE CLOUD PLATFORM │
├───────────────────────────────────────────────────┤
│ │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Cloud Run │ │ Cloud Run │ │
│ │ (Slack Bot) │ HTTP │ (MCP Server) │ │
│ │ │◄────►│ │ │
│ │ Python + AI │ │ Node.js + MCP │ │
│ │ Port: 8080 │ │ Port: 3000 │ │
│ └─────────────────┘ └─────────────────┘ │
│ │ │ │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Slack │ │ Google Drive │ │
│ │ Workspace │ │ (Data Store) │ │
│ └─────────────────┘ └─────────────────┘ │
└───────────────────────────────────────────────────┘
│ │
┌───────────────────────────────────────────────────┐
│ ANALYSIS SYSTEM │
├───────────────────────────────────────────────────┤
│ │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Analyzers │ │ Data Sync │ │
│ │ (src/*) │◄────►│ (GitHub Auto) │ │
│ │ │ │ │ │
│ │ • Profit Calc │ │ • Hourly Sync │ │
│ │ • Flow Analysis │ │ • Daily Reports │ │
│ │ • Portus Compare│ │ • Maintenance │ │
│ └─────────────────┘ └─────────────────┘ │
│ │ │ │
│ ┌──────────────────────────────────────────┐ │
│ │ BLOCKCHAIN DATA │ │
│ │ │ │
│ │ Base Chain ◄─► Local ◄─► Google Drive │ │
│ └──────────────────────────────────────────┘ │
└───────────────────────────────────────────────────┘🏗️ 多鏈架構設計
清潔架構模式 (Clean Architecture)
本專案採用清潔架構模式,透過工廠模式來強制正確的實例化流程:
// ✅ 推薦做法 - 使用工廠模式
import { ReactorAnalyzerFactory } from './src/analyzers/ReactorAnalyzerFactory.js';
// 創建 Base Chain Priority Order 分析器
const analyzer = ReactorAnalyzerFactory.createByType('base', 'PriorityOrderReactor', {
enableLogging: true,
});
// 創建 Ethereum Dutch Order 分析器
const ethAnalyzer = ReactorAnalyzerFactory.createByType('ethereum', 'DutchOrderReactor', options);
// 使用統一的公共接口分析交易
const results = await analyzer.analyzeTransactions([txHash1, txHash2], options);// ❌ 不推薦 - 直接實例化會繞過配置驗證
const analyzer = new PriorityOrderAnalyzer(); // 缺少鏈配置驗證核心架構組件
- ReactorAnalyzerFactory 🏭 - 中央工廠,負責創建所有分析器實例
- BaseReactorAnalyzer - 抽象基類,提供統一的公共接口
- Chain-Specific Analyzers - 各鏈專用分析器實現
- Private Method Pattern - 內部實現方法私有化,確保封裝
組件職責與互動關係
1️⃣ 核心分析系統 (src/)
職責:
- 多鏈交易數據分析和處理
- 收益計算、資金流向分析
- 與多個區塊鏈 API 交互
- 工廠模式驗證和配置管理
主要組件:
- Analyzers: 執行深度交易分析
- Clients: 管理 API 連接 (BaseScan、Portus、UniswapX)
- Reporters: 生成各種格式報告
- Sync: 自動化數據同步和維護
數據流:
區塊鏈 → API Clients → Analyzers → Local Storage/Google Drive → Reporters2️⃣ MCP 伺服器 (packages/uniswapx-analyzer-mcp/)
職責:
- 提供標準化的 HTTP API 接口
- 橋接本地分析系統與雲端服務
- 實現 Model Context Protocol 標準
技術規格:
- 平台: Node.js + Express.js
- 傳輸: HTTP/SSE (Server-Sent Events)
- 部署: Google Cloud Run (asia-east1)
- 端點:
/health,/sse
數據流:
Google Drive ← GoogleDriveApiClient ← PackageDataService ← HTTP API ← Slack Bot3️⃣ AI Slack 機器人 (uniswapx-slack-bot/)
職責:
- 自然語言查詢處理
- 智能數據檢索和格式化
- 用戶交互界面
技術規格:
- 平台: Python + Slack Bolt SDK
- AI 引擎: Google Gemini 2.5-flash
- 連接: Socket Mode + HTTP 健康檢查
- 部署: Google Cloud Run (asia-east1)
交互流程:
用戶 Slack 訊息 → Bot 解析 → Gemini AI 處理 → MCP 數據查詢 → 格式化回應 → Slack 頻道4️⃣ 自動化系統 (GitHub Actions)
職責:
- 定時數據同步 (每小時)
- 自動報告生成 (每日/每週)
- 數據維護和備份
工作流程:
- Unified Data Processing: 綜合數據處理和報告
- Weekly Report: 週報生成和發送
🔄 數據流向圖
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Base Chain │───►│ Local Sync │───►│Google Drive │
│ (Live Data) │ │ (JSONL) │ │ (Backup) │
└─────────────┘ └─────────────┘ └─────────────┘
│ │
▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Analyzers │◄───│ Data Access │───►│ MCP Server │
│ (Insights) │ │ Manager │ │ (HTTP API) │
└─────────────┘ └─────────────┘ └─────────────┘
│ │
▼ ▼
┌─────────────┐ ┌─────────────┐
│ Reporters │ │ Slack Bot │
│ (Output) │ │ (AI Query) │
└─────────────┘ └─────────────┘
│ │
▼ ▼
┌─────────────┐ ┌─────────────┐
│ Slack │◄─────────────────────│ Users │
│ Channels │ │ (Natural │
└─────────────┘ │ Language) │
└─────────────┘🎯 使用場景
- 本地開發分析: 直接使用
src/組件進行深度分析 - 自動化監控: GitHub Actions 定期同步和報告
- 交互式查詢: 透過 Slack 機器人進行自然語言查詢
- 雲端 API: MCP 伺服器提供標準化數據接口
📊 數據格式說明
JSONL 格式 (原始數據)
每行一個 JSON 對象,包含完整的 UniswapX 訂單分析:
{
"txHash": "0x9b9d8e...", # 交易哈希
"functionType": "EXECUTE_WITH_CALLBACK", # 執行函數類型
"analysisMethod": "unified_trace", # 分析方法
"gasUsed": 2502978, # 使用的 Gas 量
"gasPrice": 1252494, # Gas 價格(wei)
"blockNumber": 31837335, # 區塊號碼
"trigger": "0x1d93...", # 觸發者地址
"filler": "0x7ae7...", # 訂單填充者地址
"priorityOrder": { # 優先訂單信息
"info": {
"reactor": "0x...", # Reactor 合約地址
"swapper": "0x...", # 交換發起者地址
"nonce": "529970...", # 訂單 nonce
"deadline": "1750464191", # 訂單截止時間
"additionalValidationContract": "0x...", # 額外驗證合約
"additionalValidationData": "0x" # 額外驗證數據
},
"cosigner": "0x...", # 共同簽署者
"auctionStartBlock": "31837344", # 拍賣開始區塊
"baselinePriorityFeeWei": "0", # 基準優先費用
"input": {
"token": "0x...", # 輸入代幣地址
"amount": "35226771444894103747925933", # 輸入金額
"mpsPerPriorityFeeWei": "0" # 每 wei 優先費用的 MPS
},
"outputs": [ # 輸出列表
{
"token": "0x...", # 輸出代幣地址
"amount": "322950325", # 輸出金額
"mpsPerPriorityFeeWei": "1", # 每 wei 優先費用的 MPS
"recipient": "0x..." # 接收者地址
}
]
},
"resolvedOrder": { # 解析後的訂單
"info": { ... }, # 同 priorityOrder.info
"input": {
"token": "0x...",
"amount": "35226771444894103747925933",
"maxAmount": "35226771444894103747925933"
},
"outputs": [ ... ], # 同 priorityOrder.outputs
"sig": "0x...", # 訂單簽名
"hash": "0x..." # 訂單哈希
},
"orderHash": "0x...", # 訂單哈希
"tradingType": "SELL_EXACT", # 交易類型
"calculationMethod": "fundFlowAnalysis", # 計算方法
"userInput": { # 用戶輸入信息
"token": "0x...", # 代幣地址
"expectedAmount": "35226771444894103747925933", # 預期金額
"actualAmount": "35226771444894103747925933", # 實際金額
"netAmount": "0", # 淨額
"netUsdValue": 0, # 淨 USD 價值
"actualUsdValue": 334.905661 # 實際 USD 價值
},
"userOutput": { # 用戶輸出信息
"token": "0x...",
"expectedAmount": "322950325",
"actualAmount": "331994452",
"netAmount": "9044127",
"netUsdValue": 9.044127,
"actualUsdValue": 331.994452
},
"protocolFee": { # 協議費用
"token": "0x...",
"expectedAmount": "809399",
"actualAmount": "832066",
"netAmount": "22667",
"netUsdValue": 0.022667,
"actualUsdValue": 0.832066
},
"userProfit": { # 用戶收益
"amount": "9044127",
"token": "0x...",
"type": "output_scaling",
"tradingType": "SELL_EXACT",
"usdValue": 9.044127
},
"fillerProfit": { # 填充者收益
"totalTokens": 1,
"valueTokens": 1,
"calculable": true,
"totalUsdValue": 0.364694,
"netFlows": [
{
"token": "0x...",
"amount": "364694",
"usdValue": 0.364694
}
]
},
"orderTotalProfit": { # 訂單總收益
"totalTokens": 1,
"valueTokens": 1,
"calculable": true,
"totalUsdValue": 9.431488,
"netFlows": [
{
"token": "0x...",
"amount": "9431488",
"usdValue": 9.431488
}
]
},
"orderUsdSummary": { # 訂單 USD 總結
"orderValueUsd": 334.905661, # 訂單總價值
"userProfitUsd": 9.044127, # 用戶收益
"protocolFeeUsd": 0.022667, # 協議費用
"fillerProfitUsd": 0.364694, # 填充者收益
"orderTotalProfitUsd": 9.431488, # 總收益
"scalingEffectUsd": 9.066794, # 縮放效應
"fillerProfitRatio": 0.038667 # 填充者收益比率
}
}數據文件命名
- 格式:
YYYY-MM-DD.jsonl - 壓縮文件:
YYYY-MM-DD.jsonl.gz - 每個文件包含當天的所有交易數據
- 超過 30 天的數據會被自動壓縮
數據目錄結構
data/
├── sync/ # 原始同步數據
│ ├── YYYY-MM-DD.jsonl # 最近 30 天的數據
│ └── YYYY-MM-DD.jsonl.gz # 壓縮的歷史數據
├── events/ # 處理後的事件數據
└── orders/ # 處理後的訂單數據