第十五讲 || 去中心化与P2P通信
在有关区块链的交流中,即使是对区块链这个概念刚刚接触的新人,在谈到对区块链的认识与理解时,首先提到的一个关键词都是“去中心化”。事实上,区块链在与传统互联网系统进行比较时,去中心化也确实是其一个非常显著的一个技术特征。

去中心化的实现是依赖于区块链的P2P通信机制来达成的。去中心化这种通信体制实质上并不陌生,相较传统的PSTN的树状通信网络架构,英特网从产生之初就是一个网状的点对点信息通信系统,通信双方只需要知道对方的IP地址,就可以建立双方基于TCP/UDP的通信联接。比如电子邮件通信,各个邮件服务器,他们之间的通信就是点对点的邮件交换,只是个人与邮件服务器之间是星形通信结构;再比如QQ,除了对身份信息、地址信息的管理是腾讯的服务器在管理外,QQ通信双方之间的信息传输实际上也是点对点的。前几年网络带宽特别是接入网带宽还不是特别好的时候,要很流畅地在线观看一部电影或电视剧,最好的方法就是采用诸如PPLIVE这种分布式存储的视频网站,否则无论是服务端的带宽瓶颈还是接入网的带宽瓶颈都很难支撑高速视频流的传输。
Inernet天生就是支持点对点通信架构的,TCP/UDP数据传输协议是基于两个通信节点之间数据传输的协议,HTTP协议/FTP协议也是支持两点之间进行文件传输的协议。但为什么后来,互联网却演变成为流量、数据、信息被少数互联网寡头垄断的中心化数据平台了呢?主要有两个原因,其一是网络架构的原因,其二是现实社会的组织结构。尽管互联网是一个网状的架构,通过路由器的连接,两点之间的通信一般具有很多条可选的通道,但在网络路由的选择中,位于通信网络的中心交换节点、核心交换节点附近的节点具有更好的可达性、更低的时延与更高的带宽支持,因而从互联网的物理架构上,在这些交换节点附近更易形成具有大容量数据处理能力的服务节点,数据与信息也更容易在这些节点形成聚集。

现实的社会组织架构中,无论是一个小的公司内部,还是一个社会的公共服务,均需要数据能高效的共享,而一种最简单的数据共享方式,就是采用星形服务结构将大家都需要的数据集中存放在一个中心化的服务节点上。C/S架构、B/S架构,以及现在高速发展的云架构,均是这种现实需求的产物。但流量、数据与信息的高度集中带来了两个问题,一个是安全问题,一个是数据产权问题。因为信息与数据均集中在单一节点或有限节点上,一旦这些有限节点遭遇攻击,就可能导致信息与数据的丢失或服务的停摆,互联网中心节点的安全性问题是互联网建设中投入的重要内容,其原因就是这种网络架构天生就具有易受攻击的脆弱性。

