05 BTC-网络

发布时间 2023-05-02 12:25:37作者: YangYi215

《区块链技术与应用》课程链接:https://www.bilibili.com/video/BV1Vt411X7JF/?spm_id_from=333.337.search-card.all.click


05 BTC-网络

The BitCoin Network:

application layer:BitCoin Blockchain

network layer:P2P Overlay Network

比特币网络中所有节点都是平等的,不像有的P2P网络中存在所谓的 Super node/master node 。

想要加入比特币网络,首先需要知道一个种子节点(seed node),种子节点会告诉网络中其它节点,节点之间是通过TCP来通讯的,这样有利于穿透防火墙,离开的时候,不需要做任何操作,不用通知其他节点,退出自己的应用程序即可。其余节点没有听到你的消息,过段时间之后,就会把你删掉。


比特币网络的设计原则是简单(simple)、鲁棒(rebust)、而不是高效(efficient)。

simple,rebust,but not efficient

每个节点维护一个邻居节点的集合,消息传播在网络中采取 flooding 的方式,节点第一次听到某个消息的时候,把它传播给自己的邻居节点,同时记录一下,这个消息我已经收到了,下一次收到消息的时候,就不用转发给邻居节点了,邻居节点的选择是随机的,没有考虑底层的拓扑结构(比如,一个在加利福尼亚的节点,它的邻居节点可能是在阿根廷的),这样设计的好处是增强鲁棒性,但是牺牲的是效率(你给身边的人转账,跟你给美国的人转账,速度其实是差不多的)。


比特币系统中,每个节点需要维护一个等待上链的交易的集合。

如果有两笔交易 A—>B、A—>C,花的是同一个币,根据每个节点在网络中位置的不同,有的节点可能先收到A—>B这个交易,有的节点可能先收到A—>C这个交易,如果先收到A—>B交易,再收到A—>C这个交易,则将A—>C交易视为非法,如果收到新的区块链中的交易包含A—>C这笔交易,则也需要将交易池中的A—>B这笔交易从交易池中删除。


越是大的区块,在网络中传播的速度就越慢,比特币有1M字节的限制,按照比特币的网络的设计,区块需要几十秒才能传播到绝大多数节点上。


线上的系统没有办法解决线下的问题。

其实,银行退款也不是通过回滚交易实现的,而是通过产生新的交易。