JSPM

uniswapx-analyzer

2.0.0
    • ESM via JSPM
    • ES Module Entrypoint
    • Export Map
    • Keywords
    • License
    • Repository URL
    • TypeScript Types
    • README
    • Created
    • Published
    • Downloads 3
    • Score
      100M100P100Q30735F
    • License MIT

    優化版 UniswapX 交易分析工具 - 專注於數據抓取、格式轉換和交易分析

    Package Exports

    • uniswapx-analyzer
    • uniswapx-analyzer/src/analyzers/index.js

    This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (uniswapx-analyzer) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

    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 → Reporters

    2️⃣ 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 Bot

    3️⃣ 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)   │
                                         └─────────────┘

    🎯 使用場景

    1. 本地開發分析: 直接使用 src/ 組件進行深度分析
    2. 自動化監控: GitHub Actions 定期同步和報告
    3. 交互式查詢: 透過 Slack 機器人進行自然語言查詢
    4. 雲端 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/                   # 處理後的訂單數據