Cardano预生产测试网节点同步失败(TrConnectError)求助
Cardano测试网节点无法同步问题排查与解决
问题概述
Cardano开发者门户旧测试网文档已过时,我参考新测试网文档(World Cardano Book及GitHub资源),遵循官方节点运行教程但替换为预生产测试网的新环境文件(未使用弃用文件),但节点始终无法同步网络。尝试devnet和预览测试网后问题依旧,当前使用节点版本为:
cardano-node 1.35.3 - linux-x86_64 - ghc-8.10 git rev ea6d78c775d0f70dde979b52de022db749a2cc32
错误日志
节点反复输出以下日志:
TrConnectError (Just 127.0.0.1:1337) 3.72.231.105:30000 Network.Socket.connect: <socket: 29>: invalid argument (Invalid argument) TrConnectionManagerCounters (ConnectionManagerCounters {fullDuplexConns = 0, duplexConns = 0, unidirectionalConns = 0, inboundConns = 0, outboundConns = 0}) TracePromoteColdFailed 50 0 3.72.231.105:30000 160.633570297628s Network.Socket.connect: <socket: 29>: invalid argument (Invalid argument) TraceGovernorWakeup TracePublicRootsRequest 100 1 TracePublicRootRelayAccessPoint [RelayAccessDomain "preprod-node.world.dev.cardano.org" 30000] TracePublicRootResult "preprod-node.world.dev.cardano.org" [(3.72.231.105,60)] TracePublicRootsResults (fromList []) 9 512s
同步状态(首次运行)
{ "block": 0, "epoch": 0, "era": "Byron", "hash": "9ad7ff320c9cf74e0f5ee78d22a85ce42bb0a487d0506bf60cfb5a91ea4497d2", "slot": 0, "syncProgress": "0.01" }
原因分析
- 网络端口/配置冲突:
Network.Socket.connect: invalid argument错误通常指向本地网络参数异常,比如节点配置的监听端口1337被占用,或系统网络参数(如somaxconn)设置过低导致连接失败。 - 防火墙/安全组拦截:日志显示已解析测试网中继节点IP,但无法建立连接,大概率是本地防火墙或云服务商安全组拦截了出站端口30000的TCP流量。
- 配置文件参数错误:替换环境文件时可能遗漏关键参数,比如
config.json中的protocolMagicId与测试网不匹配(预生产为1、预览为2、devnet为1097911063),或topology.json中的中继节点配置失效。 - 节点数据损坏:首次运行时的初始数据目录可能存在残留的旧测试网数据,导致同步逻辑异常。
解决步骤
1. 排查本地端口与网络参数
- 检查端口1337是否被占用:
若被占用,修改节点配置文件lsof -i :1337 || netstat -tulpn | grep 1337config.json中的listenAddress端口(例如改为1338)。 - 调整系统网络参数(Linux):
sudo sysctl -w net.core.somaxconn=4096 echo "net.core.somaxconn=4096" | sudo tee -a /etc/sysctl.conf - 放行出站端口30000:
sudo ufw allow out 30000/tcp # 若使用云服务器,需在安全组中添加对应出站规则
2. 验证配置文件正确性
- 确认
protocolMagicId:- 预生产测试网:
1 - 预览测试网:
2 - Devnet:
1097911063
- 预生产测试网:
- 重新下载官方测试网环境文件:从Cardano官方GitHub仓库获取对应测试网的
config.json、topology.json、genesis.json,避免手动修改引入错误。
3. 清理节点数据并重启
- 停止节点进程:
pkill cardano-node - 删除旧数据目录(默认路径示例):
rm -rf ~/.cardano/testnet/db - 重新启动节点(预生产测试网示例):
cardano-node run \ --topology ./preprod-topology.json \ --config ./preprod-config.json \ --database-path ./db \ --socket-path ./node.socket \ --host-addr 0.0.0.0 \ --port 30000
4. 升级节点版本(可选)
虽然1.35.3是稳定版,但可尝试升级至最新官方稳定版,确保与测试网协议完全兼容。
内容的提问来源于stack exchange,提问作者Daykoo
相关产品推荐
相关产品推荐

