波卡 Runtime 模组和主要功能是什么?

波卡 Runtime 模组和主要功能是什么?

波卡 Runtime 模组和主要功能是什么?

波卡的 Substrate 模型库里有一个编译难度等级的区分,分为三个难度等级,这个难度等级实际取决于 Runtime 的开发简易复杂程度。Runtime 需要自定义越多则难度越大。Runtime 和 Substrate 的关系可查看文章《S& R》

Runtime 是什么

Runtime 就是制定链上逻辑状态如何改变的规则, Runtime 模块组是链在运行时主要调动的部分。

如下图 1,一条链在运行时需要 P2P 网络、安全共识机制 POW/POS、WebAsswmbly 编译,同时有 Runtime 对很多具体逻辑的调用。逻辑可能同时被调用也可能按照一定顺序调用,都由 Runtime 来决定。

波卡 Runtime 模组和主要功能是什么?

图 1

如下图 2,基于波卡生态的区块链,具体的 Runtime 模块(Pallet)都是从 Substrate 库里根据需求挑选出来,再根据实际情况进行参数调整,最难的是所有模块(Pallet)全部开发者自己编写,仅使用 Substrate 库里有关网络运行的一些基础程序。所以对于开发者来说,加入一个新的功能只需要专注于一个模块(pallet)的开发。

一个 Runtime 模组里包含了治理功能模块、质押功能模块、资产功能模块、资产转移功能模块、虚拟机模块、国库模块、时间戳模块等等。所以一条链在运行时 ,主要调动的程序都是 Runtime 模组里的 模块 (pallet)程 序,以保证链的运行,如果对链的逻辑做更改也是通过更 改 Runtime 里的模块 (pallet)程序来实现。(功能模块化即功能可“热插拔”,无需影响其他功能的逻辑更改即“无分岔升级”)。

如《名词解释》里写到:“波卡网络是一个国度,建立在一片土地 (PH) 之上,有自己的地基结构 (Libp2p),有自己的建筑物群 (Runtime)”。每一个建筑物群里住着负责保证社会不同方面运转的公司和人 (模块 / 程序逻辑),没有这些建筑,波卡国度的各项功能就无处发挥;没有 Runtime,链就没法运行

波卡 Runtime 模组和主要功能是什么?

图 2

模块化 Runtime 需要考虑什么

基于 Substrate 的 Runtime 将整条区块链的运行逻辑拆分为很多个小的模块,且在构架设计上将模块的逻辑拆分为入口、存储、功能函数,以及初始化和结束逻辑。

波卡在设计 Runtime 的时候,希望从开始就将其模块化(《两概念》解释了为什么要模块化),但是将 Runtime 拆分成多个模块可能会导致逻辑调用混乱

因为 :

  1. 波卡设计的 Runtime 框架对于模块初始和结束的生命周期管理具有不确定性,所以无法保证模块之间的初始与结束顺序

  2. 一个模块可能会在初始的时候调用另外一个模块,而另外一个模块有可能未初始化或已经结束

针对以上两个问题的解决方案是,通过将各个模块的初始与结束逻辑加以 约束,来避免以上可能造成逻辑调用混乱的问题,且拆分的好处远大于成本。

此外,设计过程中还有两个方面需要考虑:

  1. 即使当前波卡使用的 Runtime 模块在初始化期间没有调用其它模块,也必须对其它模块的初始化与结束逻辑进行约束,避免其他模块相互之间无次序的调用(减少调用混乱)

  2. 最好有一些模块可以为链提供治理能力,以方便链的维护人员或社区能够实现对链的治理(实现链上治理)

波卡网络的 Runtime 主要有两个功能

  • 管理对平行链和平行线程的调度和更新,以及处理系统发生的不当行为报告并执行削减惩罚。

  • 通过 Runtime API 作为内部与其他底层交互的接口,使数据更新在节点端可用,以此让节点端正确地创建块。

即 Runtime 模组逻辑主要负责:信息交互、平行链 / 平行线程的接入和退出、确保节点出块、和节点奖惩。

补充:

Runtime 基于 WASM 支持可以无缝链上升级,但通信和共识不能链上升级,所以只要不涉及通信和共识的变更,就能保证网络中出现新版本 WASM 时,所有节点都可以正确升级到对应的新版本:新的模块程序 (Pallet),新模块调用规则。

Runtime API 对外暴露以获得链上状态,确保了所有节点 Runtime 升级没问题,Runtime API 与其他底层良好交互,就确保了节点出块就不受到影响。

波卡 Runtime 模组和主要功能是什么?

波卡的 Runtime 逻辑主要拆分为以下模块:

  • Initializer:管理其他模块的初始化顺序。

  • Shared:管理其他模块的共享存储和配置。

  • Configuration:以非实时的方式管理配置和配置更新。

  • Paras:管理平行链和平行线程的链头和验证代码。

  • Sheculer:管理平行链和平行线程调度以及验证器分配。

  • Inclusion:处理预定的平行链和平行线程的包含和可用性。

  • Validity:处理包含的可用平行区块的二次检查和争议解决。

  • Hrmp:处理参数之间的水平消息。

  • Ump:处理从平行链到中继链的向上消息。

  • Dmp:处理从中继链到平行链的向下消息。

其中 Initializer 模块比较特殊——它负责处理其他模块的初始化逻辑,以确保维护正确的初始化顺序和相关的不变量。其他模块不会指定初始化逻辑,而是公开一个特殊的半私有例程,初始化模块将调用这个例程。其他模块相对简单,并执行上述角色。

**

**

波卡 Runtime 模组和主要功能是什么?

下周开始 Eunice 继续为大家直播讲解波卡,社群有源源不断的新朋友进来,我们需要持续的为大家服务。同时,直播也会涉及行业一些技术、应用架构分析,欢迎朋友们一起探讨,一起提供更多的灵感,一起分享。可以留言和我们联系。波卡 Runtime 模组和主要功能是什么?

**
**

**
**

-往期精彩看点-

**
**

一文了解 Polkadot (波卡)是什么?
Polkadot 诞生的背景是什么?

什么是 Phala,隐私计算又为何重要?

BML 波卡基础知识回顾 & 理解

一文了解 Rococo-Kusama-Polkadot 的关系
Crust:波卡生态上去中心化云存储的未来
Plasm Network 基于应用层面的解读

END

波卡 Runtime 模组和主要功能是什么?

文章来源于网络,如有侵权联系站长做处理。发布者:btcbtc,转转请注明出处:https://www.zmyg.org/3339.html

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注