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

关于Polkadot与Substrate的概述

江鹏江鹏 2019-03-21 收藏0

在Parity,我们目前专注于开发三种主要技术:Parity Ethereum(Eth 1.0以及Serenity),Parity Substrate和Web3 Foundation的项目Polkadot。最终,我们与这些项目的共同目标是实现Web3愿景,“一套包容性的协议,为应用程序制造商提供构建模块。这些构建块将取代传统的Web技术,如HTTP,AJAX和MySQL,并提供了一种创建应用程序的全新方式。这些技术为用户提供了强大且可验证的保证,即他们所接收的信息,提供的信息,支付的内容以及接收到的信息。通过授权用户在低障碍市场中为自己处理事务,我们可以确保审查和垄断的地方无处可藏。“(Gavin Wood).

到目前为止,Polkadot和Substrate已经有了广泛的知识基础。本文旨在深入研究这些材料,并深入研究我们使用这两种技术的原因,同时还展示了如以太网或Zcash等公共网络如何适应这种情况。

起源

Gavin Wood在2016年为Polkadot构思了最初的想法,同时等待包括分片在内的新的以太坊规范发布。那时候,主要的信标/中继链显然需要链接分片并协调消息传递。

关于Polkadot如何形成的第一手叙述可以在Epicenter的第259集中找到。

进一步想想看,Gavin构思了一个系统,其中连接到中继链的分片并不完全相同,但允许不同的节点运行不同的应用逻辑,使每个链都能够成为自己的平台。

这将增加整个系统的复杂性,并且使平台构建起来要困难得多。实现这一愿景的缺失关键在WebAssembly中找到:一个通用的抽象机器规范,可以在具有不同运行时的区块链之间进行调解(链的应用程序逻辑)。

创建一个区块链可以共存并相互补充的系统有可能克服链条极大主义,其中区块链竞争成为最好的终端所有区块链。

如果分片系统中的所有分片具有不同的任务,那么它们将启用非常专业的分片(即区块链),而不需要通常的专业区块链以及系统的权衡。让我们仔细看看这个。

互操作性是专业化的关键

现在,许多区块链试图成为主流,包括智能合约,货币,治理等方面。如果您在其中一个区块链上构建应用程序,那么您将受到平台的限制,瓶颈和治理决策的约束。另一方面,您可能会从区块链的用户群中受益。

通过让专业链与其他专业链交换消息,我们能够恢复那些通常会阻碍专业链的网络效应。

