Skip to content

5. 网络

约 910 个字 预计阅读时间 5 分钟 共被读过

1. P2P 架构与应用层

比特币区块链采用 P2P(点对点)网络架构,在应用层实现了比特币区块链的各种功能。这种架构摒弃了传统的中心服务器模式,使得网络中的节点能够直接相互通信,极大地增强了系统的去中心化特性和抗攻击性。

2. 底层网络布局

P2P 覆盖网络

  • 比特币网络的底层采用 P2P 覆盖网络布局。在这个网络中,虽然没有传统意义上具有特殊权限的 “super node(超级节点)” 或 “master node(主节点)”,比特币中的所有节点在理论上都是平等的,它们共同协作维护整个区块链网络的运行。
  • 然而,网络中存在 “seed node(种子节点)”,种子节点的作用至关重要,它们有利于穿透防火墙。
  • 新加入网络的节点可以通过连接种子节点获取网络中其他节点的信息,从而逐步融入整个 P2P 网络。

  • 这种网络布局方式的特点:simple, robust, but not efficient

  • 例如,采用 “flooding(洪泛)” 方式进行信息传播。当一个节点第一次听到某个消息(如新区块或新交易)的时候,会把它传播给其他节点,同时记录已传播的情况。
  • 在这个过程中,选择将消息传播给哪些邻居节点是随机的。这种传播方式虽然能保证信息在网络中快速扩散,但会带来一些问题,比如 “race condition”。当差不多同时有多个节点发布交易时,由于网络传播的随机性和延迟,可能会导致不同节点接收到交易的顺序不一致,进而影响它们对区块链状态的判断。

3. 网络传播与最长合法链问题

在比特币网络中,网络传播存在不可避免的延迟。由于节点之间的消息传递并非瞬间完成,当最长合法链被另一条链取代时,可能会出现一些复杂的情况。每个节点在处理交易和区块时,会维护一个待处理交易的集合
如果在最长合法链切换过程中,各个节点删掉的集合里的一些交易在另一条新的链里还没被写入,就可能导致这些交易处于一种混乱的状态。
因为不同节点对交易的处理进度和认知不同,可能会出现部分节点认为某些交易已被确认,而实际上这些交易在新的 “权威” 链中并未被正确记录的情况。

4. 网络运行的实际问题

比特币网络在实际运行中面临诸多挑战,因为有很多节点不一定完全按照规则去执行。
尽管比特币网络设计了一套完善的协议和共识机制,但在实际的分布式环境中,由于节点的多样性(包括硬件、软件版本、网络环境等方面的差异)以及可能存在的恶意节点,使得网络无法做到绝对的完美运行。
网络只能以 “best effort(尽力而为)” 的方式来传播信息和维护区块链的一致性,即在现有条件下尽可能保证大多数节点能够遵循规则,使网络正常运转,但无法完全消除因各种意外情况或恶意行为导致的局部混乱或不一致问题。