区块链巡礼:扩容方案

区块链技术已经证明了它可以很好的解决互联网开放网络上的共享、互信,而今它需要进一步证明的是自身的健壮性、支撑大规模用户的商用能力。这也是区块链完成它“革新世界”使命的必经之路。

梦想很美好,现实很残酷,技术革命不是吹牛喊口号就能达成的。以应用最为广泛的以太坊为例,众所周知,2018年以太坊已经经受了多次性能考验,例如:加密猫,Fcoin,部分项目的众筹。

What-什么是扩容?

以太坊乃至整个区块链技术至今仍处于成长初期,急需提高它的安全可扩展性。天才码农们很早就意识到这一点,从去年开始,已经涌现出大量新项目众筹来炒作其可扩展性,认为能够通过自身解决方案“构建一个安全、易用、可扩展的去中心化互联网,并被无数人使用。”(或许项目组并没有如此大言不惭,只是抱着钻研的态度在发起项目,但某些有自我目的的机构在试图割韭菜的时候可都是喊的天花乱坠,私以为大部分均形成了“韭菜共识”。)

当然,扩容的初衷是好的,区块链参与者提供资金来支持项目方也是没错的,今天我们撇开别有用心的人不说,着重于介绍一下各类扩容方案(Scaling Solutions),尽量让大家了解自己的投资内容。

现在的扩容方案大体可分为隔离见证、扩大区块、分片、跨链、第二层解决方案等几类,这些项目的设计都很巧妙,能看到过去20年互联网不断发展的影子,各方案有着不同的形式,并且通常相互兼容或互补。

Why—为什么扩容?

扩容方案不是为了解决某个单一的、特定的问题。当一件事情能够被夸大,能够引起共鸣、深思、讨论甚至争论时,事情往往是很复杂的。公链(以太坊为例)在目前的运行环境下涉及了一系列难题,使以太坊在应用扩展上很难跟上应用场景的需求。

痛点1:TPS低,例如以太坊的TPS为15TPS,相比而言中心化的VISA几年前就达到了45000TPS。

痛点2:每一笔交易必须由主网每个节点来处理,大量的不重要的交易也会导致消耗,例如:加密猫里的大量数据交互导致全网缓慢。

小红:听不懂……哥,给我解释一下,我给你赏根烟。

归零哥:谢谢小奶狗。

归零哥:例如一个马路,乘客乘坐各种交通工具通过(例如:自行车、小汽车、公共汽车),这些交通工具同时行走在马路上。这条路不允许公共汽车通行,只允许自行车和小汽车,马路是一车道。那么产生了这样两个问题:1.路太窄,走不快;2.这路上自行车太慢了,直接导致了小汽车被堵在中间,走不动。这就类似于目前以太坊遇到的困难。

How—如何扩容?

隔离见证

比特币尝试了隔离见证的扩容方式,也就是软分叉。每个人其实都没有固定账户,而是一堆的交易记录,这些交易记录里均包含了两种信息:交易信息(从A转到B),非信息(私钥签名等)。而比特币区块大小是固定的,如果省去了将非交易信息从原区块剥离,则提升了每个区块所能容纳的交易数,从而提升了比特币的处理效率。(这种做法也降低了闪电网络的实现难度。)

小红:哥,说人话。

归零哥:书接上文,有个聪明人,提了一个方案,把乘客的一些行李都搬出来,放到小汽车和公共汽车的顶部,腾出来的位置多做几个人。这样同一时间里能够运输的人数量就增加啦。

扩大区块

简称硬分叉,简单粗暴但也实用,并且完全继承中本聪的理念。区块1M不够对不对,那我2M,2M不够我8M。扩容方式比较简单,可实现性高。BCH采用了这个方案直接对BTC进行了硬分叉。

归零哥:车里的位置加多点,把车变成双层巴士,多载客人。还不够么,再不够三层巴士……

分片

Sharding

不知道分片?没关系,知道ZIL(zilliqa)和QKC(QuarkChain)吧?两个天王级项目,这两个项目主要就是分片解决方案。以太坊也在引入分片,分片的思路是把以太坊网络分为主链和分片链,分片链上的交易处于自己独立的空间中,各自处理各自的事务,分片验证人只需要验证他们所关注的分片,各分片链的交易彼此独立,不会相互影响。当然分片与主链之间还是有交互,这也是技术难点所在。

归零哥:把公路变成多车道的,且限制车道上的车辆类型。自行车、小汽车、公共汽车分别有自己的车道。在这个情况下,通畅程度将有很大提升。

跨链

Cross Chain

