高性能 WebSocket 服务器,用于实时推送 Solana DEX 事件,微秒级延迟
English | 中文 | Website | Telegram | Discord
基于 sol-parser-sdk 的 Solana DEX 事件 WebSocket 代理服务器。实时监听 PumpFun, Raydium, Orca 等 DEX 交易事件,通过 WebSocket 推送给客户端。
- 🔥 超低延迟 - 基于 sol-parser-sdk 的 10-20μs 解析延迟
- 🌐 WebSocket 实时推送 - 支持多客户端同时连接
- 📊 多协议支持 - PumpFun, Raydium AMM V4/CLMM/CPMM, Orca Whirlpool, Meteora 等
- 🎯 事件过滤 - 仅推送关注的事件类型
- ⚙️ TOML 配置 - 所有参数可通过配置文件灵活调整
- 🔄 自动重连 - 客户端断线自动清理
- 📝 多语言客户端 - 提供 HTML, TypeScript, Python 示例
┌─────────────────┐
│ Yellowstone gRPC│
│ (Solana RPC) │
└────────┬────────┘
│
▼
┌─────────────────┐
│ sol-parser-sdk │
│ (10-20μs 解析) │
└────────┬────────┘
│
▼
┌─────────────────┐
│ WebSocket 服务器│
│ (广播事件) │
└────────┬────────┘
│
▼
┌─────────────────────────────────────┐
│ 客户端 (HTML/TS/Python/...) │
│ (实时接收 DEX 事件) │
└─────────────────────────────────────┘
git clone https://github.com/0xfnzero/parser-proxy-ws.git
cd parser-proxy-wscargo build --release编辑 config.toml 配置文件:
[server]
host = "127.0.0.1"
port = 9001
[grpc]
endpoint = "https://solana-yellowstone-grpc.publicnode.com:443"
token = "" # 可选:填入你的 gRPC token
enable_metrics = true
enable_tls = true
connection_timeout_ms = 10000
request_timeout_ms = 30000
[protocols]
pumpfun = true
raydium_amm_v4 = true
raydium_clmm = true
orca_whirlpool = true
# ... 更多协议
[events]
pumpfun_trade = true
pumpfun_create = true
raydium_amm_v4_swap = true
# ... 更多事件类型方式 1: 使用启动脚本(推荐)
./start-server.sh方式 2: 直接运行
cargo run --release服务器将根据配置文件启动(默认 ws://127.0.0.1:9001)
方式 1: 使用启动脚本(推荐)
./start-client.sh脚本会提示选择客户端类型:
- HTML 客户端(浏览器可视化,自动转换 Pubkey/Signature)
- TypeScript 客户端(终端,自动转换 Pubkey/Signature)
- Python 客户端(终端,自动转换 Pubkey/Signature + 延迟计算)
方式 2: 手动启动
open examples/client.html✨ 特性:
- 自动将 Pubkey/Signature 转换为 base58 字符串
- 实时显示延迟(gRPC → 客户端)
- 延迟颜色标识(🟢 < 50ms, 🟡 < 100ms, 🔴 ≥ 100ms)
- ⏸️ 暂停/恢复功能 - 点击暂停按钮可暂停事件更新,方便查看详情
cd examples
npm install
npm start✨ 特性:
- 使用 @solana/web3.js 和 bs58 自动转换
- 终端实时显示延迟(带颜色)
- TypeScript 类型安全
pip3 install websockets base58
python3 examples/client.py✨ 特性:
- 使用
base58库自动转换 Pubkey/Signature - 终端彩色延迟显示
- 微秒级延迟计算
| 协议 | 配置字段 | 说明 |
|---|---|---|
| PumpFun | protocols.pumpfun |
PumpFun Meme 币交易 |
| PumpSwap | protocols.pumpswap |
PumpSwap 交换协议 |
| Bonk | protocols.bonk |
Bonk 发射平台 |
| Raydium AMM V4 | protocols.raydium_amm_v4 |
Raydium 自动做市商 V4 |
| Raydium CLMM | protocols.raydium_clmm |
Raydium 集中流动性做市 |
| Raydium CPMM | protocols.raydium_cpmm |
Raydium 恒定乘积做市 |
| Orca Whirlpool | protocols.orca_whirlpool |
Orca Whirlpool 集中流动性 |
| Meteora AMM | protocols.meteora_amm |
Meteora 动态 AMM |
| Meteora DAMM | protocols.meteora_damm |
Meteora 动态 AMM V2 |
| Meteora DLMM | protocols.meteora_dlmm |
Meteora 动态流动性做市 |
每个协议支持以下事件类型(在 [events] 配置段中启用):
- 📈 Trade/Swap - 交易/兑换事件
- 💧 Deposit - 添加流动性
- 💸 Withdraw - 移除流动性
- 🏊 Create/Initialize - 池创建/初始化
完整事件列表请参考 config.toml 文件。
[server]
host = "127.0.0.1" # WebSocket 监听地址
port = 9001 # WebSocket 监听端口[grpc]
endpoint = "https://solana-yellowstone-grpc.publicnode.com:443"
token = "" # gRPC 认证 token(可选)
enable_metrics = true # 启用性能指标
enable_tls = true # 启用 TLS
connection_timeout_ms = 10000 # 连接超时(毫秒)
request_timeout_ms = 30000 # 请求超时(毫秒)通过配置文件启用/禁用特定协议和事件:
[protocols]
pumpfun = true # 启用 PumpFun 协议
raydium_amm_v4 = false # 禁用 Raydium AMM V4
[events]
pumpfun_trade = true # 启用 PumpFun 交易事件
pumpfun_create = false # 禁用 PumpFun 创建事件注意: 至少需要启用一个协议和一个事件类型,否则服务器启动会失败
服务器发送的原始数据:
- Pubkey: 32 字节数组
- Signature: 64 字节数组
{
"signature": [188, 230, 16, ...], // 64 字节
"mint": [208, 230, 16, ...], // 32 字节
"user": [123, 45, 67, ...] // 32 字节
}客户端显示格式:
- ✅ HTML/TypeScript 客户端:自动转换为 base58 字符串
{ "signature": "5Jb7XqKGPj8XqKGPj8XqKGPj8XqKGPj...", "mint": "D0e610e3f14ed2960e95230e9d74e471...", "user": "7xKGPj8XqKGPj8XqKGPj8XqKGPj8Xq..." } - ✅ Python 客户端:使用 base58 库自动转换
{
"PumpFunTrade": {
"metadata": {
"signature": [byte array],
"slot": 123456,
"block_time": 1234567890,
"grpc_recv_us": 1234567890123456
},
"mint": [byte array],
"token_amount": 1000000,
"sol_amount": 500000,
"is_buy": true,
"user": [byte array],
"virtual_sol_reserves": 1000000000,
"virtual_token_reserves": 1000000000
}
}每个事件都包含在对应的类型字段中:
PumpFunTrade- PumpFun 交易PumpFunCreate- PumpFun 创建RaydiumAmmV4Swap- Raydium AMM 交换RaydiumClmmSwap- Raydium CLMM 交换OrcaWhirlpoolSwap- Orca 交换
parser-proxy-ws/
├── src/
│ ├── main.rs # 主程序入口
│ ├── config.rs # 配置文件加载和解析
│ └── ws_server.rs # WebSocket 服务器实现
├── examples/
│ ├── client.html # HTML 可视化客户端
│ ├── client.ts # TypeScript 客户端示例
│ └── client.py # Python 客户端示例
├── sol-parser-sdk/ # Solana 解析 SDK (子模块)
├── config.toml # 配置文件
├── Cargo.toml # Rust 项目配置
└── README.md
cargo test启动服务器时会显示性能指标:
📊 gRPC 接收时间: 1234567890 μs
⚡ 事件解析耗时: 15 μs
- 交易机器人 - 实时监控 DEX 交易,执行套利策略
- 价格监控 - 跟踪特定代币的交易价格
- 新币监控 - 监听新代币创建事件
- 流动性分析 - 分析 DEX 流动性变化
- 数据分析 - 收集链上交易数据进行分析
MIT License
- sol-parser-sdk - Solana DEX 事件解析库
- Yellowstone gRPC - Solana gRPC 接口
如有问题或建议,请提交 Issue。