内存池 Stream 使用指南

PolyEdge 内存池交易流引擎基于标准 HTTP/2 Server-Sent Events (SSE) 协议,直连底层验证节点 P2P 广播层,在出块前(Pre-block)毫秒级推送撮合的内存池交易数据。

管理方式:您可以直接使用下方的 REST API 进行自动化管理,也可以前往网页端 控制台 Stream 管理 进行可视化创建、修改过滤条件与监控会话。

本指南介绍完整的四步闭环使用流程:创建流配置、建立长连接、在保持连接的前提下动态热更新订阅规则,以及销毁流会话。如需查询您名下当前所有的流配置及活跃会话数,可随时调用 获取流列表 (GET /streams)。


1. 创建流 (POST /streams)

向流网关注册一个内存池流配置,并声明初始过滤条件(支持钱包地址、分类标签及周期系列过滤):

curl -X POST "https://stream.polyedge.dev/streams" \
  -H "Content-Type: application/json" \
  -H "X-PolyEdge-Key: <YOUR_API_KEY>" \
  -d '{
    "name": "Production Copy-Trading Stream",
    "addresses": ["0x2005d16a84ceefa912d4e380cd32e7ff827875ea"],
    "tags": ["crypto", "politics"],
    "series": ["sol-up-or-down-5m"]
  }'

成功响应 (201 Created):

{
  "id": "e8f3b207-9b4e-4b77-a8d1-1376d8b67cf9",
  "name": "Production Copy-Trading Stream",
  "enabled": true,
  "addresses": ["0x2005d16a84ceefa912d4e380cd32e7ff827875ea"],
  "tags": ["crypto", "politics"],
  "series": ["sol-up-or-down-5m"],
  "active_sessions": 0,
  "created_at": "2026-09-25T20:55:27.788Z",
  "updated_at": "2026-09-25T20:55:27.788Z"
}

记录返回的 id,下一步用于建立实时流连接。


2. 连接流 (GET /streams/{id})

使用支持 HTTP/2 或 SSE 长连接的客户端库(如 Node.js HTTP/2、Python httpx、Go net/http 或 curl)发起连接,实时监听内存池交易推送:

curl -N "https://stream.polyedge.dev/streams/e8f3b207-9b4e-4b77-a8d1-1376d8b67cf9" \
  -H "X-PolyEdge-Key: <YOUR_API_KEY>"

报文格式与事件说明

服务器推送标准 SSE 数据帧:

  • event: tx:当在内存池中捕获到匹配过滤条件的链上交易时推送。data 字段为 JSON 格式的 LiveTransaction 数据对象:
    id: 4716111
    event: tx
    data: {"tx_hash":"0xcb9add...","timestamp":"2026-09-25T20:55:29.248Z","market":{...},"taker":{...},"makers":[...]}
    
  • : heartbeat:每 30 秒自动发送的心跳注释帧,用于穿透 NAT 网关与反向代理,保持 TCP 连接存活:
    : heartbeat
    

保活与重连:在活跃的内存池 SSE 长连接中,服务器每 30 秒发送一次心跳。若客户端超过 60 秒未收到任何数据或心跳帧,建议主动断开当前 SSE 连接并重新建立。


3. 更新流 (PUT /streams/{id}/subscription)

PolyEdge 支持零停机动态热过滤。当需要增删监听地址、更换关注板块或周期系列时,直接调用此接口更新即可。所有活跃的内存池长连接会话将立即生效,无需断线重连:

curl -X PUT "https://stream.polyedge.dev/streams/e8f3b207-9b4e-4b77-a8d1-1376d8b67cf9/subscription" \
  -H "Content-Type: application/json" \
  -H "X-PolyEdge-Key: <YOUR_API_KEY>" \
  -d '{
    "addresses": [
      "0x2005d16a84ceefa912d4e380cd32e7ff827875ea",
      "0x592306c26c00c4d9ede9ee341aa39bb2782649cd"
    ],
    "tags": ["sports", "tennis", "crypto"],
    "series": ["itf"]
  }'

成功响应 (200 OK):

{
  "id": "e8f3b207-9b4e-4b77-a8d1-1376d8b67cf9",
  "name": "Production Copy-Trading Stream",
  "enabled": true,
  "addresses": [
    "0x2005d16a84ceefa912d4e380cd32e7ff827875ea",
    "0x592306c26c00c4d9ede9ee341aa39bb2782649cd"
  ],
  "tags": ["sports", "tennis", "crypto"],
  "series": ["itf"],
  "active_sessions": 1,
  "updated_at": "2026-09-25T20:56:02.124Z"
}

4. 删除流 (DELETE /streams/{id})

当不再需要某个流会话时,调用此接口销毁配置并释放并发连接配额:

curl -X DELETE "https://stream.polyedge.dev/streams/e8f3b207-9b4e-4b77-a8d1-1376d8b67cf9" \
  -H "X-PolyEdge-Key: <YOUR_API_KEY>"

成功响应 (200 OK):

{
  "id": "e8f3b207-9b4e-4b77-a8d1-1376d8b67cf9"
}