另外,由于数据与信息集中存放在组织或机构的物理服务器上,在互联网数据产权意识尚未清晰建立起来的社会背景下,这些组织、机构天然认为这些存放在其服务器上的数据归属于他们所有,并且从技术上掌握有对这些数据的生杀大权,如可以对数据按其需要进行任意的修改、删除。随着当前网络通信带宽已越来越富余,即使是在接入网环节也有高速的如5G技术的超宽带、低时延数据传输支持,以及人们越来越觉醒的数据与信息产权意识的条件下,互联网中心化平台的这两个缺陷越来越不受人们的待见,因此去中心化成为了新一代互联网革命的一个重要思潮和变革方向。
P2P通信及其协议是实现去中心化网络通信架构的核心技术与关键基础。P2P通信最早应用于大数据量文件的分布式存储、共享与传输,如视频数据。在这类应用中,用户首先访问视频网站服务器获得相应视频文件存储地址的种子文件,然后分别与种子文件中所记录的地址进行通信连接,若相应地址所对应节点在线,即分别从在线节点中分段下载文件。同时,本节点也将自身地址注册到该视频文件的种子文件中,其它节点访问时,本节点也作为新节点的数据下载源之一。通过这种既使用服务又贡献服务的方式,让原来基本不可能满足大规模用户数据访问的视频数据服务变成了可能,而且使用用户越多,下载速度越快。而P2P协议最近再次受到高度关注与重视的原因是因为应用于区块链上,以及用于现在正在发展中的去中心化的分布式文件存储如IPFS中。
P2P通信协议是区块链的基础通信协议,如以太坊采用的P2P通信Kademlia。在区块链中,每个区块链节点既是客户端节点又是服务器节点,在每个节点上均存储有其邻近节点的地址表,通过节点之间的相互连接确保了整个区块链网络的相互连通。通过任一节点新产生的交易或区块,均会通过向邻近节点的数据广播,从而到达到网络中的所有在线节点;同时,新启动的节点,在从网络初始节点获得网络中在线节点的地址表后,会根据当前节点的区块序列状态从相应节点下载区块更新本地区块链及状态库,同时不断优化自已的邻近节点表,以优化同步与广播通信性能。

在P2P通信协议的支撑下,区块链网络中的节点越多,区块链的数据就越安全,就越不容易受到攻击,比特币自08年诞生以来,至今没有发生重大的安全事件并仍在全球稳定和持续运营,就是这种架构可靠性的证明;同时,由于数据分布式存放在不同主体机构、组织或个人的计算机上,单一组织对数据的绝对控制就很难实施,在这种条件下,对数据进行确权与根据私钥进行数据的加密控制就具备了物理、技术与组织的基础与正当性。同时,要确保所有数据的一致性,数据如何达成共识就变成了一个新的问题,有关数据共识的问题我们将在下一讲来介绍。
但由于区块链要求所有节点均存储有完全相同的数据备份,并要尽可能地保证所有节点在同一时刻的状态的一致性,在这种机制下意味着区块链中所存储数据的成本是极其高昂的,这还不包括用于共识计算的算力开销成本。这就使我们只能用区块链来存储和处理高价值的数据与信息,如数字货币、数字资产、商业核心逻辑等,一般性的数据如网页、图片、视频等数据,则不适合用区块链来存储与处理。对一般性的数据文件,若需要采用P2P去中心化协议模式来存储与处理,目前非常著名的协议架构及运营网络是IPFS,即分布式文件系统,这个协议雄心勃勃的一个目标就是取代HTTP超文本传输协议。
IPFS在以太坊中有一个对应的架构是SWARM。在分布式文件系统中,与区块链所不同的是,用户所发布的文件并不要求在所有节点上存储,但是一旦一个新用户访问了该文件,该文件就会在这个新用户的节点上存储,当另一个新进来的用户访问该文件时,已经访问过该文件的节点就可能成为新进用户的服务节点。通过这种方式,一个用户若访问的文件越多,则向其它用户服务的机率也就越多,因此IPFS是一个非常公平的协议,它既解决了文件的分布式存储问题,又不需要像区块链那样需要严格的数据同步,而是“多得多劳”,获得越多,服务越多,非常适合大数据量文件的分布式存储与访问。

在实际的区块链应用软件开发中,若要开发一个完全去中心化的区块链应用,则可以把区块链与分布式文件系统两种技术架构结合起来。使用分布式文件系统来存储普通网页、用户UI、大数据量的图片、视频,而用区块链来存储高价值的数字资产、应用核心商业逻辑、图片视频等防篡改数据的哈希码等。所谓“分久必合,合久必分”,互联网技术架构也遵循这个规律,目前的互联网技术架构就是合得太严重了,以致形成了高度垄断的互联网寡头体系,基于P2P通信协议的区块链及分布式文件系统的出现与发展,就是在互联网中心化发展到一定阶段必须进行再调整的历史必然。