区块链最大的难题以及解决方案剖析

12 个月前 · 原创文章

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

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

由于这些改进,互联网变得更快,访问成本变得更低。以前,开发人员们只能创建单个网页。但现在,开发者可以在改进的基础设施上建立像Facebook、谷歌和Twitter这样的网站。正是因为当前的互联网具备了很高的速度和可扩展性,才使得这一切都成为可能。

目前的情况下,区块链上面的交易也面临着类似的问题——缓慢而昂贵。

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

Zilliqa就是尝试解决这一问题的公司之一。

Tech in Asia与Zilliqa项目的技术负责人贾瑶琪坐下了解了更多的细节。

区块链和可扩展性问题

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

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

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

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

提升可扩展性

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

1. 增加区块大小

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

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

但这在实践中是有问题的,Zilliqa的技术负责人贾瑶琪解释道:“假设你将区块大小从1MB增加到1GB,当你创建区块时,必须将其传送给网络中的其他人,而网络无法快速处理庞大的文件。就像你使用gmail电子邮件,当你上传一个很大的文件时,gmail邮箱会不接受。这就是增加区块大小存在的问题。也就是说,区块的大小不能超过某个临界点,所以这种解决方案缺乏可扩展性。”

2. 链下解决方案

第二种可能性是链下解决方案,比如比特币的闪电网络(Lightning Network),以太坊的雷电网络(Raiden Network),和Neo的Trinity链下扩容方案。

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

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

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

3. 代理共识协议

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

就好像你有一个由1000个人组成的群,群里的每个人都必须同意某件事情,这个过程不仅漫长,而且会非常混乱。相反,如果你从社区中选出10名代表,任命他们为社区的管理员,让这10个人投票来决定某件事情,就会更快和更容易的达成共识。

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

大多数具备可扩展性的区块链项目都采用这种代理共识协议。为了进入代理节点联盟,社区成员必须表达兴趣并经历某种测试(称为权益证明或权威证明)。如果他们成功通过,将被授予加入代理节点联盟的证书并运行共识协议。

这种方案的问题是,代理共识协议由代理节点群来运行,也就变成中心化的方式了。

4. 分片技术

由于以上几种解决方案的局限性,分片技术作为一种把网络分割成“碎片”的链上解决方案也发展起来。分片技术在数据库领域中并不是一个新概念。分片技术将大型数据库分成更小、更快、更易于管理的部分,称为数据分片。

这一概念一直没有被应用到区块链领域,直到Lou Luu,Prateek Saxena,以及他们的团队在研究论文Elastico中进行了可行性探索。Saxena是Zilliqa的首席科学顾问,也是新加坡国立大学计算学院的助理教授。Luu作为公司的顾问,在发表这篇论文时曾经是同一所大学的博士生。

Zilliqa的解决方案叫说网络分片技术。为了展示它的工作原理,现在假设你有一个需要五步来解决的问题。

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

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

在这个例子中,学生就像是Zilliqa网络上的节点。班级包括网络中所有的节点,而小组就可以被称为分片。老师则代表了目录服务委员会(Directory Service (DS) Committee),而这个委员会本身也是一个分片。

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

如果使用Zilliqa的网络分片技术,假设你有10000个节点,通过工作量证明过程,它们将被随机分为10组,每个组被称为一个分片。

每个分片处理一组不同的数据,并得出小组内一致同意的答案。然后,各分片将这些数据的摘要报告提交给一个名为目录服务委员会的分片,由它来统筹不同分片的数据摘要,并将它们组合起来形成一个更大的数据集,称为最终区块,最终区块的数据又会被返回所有分片。

这个过程被称为网络分片,而Zilliqa是目前已知的唯一在开发这种技术的公司。网络分片是一种去中心化的、安全的链上解决方案,具有线性的可扩展性——也就是说,节点越多,得到的吞吐量就越大。Zilliqa目前每秒可以处理2488笔交易,而且未来的目标是达到每秒10000笔的速度。

以太坊正在开发一种类似但不同的技术,被称为状态分片。在网络分片中,不是每个节点都必须处理每笔交易,但是每个节点都必须存储网络中其它分片的信息。在状态分片中,每个节点都只存储它们自己处理过的信息子集。虽然这减少了每个节点的负担,但分片之间的通信会变得复杂。

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

贾瑶琪说:“我们从2015年就开始了分片技术的研究,现在还在不断进行测试。部署一个简单版本的分片很容易,但是要正确且安全地运行很难,这就是为什么现在很少的团队在研究它“。“如果把分片技术与增加区块大小的想法相比较,后者是最简单的解决方案。因为你只需调整一个参数——区块大小,然后吞吐量就增加了。但是当引入分片技术时,需要考虑的事情就非常多。如何合理地划分小组成员?如何分配任务?所有这些都给系统带来了复杂性。但如果做得正确,这个系统将是分布式的、安全的,并且有可以线性增长的吞吐量。”

带宽和存储容量也是通病——不仅仅对于分片技术,也对于所有旨在提高区块链吞吐量的方案。

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

进行公开测试

网络分片技术已经成功地在Zilliqa内部部署。团队现在希望公众可以在他们3月底上线的测试网上尝试一下。测试网本质上是一个复制的系统,用于团队在部署主网之前运行测试。

Zilliqa在测试网上的试运行是面向Zilliqa支持者的,包括对这种协议感兴趣的开发人员和社区成员,以及对分片概念感兴趣的区块链开发人员。在测试网上,用户可以观察到区块链系统的状态,例如正在处理的交易数量和当前的代次数。同时,用户可以使用钱包创建有效的帐户来发送和接收测试用的通证。

目标

在不久的将来,Zilliqa打算推出它的区块链的系统和智能合约平台,这将使得应用程序可以在区块链上运行。接下来就是在平台上发布一些重要的应用程序,称为分布式应用程序,简称DApps。可以把这些看作是谷歌或脸书一类的应用程序,但它是在分布式的区块链平台上发布,这些应用程序将会帮助Zilliqa进入主流市场。

“如果区块链是一个操作系统,我们希望Zilliqa成为未来的安卓或IOS,” 贾瑶琪说。“我们希望普通人能够轻松地使用和开发Dapp,有一天发现他们最喜欢的应用程序是建立在Zilliqa之上的。”

未来,Zilliqa还希望解决区块链中的众多问题,例如可扩展性的解决方案、隐私和存储问题。

“这些不仅仅是行业的问题,也是学术界的问题” 贾瑶琪说。“从长远来看,我们希望提供一个具备可扩展性的区块链平台。同时,我们也要做研究,发表论文,并支持区块链产业,这样我们就可以解决这些问题,来打造区块链这个未来的互联网。”

我们很高兴地邀请您加入我们的社区,与技术专家、金融业者和加密数字货币爱好者们一同探讨!您可以通过以下方式关注我们的进展:

微博:https://weibo.com/zilliqa

微信公众号:ZilliqaCN

Zilliqa中文社区联盟:http://www.zilliqa.com.cn

关注我们的推特:https://twitter.com/Zilliqa

通过邮箱订阅我们的新闻:http://zilliqa.us16.list-manage.com/subscribe?u=52acaef93d75cf69065e355ff&id=11f0b30bdd

关注我们的博客:https://blog.zilliqa.com/

Reddit:https://www.reddit.com/r/zilliqa

Slack:https://invite.zilliqa.com/

Gitter:https://gitter.im/Zilliqa/

电报群:https://t.me/zilliqachat

Zilliqa

下一代高吞吐量区块链平台