Simnode is an alternative client shell for your substrate runtime. This shell provides a few useful things:
Manual/Instant block production
The default
sc-service
shell spins up the production consensus worker and tries to author blocks according to consensus rules. Simnode on the other hand spins up sc-consensus-manual-seal
and puts you in complete control of block production. Do you want to author blocks for every transaction that enters the transaction pool (instant-seal) or do you want to author blocks at your own discretion by sending an RPC request (manual-seal), the choice is all yours.Signature verification host functions overrides
sc-service
uses the NativeElseWasm
code executor. This is usually what you want in production for faster block authorship and processing. NativeElseWasm
will always use the native code directly if the runtime version and the native version matches. But thereβs no way to override the signature verification functions with this executor. Simnode instead uses the WasmExecutor
exclusively. This allows for overriding the signature verification functions the runtime uses to verify the validity of transaction signatures. Fork your live chain state
Simnode is a full-node environment, this means you can run it by pointing it to an existing database of your live chain. With full control over block production and the ability to author extrinsics from any account, you can now simulate transactions on live chain data and test their effects before executing them in production. For example, you can test your runtime upgrades and its migrations and be fully confident that they will not brick your runtime.
Integrating SimnodeUsage