Nervos:链外扩容 + Layer 2才是区块链的未来(上)

玛雅娱乐平台

Nervos:链外扩张+第2层是区块链的未来(上)

d283193e24724828bcbad89ac16b6339.jpeg

5月14日晚,密码怪人邀请Nervos联合创始人兼首席运营官陆国宁先生担任“Pass geek大咖啡活动室”的嘉宾,详细介绍了Nervos超链扩展和第2层设计。陆国宁先生是世界上最大的以太坊钱包的首席技术官。

以下是陆国宁先生分享的全文。

012fd35335634364bb536ebc93b638cc.jpeg

非常感谢密码极客的邀请,我非常感谢你在这里与大家分享。这次我主要想和你谈谈Nervos在过去一年中从项目到目前的一些进展,并进一步讨论区块链扩展的一些相关主题。

我将集中讨论三点:

1.重新审视Nervos基于分层架构设计的链外扩展方案;

2.告诉我们Nervos从分层架构设计中获得的设计方法;

3.介绍Nervos在链外扩展方面取得的一些技术特性。

分层架构下的链外扩展方案

目前,区块链的开发面临着一个共同的问题,即可扩展性问题。整个行业一直试图以多种方式解决这个问题。

例如,既然我们观察到区块链的性能瓶颈是共识算法不够有效,那么我们应该选择更有效的一致性算法,因此存在针对PoS和PoS的变体一致性算法。

一些项目方认为使用链式数据存储来存储块,使用最常见的获胜模型效率不高,因此一些团队希望切换到另一种更有效的拓扑数据结构,以便可以并行处理网络。更多交易,所以有一个DAG计划。

此外,一些团队认为区块链的核心问题是单线程。这种处理方法的效率太低,效率不够,无法并行处理事务,将所有处理的节点划分为多个组,然后每个组并行处理事务,因此存在Sharding技术。

的方向。

在我们看来,所有的链扩展方案,无论是DAG,Sharding还是新的共识算法,都需要做出一些其他的妥协才能解决一个链中的性能问题。

例如,如果切换到PoS一致性算法,则可能必须在分散化甚至网络安全性方面做出一些妥协。如果使用Sharding,它实际上会带来一些实现复杂性。实际的复杂性并未在实际场景中得到充分验证,因此需要对工程进行一些调整。

链会变得非常复杂和臃肿吗?

的扩展,因此我们提出了一种分层方法。

在这里插入一个更有趣的点,基于分散的分布式区块链系统,如果它想要追求性能,它就永远无法赶上集中式系统。这称为无共识算法可以与无共识算法进行比较。一致性算法更快。

那是什么意思?如果您想在分散式系统中获得最快的性能,最好的方法是不同意。

一个权限更少的区块链网络,节点不需要信任,节点可以自由加入或退出,其核心是达成全球共识,这种共识对每个人都是可见的,节点需要相互通信和验证数据,并且每个将这些步骤放在一起,它的效率永远不会超过集中式系统,所以区块链作为一个分散的系统,它只能比集中式系统慢,而你仍然需要做到这一点系统会做越来越复杂的事情。根据我们的理解,很难将集中式系统与项目联系起来。

基于分层思想的设计方法

让我们分享Nervos基于分层思想的区块链设计方法。基于以上原因,我们认为单方面追求产业链的绩效改善是有问题的。我们应该考虑这个问题。如果区块链本身很慢,这种共识是有成本的,这是一个比较。复杂的事情,那么我们应该接受事实,全球共识是缓慢而昂贵的,所以全球共识已经成为稀缺资源,我们应该用更微妙的方式来利用这种稀缺资源,把它的价值放大。

只要我们通过工程放大区块链带来的价值,那么我们就可以让区块链为更多人和更多系统服务,因此我们不必考虑绩效,更多地考虑如何扩大区块链的价值。

因此,我们选择了超链扩展的想法,将更复杂的计算任务放在链外,然后将数据的验证和真正需要全局共识的操作放在链上,其余的计算被放入链中。另外,这是我们在设计中分层的基本思路。

,它的目标是实现丰富的加密经济,并通过我们的区块链为这种加密经济提供底层基础设施服务。

基于我们的设计理念,Nervos的角色是加密经济的底层,我们称之为第1层。第1层只需要关注安全性和分散性;性能和用户体验,以及满足各种业务场景。部分应用程序要求放在第2层中以执行此操作。

使用第1层安全性和信任保护区块链应用程序的安全性,这意味着第1层可以将其信任传递给第2层。

如果我们认为分层是未来区块链发展的重要方向,我们必须考虑如何设计这个网络。在考虑设计这个网络时,我们应该考虑将来在上层网络上应用第2层。它们对底层有什么样的要求,然后我们通过充分考虑这些应用的基本要求,完全设计底层网络以完全支持上层系统。

