Trias联合“北大软微-八分量协同创新实验室”定期举办技术沙龙。该实验室成立于去年9月份,以可信计算、区块链等作为主要研究方向,致力于推动智能互联新时代下的人机互信问题的解决。针对沙龙具体细节问题,我们将推出由实验室教授、博士生主笔撰写的系列文章。本期文章由北京大学的博士生张晓磊撰写。
最近非常火的区块链技术对于大家来说应该并不陌生。但是很多人只是了解区块链技术的一些概念,对其底层的一些技术实现原理可能不是很了解。这篇文章会向你介绍区块链底层采用的通信网络技术及其网络中节点间的通信协议。
区块链的底层网络技术采用的是peer-to-peer网络,简称P2P网络。这是一种分布式网络通信技术,又称 “对等网络”。与传统的客户端/服务器端(client/server, C/S)结构不同的是,在P2P网络中各个节点之间没有主从之分,地位都是对等的,每一个节点既可以是服务器端也可以是客户端。
P2P网络根据其路由查询结构可以分为四种类型,分别是集中式、纯分布式、混合式和结构化模型。这四种类型也代表着P2P网络技术的四个发展阶段。
其中,比特币采用的身世混合式,而现今公链大多采用的是结构化类型。在结构化网络的具体实现上,大都采用DHT(Distributed Hash Table, 分布式哈希表)算法的思想。基于DHT算法思想的具体实现方案有Chord、Pastry、CAN和Kademlia等算法。其中Kademlia算法是以太坊网络使用的算法,本文中我们将对其进行详细描述。
比特币网络
区块链技术最早的使用是在比特币中,前面我们也说到了,比特币网络采用的结构是混合式网络。
比特币网络节点有四个功能,分别是:钱包、挖矿、区块链数据库、网络路由。这四大功能并不是比特币中所有节点都包含,不同类型的节点只包含部分功能,只有比特币核心(Bitcoin Core)节点才会包含所有的这四个功能。
图1.全节点示意图,其中Wallet表示钱包功能、Miner表示挖矿功能、Full Blockchain表示完整的区块链数据库、Network表示路由功能[1]
依据其所包含的功能不同节点的类型也不同,但是所有的节点都会包含路由功能,因为所有的节点都要参与校验和广播(传播交易和区块信息),并且发现和维持与其他节点的连接。
除此之外,一些节点包含完整的区块链数据库,数据库中包含所有的交易数据,这类节点被称为 “全节点(Full Block Chain Node)”。全节点可以独立自主的校验所有交易。
还有一些节点只包含了部分