Substrate Developer Hub

Substrate Developer Hub

  • 教程
  • 知识库
  • 进阶菜谱
  • API 文档
  • Languages icon简体中文
    • English
    • 协助翻译

›进阶

开始

  • 总览
  • 安装
  • 在 Windows 系统开始
  • 词汇表

学习 Substrate

  • Extrinsics
  • 交易池
  • 账户摘要
  • 会话密钥
  • 交易权重
  • 链下功能

Runtime

  • Runtime 总览
  • Runtime 的基本类型
  • FRAME
  • Pallets
  • Runtime宏
  • Runtime 元数据
  • Runtime 存储
  • Runtime 来源
  • Runtime 执行流程
  • Runtime事件
  • Runtime 错误
  • 交易费用
  • 链下工作机
  • 调试
  • Runtime 测试
  • 链上随机生成
  • Runtime 升级

智能合约

  • 总览
  • ink! 智能合约
  • ink! 概念
  • ink! 开发
  • EVM 模块
  • ink! 常问问题

整合

  • Polkadot-JS
  • 客户端库
  • 链规范
  • Subkey 工具
  • 内存分析

进阶

  • SCALE 编解码器
  • 共识机制
  • 区块导入过程
  • 执行器
  • 密码学
  • 存储
  • SS58 地址格式

贡献

  • 协助翻译
Translate

执行器

执行器负责向 Substrate Runtime 调度和执行调用。

Runtime 执行

Substrate Runtime 被编译成一个本地可执行文件和一个 WebAssembly(Wasm)二进制文件。

本机 Runtime 作为节点可执行文件的一部分,而 Wasm 二进制文件则存储在区块链上的一个已知的存储键值下。

Runtime 的这两种表示方式可能不一样。 例如:当 Runtime 升级后。 执行器决定在调度调用时使用哪个版本的 Runtime。

执行策略

在 Runtime 开始执行之前,Substrate 客户端会建议使用哪个 Runtime 执行环境。 这是由执行策略控制的,可以针对区块链执行过程的不同部分进行配置。 这些策略是:

  • NativeWhenPossible:如果本地的环境与给定的 wasm 模块兼容,就使用本地环境执行;否则退回到 wasm。
  • Wasm:使用给定的 wasm 模块。
  • Both:同时使用 wasm 和本地变体(若兼容)运行。 任何差异将报错。
  • NativeElseWasm:首先选择原生的,然后如果失败或不可能,就用wasm。

区块链执行过程中不同部分的默认执行策略是:

  • 同步: NativeElseWasm
  • 导入区块: NativeElseWasm
  • 区块构造: Wasm
  • 链下 Worker: NativeWhenPossible
  • 其他:NativeWhenPossible

Wasm 执行

Substrate runtime 的 Wasm 表示被视为规范的 runtime。 因为这个 Wasm Runtime 被放置在区块链存储中,网络必须就此二进制文件达成共识。 因此可以验证它在所有同步节点间是一致的。

Wasm 执行环境比本地执行环境更具限制性。 例如,Wasm Runtime 总是在具有可配置内存限制(最大4 GB)的32位环境中执行。

由于这些原因,即使 Wasm 执行比本地执行要慢得多,区块链还是倾向于使用 Wasm Runtime 进行区块构建。 在 Wasm 中执行的某些逻辑将总是能在本地执行环境中运行,但不能反过来说。 Wasm 执行可以帮助确保区块生产者创建有效的区块。

本地执行

本地 Runtime 仅在被选择为执行策略,并且与请求的 Runtime 版本兼容时,执行器才会选择使用它。 对于除了区块构造以外的所有其他执行过程,首选本地 Runtime,因为它性能更高。 在不应运行本地可执行文件的任何情况下,都将以执行规范的 Wasm Runtime 代替。

后续步骤

进一步学习

  • 查看 Runtime 文档 阅读更多关于 runtime 升级。

例子

代办事项

参考文档

  • Check out the different 执行策略。

  • Take a look at the different 执行策略选项。

  • Review the Runtime 版本的定义。

← 区块导入过程密码学 →
  • Runtime 执行
    • 执行策略
    • Wasm 执行
    • 本地执行
  • 后续步骤
    • 进一步学习
    • 例子
    • 参考文档
Substrate Developer Hub
开发者中心
教程知识库进阶菜谱API 文档
社区
社区主页通讯Substrate 技术聊天室Substrate 研讨会Stack Overflow推特聚会活动
更多
Substrate Builders 计划BlogSubstrate GitHub开发者中心 GitHub隐私政策使用条款Cookie 设置
Copyright © 2021 Parity Technologies