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 节点整体公网入站流量:
100–500QPS。 - 读密集型 endpoint(如
getTransactionInfoById、getBlockByNum):50–100QPS。 - 轻量读操作(如
ListWitnesses、getNowBlock):最高1000QPS。
建议从保守值开始,若合法客户端持续触及上限,再逐步上调。
注意配置过程中,gRPC API 的名称必须包含服务前缀(例如
protocol.Wallet/ListWitnesses)。
相关资源
- SR 节点配置 —— Witness 权限代理与
localwitness配置。 - SR 最佳实践 —— 可用性、监控与升级规范。
- 成为超级代表 —— 申请与注册流程。
- 共识与 DPoS —— 区块生产时序与错过出块槽位的代价。
Updated 26 days ago