SR API 配置

加固超级代表节点的 HTTP 和 gRPC 接入面——限制网络访问、禁用泄露拓扑结构的 endpoint,并对入站流量进行限速。

📘

前置阅读

TRON 全节点默认暴露 HTTP 和 gRPC API,便于监控、集成和读密集型客户端访问。对 SR 来说,这些 API 不是区块生产所必需。 TRON 提供三组配置项,把 API 接入面裁剪到 SR 实际需要的水平:控制访问范围、筛选暴露方法、对入站流量限速。这些配置不是运行 SR 的硬性要求,但能为 SR 项目方提供调优空间。


网络访问范围

默认情况下,SR 可以不公开其 API ——区块生产和点对点通信完全通过 P2P 通道在节点之间进行。

如果确实需要外部访问——用于内部监控,或该节点同时作为 RPC endpoint——建议在网关处控制访问范围,例如防火墙规则,或带可信主机 IP 白名单的 Nginx 反向代理。

Endpoint 配置管理

SR 可按运维需求关闭特定的 HTTP 和 gRPC 方法。例如不需要向全网公开对等节点列表(Peer List)或节点元数据(Node Metadata)时,可关闭对应的 API 端点:/wallet/listnodes/wallet/getnodeinfo

可在 config.conf 中使用 disabledApi 配置:

# 要屏蔽的方法名称,不区分大小写。
# 仅填写方法名,不含 URL 路径。
disabledApi = [
  "listnodes",
  "getnodeinfo"
]

该禁用规则对 HTTP 和 gRPC 处理器同时生效。具体条目按部署需求增删,没有固定的统一禁用清单。

流量上限

限速可避免 API 请求(包括合法的高并发流量)与共识线程争抢 CPU 和事件循环资源。SR 需要同时响应外部业务请求时,这一调优尤为重要。

gRPC 和 JSON-RPC 的配置方法的区别如下:

协议按方法限速全局限速
gRPC是(逐方法独立配置)可选
JSON-RPC否(仅支持 HTTP 层限速)是(作用于整个 JsonRpcServlet

示例配置(在 config.conf 中):

rate.limiter = {

  # gRPC:按方法限速
  rpc = [
    {
      component = "protocol.Wallet/ListWitnesses",
      strategy = "QpsRateLimiterAdapter",
      paramString = "qps=200"
    }
  ]

  # HTTP / JSON-RPC:全局 JSON-RPC 限速 + 特定 HTTP 方法限速
  http = [
    {
      component = "JsonRpcServlet",
      strategy = "QpsRateLimiterAdapter",
      paramString = "qps=200"
    },
    {
      component = "GetTransactionInfoByIdServlet",
      strategy = "QpsRateLimiterAdapter",
      paramString = "qps=50"
    }
  ]
}

设置 QPS 值。 根据硬件和负载情况调整(以下数值仅供参考):

  • SR 节点整体公网入站流量:100500 QPS。
  • 读密集型 endpoint(如 getTransactionInfoByIdgetBlockByNum):50100 QPS。
  • 轻量读操作(如 ListWitnessesgetNowBlock):最高 1000 QPS。

建议从保守值开始,若合法客户端持续触及上限,再逐步上调。

📘

注意

配置过程中,gRPC API 的名称必须包含服务前缀(例如 protocol.Wallet/ListWitnesses)。


相关资源