Polkadot使用中继链来实现其生态系统中区块链之间的任意消息传递。中继链足够通用,允许相邻的链 - 我们称之为parachains  - 拥有自己的应用程序逻辑。你可以自由使用任何语言编写parachain(如Rust,C / C ++,C#,Go等)。您只需要实现Polkadot可以调用的特定函数接口,处理传递给链的消息。

Polkadot连接了一系列区块链,从一般到特定于应用程序,以创建一个支持更高级应用程序的平台。利用交叉链任意消息传递的此类高级应用程序的一些示例:

-将实际数据放在链上的Oracle服务
-身份管理系统,用于链接多个应用中的用户身份
-分散交换订单簿和托管
-物联网网络,从其他网络或控制器接收消息
-跨链智能合约电话
-私人和公共链之间传递的消息

可扩展性

当我们通过引入互操作性来解决专业化与泛化的困境时,我们也消除了可扩展性瓶颈。 除了事务吞吐量之外,完全通用的独立智能合约平台还存在事务冲突问题。 因此,事务通常按顺序而不是并行运行。 通过将任务分配给不同的子链,我们能够并行运行事务,而不必担心发生冲突。

在Polkadot的第一版中,这意味着通过一个中继链连接可以并行运行数十个区块链。 发展进程仍在进行中; 我们目前估计中继链将能够容纳大约一百个链。 在几十个能够并行运行的区块链的情况下,该系统将比当前PoS系统的可扩展性大约一百倍。

潜在地,Polkadot的第二版可能有多个中继链连接到根中继链(零级)。 Polkadot 中继链本身是使用Substrate开发的,这是与大多数石链相同的技术堆栈。 通过这些一级中继链,与目前的PoS系统相比,我们正在寻求1,000x至10,000x的可扩展性。 但是,这只会在稍后的时间点进行评估。

安全方面

到目前为止,克服单个区块链设计的固有局限性听起来很有希望,但我们还没有讨论这种系统中同步和共识的方面。 Polkadot能够确定在链路之间传递的消息,但是如何确定整个网络中的事务顺序?每个parachain的安全性,以及整个系统的安全性如何实现?乍一看,这似乎不是一个问题。如果连接不同的链,每个链都会带有自己的验证器集以保护链,就像众所周知的多链场景(如侧链或Cosmos)中的情况一样。

共享安全

在代理两个链时出现的第一个问题可能是以下情况。事务从一个PoS链发送到另一个。链1对其最终结果的经济安全保障较弱。在攻击中,事务被还原,并且包含事务的块被放弃。链1存在于不同的分支中,相应的块不再包括此事务。

但其实际价值已经转移到B链。链1的较弱安全性直接影响了链2.有效地,这开启了双重花费攻击的可能性。

想象一下,不是两个,而是一百个相互关联的链条,具有独立的安全级别交换价值。 具有最弱安全性的链最终将定义整个系统的安全性,代表最薄弱的环节。 因此,最好对所有链中具有相同的安全保证。 这可以通过汇集其安全性并将其委托给Polkadot中继链来实现。

此外,每个验证器只能提交一定数量的资源 -  PoW中的计算能力或PoS中的经济利益 - 加剧了最薄弱的环节问题。 当验证者开始确保不同的链时,一些链 - 首先是那些具有不太吸引人的激励结构的链 - 最终会降低经济安全性,为恶意行为者提供更容易攻击的目标。

池化安全性的另一个好处是,您不必引导验证器社区来保护区块链,而是可以完全专注于链的任务(即运行时),将部分安全方面留给Polkadot中继链。

如何使区块链发展变得容易

到目前为止我们所学到的是,Polkadot是一种异构多链协议,允许区块链互操作性和副链的汇集安全性。现在让我们探讨如何通过尽可能简单地实现链的实际开发来充分利用Polkadot的可能性。

当我们开始在Parity建立Polkadot时,我们意识到我们正在重复我们为以太坊和比特币客户端所做的大量开发,例如编写RPC和数据库组件。即使是最专业的区块链也有许多共同的属性:哈希算法,数据库,网络等。

虽然单一区块链的构思或设计是多功能性和专业化的冲突,但许多不同链的创建过程会导致另一种类型的权衡。在具有同构分片的系统中,可以通过复制分片来缩放系统。对于Polkadot中的异构分片,每个分片都必须单独设计和实现,这使得开发过程本身不可扩展。

Substrate:有效构建不同区块链的框架

为了有效地构建许多不同的区块链,Parity开发人员将构建区块链所需的所有功能都汇集成到一个名为Substrate的框架中。我们的想法是将所有学到的东西都用于构建以太坊和比特币的实现,并尽可能简单灵活地创建区块链。Substrate是以模块化方式创建的,以提供技术自由,但也可以像插入库一样轻松实现帐户,余额,治理和智能合约等功能。

在Polkadot联合创始人Robert Habermeier的话中,Substrate是“一组用于完成所有关于编写区块链事情的库。”底层有效地将区块链的各个功能分离为模块并将它们概括为足以使它们仍然可以有效地用于不同的场景,而它们的可管理性是近乎即时的实现。已开发的Substrate创建可轻松连接到Polkadot的区块链

Substrate旨在实现最大的技术自由度和易用性

Substrate的多层架构使开发人员可以在易于开发和技术自由之间做出选择。 这三层是Substrate Core(具有Polkadot-Core-integration),Substrate SRML和Substrate Node。

要创建区块链并将其连接到Polkadot,在技术层面上,您可以从头开始构建自己的区块链,并在WebAssembly中为其配备块验证功能。从头开始意味着您必须实现自己的节点,RPC同步,网络,加密,数据库,存储,共识以及轻量级客户端和遥测等扩展功能。这种简单的方法被称为Polkadot Core。

如果您不想创建这些,可以从Substrate Core开始。 Substrate Core为您提供上述所有功能,只需要您编写自己的运行时(状态转换功能),还可以自定义网络,块创作和事务队列功能。

如果您决定使用基质运行时模块库(SRML),那么您所要做的就是从库中选择所需的模块,并使用所需的参数对其进行配置。您的区块链将使用事件跟踪和区块链资源管理器等工具。此外,如果需要,您可以修改现有模块或编写自己的模块。

区间链开发相当于客房服务,即Substrate Node。使用Substrate Node,只需提供JSON配置文件即可获得完整的智能合约区块链。

Substrate为您提供了快速开发区块链的工具,而无需处理每项功能背后的复杂性。

Polkadot is not Substrate is not Polkadot

尽管Substrate可以很容易地为Polkadot构建区块链,但是Polkadot网络中的区块链不需要使用Substrate构建。 即使您不希望区块链连接到Polkadot,您仍然会发现Substrate是一个非常有用的框架,用于创建最先进的区块链。

在未来,可能会有Substrate冗余的框架,和优化的Polkadot集成来为开发人员提供替代方案,或者您仍然可以从头开始构建您的parachain。

整合现有的区块链

Substrate和Polkadot并非旨在取代现有的基础设施。 相反,它们用于连接并填补有关工程可能性的空白。 Polkadot parachains需要比基于智能合约的Dapps做更多的努力,并且一些应用程序不能证明其需要建立整个parachain,而其他应用程序则需要。 这取决于每个申请的范围,必须单独评估。 与副链相反,智能合约代表沙盒环境,需要较少的安全措施。 有人可能会争辩说,子链是针对互操作性(单独的应用程序/链之间的通信)进行了优化的,而智能合约则针对可操作性进行了优化(链运行时内的通信)。

Polkadot网络中的链接,由Polkadot的中继链保护,因此无法选择自己的共识机制。 如果区块链想要使用自己的共识机制,它可以使用parachain作为连接Polkadot网络的“桥梁”。

桥链允许独立的区块链(例如以太坊)以及其自己特定的共识机制连接到Polkadot网络。 与安全集中的parachains相反,以太坊主网这样的网络将会相对保持独立。

在这种情况下,具有汇集安全性的parachain功能仅延伸到Bridge(桥),而连接到桥另一侧的以太坊类似于具有相互理解区块头,状态转换和最终性的能力的侧链 。

股权证明(PoS)区块链中的终局性是指由于链的验证者的绝对多数已经批准最终状态,恢复到先前状态将导致大量标签被削减的情况。尽管在技术上可以恢复最终块,但它将表示验证器集的错误。由于验证器(矿工)的集合在理论上是无限的,所以在PoW链中不可能有这种类型的终结 - 其中回归代表绝大多数验证器的错误。因此,PoW链具有“概率”终结性,因为在某些时候,回归的可能性被认为是微不足道的。

具有概率最终性的桥接链也会对延迟产生影响。这意味着用适当的时间考虑来自以太坊到中继链的交易是合理的。 Polkadot网络内部和来自Polkadot网络的交易具有自适应,渐进的终结性,可以被认为是最终的,更快,几乎是即时的。这导致退出桥接链事务的等待时间长短,但在Polkadot网络中的所有其他事务却不用长时间等待。

无叉运行时升级

到目前为止,我们已经强调了Polkadot互操作性对可扩展性和安全性的影响。但是,还有一个问题是分叉会发生什么。一旦区块链变得相互依赖,与两个单独孤立网络分裂相比,分支具有更大的影响。这对于继电器链和链路来说都是如此,它将我们带到了Substrate最令人兴奋的功能之一,即无叉运行时升级。

更新网络 - 通常的方式

升级区块链网络的常见做法是更改底层协议的规则。这样做是为了引入新功能或改变现有规则。如果升级与旧版本不兼容,则会强制节点更新以继续参与当前版本的网络。不更新的节点将无法理解新规则,并将与网络分离,可能形成替代网络。虽然由于网络寻求共识而发生临时分叉,但由于有意的网络更新,有计划的永久分叉也会发生。这实际上是通过重置来更新网络,这在可互操作的环境中是不切实际的。 Polkadot的中继链是异构多链生态系统的旋转门。很容易想象有两个版本的继电器链引起的问题。

更新网络 - Substrate方式

由于Polkadot建立在Substrate之上,我们可以利用Substrate的一个便利功能来规避中继链中的前叉以及使用Substrate构建的所有其他区块链。 Substrate on-chain更新如何工作?

如果通过网络生成并传播块,则Substrate节点将在对其执行各种通用检查后执行该块。执行块由Substrate节点完成,但这样做是由本链来运行的。

执行块意味着什么?一旦确定块一致有效,节点将开始执行它包含的状态转换。如果成功,节点将存储块。在处理状态转换时,节点将有效地访问其merklised存储数据库,该数据库基本上是一个键值存储。 Substrate使用基本函数set_state和get_state在此键值存储上运行。现在可以为Substrate提供set_state的特殊情况,即使用key:code。在这种情况下,Substrate需要提供WebAssembly(Wasm)runtime。由于区块链runtime是在Wasm中运行,因此可以使用新的二进制blob代码来呈现它。这段代码将作为状态转换的一部分执行,从而使runtim按照blob中的指定进行更新。

链式治理将在Polkadot中发挥重要作用。 管理网络的机制正在设计之中,并将围绕基于股权的投票计划。 一些额外的措施,如理事会,投票加权,替代计票计划和委托投票,将确保治理过程高效,切实可行,并充分尊重网络中的少数意见。 但是,如果治理具有约束力,那么来自公投的决策必须直接在链上实施,要求Polkadot运行时更新。

链的治理机制可以负责:代码密钥。 这意味着运行时更新只能由治理决策触发。 例如,在肯定投票结果的情况下,预定义密钥自动进入状态转换集,从而对链绑定做出治理决策。

总结

本文探讨了Polkadot和Substrate背后的核心概念,它们是如何形成的,以及它们对区块链生态系统的整体意义。正如我们所见,Substrate和Polkadot完美互补。虽然后者可以连接具有不同特性的其他链,但是Substrate让我们以高效,安全和相对简单的方式创建这些链。

碎碎念~

Polkadot是一种异构多链协议。这意味着连接到中继链的分片并不完全相同,但允许不同的节点运行不同的应用程序逻辑,使每个链都成为自己的平台。如果分片系统中的所有分片都可以具有不同的任务,则它们可以启用非常专业的分片(即区块链)。

通过让专业链与其他专业链交换消息,我们能够恢复通常会阻碍专业链的网络效应。 Polkadot连接了一系列区块链,从一般到特定应用程序,以创建一个支持更高级应用程序的平台。

当我们通过引入互操作性来解决专业化与泛化的困境时,我们也消除了可扩展性瓶颈。

Polkadot的安全模型汇集了资源,解决了网络中最薄弱环节的问题。区块链由Polkadot的中继链保护,因此无法选择自己的共识机制。池化安全性的另一个好处是,使其没有必要引导验证器社区来保护区块链。

如果区块链想要使用自己的共识机制,它可以使用parachain作为连接Polkadot网络的“桥梁”。

为了有效地为Polkadot生态系统构建许多不同的(异构)区块链,Parity开发人员将构建区块链所需的所有功能集成到一个名为Substrate的框架中。 Substrate的多层架构使开发人员可以在易于开发和技术自由之间做出选择。

尽管Substrate可以很容易地为Polkadot构建区块链,但是Polkadot网络中的区块链不需要使用Substrate构建。

Substrate具有进行无叉运行时升级的能力。一旦区块链变得相互依赖,与两个单独的孤立网络中的孤立网络分裂相比,分支具有更大的影响。

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

相关文章

更多

发布评论

共2条评论

评论列表

加载中...
  1. aharddaysnight aharddaysnight说道:

    密码极客看来是跟波卡有强协作了,文章更新的这么勤快,而且内容这么新,赞一个