Files
pezkuwi-subxt/substrate
Bastian Köcher 5a347adad2 Fix state_subscribeRuntimeVersion for parachains (#9617)
The old implementation was listening for storage changes and every time
a block changed the `CODE` storage field, it checked if the runtime
version changed. It used the best block to compare against the latest
known runtime version. It could happen that you processed the storage
notification of block Y and checked the runtime version of block X (the
current best block). This is also what happened on parachains.
Parachains import blocks and set the new best block in a later step.
This means we imported the block that changed the code, got notified and
checked the runtime version of the current best block (which would still
be the parent of the block that changed the runtime). As the parent did
not changed the runtime, the runtime version also did not changed and we
never notified the subscribers.

The new implementation now switches to listen for best imported blocks.
Every time we import a new best block, we check its runtime version
against the latest known runtime version. As we also send a notification
when the parachains sets a block as new best block, we will trigger this
code path correctly. It moves some computation from checking if the key
was modified to getting the runtime version. As fetching the runtime
version is a rather common pattern, it should not make any big
difference performancewise.
2021-08-25 09:13:00 +02:00
..
2021-08-13 06:46:07 +00:00
2021-08-24 14:31:19 +00:00
2021-08-24 10:37:14 +02:00
2021-07-02 12:48:14 +02:00
2021-08-24 14:31:19 +00:00
2021-08-24 14:31:19 +00:00
2021-06-24 00:10:44 +02:00
2021-08-24 14:31:19 +00:00
2021-08-24 14:31:19 +00:00

Substrate · GitHub license GitLab Status PRs Welcome Matrix

Substrate is a next-generation framework for blockchain innovation 🚀.

Trying it out

Simply go to substrate.dev and follow the installation instructions. You can also try out one of the tutorials.

Contributions & Code of Conduct

Please follow the contributions guidelines as outlined in docs/CONTRIBUTING.adoc. In all communications and contributions, this project follows the Contributor Covenant Code of Conduct.

Security

The security policy and procedures can be found in docs/SECURITY.md.

License

The reason for the split-licensing is to ensure that for the vast majority of teams using Substrate to create feature-chains, then all changes can be made entirely in Apache2-licensed code, allowing teams full freedom over what and how they release and giving licensing clarity to commercial teams.

In the interests of the community, we require any deeper improvements made to Substrate's core logic (e.g. Substrate's internal consensus, crypto or database code) to be contributed back so everyone can benefit.