
区块链的底层设计中有一个 “不可能三角”,安全性、去中心化和性能三者只能取其二,目前最为普遍的 POW 机制、DPos 机制均如此。现有的解决方案能够打破这个不可能三角吗?9 月 5 日,在由 Odaily星球日报主办、36Kr 集团战略协办的 P.O.D 大会上,Nervos 创始人太檑给出了自己的答案。
太檑认为,区块链 Layer2 扩展是解决性能问题的良药,即通过对共识机制的分层,用不同层次去满足不同的需求。其创始的 Nervos 项目正聚焦于把区块链底层基础设施分为两层,分别是 layer1 和 layer2。 layer1 不关注效率,只关注安全及为上层链做优化, layer2 则关注效率性能和易用性。
在太檑看来,不是所有的消息都需要做全球共识,所以不是所有的事情都放在 Layer1 去做,大量事情是可以放在 Layer2 去做的。“共识是有层级的,有一些共识是需要在小范围达成,有一些共识才需要全球范围,而需要全球范围的共识是非常少的。”
太檑称,因目前的 Layer1 都没有非常好的适配 Layer2,导致 Layer2 的方案难以落地。而 Nervos 将同时开发 Layer1 和 Layer2。相比于比特币公链,Nervos 的 layer 1 将从交易模型改善入手,将 UTXO(Unspent Transaction Output,即未消费的交易输出)做了泛化,增加了一个 data 的流程。
演讲最后,太檑表示未来 Layer2 会大放异彩,而 Nervos 希望的是,有一个同样非常优秀的 Layer1 去支持 Layer2 。
以下为太檑演讲实录:
大家好!有点紧张,首先很高兴来到这里,给大家介绍我们的项目,叫 Nervos,这个发音很奇怪,我们自己的人也经常说错。我演讲的题目是,为 Layer2 而生的下一代区块链网络。
首先做一下自我介绍,我叫太檑,名字比较奇怪,我是一个程序员,写代码快十年了,一直写代码为生,今年稍微写的少一些。
这个不可能的三角好像被提的很多,我们从这里开始。在分布式系统当中,有一个所谓的三能问题:你很难同时获得安全、性能和自动化。失去一个安全的系统是没有意义的,而且作为区块链的系统来讲,你很难在安全上做妥协。问题剩下来,你怎么在性能和去中心化之间去做一个取舍?大家知道这一定是一个取舍,而不是兼得。
我们从现在的一些项目当中去看一些取舍,我这里说的 POW,脑子里想一想这是中本聪做的那条区块链,他放弃的是性能,选择极度的安全和极度的去中心化,这样得到的是一个性能相对比较差的区块链,确实也非常差。
然后我们看一下右边,DPos,它是怎么做取舍的呢?它放弃了一些去中心化,换取了一些性能,所以它获得了相对比较好的性能,但是放弃了去中心化。这个好不好呢?我们不好说,是比较有意思的一个抉择吧。
我们在一个系统当中,当你做共识的时候,怎么去做一个完美的 Train-Off 呢?我们觉得非常难,我们怎么做的呢?用分层的方式解决这个问题:在 Layer1,它只做验证和成熟的共识,Layer1 选择了极度的安全,所以我们用了 POW;Layer2 有非常多种,可以是中心化的,可以是个手机,不管怎么样,状态是在产生,在 Layer2 的话,也可以提高到非常高的性能。我们觉得,问题不应该在一层去解决,而是应该在多层去解决的。
我们还可以从另外一个角度来看,不是所有的消息都需要做全球共识,所以不是所有的事情都放在 Layer1 去做,而是大量事情是放在 Layer2 去做的,比如我给你发消息只需要你知道就 OK 了,不需要所有人都知道。我们认为共识是有层级的,有一些共识是需要在小范围达成,有一些共识才需要全球范围,而需要全球范围的共识是非常少的。
为什么我们要同时去做 Layer1 和 Layer2 呢?我们是这么考虑的,现在所有的 Layer1 它们其实在创建的时候,并没有为 Layer2 去考虑,但是这个不能怪他们,因为这个是时间的原因,当他们在创建的时候,并没有这么多的 Layer1。我们现在做的这个 Layer1,是要非常好的为 Layer2 去设计,并且第一天就能够同时的设计它们之间交互的协议,在程序上讲,这当然是吃自己的狗粮,所以我们同时会做 Layer1 和 Layer2 ,但是会随时保持跟做 Layer2 的同事沟通。
我们 Layer1 是长什么样子呢?大家看这个 Layer1 CKB(Common knowledge Base)。我们从一个问题开始,为什么我们在一个数据库里面存一个数据这么便宜,而在一个区块里面存一个数据这么贵?因为你在区块链上的数据是全球共识的,经过全球共识的数据本来就是非常昂贵的。不管时间怎么推移,它的绝对成本会下降,但是它相对成本一定是比较高的。
什么是 Common Knowledge 呢?这是一个经济学词汇,它大意是说你知道,我知道,并且我知道你知道我知道,这是一个经过共识的事情。大家可能玩过很多这种游戏,什么《海盗分钻石》,以及《绿眼岛》啊等等。
我们这个 Layer1 它有什么区别呢?首先第一点,当这个交易进行的时候,state 已经进行了。我们可以看到中间那个图,我必须要去挖这个块以后,我才最终确定了最终状态 state 是什么?也就是说,它最终上链的时候是不确定的。
那么和中本聪造的那条区块链比起来,CKB 只是多走了一小步,它把 UTXO(Unspent Transaction Output,即未消费的交易输出)做了泛化。UTXO 有 LOCK 和 AMOUNT,CELL 多了一个 data,只在 UTXO 的基础上走了非常小的一步。这就是我们的一个理念,就是说我们认为未来 Layer2 会大放异彩,我们发现目前并没有一个非常好的为他们量身打造的 Layer1,所以我们希望能做一个非常优秀的 Layer1 去支持 Layer2 。
OK,我演讲就到这里,谢谢!
