肖臻公开课(六)——比特币中的网络
在本节课中,肖老师主要讲了比特币的底层网络实现。以计算机网络传统架构来说,比特币网络工作在应用层,底下的网络层是一个P2P覆盖网络。要明确一点,比特币网络中每个节点是平等的不存在某些P2P网络中的超级节点和主节点。more。
·
本笔记对应北京大学肖臻老师《区块链技术与应用》公开课第六课。
0.前言
在本节课中,肖老师主要讲了比特币的底层网络实现。以计算机网络传统架构来说,比特币网络工作在应用层,底下的网络层是一个P2P覆盖网络。
要明确一点,比特币网络中每个节点是平等的不存在某些P2P网络中的超级节点和主节点。
1.加入网络与离开网络
- 加入网络:
在加入网络前,首先要寻找一个种子节点。种子节点会告诉你它知道的其他节点。
节点与节点之间通过TCP进行通信,便于穿透防火墙。
- 离开网络:
离开网络不需要通知其他节点,直接离线即可,其他网络没接收到此节点的消息就知道此节点离线了。
- 比特币网络设计原则:
鲁棒、简单、而非高效。
2.交易传播
- 比特币每个节点都维护了一个**“邻居”节点的列表**,每次发送消息,都向此列表中所有节点发送消息,接到过的消息不会再次转发,即:洪泛法。注意,“邻居节点”的选择是随机的,这样有利于鲁棒性。
- 比特币每个节点还维护一个待上链的交易列表,节点每次接到交易后,就通过以上的过程对交易进行传播。但是要注意3点:
1.如果此交易验证后,不合法,那么就不会进行传播。
2.如果节点接受到一个有冲突的交易,那么以自己已经保存的交易为准,新接受到的交易不会受理。
3.如果发布的区块链中包含的交易,与自己集合中的交易有冲突,那么删除自己集合中的交易。
3.区块传播
区块传播与交易传播是类似的,在验证其合法性后,并检查是否是在最长合法链上,然后采用洪泛法进行传播。
注意1:因为传播方式的原因限制,所以比特币系统中设计一个区块最大只有1M,即便如此,一个区块的传播仍然需要几十秒。
注意2:BEST EFFORT,比特币网络的传输是“尽最大努力交付”的一个网络。
更多推荐
已为社区贡献6条内容
所有评论(0)