密码极客 | 国内最权威的区块链技术创投社群

链圈必看技术文!Nervos如何用分层设计解决“不可能三角”

云上春野云上春野 2019-08-05 10,726 次 收藏1
https://bbtcdn.8btc.com/data/attachment/forum/201809/28/152117y48l8hd4ylfyugku.jpg

 

中国有句古话叫,鱼与熊掌不可兼得,是说无论如何要在两难的情况下做出取舍。

 

其实在区块链世界里同样存在这样的命题。从专业上来说,我们称之为“不可能三角”,即去中心化、安全和性能,三者只可择其二。

 

这似乎成了永远横亘在广大开发者面前的大山,难以逾越。

 

但并不是所有的人都乐于被动地接受现实。对此,有人选择了“愚公移山”式的死磕,漫长而惨烈。当然也有人独辟蹊径,选择山中开路。

 

Nervos就是这里的后者,他们将目光聚焦在了分层技术。

 

那么具体的分层技术又是怎样设计的呢?密码极客也有同样的疑问。

 

作为杭州最大的区块链技术人才社群,密码极客目前阿里技术人员超过2000位,社群成员超过8万。

 

截至9月,密码极客已邀请到了多个海内外区块链明星项目在社群分享,包括牛津背景的TRIAS、新加坡的“稳定币+分级基金”项目DUO、瑞士的”农业+区块链+物联网”项目Pavo等,广大技术成员反应热烈。

 

这次,密码极客又没让人失望。

 

 

近日,Nervos创始人Terry受邀做客密码极客社群,对“用分层技术解决不可能三角”的思路进行了讲解,他认为:

 

“解决区块链“不可能三角”问题的关键在于认清区块链的本质 ,即保证整个网络的安全和提供共同知识的存储,采用分层技术是为了明确分工,让区块链只做它用应该做的事情,发挥最大价值。”

 

以下是由密码极客整理的分享回顾:

1

区块链的发展

 

我觉得现在一个比较公认的划分方式就是1.0和2.0这两个阶段。

 

当然大家可能在很多地方听到3.0、4.0、5.0,这些我觉得更多的是一种营销上的考量,而不是一个大家公认的,真正准确的划分其实就是两代。

 

1.0是一个什么样的时代呢?它是以比特币为代表的,还有很多山寨币。本质上其实都是基于比特币的代码Fork一份,然后去改一些参数,加一些Feature。

 

但不管怎么做,这里面都有一个核心,就是1.0这个时代更多的是聚焦于货币这个属性,还有分布式账本这个主要诉求。

 

然后2.0呢,我认为这里有两个分支。第一个分支就是以以太坊为代表的智能合约平台,更强调计算,图灵完备的计算。

 

还有另外一个分支,以Zcash和Monero为代表,在隐私方面做了非常多的努力。这个分支的尝试,我觉得它们的重要性不亚于计算方面的尝试。

 

虽然他们的做事方式很不同,Zcash更倾向于用一个统一的方法论把隐私的问题解决,而Monero是比较务实的,有一点拿来主义,就是用修修补补的这样一种方式来实现。

 

那么什么才是下一代区块链?接下来区块链会往哪个方向走?这也是分享开始前,密码极客主持人问我的一个问题。在这里我想先从侧面引入回答一下。

 

以太坊之前曾提出World Computer的概念,当时非常多的程序员为之倾心,包括我们团队在内,我们以前是以太坊的忠实拥趸,非常看好这个项目。

 

但是,随着你对这个行业的越来越深入,你会发现World Computer这个概念,虽然听起来很美好,但是是一个不现实的目标。因为你做一个分布式系统,不可能既保证安全又保证去中心化,然后还要让性能可以达到中心化的系统的样子。

 

即使是一个中心化的机器,我觉得都很难承载World Computer这样的诉求。所以我们认为其实区块链的目标,不应该是World Computer。

 

首先到了这个时候,很多业界资深人士,其实都已经意识到:区块链并不是所有问题的灵丹妙药,区块链应该回归它应该做的本质。

 

区块链的本质,其实是Common Knowledge Base(以下简称CKB)。什么意思呢?整体来讲,区块链就应该是保证整个网络的安全和提供整个网络的共同知识的存储。

 

3.0时代,其实是要回归一步,去做分层网络,让上层去做更多的应用,从而能让这个基于区块链的网络能落地到现实当中。

 

2

“不可能三角”问题

 

在设计一个公链的时候,你很难做到同时拥有安全、性能和去中心化,这是一个不可能三角,所以你只能选择其中两个。

 

