区块链最大的难题和不同解决方案的剖析

转载
2413 天前
12591
巴比特资讯

稿源(译):巴比特资讯    作者:Yanting Sim   译者:greatandrew

目前区块链平台最大的问题,可以用一个简单的类比来说明:

二十一世纪初,互联网的速度非常缓慢。当时如果你有一个博客,用户要访问它既费时又费钱。人们注意到这个问题,但同时也认识到了互联网的用处。为了解决此问题,很多人努力改进互联网的基础设施和设计。与此同时,人们还构建了更强大的硬件来运行这些互联网的设施。


由于这些改进,互联网变得更快,访问成本变得更低。以前,开发人员们只能创建单个网页。但现在,开发者可以在改进的基础设施上建立像脸谱网、谷歌和Twitter这样的网站。所有这些都是可能的,因为互联网的速度和容量得到了极大提升。

区块链技术也面临着类似的问题——缓慢而昂贵。

许多区块链公司都致力于构建可扩容的基础设施,从而使区块链平台在未来成为主流。一旦那一天到来,人们不仅可以使用区块链进行支付,还可以在其之上构建类似于谷歌和脸书的应用程序。

 区块链和扩容能力问题


在解释扩容问题之前,必须要先解释吞吐量的概念。假设你在火车站等车,每趟火车间隔一小时,只能做10个人。一旦火车满载,第十一名乘客只能等待下一趟。与这个做类比,乘客代表交易,比特币或以太坊这样常见的区块链平台每秒平均可以处理大约10次交易。


相比之下,像VISA这样的支付公司目前平均每秒处理5000到8000次交易。任务处理的速率称为吞吐量。与Visa等支付平台相比,区块链平台目前的吞吐量非常低。


现在假设你在同一个火车站,但这次还有另外一百人个想坐这列火车。火车来了,售票员看了看人群,说:“付钱最多的10个人可以上火车。”你因为赶时间,所以你就付了一大笔钱买票上火车。

由于区块链平台的吞吐量低,交易费用不断上升。例如,一笔10美元的交易在拥挤的区块链平台上很可能需要支付2美元的交易费用。因此,缓慢和高成本是互联网上的主流交易往区块链平台上迁移的巨大障碍。 

提升扩容能力

为了提升区块链平台的主流接受度,这些平台需要进行扩容。区块链公司们为此提出了几种解决方案。

1.增加区块大小


第一种最直接的方法是增加区块大小。回到火车类比,这意味着将火车的容量从10人增加到20人。这样,火车就可以在特定时间内运送更多的乘客,减少车站的拥挤。

比特币当前的区块大小1 MB,提高到2 MB可以使其每秒处理量增加一倍。区块越大,每秒处理量就越高。

但这在实践中是有问题的,假设你将块大小从1 MB增加到1 GB,当你创建块时,必须将其传送给网络中的其他人,而网络无法快速处理庞大的文件。就像你使用电子邮件,当你上传一个大文件时,邮箱会不接受。这就是增加区块大小的毛病,不能超越某个临界点,所以这种解决方案的能力是有限的。

2.链下解决方案


第二种可能性是链下解决方案,比如比特币的闪电网络,以太坊的雷电网络,和Neo的本体网络。

在当前的情况下,每次交易处理,都必须得到网络中每个节点的验证。(节点是运行算法并处理交易的计算机。)

例如,你想在一个月时间里每天从一个特定的咖啡店买一杯咖啡,咖啡的价格是1美元,但在网络上每天交易1美元是非常昂贵的,你不想为1美元的交易而拥挤整个网络。因此你和咖啡馆老板签了一个合同。合同规定,你每天都要付象征1美元的通证作为咖啡费。你向网络发送一笔交易来标记合同的开始,30天后再发送一笔交易来标志该合同的结束,合同结束后,咖啡馆老板可以在网络上把这30个通证交换为30美元。

