比特币系统运行在一个对等网络中,网络中的所有节点共同参与整个网络。与对等网络对应的是我们目前普遍使用的客户/服务器模式(Client/Server mode,C/S),在C/S网络中,用户向服务器发送请求,服务器响应用户的请求,返回给用户所需要的结果,网络的顺利运行很依赖中央服务器,如果服务器发生故障,会导致大规模用户无法使用网络。
而在对等网络中,参与的各个节点在是平等的,参与网络的节点直接发生联结,而不需要再通过中央服务器进行信息的转发,所以理论上,只要两台计算机都接入了互联网或局域网,使用对等网络的计算机之间便可以进行通信。

为了在网络中通信,参与网络的节点要共同遵守一些协议。比如两种常见的数据传输协议:TCP/IP协议和UDP协议。在C/S网络中使用最普遍的就是TCP/IP协议,而在对等网络中,大多使用UDP协议。TCP/IP协议是一种可靠的传输协议,而UDP是一种不可靠的传输协议,前者类似于打电话,传输数据的双方会针对传输进行确认,而后者类似于广播,广播发送者只负责广播信息,而不会对消息是否被接收到进行确认。两种协议互有利弊,具体选择哪种协议往往需要根据实际需要进行衡量。
在C/S网络中的应用,一般由中央服务器对应用进行维护和保障。在对等网络中的应用,由于参与的节点间相互平等,且在这样的开放网络中,不断有节点加入或离开,试图在所有的对等节点之间建立起一种共识是困难的。比特币的发明者中本聪首创性的提出利用工作量证明机制在对等网络中建立共识,从此以后,人们开始针对对等网络中的共识机制不断进行改进。
在比特币网络中,所有的参与的节点都可以进行消息的验证及传播,但同时比特币网络也包含一些轻量级的节点,这些轻量级的节点不保存全部的区块链,而只进行区块链交易的验证。比特币网络会对一些长期稳定运行的节点进行记录,当一个节点接入网络时,会首先向这些记录下来的节点尝试建立连接,建立连接后,新接入的节点会将自身IP地址发送给邻近的其他节点,当节点下次接入网络时,会首先尝试与临近节点建立连接。

如果节点不是轻量级节点,在接入网络后会进行更新区块链,将最长的区块链同步到本地。对于轻量级节点,只需要将区块头同步到本地即可,这比全部区块链所需的空间大大减少。除了同步区块链外,所有节点都还要维护一个“内存池”的临时列表,列表其中记录了还未被包含在区块链中的交易,这些交易已经提交,但还没有在整个网络中建立共识。如果其中的交易被验证,验证信息会在网络中广播,所有的节点通过广播信息对内存池进行维护。
综上,比特币建立在对等网络之上,比特币的使用者在网络中功能对等、相互平等,但目前比特币网络中还存在一些轻量级节点,这些节点不必同步全部的比特币区块链,而只需对区块链的区块头进行同步,这样大大减少了数据量,但这些节点往往也之只能对交易进行验证,而不能参与区块链的维护(挖矿)。比特币网络会对一些长期稳定的节点进行记录,也会对临近的节点进行记录,在节点再次接入网络时,会优先就近连接。
网友评论