区块链 - 实现中如何进行点对点发现?

4
我目前正在学习区块链的工作原理,只是出于个人兴趣。我正在学习这门课程,现在已经使用Web套接字设置了对等连接。多个区块链应用程序实例现在可以运行并使用这些套接字相互通信。
该课程实现的一个缺点是实例如何找到彼此。实际上,它们需要被显式配置以便进行通信。在我的当前项目中,我已经设置了3个实例。其中一个在端口5001上打开套接字,并不连接任何其他内容。另一个在端口5002上打开套接字,并连接到5001端口的实例。第三个在端口5003上打开套接字,并连接到5002和5001端口的实例。
重要的是,所有三个都被明确地配置为这样。所有三个必须按照完全相同的顺序启动,以便它们可以正确地连接到其他实例。虽然对于练习实现来说这很好,但我知道在野外没有真正的区块链实现会这样工作。一定有某种发现机制发生,使得这些实例可以找到当前运行的任何其他实例。
网络不是我的专业领域,所以我不知道这该如何做到。
1个回答

3
P2P加密货币客户端通常有硬编码的节点列表,这些节点由社区管理。如果您第一次启动客户端,这些对等体就是您拥有的全部节点。
当您连接到另一个节点时,它会将您的IP保存在其内部列表中。任何节点都可以从另一个节点请求此列表。通过这种方式,您的客户端可以发现其他节点。客户端应用程序将节点列表保存到磁盘中。在下一次启动时,您会有硬编码的节点和上次连接的节点。某些节点可能处于离线状态,但这没关系。
比特币的更详细解释请参见:https://developer.bitcoin.org/devguide/p2p_network.html#peer-discovery

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接