前言:区块链要想构建Dapp生态,要想走向主流人群,优先要解决扩展性问题。但区块链是去中心化的系统,任何节点都可以自由加入,要在多样化的节点快速达成共识,是非常困难的事情。那么,区块链的真的无法扩展了吗?本文作者PreethiKasireddy认为,虽然现在不能,但未来有希望。
第一篇比特币论文是在2008年首次发布的。我对于区块链技术潜力的激情也是从那时候开始建立起来的。
去中心化数字货币,一个曾经遥不可及的目标,最终正在逐渐走向主流。它的自身价值是非常激动人心的,而我个人则对去中心化app的潜力感到更加兴奋。金融交易,预测市场和资产管理平台都饱含着巨大的潜力。
支撑它们的去信任系统是非常有趣的:身份验证系统,智能财产,抵制审查的社会平台,以及类似于DAO的自治结构和监管模型。最具颠覆性的用例也许还远没有被创造出来。
但是在可以预见的未来,这个梦想仍然只是梦想 – 虽然一些早期爱好者和企业家正在试验构建这类app,目前的工作仍然存在一个阻止这些app获得成功的巨大缺陷:扩展性。区块链,按照现在的情况来看,受限于它们的可扩展能力。
并不是说这个问题会永远存在,但目前的确是这样。事实上,我想证明这是目前区块链技术所面临的最大技术屏障之一。它已经很快成为了社区和加密货币中的一个非常热门的研究领域。
为什么区块链无法扩展?
目前,所有的区块链共识协议(如比特币、以太坊、瑞波、Tendermint)都有一个极具挑战性的限制:网络中的每个全节点必须处理每笔交易。回忆一下区块链固有的关键特性 – “去中心化” -意味着网络中的单个节点需要执行每一笔交易并维护完整状态的一份拷贝。
一个去中心化共识机制需要提供一些关键优势,例如容错性、强安全性保证、政治中立性和真实性,因此需要牺牲一些可扩展性。区块链能够处理的交易笔数不可能超过网络中单一节点的处理能力。
事实上,随着网络中节点数的增加区块链变得更加孱弱了,因为节点间的延迟会随着每个新增节点呈对数性增长。
在一个传统数据库系统中,扩展方案是增加更多的服务器(也就是算力)来处理增加的交易。在去中心化的区块链世界,每个节点需要处理和验证每笔交易,这就需要我们为网络中每个节点增加更多的算力来进行加速。然而我们无法控制网络中的每一个公共节点,这就让我们陷入了困境。
最终,以去中心化方式运作的所有公开的区块链共识协议在低交易吞吐量和高中心化程度之间进行了折衷。也就是说,随着区块链规模的增长,对网络中全节点的存储、带宽和算力的要求也在增加。在某一时刻,它将变得极其笨重,唯一可行的是让一小部分节点处理一个区块- 从而导致中心化风险。
为了能够扩展,区块链协议必须找出一种机制来限制验证每笔交易所需要的参与节点数,同时不损伤网络的可信性以保证每笔交易都有效。这听起来很简单,但是在技术上非常困难。为什么呢?
1. 由于每个节点不能够验证每笔交易,节点需要有一种统计和经济手段来确保其他区块(那些它们不能亲自验证的区块)是安全的。
2. 必须有某种方法来保证数据的可用性。也就是说,即使一个不直接验证区块的节点认为该区块是有效的,如果这个区块的数据变得不可用了,将会导致网络中没有其他验证者可以验证交易或者生产新区块,我们就卡死在了当前的状态下。(有很多种原因会导致节点掉线,包括恶意攻击和突然断电)
3. 交易需要被不同节点并行执行以获得可扩展性。然而,区块链上的状态转换也包含一些无法并行(串行)的部分,因此我们在转换状态的过程中均衡并行性与效用时会面临一些限制。
给我指标
那么这些可扩展性指标实际看上去是什么样子呢?让我们来看一看。
一个以太坊节点的最大理论交易处理容量是1000笔/秒。不幸的是,实际上远远达不到这个吞吐量,因为以太坊有“gas限制”,目前平均每个区块的gas限制是6,700,000。
Source: etherscan.io
快速科普一下“gas”,如果你之前没有听过这种测量方式:在以太坊中,gas是一种测量算力消耗的方式,每一种操作都被指定了一个固定的gas(例如,获取账户余额消耗400gas,创建一个合约消耗32,000gas,发送一笔交易消耗21,000gas等等)。
交易有一个“gas限制”字段来指定发送方想要购买的最大gas。因此,每个区块的“gas限制”决定了有多少交易可以被打包进区块,取决于区块中每笔交易指定的gas限制。
以太坊的gas限制某种程度上和比特币的1MB区块大小限制类似,区别是以太坊的gas限制是由矿工动态设置的而比特币的区块大小限制则是硬编码进协议中的。
以太坊的gas限制给每个区块的网络算力强加了一个软顶:按照目前6,700,000的gas限制,每笔标准交易平均大约消耗21K的gas,可以算出每个区块大约包含300笔标准交易。
目前的平均出块速度是20秒,相当于最多每秒15笔交易(300/ 20 = 15)。如果包含复杂交易,这一数值将会更低(例如智能合约消耗的平均gas是50K,意味着每秒~7笔交易)。
如果同时考虑到以太坊网络中的交易数量正在与日俱增,你会发现这是一个相当大的问题。从2016年第二季度到2017年第二季度,每天的交易数量从40K增加到了240K,达到了500%的年增长率。
此外,上个月的交易数量达到了每天440K笔的峰值!我们可以很快算一下,相当于每秒5笔交易。
哦,不。
类似的,比特币,先不管每秒4000笔交易的理论限制,目前有每秒7笔小交易和3笔复杂交易的硬顶。
注意这些限制在私有链上并不存在。私有链实际上可以在以太坊或者比特币上达到1,000笔/秒。
为什么?因为你在运行一个私有链,你有能力确保网络中的每个节点都是高性能计算机并拥有很高的带宽。对区块链进行扩展,要求我们为每个节点增加更多的算力以变得更快。由于私有管理网络可以控制网络中的每个节点,他们可以这么做。
此外,由于你在一个私有网络上,你可以线下处理一些线上的活动,比如确保每个参与的节点正在运行一个真实的节点。
我曾经在以太坊上设计和实现了一种新的协议,亲身经历并且进一步证明了可扩展性存在的问题。我个人非常沉迷于如何解决这个问题的研究、讨论和和实验。在本文余下的部分,我将描述一些社区中提出的用于解决可扩展性问题的方案。每一种都有独特的优势和折衷。
事情的真相是:没有一种方案能够为解决可扩展性问题提供完美的答案。在现实中,每一种方案都可以为改善可扩展性前进一小步。如果把它们组合在一起,区块链可扩展性的未来一片光明。
请注意本文的目标不是探讨所有的技术难点或者讨论每种方案的优点。我的目标是让你对我所知的一些方案有一个总体的了解(10,000英尺的视角)。如果读者们有兴趣,我可以在以后的文章中深入探讨某些特定方案的细节。本文假设你对区块链如何工作有一些基本的了解。
开始我们的分析。
方案
扩展区块链是一个已知的挑战并且多年来已经成为了一个热门的研究领域。特别的,如果你曾经经历过比特币社区多年的灾难,你应该听过两种比特币的特定扩展方案:SegWit和增大区块到2MB。
这两种方案的目标都是解决比特币的特定问题:比特币区块链有一个内建的1MB区块大小的硬限制,从而限制了可以被打包进区块的交易数量。
最终,比特币面临了处理和确认交易的延迟问题(有时候是几小时甚至几天)。类似的,正如我们在上一节所看到的,以太坊也在扩展能力上面临局限。
直到我们找出扩展区块链的方法,否则应用场景的增长速度和广度都将受到限制。我们看一下现存的一些解决方案。
—未完待续—
(本文来自于hackernoon.com,由蓝狐笔记社群“鑫鑫”翻译。)