我正在运行一个启用LES协议的完整节点,我希望我的轻型客户端能够连接到这个节点并与之同步。
我试图通过使用geth --light --bootnodes <my_enode>启动轻型客户端来实现这一点。不相连。在--verbosity 4设置下,它给了我
DEBUG[08-23|16:05:24] Bad packet from <my_ip>:<my_port>: rlp: too few elements for discv5.pong
我也尝试过使用geth --light --bootnodesv4 <my_enode>。还是联系不上。在本例中,没有调试条目。
当附加到轻型客户端节点并发出`admin.addPeer()时,它成功地连接。
我是否误解了--bootnodes param的用途?
如果不是这样,我如何告诉geth在启动时连接到我的整个节点?
更新:
我刚刚注意到,使用admin.addPeer手动添加并不总是有效的,可能是因为整个节点已经连接了maxPeers。是否可以配置完整的节点,以便始终允许给定的节点列表进行连接(例如,通过保留时隙或更高的优先级)?
发布于 2021-02-26 13:10:10
我的理解是,使用--bootnodes时,您只需要指定要与之流言蜚语的节点,以便找到要与之交换数据的实际对等点。因此,在您开始交换任何有用的区块链数据之前,这是一个预步骤。
如果希望保存静态对等连接(而不是每次通过admin.addPeer手动添加),则需要创建具有以下内容的config.toml文件:
[Node.P2P]
StaticNodes = ["<your-enode-goes-here>"]然后使用geth运行--config /path/to/config.toml
不过,正如您已经观察到的,这不足以确保轻型客户端不会被服务器踢出。不幸的是,目前似乎没有任何(记录在案的)方法来实现这一点。
https://ethereum.stackexchange.com/questions/24992
复制相似问题