通常情况下呢,放弃安全,这个系统是没有意义的,所以安全是必选的。

 

那么问题现在就变成了如何在性能和去中心化当中取舍。我们是通过分层来思考这个问题的。

 

就是把整个网络分成两层,第一层是CKB,就是我们的Layer1,然后就是各种各样的Layer2,负责性能或者是它应该做的任何应用,Layer1只负责整个网络的安全合作全球共识。

 

1_meitu_1.jpg
大家可以看到虚线之下呢,就是我们的Layer1,它就只负责全球共识和状态的存储,功能非常单一,很容易就能做取舍,我们选择的是PoW算法。

 

然后这里面的Layer2呢,我觉得是非常开放的。首先Layer2和Layer1一个最主要的界定就在于状态的产生是在Layer2,而共识这个状态由Layer1负责。

 

现在,其实有非常多的Layer2团队在做自己的Layer2产品,他们有些是state channel,有些这个基于联盟链。各种各样的技术,其实是非常活跃的。

 

我们也做了自己的Layer2,叫Nervos Appchain,它是基于联盟链的技术,达成更少范围的共识的区块链,和Layer1一起工作来做全球的共识。

 

我相信明年将是Layer2的元年,很多Layer2会慢慢开始在新一代的公链上进行落地。

 

我相信未来中国可能也会有很多做Layer2的团队,我非常看好分层架构,就是大家各自解决自己的问题。

 

但是现在的Layer2其实是非常尴尬的。当他们想把自己的链落到以太坊,甚至是比特币上面的时候,会遇到非常多的问题。

 

归根结底,就是现在的所有的Layer1都不是为了Layer2设计的,这就是为什么有这么多人都在做Layer2,但真正落地的却非常少。

3

Nervos的分层设计原理

 

当科学家遇到不可能的时候,他想的是怎么去优化,哪怕我用十年的努力去增加一点点,这是科学家的想法。然后工程师的想法呢,是我怎么可以绕过去。

 

在一个问题上不停地优化,像科学家一样去追求平衡,是应该的。但是,在工程思维上通过分层来某种程度上去绕过现在的限制也是很重要的,而这个思想我觉得现在的很多区块链技术团队不够重视这一点,而我们希望可以唤起这种重视。

 

可能有人会问我们为什么要同时做Layer1和Layer2,为什么不只做CKB?这里的一个问题就是如果只做CKB,就很难体会到Layer2的痛苦,和Layer1打交道的痛苦。你自己去做了Layer2,把它记在Layer1上。你就知道。它的难点在哪,怎么去设计协议,怎么去做交互验证。

 

但是呢,我想说Layer1和Layer2最重要的是制定协议。它一定是会支持市面上所有的那些Layer2的。只要这个Layer2支持这个协议,它就能接到我们的Layer1上,至于我们的Layer2只是其中一个,没有任何特殊之处。

 

接下来呢,我再稍微着重介绍一下我们的Layer1的设计,它的缩写是CKB,可以认为是共同知识库。那么什么是共同知识呢?

 

这里呢,我给大家提个问题,为什么在数据库上存一个数据这么便宜,但是在区块链上,比如说Bitcoin,存一条数据就这么贵呢?

 

这里我就自问自答了,因为区块链上存的数据是经过共识的,经过全球共识,矿工共识的。而这样的数据和你在自己家里的database存的数据是有本质区别的。这种经过共识的数据,我们就把它叫做共同知识。

 

全球共识本身就是非常昂贵的,虽然它的绝对价格有可能会下降,但是相对价格一定是高的。一定是高于你在自己家里存一条数据的价格,这是必然的。

 

刚才我说了,你可以把它理解为经过大家共识的数据状态,是一种CK。但是CK本身呢,是一个经济学术语,也是一个逻辑学术语。

 

解释还是挺复杂的,我们可以简单地不恰当的比喻就是:这件事情我知道,然后你知道。我知道你知道并且我知道你知道我知道……这样无限递归下去的、大家都共识的一些知识,我们把它叫做共同知识。

 

所以,回到这个技术点上来讲,我们的Layer1可以把它叫做一种分布式的共同知识的平台,它和以太坊,EOS等为代表的分布式的计算平台有着本质的区别。

 

这种本质的区别并不在于这个平台有没有计算能力。因为BTC其实也是有计算能力的,更接近分布式共同知识平台。这里最本质的区别就在于状态的产生是在链上还是在链下。

 