第2层的特点是它不需要全球共识,并且通过本地共识实现了非常高的性能。因此,第1层的核心显然不是性能,因为第2层应该关注性能。因此,第1层的核心是确保第1层的上层协议参与者可以提供防线。它应该更关注安全性和权力下放,因此第1层需要实施最广泛的共识协议。

第1层需要验证第2层提交到第1层的状态,因此第1层需要强大的可编程虚拟机来支持各种状态验证和逻辑,这意味着第1层该层需要具有灵活且强大的编程模型支持第2层提交的各种加密证据,然后完成验证。

由于第2层不断发展,我们需要为第1层提供一定的灵活性,以便它可以灵活地支持各种不同类型的加密基元,这样第1层总是可以将第2层视为第2层这样的法院角色。

当我们将第1层和第2层放在一起时,我们会发现我们必须为第1层设计合理的经济模型,我们需要考虑网络中每个参与者的价值和利益一致性。以确保该网络的长期安全可靠运行。因此,当我们考虑如何设计网络时,我们有四个关键点:

1.第1层提供了最大范围的安全共识;

2.灵活的可编程模型;

3.灵活支持最新的加密算法;

4.为其中的第1层设计匹配的经济模型。

以上讨论了Nervos基于分层架构的系统。接下来,我想介绍一些我们在过去一年中在第1层中取得的一些技术成就。

技术进步:细胞模型

我要介绍的第一个是Nervos的技术特征,叫做Cell模型,意思是中文。所以Cell模型是中文的细胞模型。

我们的网络是第1层和第2层的分层网络。我们的主要焦点是第1层,Nervos的第1层称为CKB。在CKB中,我们介绍了Cell模型的设计,因为当我们支持第2层时,我们必须能够存储提交到第1层的第2层的各种类型的数据,并存储数据。验证了这些数据,并且对此验证的结果达成了全球共识,因此我们需要Cell模型具有非常强大的功能。

如果您熟悉比特币的底层协议和实现朋友,您必须知道比特币的基础书模型基于名为UTXO的数据类型,而UTXO表示比特币资产的当前状态。 Cell模型实际上与UTXO模型非常相似。我们通常说Cell模型是UTXO模型的推广。

比特币网络中只有一部分UTXO。第一部分是记录UTXO(未使用的事务输出)的数量。此外,它有一个名为Lock的部分,代表谁可以花费这个UTXO。

因此比特币的底层是由UTXO的集合构建的。当网络中的节点接收到新事务时,该节点只需要验证要在事务中花费的比特币是否存在。在这个UTXO集合中,如果是,它证明这个比特币没有花费两次。

比特币网络的一个问题是它只支持一种资产,并且无法在比特币网络上原生支持用户的自定义资产。

但是,当您要设计第1层时,其非常重要的功能是除了网络的本机令牌资产之外,还必须允许用户发布自定义资产,并且必须同时保护网络的安全性。此网络的本机资产和用户的自定义资产。

因此,当我们考虑Cell模型设计时,我们必须考虑它如何消除原始资产的支持,还要支持用户定义的资产,整个资产模型受矿工的计算能力保护。

Cell表示用户的资产。此资产具有自己的标识,自己的状态,还可以存储与资产相关的业务逻辑。我们还对资产的定义和资产的状态分离进行了定义。也就是说,每个Cell都可以简单地存储其状态,并将其业务逻辑围绕此状态存储到另一个Cell。

ERC20的会计方法实际上是单个用户的单一资产,将其映射到第2层,这非常不友好。

通过资产的逻辑和状态分离的设计,我们可以让用户通过自己的单元存储自己资产的状态,同时允许多个用户的资产指向相同的逻辑,这实现了一种定义用户的资产发行。这使得用户可以在第1层中发布自定义资本资产并将资产分散到用户手中。

每个用户都可以使用自己的Cell来存储他们的资产。好处是用户和用户的资产彼此隔离。这为第1层提供了一种将用户的资产映射到第2层的方法。非常大的便利,如果您知道以太坊的Eric 20 Token,您知道以太坊ERC 20合同实际上是维护所有资产的第三方簿记员所有用户通过合同。状态。

而这一关键功能完全由Cell底层设计的灵活性驱动!

Cell模型允许每个用户将他们自己的资产存储在他们自己的Cell中,并且每个用户彼此隔离同一资产的Cell,实现设计的状态和逻辑分离,最大化提供资产运营的灵活性。这种灵活性实际上是从内到外的支持第2层,这是第2层最关键的功能。

技术进步:CKB-VM

下面我想向您介绍Nervos CKB的VM(虚拟机)设计。

在Nervos CKB级别,我们不仅设计了基于Cell的分类帐模型,还设计了一个新的VM。在设计CKB VM之前,我们发现很多区块链项目都没有使用真正的CPU指令进行设计。虚拟机,例如我们所知的下一代以太坊虚拟机,将使用WebAssembly实现。

