简析区块链链下扩容:状态通道、TrueBit、Plasma

本文诙谐幽默,请慎重点开~~

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

比特币和以太坊有多快?

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

比特币和以太坊 缓慢的TPS

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

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

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

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

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

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

从一个故事开始

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

世界图片

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

不靠谱的业务员

结果自然是:

排长队

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

  • 方法一: 多开几家银行,自然分流。对应到的是各种Altcoin,Cosmos,Polkadot等方案
  • 方法二: 多请几个业务员,把闪电先生远在家乡的父老乡亲都请过来帮忙,办事的柜台多了,效率自然也就上去了,可以对应的是shardingDAG这些方案
  • 方法三: 既然闪电先生效率不行,You can you up啊,换一个更快的业务员吧。对应到的是各种新的共识算法,比如说POSDPOSPBFT等。注意这里并不是说这些新的共识算法一定会比POW优胜,各种方式其实各有优劣,本文不做评价
  • 方法四: 也是我们今天要所要讲的,“我都TMD忙成🐶了你们就别来给老子添乱自己事情自己解决”方案,俗称链下扩容(off-chain),或者说是二层扩容技术

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

链下扩容 技术方向

State channels - 状态通道

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

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

状态通道

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

银行和用户之间约定:

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

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

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

链下交易记账-支付通道

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

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

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

我们通过借用中转通道的方式间接交易:

借用支付通道进行中转

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

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

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

支付通道建立起来以后,Carol要提现,必须展示哈希锁的密钥,在展示哈希锁密钥的同时,Bob也自然的可以从Alice手上拿到自己应得的部分。
通过支付通道,我们可以把海量的交易打包后上链,让区块链每秒能处理的交易数大大提升,那它是不是就是完美的解决方案呢?在我看来,至少存在下面缺陷:

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

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

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

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

TrueBit - 链下计算

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

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

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

TrueBit的基本过程是这样的:

  1. 用户(任务请求方 下文称为Task Giver)上传需要执行的代码(下文成为任务),并提供佣金。
  2. 链下第三方计算者(下文称为Solver)发现这个任务,认为佣金可以接受,执行计算任务并答公示运算结果,同时提供一笔保证金。
  3. 另外的第三方验证者(下文称为Verifier)重新执行任务,如果发现Solver造假,可以发起挑战,同样需要提供一笔保证金。
  4. 通过链上的智能合约让SolverVerifier玩一个验证游戏(verification game),通过Task Giver在链上提供的执行代码验证答案真伪,提供正确答案的一方获取佣金,造假的一方从保证金中支付整个验证过程所需的gas。
  5. 如果在挑战期内没有人能提供证据证明Solver造假,Solver获得佣金。

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

Plasma - 链中链

Plasma的野心比状态通道TrueBit都要大得多,它要做的是通过多级(分层)子链来减轻区块链主链的压力,从而达到近乎无限的扩容。

Plasma 多链分层

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

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

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

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

Plasma 链结构

Plasma图片均来源于Plasma 白皮书

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

Plasma 链

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

不难看出,欺诈证明跟TrueBit基本思路有相似之处:智能合约换成了区块链,图灵状态换成了区块哈希。
对于子链参与者,Plasma提供了一个资金退出的机制。

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

编者注: 社区作者盖盖写了一系列文章:深入理解 Plasma, 有兴趣可前往阅读。

小结

跟其它扩容方案相比,区块链的链下扩容技术具有如下特点:

  • 结合使用了密码学和经济学,比较好的传承了比特币的思想,是最有信仰,最性感的扩容方案
  • 理论上可以对区块链性能有非常大的提升,但实际效果很大程度取决于“人”,实际效果需要时间证明
  • 目前仍然比较年轻,实现也相当复杂,存在着一系列的风险

不管结果如何,我觉得链下扩容会是一个可以媲美比特币的社会实验。再多说一句,现在社会实验这个词已经被用滥了。EOS的社区化治理,说是社会实验,还勉强说得过去;某社区言论领袖搞的打车链,还是空气状态,就已经号称自己是伟大的社会实验,这就有点扯了。

本文作者元家昕, 深入浅出经授权区块链转载,为更好的阅读效果对原文 略有修改。

深入浅出区块链 - 系统学习区块链,学区块链的都在这里,打造最好的区块链技术博客。

LBC-Team wechat
微信号:深入浅出区块链技术,欢迎订阅
0%