LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 币圈百科 > 波卡世界建筑师runtime,是Substrate工具箱的熟练工,Polkadot“无叉升级“主心骨

波卡世界建筑师runtime,是Substrate工具箱的熟练工,Polkadot“无叉升级“主心骨

2020-10-23 阿风1989 来源:区块链网络

关心波卡生态的朋友们,必然时不时看到runtime这个单词,无论你如何翻译,例如翻译成“运行时间”,放在中文语境中总是感觉很别扭,似乎是在表达“程序处于运行状态”这样的含义。

Gavin在波卡中国行北京站上的演讲,不下10次提到了“runtime”。

那么,runtime在波卡中到底意味着什么?事实上runtime对波卡而言相当重要,涉及到波卡最重要的特性“无叉升级”,涉及到波卡生态最重要的Substrate开发工具。本文我们不聊别的,就讲清楚runtime这个名词的含义。

1、runtime到底是什么“time”?

runtime虽然看起来像是在表达“奔跑时间”这样的意思,但其实与奔跑八竿子打不着。

我们来看runtime的专业解释。

runtime是由Substrate构建的,相当于Substrate的一个子集,通过用户自己意愿组合和配置好了的模块就是用户自己的runtime,每一个模块包含特定领域的逻辑和存储项目。runtime的主要任务是定义链状态转换逻辑,定义用户可以操作的存储的项目和功能。

也就是说,从Substrate的模块库中“拼起来”的那套程序,就是runtime。

我们知道,一整套的Substrate模块和支持库被称为SUBSTRATEFRAMEPALLETS。而runtime内的所有模块都来自这个模块库。

我们举个例子,如果你想在你的区块链上加入智能合约功能,只需要拖动“Contracts”模块加入到你的runtime中。再例如,如果的区块链需要加入时间戳,只用把timestamp模块拖入你的runtime中。如果你的区块链需要加入虚拟机,就把EVM模块拖入自己的runtime中。

因此,可以这么说,Substrate是一个庞大丰富的用来开发区块链的资源库,runtime是Substrate这个资源库里的部分模块合集,但runtime放到一条单独的链上,就负责了这个链的各项有关状态转换功能的事务,以及随着时间的推移可以无需硬分岔的升级。

而runtime就相当于Substrate的一个子集。如果说Substrate是博卡的工具箱,那么runtime就是这个工具箱的熟练工,如果波卡是一栋建筑,那么runtime就是这栋建筑的建筑师。

那么,体现到Polkadot中,这个runtime到底有什么作用呢?确保无叉升级顺利执行!

2、runtime下的“无叉升级”

关注我的朋友,肯定注意到曾经很推崇过一篇文章《“波卡是什么”,一篇人人都看得懂的Polkadot科普文,跨链可组合、共享安全、无叉升级与治理》。为什么?

这篇文章后三分之二部分是由布鲁诺·什沃克(Bruno?kvorc)写作,布鲁诺拥有计算机科学与英语语言文学双硕士学位,2018年以前是一位十分知名的以太坊生态科普作者与开发者,2019年之后,加入波卡生态做专职开发者与科普作者。

这篇文章虽然字面意思十分简单,但是写作过程高屋建瓴,没读过的朋友,建议仔细阅读。

这篇文章在讲到无叉升级时,是这样描述的。

而Polkadot通过“链上runtime与链上治理”(on-chainruntimeandon-chaingovernance)的方式解决这个难题(无叉升级)。

链上runtime是指:生成新区块的规则的代码被存储在链上。因此,运行区块链的节点,或者说程序,只需读取这些最新的代码,它们就可以升级了。

那么我们如何更新这些代码呢?链上治理(on-chaingovernance)允许任何DOT持有人发起全民公投,且在公投中投票。全民公投是对区块链逻辑或数据的建议性修改(Change)。

通过这样的链上治理,社区可以对链上逻辑的修改提出建议并对其进行投票,一旦该修改投票通过,就会自动更新,无需软件更新,也无需人工干预。

布鲁诺的科普十分基础,深入浅出,做到了“老少皆宜”。下面这篇文章也提到了无叉升级与runtime。

另外一篇文章是《Polkadot下一个EOS?不可能的!DOT质押越久越值钱,无叉升级与链上治理背后的“财富密码”》。

文中中在讲到“无叉升级”时,就提到了runtime,说实话,当时我在做翻译,看到这个词,也是一头雾水。于是,就翻译成了“区块链运行时”,这肯定是不对的,正确的做法就是放个英文单词runtime就可以了。

基于Substrate构建的链,在升级时不必调动所有节点维护人员更新软件,这是怎么办到的呢?方发如下:

在基于Substrate构建的区块链中,有一种被称为WebAssemblyblob或WASMblob的设置被存储在链本身的协议中。这个WASMblob包含区块链构建新块所需的所有逻辑,runtime也被包含在这个WASMblob逻辑中。

连接到这个区块链的所有节点能够时刻感知到WASMblob,以及它为节点提供的生成新块的规则。

在节点的本地代码也执行同样的逻辑:所有节点(运行链的程序)都是在Rust中构建的,这些编程指令也把如何构建区块的方法同步给节点,这些指令与WASMblob中的指令完全相同。那这段话的重点是什么呢?继续往下看。

节点内置的装置(switch)会告诉它们:“如果链上的WASM代码比您的本地代码更新,请忽略您的本地代码,而选择WASM代码。如果WASM代码与本地是相同的,那么运行本机代码,因为它更快。”

综上所述,runtime是由Substrate模块“拼接”而成,由于runtime被WASMblob的逻辑中,因此只要WASM代码发生更新,整个波卡生态的所有应用都会跟着升级。

3、runtime的最新进展

北京时间9月23日凌晨,Parity Technologies发布第二版区块链工具包Substrate v2.0.0 – two dot,即媒体所谓的Substrate 2.0。

这里的Parity Technologies,是由Gavin领衔,主要开发Polkadot的区块链公司,其更大的目标部署基于多条区块链的Web 3.0网络。

根据公开信息,Substrate 2.0的更新新增了一些核心功能。此次更新主要针对runtime、client、API以及Runtime Migrations,包括允许设置任何账户做抵押的奖励目的地、更新任务Grafana仪表板、libp2p客户端更新、grandpa-rpc api更新等。

更新过后的Substrate 2.0主要包含链下工作机(off-chain workers)和70多个可组合模块,意义在于为构建优化的、与Polkadot兼容的、可投入生产的区块链奠定了坚实的基础。

此外,在9月25日的PolkaWorld周报中提到,目前runtime已经升级到v24,即v24runtime,并将每个验证人的最大提名人数量提高到256个的Motion20已经被理事会投票通过。https://github.com/paritytech/polkadot/releases/tag/v0.8.24

6号全民公投已经通过了,它修复v24runtime迁移中的一些代理相关存储。https://polkadot.subscan.io/referenda/6

往期精选:

1)公链生态大事件:以太坊ICO、EOS超级节点竞选、即将到来的波卡IPO,格局不同结局必然不同!

2)波卡“圣杯”之Kusama,是Polkadot终极目标“嵌套中继链”第一步,KSM尚有10倍涨幅?

3)Parity亚洲技术总监瑶琪博士分享:Substrate开发、平行链参与方法、Web3.0生态进展

—-

编译者/作者:阿风1989

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...