例如火爆的Polkadot与Cosmos,为跨链技术。把多链和多币整合成一个生态系统是跨链的目标,以Cosmos为例,它包括两种链一个对接协议,Hub是主链,由Cosmos团队研发维护,Zone为其他链,例如以太坊、比特币,由各自团队维护,Cosmos会提供一套协议IBC,用于Zone按照IBC协议规则与Hub进行交互。结构清晰,扩展性好,理论上可扩展性很强,兼容各链。

归零哥:以太坊是公路,比特币或者某公链是铁路,各有优点;Cosmos提供了一个中转车站的解决方案,在需要的时候可以铁路换乘公路,或者公路换乘铁路。将来有地铁,也可以加进来。

ILP

Interledger Protocol

ILP是专注于支付的跨链协议,用于处理跨链之间的支付,协议可连接任何区块链、银行、在线支付系统等,通过参与方共识的方式计算出多币种之间的比例(例如:1 BTC = n ETH),并完成交易。

第二层方案:Layer 2 solution,将很多繁杂并不需要上链的核心操作以链下(off-chain)的方式来处理。

状态通道

State Channel

State Channel其实是Payment Channel的扩展,我们把它们当成一类来看。比特币上的Lighting、Blockstream以及以太坊上的Raiden、Celer均有此方面的设计。纯支付类的链下处理成为Payment Channel,基于此思路进行扩展到智能合约,则出现了State Channel。核心思想是创建一个智能合约,合约规定了参与方及规则,参与方点对点链下处理复杂事务,不消耗主链的性能,最终将处理结果再记录到主链上,确保核心节点还能受到区块链特性的保障。

小红:请问,你这次要怎么改造公路……

归零哥:额,公路再扩展就要上月球了,不直观,咱们还是换个例子:我跟你打扑克,如果基于以太坊网络打牌,那等于是每次出牌都得进行一次交易,基本上打一局的时间我都可以去健身房瘦10斤了……因此,我们有个新方案,以太坊上发起一个牌局,规定我与你参与,且规定好了打牌规则,然后我们自己去打牌,最后打牌的结果再记录到以太坊上。以太坊不记录我们打牌的过程,只记录结果,所有的步骤都记录在我们自己这里。这个链下方案就类似于状态通道。

归零哥:另一个例子,我每天都要去门口商店买泡面,但是如果每天付款3块钱,太麻烦,因此我就和小店记账,只记账不实际付款,没有交易发生。一个月后,一次性处理所有的账务支付90块,那么对于银行的交易记录,只会有一次交易产生。每天的记账过程就是支付通道的模型。

小红:那么怎么保证安全?不会有假账?

归零哥:这个……有对应的理论解决方案,例如副本保留等,今天不讲了,讲太多我们的故事又该没人看了。

Plasma

Plasma也是一种用于管理链下交易的技术,同时依靠底层的以太坊区块链来实现其安全性。Plasma 采用了一种新思路,它是通过创建依附于“主”以太坊区块链的“子”区块链。这些子链又可以循序产生它们自己的子链,并能依次循环往复,最终实现理论上的无限扩展。例如给加密猫单独创建一个子链(技术可选择以太坊或者其他),只在以太坊主链上记录加密猫的静止状态,所有猫相关的互动及游戏都基于子链完成。这样通过另一个巧妙地方式也达到了类似于状态通道的性能提升效果。

小红:听着就是状态通道不是链,子链是个单独的链呗?效果似乎一样。

归零哥:确实效果类似,但是也有不小的差别,例如:Plasma使用的是子链技术,其本身也是区块链,那么可以使用到区块链的各种特性,而状态通道并不行;另外,状态通道从交易效率上由于并不上链,理论上一般快于Plasma子链。

归零哥:当然,完全可以设计成子链上再建立状态通道的迭代模型,取决于设计团队和用户场景。

其他方案

其实还有其他的解决方案,例如Turebit等,今天只对比较流行的方案进行解释(很多方案归零哥其实也没看完……抱歉。)

Future—未来已来?

最后对以上扩容方案进行一个总结。所有的方案里只有极少方案进行了实践并被证明有效(例如:BCH扩大区块),大部分的还在理论、研发、测试的阶段。并且每个方案设计虽然精妙,但实际上也有很多潜在要解决的问题,不要盲从(例如:安全性问题、复杂性问题、流通性问题等)。

并且由于方案是可以迭代的,我们是否可以解决各个方案的优点,来构建更好的方案的?分片+状态通道+……可行么?理论上是可行的,但不难估计,会出现一些极端的场景:某用户在某个分片上的某状态通道里有一些token,需要把它转到另一分片的一个plasma子链上,会让整个逻辑变的非常复杂。

扩容方案如八仙过海,各显神通;目前尚无完美方案,任重而道远,离许多项目落地时间越来越近了,未来已来吗?拭目以待吧!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180723G0XLET00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券