哈希研究院区块链技术洞察(三)P2P

原创
2247 天前
17865

 

​P2P(Peer-to-Peer)网络是无中心服务器、依靠用户群(peers)交换信息的互联网体系(如图1右),这里的“Peer”充分表明了在网络中各个节点之间的地位是对等的。与有中心服务器的中央网络C/S系统(Client-Server)(如图1左)不同,点对点网络的每个用户端既是一个节点,也有服务器的功能,任何一个节点无法直接找到其他节点,必须依靠其户群进行信息交流。节点之间共享他们所拥有的一部分资源(如磁盘存储空间、网络带宽、处理器使用率等)来提供服务和内容,因此,当有节点加入且对系统请求增多时,整个系统的容量也增大。


 

 图1   C/S网络模式和P2P网络模式

P2P网络最常见的使用场景是在互联网上共享文件,它非常适合文件共享:在 C/S结构中,由于下载仅来源于一个中心服务器,请求下载的用户越多,平均下来每个用户的数据传输更慢。而对P2P网络而言,其许多节点中存储着同一份文件的副本,当有人需要下载它时,可以同时从多个节点下载,而自己在下载文件同时也可以上传给其他正在下载的节点,因此网络越大,速度越快。P2P网络充分利用了网络中其他对等节点的带宽,而不仅仅是利用文件来源节点的带宽。

由于在文件共享领域的成功,P2P网络受到了使用者的欢迎,但是由于大部分共享的文件是流行音乐和电影,对于版权的侵犯也使其饱受诟病。在一个纯粹的P2P网络中,数据可以随意复制,副本可以任意保存,但是资产显然是不可以随意复制、存在多个副本的。中本聪提出的比特币,保留了P2P的“分散化”的特征,也解决了一个资产在P2P网络中转移的问题:使得资产在转移时不是简单地复制,也需要从原地址中扣除,而矿工将核实究竟有没有将该扣除的资产扣除。以下我们将仔细分析比特币中的P2P网络,以给解决区块链上内容版权以及其他数字资产保护的问题提供启发。

首先,比特币网络是非常随机的。不仅体现在,每个节点可以连接到的节点是随机的,也体现在节点可以随时加入网络和离开网络,整个网络的总共节点数目不确定,也因此在达成共识的时候,比特币并不是实时一致的,而是从大概率上保证最终一致性。而带来的好处是鲁棒性:部分节点的退出或崩溃,并不会带来整个网络的瘫痪,用户的加入和退出并不会对整体网络产生太大影响。

其次,交易广播通过泛洪(flooding)算法来实现,并且经过设计使得同一笔交易不会一直在网络中广播下去。具体来说,如果一笔交易由一个客户端发起,客户端将这笔交易告知所有其他相邻节点,节点如果核验通过,则会将这笔交易信息传播给与其相邻的其他节点。而终止传播的条件在于,节点接收到的交易已经在自己的交易池里了,由于每个交易有独一无二的数字指纹哈希值,所以这个查询非常方便。

再者,和其他P2P网络一样,网络的传递是有延迟的。所以不同的节点有不同的交易池。如果有人发起双重支付攻击,并且两笔支付到达了同一个节点,诚实的节点将会仅保留一个交易,另一个不再广播,最终网络中不同的节点可能在短时间内存在记哪一笔账的分歧,但是没关系,随着时间的推移,共识机制保证了最终只会记录一笔账,同时也保证了篡改交易数据需要支付高昂的代价,使得交易是安全的。

在之前的《共识机制》文章中,我们提到了专家们针对分布式数据库研究出的“不可能性理论”,比特币多年运行良好,似乎比理论告诉我们的要好得多,这是因为它打破了经典模型里的两个假设:

一、 比特币引进了奖励的概念:使得人们在权衡利弊之下,发现好好记账的收益大于作弊的收益,所以自然而然会为了金钱奖励而诚实起来。

二、 比特币体系包含了随机性,使得它不用再纠结于规定共识的起点和终点,随着时间的流逝,观点出现分歧的概率按指数级下降。

这两处不同,使它逾越了传统理论关于分布式共识不可能达成这一鸿沟。

从以上分析可以看出,要想在P2P网络中实现数据的保护,使其不可以随意复制,也可以使用相同的思路:首先让数据加密,具有一定的访问限制性;然后设计激励机制让矿工来帮助负责检查是否是合法的数据转移,以及是否删除了原节点的副本;设计合适的共识机制,达成记账一致性;在节点选择上加入一定的随机性,避免权力集中在少部分节点,增加安全性和鲁棒性;巧妙利用数字指纹“哈希值”来核验校对数据等。

当然,天下没有免费的午餐,虽然类似这样的分权机制提供了一些关键的好处,如容错,安全性,政治中立性和真实性,但其代价是可扩展性。目前如火如荼的公链竞争中,各种项目都在可扩展性上大显身手,也侧面表明了这是现有区块链面临的关键问题。事实上,随着越来越多的节点被添加到其网络中,区块链实际上变得越来越弱,因为节点间延迟随着节点的增加而增加。

因此,所有以这种分散方式运行的公链共识协议都会在低交易吞吐量和高度集中化之间进行权衡。换句话说,随着区块链规模的增长,参与网络所需的存储,带宽和计算能力需求也会增加。在某些情况下,它变得很难处理,只有少数节点可以处理一个区块,从而导致集中化风险。另外,在交易的验证等方面,多个节点同时都在帮助核验,从某个角度来讲是有重复劳动和资源浪费的。毕竟本来张三给李四转账,是很私人的事情,拉上一个和这两人没啥关系的人来帮忙见证,也是要浪费记账人的时间的,当然记账人会得到报酬,但是这个报酬从哪儿来,在某些情况下不过是在透支未来的收益支付给他罢了。区块链技术令人兴奋,和它的P2P特性有很大关系。P2P的想法并不是什么新颖的想法,某种程度上我们重新回到了二十年前的技术上,不过这次是以一种更加纯粹的方式。民众渴望分权,因为疲惫于看到太多权力集中带来的弊端,可是分权是否一定会带来更多的社会正义,或者说为了这样的社会正义背后需要付出什么代价都是值得深思的。让自己和其他每一个人生活更好是人类美好的愿望,为了实现这个目标需要各方共同来努力。