网络层
网络层是区块链平台信息传输的基础,通过p2p的组网方式、特定的信息传播协议和数据验证机制,使得区块链网络中的每一个节点都可以平等地参与共识与记账。下面详细介绍区块链平台网络层中的P2P网络架构、信息传输机制和数据验证机制。
P2P网络架构
区块链网络架构一般采用的是基于互联网的P2P架构,在P2P网络中,每台计算机每个节点都是对等的,它们共同为全网提供服务。而且,没有任何中心化的服务端,每台主机都可以作为服务端相应请求,也可以作为客户端使用其他节点所提供的服务。P2P通信不需要从其他实体或CA获取地址验证,因此有效地消除了篡改的可能性和第三方欺骗。所以P2P网络是去中心化和开放的,这也正符合区块链技术的概念。
在区块链网络中,所有的节点地位均等且以扁平式拓扑结构相互连通和交互,每个节点都需要承担网络路由、验证区块数据、传播区块数据等功能。在比特币网络中,存在着两类节点,一类是全节点,它保存着区块链上所有的完整数据信息,并需要实时地参与区块链数据的校验和记录来更新区块链主链。另一类是轻节点,它只保存着区块链中的部分信息,通过简易支付验证方式向其他相邻的节点请求数据以便完成数据的验证。
传输机制
在新的区块链数据生成后,生成该数据的节点会将其广播到全网的其他节点以供验证。目前的区块链底层平台一般都会根据自身的实际应用需求,在比特币传输机制的基础上重新设计或者改进出新的传输机制,如以太坊区块链集成链所谓的“幽灵协议”,以解决因区块数据确认速度快而导致的高区块作废率和随之而来的安全性风险。这里我们以中本聪设计的比特币系统为例,列出其传输协议的步骤如下:
1. 比特币交易节点将新生成的交易数据向全网所有节点进行广播;
2. 每个节点都将收集到的交易数据存储到一个区块中;
3. 每个节点基于自身算力在区块中找到一个具有足够难度的工作量证明;
4. 当节点找到区块的工作量证明后,就向全网所有节点广播此区块;
5. 只有包含在区块中的所有交易都有效且之前未存在过,其他节点才认同该区块的有效性;
6. 其他节点接收该数据区块,并在该区块的末尾制造新的区块以延长链,而将被接收的区块的随机哈希值视为新区块的前序区块哈希值。
验证机制
在区块链网络中,所有的节点都会时刻监听网络中广播的交易数据和新产生的区块。在接收到相邻节点发来的数据后,会首先验证该数据的有效性,若数据有效则按接收顺序为新数据建立存储池来暂存这些数据,并且继续向临近节点转发;若数据无效则立即废弃该数据,从而保证无效数据不会在区块链网络中继续传播。验证有效性的方法是根据预先定义好的标准,从数据结构、语法规范性、输入输出和数字签名等各方面进行校验。对于新区块的校验同理,某节点产生出新区块后,其他节点按照预定义的标准对新区块的工作量证明、时间戳等方面进行校验,若确认有效,则将该区块链连接到住区块链上,并开始争取下一个区块的记账权。