Crate sc_executor

source ·
Expand description

A crate that provides means of executing/dispatching calls into the runtime.

There are a few responsibilities of this crate at the moment:

  • It provides an implementation of a common entrypoint for calling into the runtime, both wasm and compiled.
  • It defines the environment for the wasm execution, namely the host functions that are to be provided into the wasm runtime module.
  • It also provides the required infrastructure for executing the current wasm runtime (specified by the current value of :code in the provided externalities), i.e. interfacing with wasm engine used, instance cache.


  • Rust executor possible errors.


  • A generic CodeExecutor implementation that uses a delegate to determine wasm code equivalence and dispatch to native code when possible, falling back on WasmExecutor when not.
  • The version of the native runtime.
  • Runtime version. This should not be thought of as classic Semver (major/minor/tiny). This triplet have different semantics and mis-interpretation could cause problems. In particular: bug fixes should result in an increment of spec_version and possibly authoring_version, absolutely not impl_version since they change the semantics of the runtime.
  • An abstraction over Wasm code executor. Supports selecting execution backend and manages runtime cache.




  • Trait that allows zero-copy read/write of value-references to/from slices in LE format.
  • Delegate for dispatching a CodeExecutor call.
  • Extracts the runtime version of a given runtime code.


  • Take the runtime blob and scan it for the custom wasm sections containing the version information and construct the RuntimeVersion from them.
  • Set up the externalities and safe calling environment to execute runtime calls.