因为这些是在区块链网络之外发生的私人协议,所以它们被称为链下解决方案。这种交易系统的缺点是,整个过程都集中在托管这些链下交易的服务器上,这些链下网络也是黑箱,其透明性和安全性是值得怀疑的。

3.代理共识协议


 目前区块链网络上的处理速度是非常慢的,因为网络中的每个节点都必须参与处理。如果网络中有一千个节点,那么一千个节点都必须参与处理网络中的每笔交易。

如果一个社区里有1000个人,每个人都必须达成一致,过程不仅漫长,而且会非常混乱。相反,如果你从社区中选出10名代表,任命他们为社区的管理员,让这10个人投票,达成共识会更快和更容易。

类似的,您可以委托一组节点来运行协议并在事务上达成一致,代理节点的共识将代表社区的共识。

大多数可扩容的区块链项目都采用这种协议。为了进入治理联盟,社区成员必须登记兴趣并通过测试(称为权益证明或权威证明)。如果他们成功通过,将被授予加入治理联盟的权证并运行共识协议。

4.分片技术


分片技术是一种把网络分割成碎片的链上扩容方案,但分片不是数据库领域中的新概念。分片技术将大型数据库分成更小、更快、更易于管理的部分,称为数据碎片。

为了展示它的工作原理,现在假设你有一个包含五个步骤的问题。



想象你在一个班级里有10个学生可以帮你这个问题,而且这个问题可以分成5个并行的步骤。于是你把班级分成5组,每组两人,每组解决一个子任务。


一旦有小组完成了它的子任务,就会把信息传递给老师了,老师就会汇总五个组的所有答案,并将完整的答案传递给所有的组。这样,即使各个小组专注于他们的子任务时,并不知道其它组在做什么,但最终所有的参与者都会得到答案。

在这个例子中,学生是网络上的节点。班级就是网络中所有的节点,而小组则是分片。老师则代表了目录服务委员会(DS),而它本身就是一个分片。


如果把比特币网络比作一个教室,学生们必须自己解决每一步的问题,这要花费长得多的时间,而且每个参与者的负担也要大得多。

但是使用网络分片技术,如果你有10000个节点,通过工作量证明过程,它们将被随机分为10组,每个组被称为一个分片。每个分片处理一组不同的数据,并得出小组内一致同意的答案。然后,各分片将这些数据的摘要报告提交给一个名为目录服务委员会的分片,由它来统筹不同分片的数据摘要,并将它们组合起来形成一个更大的数据集,称为最终区块,最终区块的数据又会被返回所有分片。

从上面的分析可以看到,分片技术是一种去中心化的、安全的链上扩容方案,具有线性的扩容能力——也就是说,节点越多,得到的吞吐量就越大。

分片技术有两种类型:网络分片和状态分片,以太坊正在开发的技术是状态分片。两种技术的不同之处在于,在网络分片中,不是每个节点都必须处理每条信息,但是每个节点都必须存储网络中其它分片的信息;如果使用状态分片,每个节点都只存储它们自己处理过的信息子集,虽然这减少了每个节点的负担,但分片之间的互通会变得复杂。

分片技术的缺点是设计和部署的复杂性

部署一个简单版本的分片很容易,但是要正确且安全地运行很难,这就是为什么现在很少的团队研究它。与最简单的解决方案相比较,增加区块容量只需调整一个参数——区块大小,然后吞吐量就增加了。但是当引入分片技术时,需要考虑的事情就非常多。如何合理地划分小组成员?如何分配任务?所有这些都给系统带来了复杂性。但如果做得正确,系统将是分布式的、安全的,并且有线性的扩容能力。

带宽和存储容量是所有的扩容方案的通病

对于比特币和以太坊这些的区块链平台来说,这个问题还不严重,因为它们的吞吐量很低。比特币和以太坊每秒处理10笔交易,按目前的速度,一年内的所有交易数据将达到几GB。但是,当我们每天处理数亿笔交易时,数据就会爆棚。为了存储所有这些数据,我们必须找到更好的存储解决方案,这不是网络分片可以直接解决的。