区块链层2扩容简析

我们正处于区块链2.0向3.0转化的时代,目标是大规模的商用。传统的区块链技术,如比特币和以太坊,在性能上面已经显得力不从心。

作为史上最慢的分布式数据库,比特币和以太坊的TPS(每秒交易数)离商用有多远呢?有图为证

区块链TPS

说好的区块链TPS,怎么只画了VISA和支付宝呢?不是我没画,只是比特币的7笔交易,以太坊的十来笔交易,在图上根本显示不出来。

现在诞生了很多以提升TPS为目标的竞争链,动辄声称百万级TPS,比特币和以太坊是不是已经成为昨日黄花了呢?

V神说,不,我觉得还可以再抢救一下。

治病要先找到病因,传统区块链技术性能差的原因来自于两方面

1.每一个全节点都需要校验并记录所有的交易数据,不可水平扩展

2.运行在开放网络中,网络时延,节点数量全都是未知数,要全网节点达成共识,需要很大的开销

故事大致是这样的,我们斥巨资打造了全世界最靠谱的银行

也聘请了一个非常可靠的业务员,他只有一个缺点...

结果自然是

好了,我们知道区块链扩容是迫在眉睫的事情,but how?

方法一,多开几家银行,自然分流。对应到的是各种Altcoin,Cosmos,Polkadot等方案

方法二,多请几个业务员,把闪电先生远在家乡的父老乡亲都请过来帮忙,办事的柜台多了,效率自然也就上去了。对应到的是sharding和DAG这些方案

方法三,既然闪电先生效率不行,You can you up啊,换一个更快的业务员吧。对应到的是各种新的共识算法,比如说POS,DPOS,PBFT等。注意这里并不是说这些新的共识算法一定会比POW优胜,各种方式其实各有优劣,本文不做评价

方法四,也是我们今天要所要讲的,“我都TMD忙成🐶了你们就别来给老子添乱自己事情自己解决”方案,俗称链下扩容(off-chain),或者说是层2扩容

那么,到底什么是链下扩容呢?

链下扩容顾名思义,就是把交易或者处理的过程放在链下执行,区块链只对最终结果进行记录或者仲裁。参与者需要在链上抵押资产,通过经济制裁的方式惩罚作弊者,保证链下安全。链下扩容方案建立在区块链基础层以上,不需要更新基础层,所以也被称为层2扩容。链下扩容的发展我觉得可以分为三个阶段。接下来我们对这几个阶段分别解释

State channels(状态通道)

状态通道最早出现在比特币上,成为闪电网络,接着,以太坊上也出现了类似的方案,叫雷电网络。两者在原理上差不多,得益于以太坊的智能合约,后者实现更简单,我们以之为例说明。

状态通道的目标是交易扩容,让区块链上一两位数的交易量扩充百千倍甚至更多。

交易开始之前,交易双方各提供一笔准备金,后续的交易都在准备金中进行。

银行和用户之间约定:

•双方同时签名,退回准备金

•单方签名,也能退回准备金,但是发起退款的一方需要等待一个冷却期

冷却期的作用有两个,一是鼓励大家维持交易通道,二是防止欺诈

交易通道建立起来以后,接下来的交易就用打白条(合约)的方式进行,再也不需要到银行排队了,白条的格式如下图所示

最终结算的时候,大家只要把最后一张合约拿到银行,即可完成结算并提现,相当于把很多笔的交易结果打包上链了。

这样,问题来了,银行并不知道最后一笔交易到底发生在什么时候。Bob可以提交第一张交易合约取现从中获利。为了应对这个问题,发起提现的一方需等待一个冷却期才能取回自己的资金,在这个冷却期内,如果交易另一方能提供更新版本的签名合约,作弊方将被罚没准备金。

我们通过准备金和签名合约,我们把大部分的交易从链上转移到链下,同时还保证了交易双方“诚实”的执行交易和结算。但是,在这一步,只有建立起交易通道的双方可以发起交易,这在现实中限制很大。对于没有建立和维护交易通道的用户来说,怎么处理呢?

我们通过借道的方式间接交易

借道这种方式存在着天然的限制,无法保证原子性,如果Alice把钱打给Bob以后,Bob不付给Carol怎么办?解决方法是哈希锁,成为HTLC。

1.交易路径上的每两方建立按先后顺序建立加锁合约,加锁的密钥掌握在交易终点用户(Carol)手上。

2.合约路径建立完成后,Carol公开密钥,通道用户可以以之提现。

