BTC-网络
新发布的区块、交易在BTC网络是怎么传播的呢?下面先看BTC网络的工作原理:BTC工作在应用层。底层是网络层
应用层(application layer):运行BTC协议
网络层(network layer):P2P Overlay Network(BTC中的节点地位是平等的,没有超级节点)
如何加入网络
要加入网络需要知道一个种子节点(seed node),它会告诉你它所知道的其他节点,节点之间是通过TCP协议来传输的(有利于穿透防火墙)
离开网络不用做什么操作,直接退出程序就行,其他节点一段时间没有收到你的消息,会自动删除。
设计原则
设计原则是:简单、鲁棒性(robust),而不是高效
消息传播
消息传播采取 flooding的方式,邻居节点选取是随机的,如果该节点后面再收到这个消息就不会转发给邻居节点。
flooding:是指从任何节点通过一个路由器发送的信息包会被发送给与该路由器相连的所有其他节点(除了发送信息包出来的那个节点)。flooding是快速散布路由更新信息到整个大型网络的每个节点的一种方法。它有时也被用于多点传输信息包(在真实或虚拟网络中从一个来源节点传输到许多特定节点)。
BTC系统中节点要维护一个等待上链的交易的集合,第一次听到这个交易,节点会加入集合并转发给其他邻居节点(当然前提是交易合法),如果已经写到区块链中那么就从中删掉该交易。
遇到有冲突的交易,会根据收到消息不同时间,每个节点存入等待上链的交易的集合可能不一样(先收到的会存入,后面的认定非法交易),具体写入哪一个需要看哪个节点先拿到记账权。
BTC协议规定最大区块大小是1M,在整个系统中带宽是瓶颈,可能1M大小的交易信息的区块传播给全网绝大多数节点需要十几秒。
网友评论