问题描述
每个Substrate运行时都有一个RuntimeVersion。 RuntimeVersion结构中的字段指示运行时的各个方面何时更改,并且每个字段都有在这些文档中描述的自己的语义。
我不确定authoring_version
的含义以及何时应该更改。我对文档中的描述并不完全清楚
authoring_version: u32
authoring_version is the version of the authorship interface.
An authoring node will not attempt to author blocks unless this
is equal to its native runtime.
如果可能,请提供以下升级示例:
-
spec_version
和authoring_version
都将改变 -
spec_version
会更改,但authoring_version
不会 -
authoring_version
会更改,但spec_version
不会
解决方法
我将分享由Substrate核心开发人员Bastian Köcher提供给我的答案:
没有太多变化会导致
升高authoring_version
例如,如果您以非向后兼容的方式更改
BlockBuilder
运行时api,则需要修改authoring_version
由于验证程序将无法在不更新节点实现的情况下构建新块
如果您仅以某种方式更改运行时api,使其与以前的版本不兼容,同时又不更改运行时中会导致不同存储根的任何内部结构,则只会颠倒{{1 }}。但是,我希望这可能永远不会发生