
先看一张图把什么画成了点
阅读区块链网络拓扑图时,第一步不是数连线,而是确认图中的点代表节点还是区块。如果点是运行软件的节点,线通常描述它们之间的通信关系;如果点是区块,箭头可能描述区块头中的父块引用。两幅图可以同时成立,却不是同一种结构。
假设节点甲同时连接乙和丙,乙又连接丁,这画出的是一组邻接关系。它们交换的账本里,某个区块仍可以引用前一个区块。甲多连接了一个同伴,不会因此让区块头多出一个父块;反过来,出现不同候选链头,也不能仅凭这一点推出通信连接发生了怎样的变化。
知道一个地址还不等于会话已建立
节点刚启动时,需要先获得可能联系的同伴信息。比特币开发文档介绍了种子发现、节点间交换地址及保存已知同伴等机制。地址记录提供的是联系线索,而不是在线保证:对方可能已经离线、换址,或者没有接受这次连接。
同一份文档还把连接后的版本交换与确认消息单独说明。以太坊网络文档也区分发现阶段和后续点对点通信。由此读一份拓扑资料时,最好问清它记录的是候选地址、曾联系过的同伴,还是观察时已建立的会话,不能把三类记录合并成一张永远有效的连接表。

一对多传播和定向请求承担不同任务
以太坊文档把消息交互概括为广播式传播与请求响应两类:前者让消息沿同伴关系继续扩散,后者用于向特定同伴索取所需信息。看到消息最后到达很多节点,不表示最初发送者与这些节点都保持直接连接,中间可能经过多次转发。
此外,以太坊执行层与共识层使用各自的网络栈。说明资料若只画一组连线,应先确认它讨论的是哪一层、哪种消息,而不宜把某一层的会话关系称作整个系统唯一的网络形状。这是读图范围问题,不需要先假定一种固定的星形、环形或全连接结构。
给连接图附上范围比画得复杂更重要
整理技术资料时,可以为拓扑图补上三项说明:点和线分别表示什么、观察的是哪类客户端或协议层、连接状态对应哪个时刻。节点进入、离开或改变连接后,通信图可能变化;某个历史区块的父块引用则不会因为同伴换了地址而自动改写。
这份检查方法只帮助解释网络资料,并没有测量现实网络的节点数量、覆盖率或性能。连接多不等于已经完整验证账本,也不证明消息一定更快。把通信关系、账本引用和验证职责分别阅读,才能准确理解一张图实际上回答了哪个问题。