引言:区块链还有没有希望?
翻译:尾巴
区块链没成规模。至少现在没有。但还有希望。
第一张比特币论文于2008年首次发行。从那时起,我就对区块链技术的潜力感到兴奋。
去中心化的数字货币,曾经只是一个遥不可及的目标,现在终于进入主流。虽然这本身就很令人兴奋,但我个人对去中心化应用的潜力感到最兴奋。金融交易所、预测市场和资产管理平台都蕴藏着巨大的潜力。
支持它们的无需信托系统同样耐人寻味;身份验证系统、智能财产、免除审查的社交平台,以及像DAOs这样的自主结构和治理模型。最具破坏性的用例可能还没有出现。
但在可预见的未来,这个仍然是一个梦想——虽然一些早期的爱好者和企业家正在尝试构建这样的应用程序,但仍然有一个很大的缺陷阻止我们看到这些应用程序的实现:可拓展性。如今,区块链的规模有限。
这并不是说永远都是这样,但今天肯定是这样。事实上,我认为这是我们今天面临的区块链技术最大的技术障碍之一。在社区和密码货币的研究人员中,它迅速成为一个非常活跃的研究领域。
为什么区块链不能扩展?
目前,所有区块链共识协议(如。比特币(Bitcoin)、Ethereum (Ethereum)、Ripple (Ripple)、Tendermint (Tendermint)都有一个具有挑战性的限制:网络中每个完全参与交易的节点都必须处理每一笔交易。回想一下,区块链有一个固有的关键特征——“去中心化”——这意味着网络上的每个节点处理每个事务并维护整个状态的副本。
虽然分散化共识机制提供了一些关键的好处,比如容错、安全、政治中立和真实性的有力保证,但它是以可拓展性为代价的。区块链可以处理的事务数量永远不能超过参与网络的单个节点的数量。实际上,区块链实际上会随着更多节点被添加到其网络中而变得更弱,因为节点间延迟会随着每个节点的增加而对数地增加。
在传统的数据库系统中,可伸缩性的解决方案是添加更多的服务器(即计算能力)来处理添加的事务。在分散的区块链世界中,每个节点都需要处理和验证每个事务,它需要我们向每个节点添加更多的计算才能使网络更快。由于无法控制网络中的每个公共节点,我们就陷入困境。
因此,所有以这种分散方式运行的公共区块链共识协议都在低事务吞吐量和高度集中之间进行权衡。换句话说,随着区块链的大小增加,完全参与网络所需的存储、带宽和计算能力的需求也会增加。在某种程度上,它变得非常笨拙,以至于只对少数节点处理一个块是可行的——这导致了集中化的风险。
为了进行扩展,区块链协议必须找到一种机制来限制验证每个事务所需的参与节点的数量,同时又不丧失网络对每个事务有效的信任。它可能听起来很简单,但在技术上非常困难。为什么?
由于不允许每个节点验证每个事务,因此我们需要节点具有统计和经济手段,以确保其他块(他们没有亲自验证)是安全的。
必须有某种方法来保证数据的可用性。换句话说,即使一块看起来有效的从一个节点没有直接的角度确认块,使得数据块不可用导致网络中的情况没有其他验证器可以验证事务或产生新的块,我们最终停留在当前状态。(一个节点可能会离线的原因有几个,包括恶意攻击和断电。)
为了实现可伸缩性,需要由不同的节点并行处理事务。然而,区块链上的转换状态也有几个不可并行的(串行)部分,因此我们在平衡并行性和实用程序的同时,如何在区块链上转换状态时面临一些限制。
那么可拓展数字实际上是什么样子的呢?让我们看一看。
Ethereum节点的最大理论事务处理能力为每秒超过1,000个事务。不幸的是,由于Ethereum的“燃气限制”,目前它的燃气气产量约为670万,限制了以太坊的整体能力。
在Ethereum中,gas是计算工作量的衡量标准,每个操作都被分配一定数量的gas(例如,获得一个账户的余额需要花费400 gas,创建一个合同需要花费32000 gas,发送一个交易需要花费21000 gas等等)。事务有一个气体限制字段来指定发送方愿意购买的最大气体量。因此,每个块的“气体限值”确定了多少事务将基于块中每一事务指定的气体限值拟合在块中。
Ethereum的天然气限制有点类似于比特币在每个区块的大小上的1 MB限制,不同之处在于,Ethereum的气体限制是由矿商动态设定的,而比特币的块大小限制被硬编码到协议中。
Ethereum的这种气体限制对每块网络的计算能力施加了一个软上限:目前的670万气体限制和目前每笔标准交易使用的平均气体量约为21K,我们每一块都能获得约300个标准交易。当前的平均块时间是20秒,相当于每秒大约15个事务。
再加上Ethereum网络上的交易数量正在以相当快的速度增长,你可以看出这将成为一个问题。从2016年第二季度到2017年第二季度,日交易量从40K增加到240K,同比增长500%。此外,就在过去一个月,它达到了每天超过44万笔交易的峰值!如果我们做一些回算,平均每秒5个事务。
同样,尽管比特币的理论每秒交易量为4000笔,但目前对于小笔交易,其硬上限为每秒7笔,对于更复杂的交易,则为每秒3笔。
注意,私有区块链不存在这些限制。事实上,私有区块链在Ethereum (Ethereum)或比特币上每秒可以实现逾1000笔交易。为什么?因为如果您运行的是私有区块链,您就有能力确保网络上的每个节点都是具有高带宽internet连接的高质量计算机。扩展区块链目前需要我们向每个节点添加更多的计算,以便使网络变得更快。由于私人管理的网络控制着网络中的每个节点,他们可以做到这一点。此外,由于您是在一个私有网络上,您可以处理一些可能在区块链外的区块链上发生的操作,例如确保每个参与的节点都运行一个真正的节点。
我已经在Ethereum上进行了一个新的协议的架构和实现,并且已经直接面对了未来的可伸缩性问题。就我个人而言,我着迷于大量的研究、讨论,最重要的是,为了解决这个问题而进行的实验。在本文的其余部分中,我将介绍社区中讨论的一些解决方案,以解决可拓展性问题。每一个都有独特的优势和权衡。
事实的真相是,不幸的是,没有一个解决方案能够提供解决可拓展性问题的灵丹妙药。实际上,这些解决方案中的每一个都将帮助逐步提高可拓展性。结合在一起,区块链可拓展性的未来前景非常光明。
请注意,这篇文章的目的不是探讨所有的技术复杂性或辩论每个建议的解决方案的优点。相反,我的目标是给你一个概述,其中一些建议的解决方案是我所知道的。如果读者感兴趣,我可以在后面的文章中更深入地研究一些特定的解决方案。本文还假设您对区块链的工作原理有一个基本的了解。(如果没有,你可以看看我的上一篇文章:“比特币,Ethereum,区块链,token, ICOs: Why should anyone care?”“作为一个复习)。
领取专属 10元无门槛券
私享最新 技术干货