我们认为使用具有高级语言支持的虚拟机可以在虚拟机级别提供更多便利,但这些便利性也很昂贵。

例如,任何具有高级语言特性的复杂虚拟机,无论多么灵活,都不可避免地会在设计层面引入一些语义约束,以便在性能上实现更好的优化。它将在不同语言之间引入一些相同的语义,这更容易优化,但通过这种方式,虚拟机本身的灵活性将受到限制。

当我们进行第1层虚拟机选择时,我们认为灵活性是一个非常重要的特性。由于追求先进的系统,我们不希望虚拟机失去一些灵活性。同时,具有高级语言支持的虚拟机通常支持一些高级数据结构和算法,这最终会导致一个偏向于某种类型的应用程序开发的问题。这也是我们在考虑对高级数据类型的虚拟机支持时看到的问题,因此我们希望虚拟机本身的数据结构或算法能够保持最大的兼容性。

另一个显而易见的特性是所有项目虚拟机实现最终都将在von Neumann CPU架构下运行。无论您是X86还是ARM,所有高级虚拟机的这些功能最终都将映射到CPU von Neumann架构执行CPU汇编指令。

因此,我们正在考虑第1层,我们为什么要追求实现高级语言功能支持的虚拟机,而不是使用真正的CPU指令集构建的虚拟机?

如果我们使用真正的CPU指令集来构建我们的虚拟机,我们可以添加静态验证,添加高级数据结构或加密算法支持。我们可以最大化此VM而不会丢失这些高级功能。通过真实的CPU指令集的灵活性可以最大化开发人员使用该虚拟机编写程序的可能性。

使用基于CPU指令集的虚拟机,除了灵活性之外还有其他优势。

第一个优点是稳定性。

与通常由软件实现的VM指令集相比,硬件指令集非常稳定。当我们进行第1层时,稳定性也是我们考虑的一个非常重要的特性,因此硬件指令机的稳定性和我们的需求。很适合。

第二个优点是运行时的透明性。

一种基于CPU指令集的虚拟机,可以在程序执行过程中根据虚拟机的堆栈指针方便地获取堆栈空间的使用情况,方便我们分析虚拟机内部程序的运行状态。它甚至可以使这种状态更加通用。

第三个优点是能够准确计算运行时开销。

因为虚拟机运行真实的CPU指令集,所以每个命令执行器的插头数量是固定的。我们可以根据插头的数量准确测量每个步骤所需的实际硬件成本。这是经济模型和计算交易执行和验证率的一个非常重要的特征。

通过适度优化,还可以在计算加密加密和加密原语时引入一些即时编译,即及时(JIT)功能。这些功能还可以轻松地在签名中验证虚拟机。等待这些更复杂的计算场景,以实现非常好的优化。

因此,在虚拟机级别,Nervos使用RISC-V指令集实现了我们的虚拟机。

此外,必须提到的是,由于Cell模型支持任何类型的数据存储,再加上虚拟机的配合,我们可以支持丰富类型的加密原语!

我们可以将加密函数编译成一段代码,可以通过C语言在虚拟机上执行,然后将代码存储在Cell中。然后我们可以使用该指令调用虚拟机中Cell的代码。然后把它放在内存中执行。

基于这个模型,我们可以不断地向系统添加新的密码原语而不必使用Hard Fork,因为无论是比特币还是以太坊,如果你想添加一个新的加密函数支持,Hard Fork必须做一次,但是这个在我们的系统上没有必要。

这就是我们所说的Crypto Friendly,您可以轻松添加新的加密原语。因为第1层在分层体系结构中起着重要作用,以验证各种第2层提交提交的加密证据。这些加密证据涉及各种加密算法。过去,有一种相对常见的做法是通过op_code加密虚拟机中的加密,直接在虚拟机中对其进行硬编码,然后通过底层实现。

由于Cell模型的这个特性,我们不能添加op_code。在编译新的加密函数之后,我们可以将它们放入Cell中,我们可以立即调用它们。我们认为这可以最大限度地避免未来。该系统需要硬叉来添加新功能和新的加密功能,这对我们来说是一个非常重要的功能,也是我们虚拟机的一个非常重要的功能。

9d934932c715409dbff16f8515f1f399.gif

2c41b3d7ceb7476ca774bcdbbf35ec6e.jpeg

密码怪人是由前阿里巴巴和蚂蚁金融技术人员和Ali Ventures发起的区块链技术风险投资社区。它也是杭州最大的区块链技术创业社区。截至5月,社区技术超过2000人,社区超过8万名成员,30多个孵化器操作的阿里系统区块链技术项目。扫描二维码即可加入我们。

6b204217847b4205a31bef7cdc278c3b.jpeg