blockchain - 以太坊协议如何与 geth 一起工作
问题描述
我是以太坊的新手,通常是区块链的新手。我了解到以太坊区块链适用于Kademlia。Eleuth P2P很好地解释了分布式哈希表及其工作。
现在我使用geth连接到以太坊主网,它在 5 到 6 分钟内最多发现了 2 到 3 个对等点。
现在我知道了算法,但我关心的是如何发现第一个对等点?因为互联网只是一大组路由器和不同类型的计算机(服务器、计算机等),如果你像ARP那样广播发现。互联网将充斥着这些对等发现广播消息,这似乎不对。那么最初是如何建立连接的呢?此外,我们不能信任单个网络进行首次连接,因为这将使系统服务器和客户端基于而不是分散,那么初始连接和对等点发现如何发生?
广播消息是否像我猜的那样具有 TTL 以防止 TCP 中的循环循环?但这对我来说似乎也是一个可怕的想法。
请解释。
解决方案
为了开始,geth 使用了一组引导节点,其端点记录在源代码中。
资料来源:Geth 文档
以下是 Geth 源代码中硬编码的引导节点列表:https ://github.com/ethereum/go-ethereum/blob/v1.10.11/params/bootnodes.go#L23
该--bootnodes
选项允许您用自己的列表覆盖此列表。来自上述链接文档的示例:
geth --bootnodes enode://pubkey1@ip1:port1,enode://pubkey2@ip2:port2,enode://pubkey3@ip3:port3
推荐阅读
- python - 将文本文件转换为 csv 文件,但分隔符似乎没有做任何事情
- java - 即使已指定 th:object,Java Thymeleaf @ModelAttribute 控制器值为 null
- python - 大型 JSON 文件更新缓慢
- haskell - 如何在需要以不同方式处理第一个元素的递归调用中创建列表?
- firebase - Flatlist 不显示来自 firebase 的数据
- python - Snakemake Conda 环境似乎没有被激活,尽管它说它是
- javascript - 从 React 组件调用时未定义 Thunk Fetch
- mapreduce - SutieScript RESTlet '缺少必需的参数:MapReduceScriptTask.scriptId'
- android - 将数据从一个活动发送到另一个活动会导致应用在 Android Studio 中崩溃
- xcode - 构建脚本如何知道 .xctestplan 将在构建时使用?