Ethereum的可扩展性

扩容能力是什么?

简单的来说,可扩展性(scalability)就是对系统增长能力的衡量。就比如,在计算中网络或服务器可以通过不同方法扩容来处理更多的需求。

加密货币中的可扩展性指的是区块链可扩展容那更多用户的程度。其中的更多用户意味着区块链将涉及更多的操作和交易竞争。

Ethereum扩容必要性

Ethereum的拥护者认为互联网的下一次迭代将会在该平台上建立。而那时的Web3.0将带来一种分布式拓补结构,不再需要中间商、会更注重隐私性,并最终转向数据的自我拥有。而这些基础属性将通过分布式存储/通讯协议和智能合约式的分布式计算来构建。

而为了实现之这一目标,Ethereum需要在不损害去中心化的前提下,大规模提升网络处理交易的能力。目前,Ethereum并未像Bitcoin那样通过限制区块大小来限制交易量。而只是向区块中纳入了gas limit(单一区块中可容纳最大gas量)。

比方说一个区块的gas limit为100,000gwei,则当向该区块中提交10笔gas limit为10,000,又或者是2笔gas limit为50,000的交易时,任何其他的交易都需要等待下一个区块。

对于每个人都在使用的系统来说,这并不理想。而且当未决交易数量超过区块可用空间,就会很快出现积压。同时gas price价格也将上涨,此时人们就不得不支付更高价格来使自己的交易被优先处理。也就说繁忙的网络会使得特定用例中的操作变得非常昂贵。

当初风靡一时的CryptoKitties游戏则是Ethereum网络局限性很好的示例。2017年,基于Ethereum的游戏CryptoKitties吸引了大量用户在网络中进行交易来进行虚拟猫(代表不可替换代币)的繁殖。而迅速的普及也使得待处理交易火箭式上升,最后导致了网络的极度拥堵。

Blockchain可扩展性三角困局

从表面上来看只要提高区块的gas limit就可以缓解所有可扩展性问题。也就是上限越高,网络在固定时间范围内就可处理更多的交易。

遗憾的是,除非牺牲Ethereum的某些关键特性,否则这是不可行的。Vitalik Buterin提出了Blockchain Trilemma(区块链不可能三角:扩容、安全性和去中心化)来解释区块链必须达到的微妙平衡。

Ethereum和Bitcoin等区块链都将安全性和去中心化放在了首位。它们的共识算法确保了网络的安全性,但其中的网络是由成千上万的节点组成,所以降低了网络的可扩展性。由于接收和验证交易都是由众多节点来完成的,所以相比于中心化方案要慢的多。

另一种情形则是移除区块的gas limit,这样的网络则同时具有安全性和可扩展性,但不再是去中心化。

此时单一区块中将包括更多的交易,最后形成更大的区块。而网络中的节点扔需定期下载和广播区块,所以就需要大量的硬件基础。也就是说,当gas limit提高时,节点验证、存储以及广播区块的难度将会增加。

在此过程中无法更上节奏的节点将会退出。假如此种方式持续下去,则仅会有少部分强大的节点幸存,而这就导致了系统的更加中心化。最后你会得到一个安全且可扩展的区块链,但并会去中心化。

最后一种情况是,区块链选择了去中心化和可扩展性。也就是网络牺牲了共识算法来实现更快的速度和去中心化,而结果却是安全性降低了。

Ethereum的交易处理率

最近这些年,Ethereum的TPS(每秒交易量)很少会超过10。对于一个计划成为“世界计算机”的平台来说,这个数字低的惊人。

可扩展性解决方案一直都是Ethereum发展过程中重要部分。而Plasma就是解决方案的一种。该解决方案旨在帮助Ethereum及其他区块链网络提高效率。

Ethereum 2.0

Ethereum的确具有很大潜能,但并不能掩饰其存在的局限性。之前我们也已经讨论过在可扩展性方面的局限性。简言之,如果Ethereum想成为新经济体强有力的支柱,则它就必须每秒处理大量的交易。而鉴于网络的分布式特性,导致该问题很难解决,而且多年来Ethereum的开发者们也致力于该难题解决方案研发。

