Direct Shreds - UDP Forwarding (Raw Shreds)
UDP Forwarding 通过 UDP 将原始 Shreds 送达您配置的单个公共 IPv4 地址和端口。UDP Forwarding Standard 与 UDP Forwarding Premium 的区别在于 Shreds 从您所选区域送达您的方式:使用 Standard 时,ERPC 从该区域的一个节点将 Shreds 转发给您;使用 Premium 时,则由网状网络转发。
UDP Forwarding Standard
UDP Forwarding Standard 通过 UDP 将原始 Shreds 转发到为您的订阅配置的公共 IPv4 地址和端口。请在初始配置时选择一个可用区域,并将有效且非空的公共 IPv4 地址和端口保存为目标。目标之后可以更新。ERPC 按 30 秒的刷新周期应用转发配置,无需通过 heartbeat 激活。您也可以之后在仪表盘中更改区域,次数不限。更改区域会改变源 IP,因此接收端的防火墙需要允许新的源 IP。订阅迁移到新区域期间,数据投递会短暂中断。如果新区域目前没有可用容量,则不会执行此次更改,区域和目标都保持不变。
- ERPC 从您所选区域的一个节点通过 UDP 将原始 Shreds 转发到已配置的目标地址,因此 Shreds 会从单个源 IP 送达您。
UDP Forwarding Premium
UDP Forwarding Premium 通过 UDP 将原始 Shreds 从网状网络送达为您的订阅配置的公共 IPv4 地址和端口。该网状网络转发每个 Shred 的副本中最先到达该网络的那一份;仪表盘上显示的每个源 IP 都可能是发送方。Premium 的 Shreds 往往比 Standard 早 1–3 ms 到达。2026 年 10 月 30 日,位于法兰克福的 ERPC 接收端在一次 120 秒的测量中同时接入 Standard 和 Premium,并对两者都收到的每个 Shred,比较其在 Standard 与 Premium 上的首次到达时间。
请输入您自己的接收主机的公共 IPv4 地址和端口,并从 7 个可用区域中选择一个。保存目标后,状态会显示为“应用中”,设置应用完成后即开始数据投递。
请在接收端防火墙中,逐一允许仪表盘上显示的所有源 IP,每个 IP 使用一条
/32 规则。更改区域后,防火墙需要允许的源 IP 也会随之改变。在新区域应用完成之前,数据投递会一直中断;应用完成后,新的源 IP 会显示在仪表盘中。如果所选区域目前无法受理此次更改,该更改不会保存,已保存的区域和目标保持不变。上一次更改仍在应用中时,或刚受理某次更改之后,不会受理新的更改。
即使不更改区域,源 IP 也可能发生变化。如果这种变化需要添加新的防火墙规则,我们会通过电子邮件或支持团队通知您。
UDP 须知
- UDP 不提供连接建立、重传或顺序保证;您的接收端应据此处理数据包。
注意:共享的 Shreds gRPC 端点基于 TCP 运行,因此比 UDP Shreds 慢。
使用 Solana Stream SDK 动手试试
- 示例代码(
shreds-udp-rs,Rust):新代币检测只是一个常见示例,可以换成您自己的检测目标。
https://github.com/ValidatorsDAO/solana-stream/tree/main/temp-release/shreds-udp-rs - 在接收端配置您为 UDP Forwarding 保存的目标地址
ip:port。 - 还没有使用 UDP?可以在本地或您自己的服务器上运行,查看日志并自定义钩子。
收不到 UDP 数据包时
首先,在主机的网络接口上抓包。
UDP Forwarding Standard
配置目标地址后,UDP 转发会自动开始。无需通过 heartbeat 激活;heartbeat 返回
UNIMPLEMENTED 并不表示转发已被禁用。请将占位符替换为针对您的数据流显示的 ERPC 源 IP,以及您配置的目标端口。
Linux(
tcpdump):bash
Windows(
Pktmon,以管理员身份运行):powershell
UDP Forwarding Premium
请将源 IP 占位符替换为仪表盘中显示的源 IP,并将
<DESTINATION_PORT> 替换为您配置的目标端口。Linux(
tcpdump):bash
请保留括号:去掉括号后,
udp dst port 过滤条件只作用于第一个源 IP,而第一个之后的每个源 IP 发出的所有流量,无论协议和端口,都会被抓取。每个源 IP 使用一个 src host 条件;只有一个源 IP 时,请去掉 or 部分和括号。Windows(
Pktmon,以管理员身份运行):powershell
请为每个源 IP 添加一行
pktmon filter add,并按示例为过滤器名称编号;如果在一个过滤器中列出多个 IP,匹配的将是这些 IP 之间的流量。只有一个源 IP 时,只保留第一行过滤器。防火墙与接收端检查
- 如果抓包结果一直为零,请同时检查操作系统防火墙和操作系统之外的防火墙。Hetzner 可能会在 Cloud Firewall 或交换机端口上的 Robot 防火墙中过滤流量。在 AWS 上,请检查 Security Group 和子网的 Network ACL。
- 请按您使用的服务添加允许规则:
- UDP Forwarding Standard:允许从
<ERPC_SOURCE_IP>/32发往目标端口<DESTINATION_PORT>的入站 UDP 流量。ERPC 使用动态 UDP 源端口,因此请不要限制源端口。 - UDP Forwarding Premium:允许从每个
<SOURCE_IP_n>/32发往目标端口<DESTINATION_PORT>的入站 UDP 流量,仪表盘中显示的每个源 IP 各一条规则。请不要限制源端口。
- UDP Forwarding Standard:允许从
- 如果抓包中能看到数据包,但应用程序收不到,请将接收端绑定到
0.0.0.0:<DESTINATION_PORT>而不是 localhost,然后检查本地防火墙以及 socket/进程设置。
更新规则后如果仍然收不到数据包,请将抓包时长、数据包数量、源 IP、目标 IP 和目标端口发送给支持团队。
服务商参考文档:Hetzner Cloud Firewall、Hetzner Robot Firewall、AWS Security Groups、AWS Network ACLs 和 Microsoft Pktmon。
资源
- 所有代码和 README 文档都在 Solana Stream SDK 仓库中:
https://github.com/ValidatorsDAO/solana-stream






