Polkadot Runtime Releaser
- Team Name: hack-ink
- Payment Address:
- 156HGo9setPcU2qhFMVWLkcmtCEGySLwNqa3DaEiYSWtte4Y (AssetHub) USDC 50%
- 156HGo9setPcU2qhFMVWLkcmtCEGySLwNqa3DaEiYSWtte4Y (Polkadot) DOT 50%
- Level: 2
Project Overview 📄​
Overview​
Polkadot Runtime Releaser aka PRR.
Since last year, my work is mainly focused on the chain/node maintenance. Runtime upgrade is a great feature for the Polkadot-SDK. But there are lots of potential issues that could happen during the runtime upgrade. Especially to the new teams, they might not have enough experience to handle it.
- How to setup a try-runtime CI?
- How to setup the release CI?
- The log affects the runtime file size.
- The rustc/OS version affects the compiled artifacts.
- There are also some unclear things of the srtool.
- When to notify the community to upgrade the node?
- Collator/Validator nodes should be upgraded first.
- RPC suppliers should be upgraded later.
- I saw some EVM RPCs require the runtime version to be equal to the node version.
- How to host a wasm-override repository for the community?
- Debug log WASM.
- We always use
sp-api/disable-logging
in the release build, so no more detail logs in the general runtime. - We can enable the
sp-debug-derive/force-debug
in the debug build, so we can get more logs instead ofWASM stripped
(I think people often see this a lot while they are trying to get some debug log).
- We always use
- EVM tracing WASM.
- For some EVM chains, they need to trace the EVM execution.
- Debug log WASM.
PRR's goal is to streamline the process of releasing a new runtime for the Polkadot-SDK-based chain. It provides a standard way to release a new runtime, including the CI setup, runtime upgrade notification, and wasm-override repository hosting.
Ecosystem Fit​
For any Polkadot-SDK-based chain, they could use PRR to release their runtime. It's a tool that could help them to release the runtime in a more standard way.
Details(spec)​
For PRR's utilization, the chain team requires two repositories: one for their code and another for the release.
Take foo-network
as an example.
They should have two repositories, foo-network/foo
and foo-network/foo-release
.
foo-network/foo
is the base Polkadot-SDK-based chain repository that everyone should have.
foo-network/foo-release
is a new repository that PRR requires.
It will have 2 branches, foo
and bar
if they have 2 networks, foo
(mainnet) and bar
(canary network).
It will host the override WASMs and the release under the corresponding network branch.
For collator/validator nodes, they should monitor the foo-network/foo
repository release as usual.
For RPC suppliers or service node, they should monitor the foo-network/foo-release
repository release, it's a more stable version. It will only be published once the on-chain runtime upgrade get confirmed.
PRR will supply these components, which will all be hosted in one repository.
- A GitHub Action to response the try-runtime. (Users can comment something like
/bot try-runtime <network>
under a release PR to trigger this action.) - A GitHub Action to build the release runtime.
- A GitHub Action to notify release repository there is a new release that release repository can start preparing the override WASMs.
- A GitHub Action and a tool to monitor the on-chain runtime version and compare it with the release runtime version to trigger the release on the release repository.
- A tool to build and manage the override WASMs.
GitHub Action | Trigger | Output |
---|---|---|
try-runtime | Comment /bot try-runtime <network> under the PR. | Bot will comment the try-runtime result under the PR. |
Runtime release | Usually by tag, this can be configured by users. | Build and release the runtime files. |
WASM override | Runtime release action will notify this action. | Build and push the runtime files to the repository. |
Node release | It's a scheduled action that runs every hour by default. | Retrieve the on-chain runtime version and compare it with the latest GitHub tag to determine if a release is necessary. |
Each component will have a very detailed guide to help the chain team to set up.
Team 👥​
Team members​
- Xavier Lau
Contact​
- Contact Name: Xavier Lau
- Contact Email: x@acg.box
- Website: https://linktr.ee/aurevoirxavier
Legal Structure​
Personal. (no legal structure entry)
Team's experience​
- Seven years of experience in Rust.
- Four years of experience in Substrate.
- Darwinia Network core developer, since 2019.
- Actively at Substrate StackExchange.
- Grants contributor, Subalfred, Slothunter.