一方面,为了保持网络的去中心化特性,必须设置一定限制。然而当运行节点的操作条件越高,网络中的参与者就会越少,而网络也将逐渐中心化。所以提高Ethereum处理交易的能力时节点的负担就会增加,从而威胁到网络的完整性。

Ethereum以及其他PoW(工作量证明)加密货币的另一弊端是,它们都是资源密集型。也就说为了能在区块链上成功添加区块,就必须进行挖矿。而此种区块添加方式则需要大能耗快速计算。

为了解决上述局限性,遂提出了一系列升级计划,统称为Ethereum2.0(或ETH2.0)。一旦全面实施,则将会有效提升网络的性能。

Ethereum分片

通过以上理解我们知道,每个节点都会存储区块链副本。而每个节点也都将随着区块链的变化而更新,这一过程将消耗巨大宽带和可用内存。

而如果使用名为“Sharding(分片)”的方法,则该过程就可避免。通过名字就知道该过程是将网络划分为不同节点子集,也就是所谓的shards(分片)。每一个分片都将处理自己的交易和合约,同时也会按照要求与其他网络的分片进行通信。并且由于每个分片都将独立验证,所以它们不需要存储其他分片的数据。

“分片”是一种复杂的扩容方式,需要大量的设计和实施工作。然而,倘若成功实施,则网络的吞吐能力将会以数量级提升。

Ethereum Plasma简介

Ethereum Plasma是一种链下扩容解决方案。顾名思义,也就是将交易脱离区块链以便于提高网络吞吐量。此时的它就与侧链和支付通道有些相似。

通过Plasma,侧链就可以与Ethereum区块链主链锚定,并保持一定程度的通信。它们的运作大体上是独立的,也就是用户依靠主链来解决争端,靠侧链来完成他们的活动。

Ethereum扩容成功的关键在于减少节点必须存储的数据量。Plasma方案则允许开发者在主链的智能合约中规定“子链”的一些规则。之后就可以将主链上昂贵的操作(构建应用或处理交易)转移到“子链”完成。

关于Plasma的详细信息,请参考什么是Ethereum Plasma?

以太坊rollup介绍

Rollups类似于Plasma,他们都是将交易从主链中脱离,以此实现以太坊的扩容。那么,他们都是如何运作的呢?

通过在主链上的单个合约中,持有二级链上的所有资金,并保持该链当前状态的加密证明。二级链的运营者在主网合约中存入保证金,并确保仅将有效的状态转换提交给主网合约。基于当前的思路,由于该状态是在链下维护的,因此无需将数据存储在区块链上。但是,Rollups与Plasma的主要区别是将交易提交给主链的方式。Rollups使用特殊的交易类型,这种方式可以汇总海量交易,并将其捆绑在一起成为特殊的区块,称为Rollup区块。

有两种不同类型的rollup:Optimistic和ZK Rollup。两者都通过不同方式保证状态转换的正确性。

ZK Rollups 使用一种被称为零知识证明的密码学验证方式进行交易提交。其中一种较为特别的方法被称为zk-SNARK。我们无法得知它工作的具体细节,但是会明确它的确被Rollups所使用。这是一种可以让互补认同的双方互相证明自己所拥有特定的信息,而又不不需要互相透露该信息是什么的方式。

就ZK Rollups而言,这种信息是提交到主链的状态过渡。这样做的一个很大好处是,这个过程几乎会立即发生,而且几乎没有机会提交损坏的状态。

优化滚动 牺牲了某些可调整性以获得更大的灵活。通过使用一个名为优化虚拟机(OVM)的虚拟机,这些虚拟机允许智能合约在二级链上运行。 另一方面,这种方式不会有加密证据提交给主链,证明该状态过渡是正确的。 为了缓解这个问题,会稍微将状态进行延迟,支持用户质疑和否定提交到主链的无效区块。