交易通道建立起来以后,Carol要提现,必须展示哈希锁的密钥,在展示哈希锁密钥的同时,Bob也自然的可以从Alice手上拿到自己应得的部分。

通过交易通道,我们可以把海量的交易打包后上链,让区块链每秒能处理的交易数大大提升,那它是不是就是完美的解决方案呢?在我看来,至少存在下面缺陷

•锁定的准备金只能在Channel中使用,只有关闭通道以后才是真正的提现,当网络存在海量通道时,通道的集中关闭会导致类似银行挤兑的系统性风险,压垮网络。

•交易双方需要监视网络,在冷却器内及时提供证明防止欺诈,从被动防御转变为主动防御

•闪电网络中只有保存最终的资金状态保存,中间的交易细节全部被忽略

•通道需要准备金维持,不可能任意两个用户间都存在交易通道,最终很可能会有大资金形成中心化的中转节点,这个大资金实际上具备了审查交易的能力

TrueBit-计算外包

状态通道解决的交易容量问题,那么TrueBit解决的就是智能合约容量问题。

我们知道,以太坊中的智能合约需要每台矿机执行计算。复杂的智能合约需要耗费大量的计算资源,经济上体现为智能合约用户需要交付大量的以太币(gas)作为驱动。

TrueBit的思路是把智能合约的运算外包给第三方,把复杂的计算任务放到链下执行。通过经济激励,促使第三方之间互相监督,保证计算结果正确性。以太坊作为一个数字法庭,对计算结果作为终极校验并惩罚作恶者。

TrueBit的基本过程是这样的

•用户(下文称为Task Giver)上传需要执行的代码(下文成为任务),并提供佣金。

•链下第三方(下文称为Solver)发现这个任务,认为佣金可以接受,执行计算任务并答公示运算结果,同时提供一笔保证金。

•另外的第三方验证者(下文称为Verifier)重新执行任务,如果发现Solver造假,可以发起挑战,同样需要提供一笔保证金。

•通过链上的智能合约让Solver和Verifier玩一个验证游戏(verification game),通过Task Giver在链上提供的执行代码验证答案真伪,提供正确答案的一方获取佣金,造假的一方从保证金中支付整个验证过程所需的gas。

•如果在挑战期内没有人能提供证据证明Solver造假,Solver获得佣金。

在基本过程之外,TrueBit其实还设计了很多精巧方法去优化协议,比如说计算分段和税金-乐透制度等,详见拙作TrueBit白皮书解读

Plasma-链中链

Plasma的野心比状态通道和TrueBit都要大得多,它要做的是通过多级子链来减轻区块链父链的负担,从而达到近乎无限的扩容。

•子链负责处理各自数据和业务,可以有自己独立的共识算法

•父链中保存了子链块hash和子链的校验规则,必要时进行仲裁和经济惩罚

Plasma要解决两个最重要的事情,一是子链的反欺诈,另一个是资金的进入与退出。

对于子链反欺诈,Plasma采用了欺诈证明的办法来解决

对于每个子链,需要在根链(以太坊)上创建智能合约,明确子链的游戏规则,诸如子链的块验证,父链跟子链的token转换等。同时,子链出块方需要在父链中锁定资金,用于后续追责。

业务数据保存在子链,子链的块hash同步到父链中作为凭证。任意第三方可以负责监督子链的运行,如果发现欺诈行为,可以把问题区块提交父链验证,便于追责和问题区块回滚。

不难看出,欺诈证明跟TrueBit基本思路如出一辙,只是智能合约换成了区块链,图灵状态换成了区块哈希。

对于子链参与者,plasma提供了一个资金退出的机制。

用户只要提供在子链上最新的交易结果,就可以把资金安全的回退到父链中。父链不会监督子链每个区块,无法确认用户提供的交易结果实时性,资金回退需要等待一个挑战期,防止用户欺诈,机制类似于状态通道。

小结

跟其它扩容方案相比,链下扩容具有如下特点:

结合使用了密码学和经济学,比较好的传承了比特币的思想,是最有信仰,最性感的扩容方案

理论上可以对区块链性能有非常大的提升,但实际效果很大程度取决于“人”,实际效果需要时间证明

目前仍然比较年轻,实现也相当复杂,存在着一系列的风险

不管结果如何,我觉得链下扩容会是一个可以媲美比特币的社会实验。

再多说一句,现在社会实验这个词已经被用滥了。EOS的社区化治理,说是社会实验,还勉强说得过去;某社区言论领袖搞的打车链,还是空气状态,就已经号称自己是伟大的社会实验,这就有点扯了。

推荐阅读更多精彩内容