以太坊开发人员很久之前就明白网络扩容是一个值得讨论和投入的话题。但是这个问题直到2017年下半年才被开发社区注意到,那时候有个去中心化应用叫做虚拟猫占据了太多流量,从而使得整个网络的速度都被降低了。除了网络延时,需要用来在以太坊区块链上运行智能合约所需的燃料费用激增,因为用户竞争着想让自己的交易生效。
虽然这个故事有些过度报导,但是虚拟猫的情况揭示了现阶段的以太坊也许还没有为成功运dApp提供所需流量做好准备。较慢的速度和昂贵的使用成本使得用户开始离开这个平台和应用。DApp开发人员正在全力释放首个广泛应用的app,所以开发人员必须继续攻克区块链扩容问题。
“三元悖论”
区块链技术的其中一个理论是网络可以支持以下的两个:安全,去中心化和扩容性。这个“三元悖论”,已经成为了以太坊开发人员的挑战,因为他们想要在为了更广泛应用和实施的同时,也能维持区块链的核心特征(去中心化和安全)。有些扩容解决方案会严重影响安全或者去中心化:
1. 使用替代币是解决扩容问题的理论解决方案。这个方案是将转账计算放在链下进行,而且接受多个替代币同时存在的模型,这些都会在独立的区块链上运行。每个区块链减少的流量,可以让整个区块链进行扩容。但是,随着每个区块链有更少的节点,每个区块链就会更容易被攻击以及产生欺诈用户。因此,使用替代币维持了去中心化和提高了扩容性,但是也很大地影响了安全。
2. 增加区块大小是另一个解决扩容问题的理论方案。如果以太坊社区投票增加每个区块的大小,所有节点也仍然可以运行各种操作,但是在同样的时间里,可能会发生更多的转账。但是,随着更大的区块大小,每个转账需要更多的能源,那么越来越少的节点可以承担这部分能源。结果就是未来网络会被一些拥有大量验证每个区块的处理能力的超级计算机掌控。因此,增加区块大小保证了安全和扩容,但是显著降低了网络的去中心化。
区块链发展最初的问题是安全和去中心化。因此,对于扩容最重要的阻碍是每个节点都需要处理每比交易。因为绝对地安全和去中心化,系统对于扩容不会有太多的增值性。因此问题来了,我们的以太坊工程师如何能够在不影响安全和去中心化的前提下进行扩容。
现在有4种正在开发的协议,可以解决扩容的问题。分片,Plasma和雷电都是为了帮助以太坊扩容。第四种协议,Casper,在内容上更广泛,但是也会有扩容的效果。
分片
分片这种扩容方案还是将交易放在原来的区块链上,因此被称为“链上”方案。分片解决了在以太坊网络上交易都是线性的,因为每个节点都需要处理交易。分片可以让节点同时运行,因此提高了整体区块链可以处理的每秒交易。有了分片,以太坊网络可以分成很多组节点。每组都是一个分片,并且每个分片都会处理组内的交易。这就可以让分片同时地处理不同的交易。
每个分片内部,某些节点会定期创建“collation”,或者是一系列关于分片的信息。每个collation都会包括以下信息:
1. 每个分片collation来自何处
2. 在交易完成之前分片状态的信息
3. 在交易完成之后分片状态的信息
4. 来自2/3 collator的数字签名验证collation中的信息
在网络中,每个分片中的collation都会存到单个区块,并且加到以太坊区块链上。因此分片技术可以让这些群体节点去处理和验证交易,但是只有collation中的信息会加到区块链上。假设有10个片区,每个片区处理5笔交易,那么下个区块就可以在区块链上包含50个区块的交易信息,而不是节点都需要按顺序地去处理所有交易。
但是分片技术会有2个问题。首先,每个片区都必须要有足够多的节点来确保网络的安全。如果一个片区有太少的节点,2/3的collator可能会被妥协,从而开始进行欺诈。其次,要处理在2个片区之间的交易会比1个片区要难很多(如果是一个片区,就不会有问题,因为就是整个区块链)。目前的方法需要冗长的收据和证明。
Plasma
Plasma是另一种在 “链下” 处理交易的解决方案,也就是说,交易并不是在以太坊主网上进行。Plasma可以让很多区块链(子链)从原来的区块链上分离出来(根链)。因此,每个子链都能处理和维护它自己的转账记录,当然这是基于根链的底层安全性。通过Plasma,根链是所有子链发生计算的推动。但是根链只需要在子链中有争议的时候才会进行计算。这种方案可以使得所有子链来分配区块链上的所有转账信息,从而可以最优化速度和效率。如果子链上的节点愿意,他们可以提交转账信息,并且输出他们的转账记录到根链。
这个方法有一个非常大的好处。每个Plasma链都能有自己的标准,这意味着不同的子链可以支持有不同需求的交易(例如,私有链),并且所有的交易都处在同样,安全的生态系统中。
雷电网络
雷电网络是另一种链下扩容解决方案,可以让节点在不用根链验证每笔交易的前提下,去维护转账记录。两个节点之间可以开通一个“状态通道”,这是在用户间的双向通道。交易信息会在两个节点之间进行,同时会由各方签名来保证不可篡改性。雷电网络是专门为经常性支付使用的,也就是说,知道自己将要给某个公司每周支付10美金来获得服务,或是你会在某个地方经常性消费的。将这两个节点间的交易记录并且验证,而不是通过整个区块,根链可以释放出大量的流量。任何时候,状态通道的参与者可以选择关闭交易,并且所有交易的结果都会记录在根连上,并包含在下个区块。这意味着在你使用了每周10美元的服务1年后,用户会有验证520美元交易的区块,而不是52比10美元的交易。
雷电网络解决方案有一个问题,也有一个好处。问题在于节点只可以和他们的“邻居”交流,也就是说如果节点A和节点B打开状态通道,并且节点B和C的状态通道打开,A就不能直接发送资金给C。但是,这样通过通道来进行转账,可以保证资金不会盗窃和锁定。A节点能够通过B作为中介来发送资金给C,这样节点B就不可能偷取资金。雷电网络最主要的好处,就是可以大幅度地降低每笔交易的燃料费用。
Casper
Caper是以太坊目前的工作量证明即将转去的权益证明协议。通过工作量证明算法,矿工目前必须要提高能源使用来解决加密难题,从而挖出区块。如果解决难题,那么他们就可以获得奖励,但是这个过程需要大量能源(并且现在需要的越来越多)。这很烧钱并且也非常地对能源不利,目前每年需要消耗120亿美元来维持工作量证明。
在权益证明中,验证节点会代替矿工,并且他们会在区块链上验证区块,而不是挖出区块。这样就不会是在某个区块上进行不断地提高能源消耗,验证节点会在某个区块链进行权益抵押。有最多权益的区块就会被验证,从而加入到区块链上。最终,验证节点通过在合约上锁定资金投注某个区块会被加到链上,直到下一个区块被加入。如果最后的区块是正确地,那么他们就会获得奖励。如果他们恶意去想要验证错误或者带有贿赂信息的区块,那么他们的资金就会丢失。
从概念上来说,这样的转变可以保护区块链被恶意攻击。通过工作量证明算法,失败的区块链攻击会消耗攻击者的时间和能源。但是在权益证明算法中,失败的攻击会直接导致他们损失钱,因为他们会立刻失去压在错误区块上的权益资金。
Casper最终的实施会被分为2个协议的迭代:Casper FFG和Casper CBC。
Casper FFG
Casper FFG将会成为Casper的首个迭代版本,大概会在以太坊下个硬分叉的时候发布。在Casper FFG中,区块依旧是由工作量证明挖出的。但是,经过每50个区块,验证节点会介入测试权益证明的机制。这个检查点会使用权益证明协议来评估最终性。这个最终性的意思是这次操作已经完成并且完全不可篡改。在FFG中,验证节点会把资金作为权益来完成链上前50个区块的验证。
Casper CBC
Casper CBC会是Casper的第二个迭代。这个协议会被正式验证,并且证明可以满足所有给定的属性。在CBC协议中,PoS协议只会被部分设定,然后进一步精细调整,以满足其属性符合要求。最终,和一开始就完全定义好不同,这个协议是逐渐推进和完善的。这是通过实现一个被称为“理想对手”的协议来实现的,这个协议可以提出问题,错误和协议未来可能出现的问题。
最终的Casper协议可能会通过学习FFG和CBC进行布署。这个协议会比单纯的扩容更加宽泛,包括能源和安全性的提高。但是,每个节点消耗更少的能源意味着网络会提高现有扩容的难度。尽管Casper并不是为了扩容专门设定的,它也肯定会为网络承担更多流量做出积极影响。
向前看
以上这四个方案互不排斥,他们可以并且也有可能都会实施到某种程度来帮助以太坊逐渐扩容。扩容问题是2018年以太坊开发者最关心的。因为越来越多的dApp在被开发并且启动,我们会看到扩容解决方案的不断推进,从而能让以太坊发挥它全部的潜力。