肖臻公开课(六)——比特币中的网络

本笔记对应北京大学肖臻老师《区块链技术与应用》公开课第六课。

0.前言

在本节课中,肖老师主要讲了比特币的底层网络实现。以计算机网络传统架构来说,比特币网络工作在应用层,底下的网络层是一个P2P覆盖网络。

要明确一点,比特币网络中每个节点是平等的不存在某些P2P网络中的超级节点和主节点。

1.加入网络与离开网络

  • 加入网络:

在加入网络前,首先要寻找一个种子节点。种子节点会告诉你它知道的其他节点。

节点与节点之间通过TCP进行通信,便于穿透防火墙。

  • 离开网络:

离开网络不需要通知其他节点,直接离线即可,其他网络没接收到此节点的消息就知道此节点离线了。

  • 比特币网络设计原则:

鲁棒、简单、而非高效。

2.交易传播

  • 比特币每个节点都维护了一个**“邻居”节点的列表**,每次发送消息,都向此列表中所有节点发送消息,接到过的消息不会再次转发,即:洪泛法。注意,“邻居节点”的选择是随机的,这样有利于鲁棒性。
  • 比特币每个节点还维护一个待上链的交易列表,节点每次接到交易后,就通过以上的过程对交易进行传播。但是要注意3点:

1.如果此交易验证后,不合法,那么就不会进行传播。

2.如果节点接受到一个有冲突的交易,那么以自己已经保存的交易为准,新接受到的交易不会受理。

3.如果发布的区块链中包含的交易,与自己集合中的交易有冲突,那么删除自己集合中的交易。

3.区块传播

区块传播与交易传播是类似的,在验证其合法性后,并检查是否是在最长合法链上,然后采用洪泛法进行传播。

注意1:因为传播方式的原因限制,所以比特币系统中设计一个区块最大只有1M,即便如此,一个区块的传播仍然需要几十秒。

注意2:BEST EFFORT,比特币网络的传输是“尽最大努力交付”的一个网络。

猜你喜欢

转载自blog.csdn.net/doreen211/article/details/129170216