1478 words
7 minutes
打造预测市场的“赛博终端”:Polymarket 实时数据监控系统架构设计
摘要:随着预测市场(Prediction Markets)的爆发式增长,Polymarket 已成为捕捉全球热点事件概率的链上预言机。但原始的链上数据和订单簿数据充满了噪音。本文将从架构师视角,深入剖析如何构建一个企业级的 Polymarket 数据监控与分析系统——PolyAlpha。我们将探讨如何处理混合交易机制数据、设计实时异常检测引擎,以及如何构建“聪明钱”追踪系统。
1. 背景与痛点
Polymarket 与传统的 Token 交易市场(如 Uniswap 或 Binance)有着本质区别:
- 二元期权机制:价格代表概率,范围严格限制在 0-1 之间。
- 混合流动性:同时存在 CLOB(中央限价订单簿)和 AMM(自动做市商)流动性。
- 信息不对称:新闻、内幕消息对价格的影响比技术指标更直接。
痛点:普通用户面对成百上千的市场,无法实时捕捉到“突发新闻”导致的价格剧变,也无法分辨是“散户跟风”还是“巨鲸建仓”。我们需要一个系统,能将数据转化为信号。
2. 产品功能定义
在设计架构之前,我们先明确 PolyAlpha 的核心功能矩阵:
- 🎯 实时异动雷达 (Real-time Anomaly Radar)
- 毫秒级监控 100+ 热门市场的成交量飙升、价格剧烈波动。
- 基于多因子模型的“异动评分系统”。
- 🐋 聪明钱追踪 (Smart Money Tracker)
- 识别高胜率地址(Smart Money)和巨鲸(Whales)。
- 实时推送聪明钱的开仓行为。
- ⚖️ 套利与逻辑分析 (Arbitrage & Logic Engine)
- 监控互斥市场(Mutually Exclusive)的概率总和是否偏离 100%。
- 发现逻辑相关的市场价差(如“特朗普胜选” vs “共和党胜选”)。
3. 系统总体架构设计
为了满足高并发、低延迟和数据一致性的要求,我们采用 微服务 + 事件驱动 的架构。
3.1 架构全景图
graph TD
%% ===== 数据源层 =====
subgraph DS
DSLabel["数据源层"]
PolyAPI["Polymarket CLOB API\nWebSocket"]
ChainRPC["Polygon RPC\nOn-chain Events"]
GammaAPI["Gamma API\nMetadata"]
end
%% ===== 接入层 =====
subgraph IN
INLabel["数据接入与清洗"]
WS_Client["WebSocket Ingestor"]
Chain_Indexer["Chain Event Indexer"]
Metadata_Syncer["Metadata Syncer"]
Normalizer["数据标准化模块"]
end
%% ===== 核心处理层 =====
subgraph PROC
PROCLabel["流式计算核心"]
MQ["Kafka / Redpanda\n消息队列"]
StreamEngine["流式计算引擎\nFlink / Python Rx"]
AnomalyEngine["异常检测引擎"]
WhaleEngine["地址画像引擎"]
ArbEngine["套利计算引擎"]
end
%% ===== 存储层 =====
subgraph STORE
STORELabel["多级存储"]
Redis["Redis Cluster\n实时热数据/缓存"]
TimescaleDB["TimescaleDB\n历史K线/交易流"]
Postgres["Postgres\n用户数据/元数据"]
end
%% ===== 服务层 =====
subgraph SVC
SVCLabel["API与推送"]
APIGateway["API Gateway"]
WSServer["WebSocket Server\n前端推送"]
AlertService["通知服务\nTelegram/Discord"]
end
%% ===== 终端 =====
subgraph CLIENT
CLIENTLabel["终端"]
WebDashboard["Web Dashboard"]
MobileApp["Mobile App"]
end
%% ===== 连接关系 =====
PolyAPI --> WS_Client
ChainRPC --> Chain_Indexer
GammaAPI --> Metadata_Syncer
WS_Client --> Normalizer
Chain_Indexer --> Normalizer
Metadata_Syncer --> Normalizer
Normalizer --> MQ
MQ --> StreamEngine
StreamEngine --> AnomalyEngine
StreamEngine --> WhaleEngine
StreamEngine --> ArbEngine
AnomalyEngine --> Redis
WhaleEngine --> TimescaleDB
ArbEngine --> Redis
Redis --> APIGateway
TimescaleDB --> APIGateway
Postgres --> APIGateway
APIGateway --> WebDashboard
APIGateway --> MobileApp
Redis --> WSServer
WSServer --> WebDashboard
WSServer --> MobileApp
AnomalyEngine --> AlertService
%% 隐藏占位 label 的边框(可选美观)
style DSLabel fill:none,stroke:none
style INLabel fill:none,stroke:none
style PROCLabel fill:none,stroke:none
style STORELabel fill:none,stroke:none
style SVCLabel fill:none,stroke:none
style CLIENTLabel fill:none,stroke:none
4. 核心模块实现逻辑
4.1 数据接入层 (Ingestion Layer)
这是系统的“眼睛”。Polymarket 的数据具有双重性,我们需要同时处理:
- CLOB 数据 (Off-chain): 通过 WebSocket 连接 Polymarket 的 Orderbook API。这是最高频的数据,包含每一笔撮合(Match)和挂单(Order)。
- 链上数据 (On-chain): 监听 Polygon 链上的 CTF (Conditional Token Framework) 合约事件。用于验证真实的资金流转和最终结算状态。
实现难点与对策:
- 断连重连:WebSocket 必须具备心跳检测和自动重连机制,重连期间需通过 REST API 补录丢失数据。
- 数据标准化:将链上的
Split/Merge事件和 CLOB 的Match事件统一转化为标准的Trade结构体。
4.2 流式计算与异常检测 (The “Brain”)
这是系统的核心。我们不只是存储数据,而是在数据流经内存时即刻进行分析。
逻辑流程:
- 时间窗口聚合:对每个 Market ID 维护一个滑动窗口(例如 5分钟、30分钟)。
- 实时指标计算:
Volume_Delta: 当前窗口成交量 vs 历史均值。Price_Velocity: 价格变化速度(一阶导数)。Buy_Sell_Ratio: 主动买入 vs 主动卖出比例。
- 评分模型 (Scoring Model):
- 系统为每个事件打分(0-100)。
- 如果
Score > Threshold,立即触发报警,并写入 Redis 的“热门异动”有序集合 (Sorted Set)。
4.3 聪明钱画像引擎 (Smart Money Profiling)
如何区分“运气好”和“真大佬”?我们需要建立地址画像库。
实现逻辑:
- 历史回溯:每日定时任务扫描历史结算数据。
- 指标计算:
- ROI (投资回报率):
(总盈利 - 总投入) / 总投入。 - Win Rate (胜率):
盈利次数 / 总下注次数。 - Alpha Score: 该地址介入后,价格平均上涨幅度(衡量其对市场的影响力)。
- ROI (投资回报率):
- 标签系统:
- 根据指标将地址打标:
Smart_Money,Whale,High_Frequency_Bot,Loser。
- 根据指标将地址打标:
- 实时匹配:当实时流中出现
Trade事件时,立即查询发送方地址的标签。如果是Smart_Money,则该笔交易的权重(Weight)瞬间放大,触发跟单信号。
4.4 存储策略 (Storage Strategy)
为了平衡性能与成本,采用冷热分离策略:
- Hot Data (Redis):
- 存储实时的排行榜(Top Gainers, Top Volume)。
- 存储最近 1 小时的 K 线数据(用于前端快速渲染)。
- 存储最新的 50 条异动信号。
- Warm/Cold Data (TimescaleDB):
- 基于 PostgreSQL 的时序数据库。
- 存储所有的历史 Tick 数据和分钟级 K 线。
- 利用 Timescale 的
Continuous Aggregates功能,自动计算小时级和天级的统计数据,加速历史查询。
打造预测市场的“赛博终端”:Polymarket 实时数据监控系统架构设计
https://blog.ithuo.net/posts/prddiction-polymarket-alpha-architecture-design/