同一枚 token,可以在 多個市場 / 報價側 陸續開盤——ETH 報價一檔,stock token 報價再一檔,盤面一層層鋪開。Equifold 在 Base 上線、以及 Robinhood 側多市場討論,語境轉述自 EquiFold · Base 與 EquiFold · multi-market。這篇只做一件事:一條 eth_subscribe 掛 Factory,按 token 聚合多市場,對 首市 / 第 N 市 打優先順序與速率標籤。
Bags 單配對落地:幣股配對發射。新池 agent:新池 Agent。開盤節奏:搶開盤怎麼盯。本篇盯 一幣 → 多市場聚合。
| 用途 | Base(預設) | Robinhood(可選切換) |
|---|---|---|
| 公共 HTTPS | https://base-rpc.blockreq.com/v1/rpc/public | https://robinhood-mainnet-rpc.blockreq.com/v1/rpc/public |
| 公共 WSS | wss://base-rpc.blockreq.com/v1/rpc/public | wss://robinhood-mainnet-rpc.blockreq.com/v1/rpc/public |
| 私有 | 末尾 public → {API_KEY}(Key 放本地) | 同左 |
鏈:Base EVM chainId = 0x2105(8453);可選 RH 0x1237(4663)。Free 3M Requests / 30 days · 公開端點 · eth_subscribe · 定價。
1. 單配對 → 一幣多市場聽模型
| 盤面語感 | 鏈上訊號 | 盯什麼 |
|---|---|---|
| 市場落地 | Factory create / open 類事件 | marketId、baseToken、quoteToken |
| 同一 token 再開一檔 | 同 baseToken、新 quote / 新 market | 寫入 marketsByToken[token] |
| 首市開盤 | 該 token 聚合表長度 = 1 | 優先順序標籤 P0 / first |
| 第 N 市開盤 | 長度 ≥ 2 | 標籤 P1… / nth + 速率窗 |
Stock-pairs 篇盯「一側 ∈ stock 表的 單對」;本篇盯「同一 token 下市場列表怎麼長」。
2. Equifold 事件 + 報價型別
常見報價側兩類(以部署 ABI / env 為準):
| 報價型別 | 示例 | 告警側怎麼用 |
|---|---|---|
| ETH / WETH 報價 | 原生流動性檔 | 首市常落在這裡 → P0 |
| Stock token 報價 | AAPL / TSLA 一類 | 同 token 再開一檔 → Nth 擴充套件 |
Factory 地址、create/open 的 topics[0] 用環境變數佔位(EQUIFOLD_FACTORY、EQUIFOLD_MARKET_TOPIC0),換鏈或換部署只改 env。
3. 一條訂閱:Factory + topic,按 token 聚合
同一條公共 WSS,訂 Factory 窄 logs;每條推送解碼出 base / quote / market,推進本地聚合表。
Step A · 訂 Factory create/open(topic0 佔位)
{
"jsonrpc": "2.0", "id": 1, "method": "eth_subscribe",
"params": ["logs", {
"address": "${EQUIFOLD_FACTORY}",
"topics": ["${EQUIFOLD_MARKET_TOPIC0}"]
}]
}
address/topics[0]從 env 讀;以 Equifold Factory ABI 為準。- 解碼
baseToken/quoteToken/market(欄位名以 ABI 為準)→key = baseToken.toLowerCase()。
Step B · 本地聚合 marketsByToken
| 欄位 | 含義 |
|---|---|
token | baseToken(聚合鍵) |
markets[] | { market, quote, tx, ts, index } |
firstAt | 首市時間戳 |
count | 當前市場數 |
每條 create:count += 1,index = count;index === 1 → 首市;否則第 N 市。
Step C · 與 stock-pairs 的分工
| 篇 | 聽什麼 | 產出 |
|---|---|---|
| 幣股配對 | PairCreated × stock 表 | 單配對卡 |
| 本篇 | Equifold Factory × token 聚合 | 首市 / 第 N 市優先順序卡 |
4. 告警:首市 vs 第 N 市(優先順序 · 速率標籤)
用 優先順序 + 速率 管推送節奏(正面標籤,方便看板色塊):
| 標籤 | 觸發(demo) | 推送策略 |
|---|---|---|
| P0 · first | index === 1 | 立即推;欄位齊全 |
| P1 · nth | index ≥ 2 | 帶 index、quote、距首市 Δt |
| rate · burst | 同 token 在短窗內多市連開 | 疊速率標籤,合併成一簇卡 |
| rate · steady | 間隔拉長的後續市 | 單條輕量更新 |
- 市場落地 →
{ token, market, quote, index, factoryTx, ts }。 - 首市 → 同上 +
priority: "P0";Webhook / 看板高亮。 - 第 N 市 →
priority: "P1"+index+deltaFromFirstMs。 - 速率簇 → 短窗內同 token 多條 → 一張簇卡,列出
markets[]摘要。
斷線:重連必重新 subscribe;空窗用 HTTPS eth_getLogs 按塊段回補,再用同一套聚合 + 優先順序規則回放。預設 POST → https://base-rpc.blockreq.com/v1/rpc/public;切 RH 時換表中 RH 行。
5. Free 3M + 雙端點切換(StackBlitz)
預設連 BlockReq Base 公共 WSS;UI 可切換 RH。貼上 / env 填 Factory + topic0,實時刷 marketsByToken、打 P0 / P1 / rate 標籤。程式碼在 StackBlitz 裡看,文章只嵌預覽:
倉庫:blockreq/blog-demos → examples/equifold-multi-market-listen。換 keyed:WSS 末尾 public → {API_KEY}。Free 3M 夠短時雙鏈試聽;長期看板換 keyed。