2_meitu_2.jpg

 

大家可以看到上面这个图,有一个State 0、State 1,中间有个Event。

 

这里我可解释一下,因为区块链的本质是一个状态机,从一个状态迁移到另外一个状态。而以以太坊为例,在协议当中只有状态前和Event。Event你可以把它当成一个交易的集合。

 

也就是说,当我链接收到这个东西的时候,我的协议里是只有状态前和Event,然后那个时候的最终状态是不确定的。

 

那么状态是在什么时候才确定呢?

 

是在矿工挖出来这个块,把Event里面的交易都跑了以后,才产生了最终的State1,也就是说这个State1的产生是在进入了区块链之后。

 

而CKB的话,Event是在链外的,也就是说当提交到链上的时候就只有State 0和State 1了。至于如何产生这个状态的,CKB并不关心。

 

当然在CKB上也可以做计算,只是它的计算是用来验证这个状态是否合法的。所以这里归根结底就是状态的产生是在链上还是线下。

 

大家可以看到下面两个图。一个Block当中全是State,这就是CKB的模型,CKB协议,而在以太坊这样的平台当中呢,它的一个Block里面全是Event,是没有State的。以太坊广播的接收的都只是Event,而不是State。

 

大家可能听了这个以后会觉得CKB和比特币非常像。其实从某种程度上来讲,CKB只是在比特币的基础上走了非常小的一步,就是把UTXO变成了我们现在最小单位cell。

 

这个cell的概念其实就是在UTXO的基础上加上了一个data字段,可以存储任意的knowledge,或者说任意的数据,仅此而已。

 

在大量的团队都说自己走了两步三步四步五步的时候。我们只说自己走了非常小的一步,这是需要勇气的,也是基于我们的认识的。

 

因为我们觉得区块链的本质就应该是CKB,经过共识的状态,并且达到全球共识,这才是区块链应该做的事。其他的交给上面那个Layer 2去做就行了。

 

以上就是主讲嘉宾Terry此次分享的全部内容,随后他还和密码极客社群成员进行了互动问答,一起来看看吧:

 

问题一(来自Nervos社群):之前有听说Nervos和华为云、万向合作,能够在华为云上一键发链,但是这些节点都是单个的或者类似联盟链,这样如何能够让用户信任呢?

 

首先Appchain本身是一个相对局部的共识,并不是全球共识。所以说,如果你能在几个服务器上都去部署一个节点是没有问题的。但是,我个人其实不太认同区块链服务的,因为这样会导致极度中心化。不过这样肯定对开发和测试链是有好处的,关键是看怎么用。

 

问题二(来自密码极客社群):Nervos的愿景是打造一个网络,那么是否会涉及到跨链问题?能讲一下跨链的方案吗?为什么会选择PoW的共识机制?

 

我首先回答一下跨链的问题。在我们的网络当中,跨链分为几种,一种是Layer 1和Layer2的跨链,还有就是Layer2和Layer2的跨链。跨链这方面,我们会制订协议,并且倾向于直接交互而不是通过第三方的zone。

 

选PoW就有多方面的原因了,首先我们觉得PoW是唯一的被现实验证的这个方案。然后我们认为PoW的价值应该是有毛点的,而PoS则像一个咬住自己尾巴的蛇一样,价值没有毛点。还有一点就是PoW是更健康的一种竞争机制。

 

问题三(来自Nervos社群):如果CKB需要升级,是否有硬分叉的风险?

 

我觉得分叉不是风险,分叉才是区块链的精髓。如果我们抛开链上治理的话,分叉就是一种最好的链下治理,大家通过社区来进行分叉来进行竞争,这是一个良性的事情,没有必要惧怕它。

 

问题四(来自密码极客社群):Nervos作为公链技术,是否会被未来趋势所遗忘?关于这种“滞后性”疑虑,你是怎么看的?

 

我觉得会不会被时代遗忘,关键是在于对未来的认识是不是正确。

 

如果我们走在一条正确的道路上,那么不但不会被遗忘,反而会被发扬光大,这和你对区块链的本质的认识是非常有关系的。

 

 

密码极客是一群来自前阿里、蚂蚁金服的技术人员与阿里创业帮一起发起的区块链技术创投社群,也是杭州最大的区块链技术创业社群,截止7月,社群技术人员超过2000位,社群成员超过10万。

 

本文系作者个人观点,转载请注明出处!
喜欢 0
支付宝扫码打赏
微信打赏

相关文章

更多

发布评论

共0条评论