Solana
Simulated route
$124.50 model
Example
Ethereum
Private bundle
$840.12 model
Example
BNB
Liquidation test
$45.20 model
Example
Base
Arbitrage test
$12.05 model
Example
Solana
Jito bundle
$310.00 model
Example
Polygon
Route check
$8.45 model
Example
Solana
Simulated route
$124.50 model
Example
Ethereum
Private bundle
$840.12 model
Example
BNB
Liquidation test
$45.20 model
Example
Base
Arbitrage test
$12.05 model
Example
Solana
Jito bundle
$310.00 model
Example
Polygon
Route check
$8.45 model
Example
InfraEvaluation 阶段⏱ 5 分钟阅读

Mempool Scanning 101: Filters, Latency & Inclusion

**Answer first** — Mempool scanning in 2026 is two distinct problems: **getting clean signal in** (low-latency subscription + filters that don't kill recall) and **acting on it ins

Mempool Scanning: filters, latency, and inclusion
FR
FRB 团队MEV 专家
最近更新
#mempool#wss endpoints#latency#inclusion probability#filters#throughput

Answer first — Mempool scanning in 2026 is two distinct problems: getting clean signal in (low-latency subscription + filters that don't kill recall) and acting on it inside the available window (simulation + signing + send fast enough to land before the next searcher). Most operators over-tune the filters and under-tune the action loop, which is the wrong direction — a well-filtered stream that you process slowly is just a different kind of useless. The working framework: subscribe to a well-peered node (eth_subscribe('newPendingTransactions') on chains that have a public mempool, sequencer-feed WSS on Arbitrum, op-node gossip on OP Stack chains); apply minimum filters (pool allowlist, value floor, router allowlist); profile every stage of your loop until you know where the milliseconds are going. Then iterate on whichever stage is the worst offender — it's almost never the filter set.

Mastery path

"Mempool scanning" doesn't mean the same thing on every chain

The term is borrowed from Ethereum mainnet where there's a literal peer-to-peer broadcast layer. On other chains the mechanism is different and the term is sloppy:

  • Ethereum, BSC, Polygon, Avalanche, etc. — real public mempool. eth_subscribe('newPendingTransactions') against any well-peered node gives you the live stream.
  • Arbitrum — no public mempool. The equivalent signal is the sequencer feed WebSocket, which broadcasts accepted txs before they land in confirmed blocks.
  • Optimism, Base — no Ethereum-style public mempool, but the sequencer accepts JSON-RPC sends and gossips them; a well-connected op-node sees them via standard subscription.
  • Solana — no mempool concept; transactions are forwarded directly to validators. The "scanning" job is more about Geyser plugin streaming or block-engine subscriptions.

What you subscribe to and what counts as "an opportunity in the mempool" depends on which chain you're on. The latency budgets and filter shapes follow accordingly.

The filter-recall trade-off

The intuition trap: "tighter filters → less noise → faster decisions → better inclusion." It's wrong because filters don't reduce processing latency — they reduce opportunity recall.

A filter that drops 90% of pending txs makes your decision loop run on 10% of the data. If your filter is over-tight, you're missing real opportunities to avoid noise that wouldn't have made you slower anyway. The right calibration is:

  1. Pool allowlist: the pools your strategy actually trades. New ones added explicitly, not by inference.
  2. Value floor: below this trigger-tx size, the math doesn't work for backruns no matter what. (Below ~$1k notional on Ethereum, ~$200 on cheap chains.)
  3. Router allowlist: the routers your strategy can actually compose with. Token-attached or unfamiliar routers go to a separate "research" stream, not the main hot path.

That's it for hot-path filters. Anything more aggressive is over-tuning that costs recall.

The latency budget

Decompose total time-from-trigger-to-send into stages and profile each:

Stage Typical good Typical bad
WSS subscription event arrival < 50 ms > 200 ms
Filter pass < 1 ms > 10 ms
State fetch (pool reserves, ticks, balances) < 20 ms > 100 ms
Strategy compute (route, profit calc) < 5 ms > 50 ms
Simulation (eth_callBundle / fork replay) < 50 ms > 200 ms
Signing < 5 ms > 30 ms
Submission (private RPC / bundle relay) < 100 ms > 500 ms

If any one of these is in the "typical bad" range, that's where to optimise — not your filter set. The state-fetch stage is the most common hidden offender; many bots fetch state via per-tx round-trip JSON-RPC calls when they could be maintaining a local mirror that updates from the same WSS subscription.

Inclusion vs false positives

Two separate metrics, often conflated:

  • Inclusion rate: of bundles I submitted, what fraction landed? Below 60% on a strategy that expects 80%+ is an infra problem (latency, fee model, builder coverage).
  • False positive rate: of mempool events that passed my filter, what fraction turned out to not be real opportunities? High false-positive doesn't matter as long as the downstream simulator catches them — it just means your filter is loose. Loose filter is fine; expensive downstream is the problem.

Operators sometimes tighten filters to chase the wrong metric. If your inclusion rate is low, the answer is rarely a tighter filter.

What to measure

Per-strategy daily numbers to keep:

  • Subscription staleness alarms (events older than 500 ms threshold).
  • Per-stage latency percentiles (above table's stages).
  • Filter pass rate (events passing per minute).
  • Profitable post-sim rate (passed sim per minute).
  • Submitted-to-included rate.
  • Inclusion-by-relay (for chains with multi-relay).

These six numbers, on a daily dashboard, tell you where the bot is healthy and where it's losing. Without them, debugging is guesswork.

Common scanning mistakes

  • Single subscription, no cross-check. A second subscription against a different provider validates that you're seeing what's actually on the network. Without it, silent missed coverage looks like "the strategy isn't finding opportunities."
  • WSS reconnect storms wiping subscription state. Some providers reset connections every 30–60 minutes for load balancing. If your subscriber doesn't replay subscriptions on reconnect, you'll miss seconds at a time.
  • JSON parsing on the hot path. Naïve JSON.parse of full pending-tx envelopes adds milliseconds per event. Streaming parsers that pull only the fields you need (to/from/value/data prefix) save real time at peak rates.
  • Cross-region subscription that quietly halves the edge. A "redundant" setup that fails over from us-east to ap-southeast adds 100+ ms each direction. Alarm on latency, not just on hard failures.
  • Trusting one provider's coverage without validation. Especially on BSC, some commercial providers have weakly-peered nodes that lag silently. Cross-check periodically.

Working configuration

The minimum viable mempool subscriber:

  1. Two parallel WSS subscriptions (provider A + provider B), used for cross-coverage validation.
  2. Filter set: pool allowlist + value floor + router allowlist. No deeper filtering on the hot path.
  3. State maintained as a local mirror updated from the WSS stream itself, not re-fetched per-tx.
  4. Latency profiling instrumented per stage with percentiles persisted daily.
  5. Reconnect-with-replay logic that re-subscribes within 200 ms of disconnect.

The FRB Agent implements all of these by default; the parts that matter for self-built systems are the same regardless.

References

阅读后的下一步

启动 FRB 控制台

连接您的钱包,通过 6 位 PIN 码配对节点客户端,然后分配上述合约。

需要安装程序?

下载并验证 FRB

获取最新安装程序,将 SHA‑256 与 Releases 对比,然后按照安全启动清单操作。

查看 Releases 和 SHA‑256
分享𝕏 推特in LinkedInf Facebook

相关文章

延伸阅读与工具

讨论

暂无笔记。添加第一条观察,或在以下平台与团队分享链接 X (@MCFRB).

留下笔记
笔记仅存储在您的本地浏览器中。

掌控脉动

扩展您的执行能力

通过探索完整的 FRB 工具包来最大化您的优势。从机构级遥测到随时可导出的策略脚本。

CTA

安装 FRB 代理

下载经过验证的 Windows 版本并检查 SHA-256。

CTA

阅读快速入门文档

与运营和合规团队分享 15 分钟的设置流程。

CTA

启动控制面板

配对节点客户端并实时监控 Ops Pulse。

准备进化了吗?

迈出下一步

无论您是在验证终端安全,还是在启动您的第一个交易包,FRB 之旅都从这里开始。

推荐

安装 FRB 代理

安全的 Windows 版本,通过 SHA-256 验证以确保最高完整性。

推荐

阅读快速入门文档

15 分钟掌握设置流程:从钱包配对到第一个交易包。

推荐

启动控制面板

实时监控您的 Ops Pulse 并管理交易路由。