Substrate开发者知识库:深入理解Runtime执行器机制
2025-07-05 00:50:34作者:柯茵沙
什么是Runtime执行器
在Substrate区块链框架中,执行器(Executor)是一个核心组件,它负责调度和执行对Runtime的调用请求。执行器决定了使用哪种形式的Runtime(原生可执行文件或WebAssembly二进制)来处理这些调用,是连接节点客户端与Runtime的关键桥梁。
Runtime执行环境详解
Substrate Runtime有两种表现形式:
- 原生可执行文件:直接编译为机器码,作为节点可执行文件的一部分
- WebAssembly(Wasm)二进制:存储在区块链上,通过特定存储键访问
这两种形式可能不同步,特别是在Runtime升级后。执行器需要智能地决定在特定场景下使用哪个版本的Runtime。
执行策略深度解析
执行策略(Execution Strategy)决定了在什么情况下使用哪种Runtime形式。Substrate提供了多种策略选择:
| 策略名称 | 行为描述 |
|---|---|
| NativeWhenPossible | 优先使用原生Runtime,不可用时回退到Wasm |
| AlwaysWasm | 强制使用Wasm Runtime |
| Both | 同时执行原生和Wasm版本,用于验证一致性 |
| NativeElseWasm | 尝试原生Runtime,执行失败则使用Wasm |
默认策略配置
Substrate为区块链的不同处理环节设置了默认策略:
- 同步区块:NativeElseWasm
- 区块导入(非验证节点):NativeElseWasm
- 区块导入(验证节点):AlwaysWasm
- 区块构建:AlwaysWasm
- 链下工作器:NativeWhenPossible
- 其他操作:NativeWhenPossible
自定义策略配置
可以通过命令行参数覆盖默认策略:
# 为特定环节设置策略
--execution-block-construction <strategy>
--execution-import-block <strategy>
--execution-offchain-worker <strategy>
--execution-other <strategy>
--execution-syncing <strategy>
# 为所有环节统一设置策略
--execution <strategy>
策略名称可使用简写形式:Native、Wasm、Both、NativeElseWasm。
Wasm执行环境的特点
Wasm Runtime被视为权威运行时,具有以下特性:
- 共识保障:Wasm二进制存储在区块链上,全网节点对其达成共识
- 环境限制:运行在32位环境,内存上限可配置(最高4GB)
- 确定性验证:确保区块生产者构建的区块在所有节点上执行结果一致
原生执行环境的优势
原生Runtime在以下场景中表现更优:
- 性能更高:直接运行机器码,无需Wasm解释/编译开销
- 功能更全:不受Wasm环境限制,可以访问完整的系统资源
- 开发便利:调试和测试时响应更快
但原生执行必须满足版本兼容性要求,否则会自动回退到Wasm执行。
实际应用建议
- 区块生产节点:建议保持默认的AlwaysWasm策略,确保区块有效性
- 同步节点:可使用NativeElseWasm提高同步速度
- 开发环境:可临时使用NativeWhenPossible加速迭代
- 关键操作:考虑使用Both策略进行双重验证
版本兼容性机制
执行器在选择Runtime时会严格检查版本号,确保:
- 原生Runtime版本必须≥请求的Runtime版本
- 当原生版本过时,自动选择Wasm Runtime
- 版本检查防止了执行环境不一致导致的状态差异
理解Substrate执行器的工作原理,有助于开发者优化节点性能,确保区块链网络的稳定运行。在实际部署中,应根据节点角色和网络需求选择合适的执行策略。
登录后查看全文
热门项目推荐
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00
GLM-4.7-FlashGLM-4.7-Flash 是一款 30B-A3B MoE 模型。作为 30B 级别中的佼佼者,GLM-4.7-Flash 为追求性能与效率平衡的轻量化部署提供了全新选择。Jinja00
VLOOKVLOOK™ 是优雅好用的 Typora/Markdown 主题包和增强插件。 VLOOK™ is an elegant and practical THEME PACKAGE × ENHANCEMENT PLUGIN for Typora/Markdown.Less00
PaddleOCR-VL-1.5PaddleOCR-VL-1.5 是 PaddleOCR-VL 的新一代进阶模型,在 OmniDocBench v1.5 上实现了 94.5% 的全新 state-of-the-art 准确率。 为了严格评估模型在真实物理畸变下的鲁棒性——包括扫描伪影、倾斜、扭曲、屏幕拍摄和光照变化——我们提出了 Real5-OmniDocBench 基准测试集。实验结果表明,该增强模型在新构建的基准测试集上达到了 SOTA 性能。此外,我们通过整合印章识别和文本检测识别(text spotting)任务扩展了模型的能力,同时保持 0.9B 的超紧凑 VLM 规模,具备高效率特性。Python00
KuiklyUI基于KMP技术的高性能、全平台开发框架,具备统一代码库、极致易用性和动态灵活性。 Provide a high-performance, full-platform development framework with unified codebase, ultimate ease of use, and dynamic flexibility. 注意:本仓库为Github仓库镜像,PR或Issue请移步至Github发起,感谢支持!Kotlin07
compass-metrics-modelMetrics model project for the OSS CompassPython00
项目优选
收起
deepin linux kernel
C
27
11
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
522
3.71 K
Ascend Extension for PyTorch
Python
327
384
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
875
576
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
334
161
暂无简介
Dart
762
184
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
1.32 K
744
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
12
1
React Native鸿蒙化仓库
JavaScript
302
349
华为昇腾面向大规模分布式训练的多模态大模型套件,支撑多模态生成、多模态理解。
Python
112
134