Polkadot Node 2026
We want to release a list of new features that require to introduce new host functions or breaking existing behavior in the node. Right now we have the following items:
- RFC 145 - This moves the allocator from the host side to the runtime side.
- RFC 123 - This will change the way runtime upgrades are applied, to ensure that the first block after a runtime upgrade is not decoding faulty data
- BLS signatures: Not yet a RFC, but still needs one. Is about introducing host functions to handle BLS keys and signatures. This will improve the performance of BEEFY.
The list is not yet 100% finished and could still be extended. Because the introduction of new host functions requires that all the nodes in the network are providing these host functions, such an upgrade isn't that easy to coordinate. This also means we will need to have all parachains upgraded to a node that supports these new host functions. To achieve this we will need to backport the host function changes to make it as easy as possible for parachain teams to integrate them into their node. But we should also use this opportunity to move every one that is possible to Omni node or to have them run their parachain nodes with an external relay chain node (--relay-chain-rpc-url).
For RFC 145, we currently have the following PRS: The RFC itself: https://github.com/polkadot-fellows/RFCs/pull/145 Host functions implementation: https://github.com/paritytech/polkadot-sdk/pull/8641 Host functions integration: https://github.com/paritytech/polkadot-sdk/pull/8866
CC @s0me0ne-unkn0wn
- BLS signatures: Not yet a RFC, but still needs one. Is about introducing host functions to handle BLS keys and signatures. This will improve the performance of BEEFY.
@drskalman could you please take care of this?
RFC 123 is currently implemented in this pull request: https://github.com/paritytech/polkadot-sdk/pull/6029
After the implementation work is done, we will need to decide on a date in the future and start communicating with the parachain people.
Thanks for publishing the roadmap! Two points from my side:
- #8641 is breaking the
FunctionContextinterface, which is public. In theory, that means it cannot be backported. We need to determine the actual impact of this breaking change and either try to work around it or decide it's acceptable to make a breaking backport. - The BLS thing interferes with RFC-145, I mean, if we're going to release them together, then the BLS code must be changed to use the runtime allocator.
- is breaking the
FunctionContextinterface, which is public
Should be fine I think? Although technically public this is pretty much an internal interface.
The BLS thing interferes with RFC-145, I mean, if we're going to release them together, then the BLS code must be changed to use the runtime allocator.
Should be pretty much orthogonal, as long as the new host functions for BLS are designed from the start to not use the host allocator (which, AFAIK, should be possible without any of your changes).
Should be fine I think?
I hope so, just wanted to check with you guys that I'm not missing something.
as long as the new host functions for BLS are designed from the start to not use the host allocator
And currently they are not. I don't say we have any technical difficulties here; it's just organizational. Yes, in principle, we can rewrite BLS functions to allocate for themselves even before introducing the runtime allocator (although in that case, before merging with RFC-145, they will use the host allocator in a sense 🙃), we just need to release both BLS and RFC-145 together if we don't want to create a mess.
we just need to release both BLS and RFC-145 together if we don't want to create a mess.
I mean this is the entire point of this issue, that we release all these things together :)
Okay, so we're on the same page 🙂 Do we need any help preparing an RFC for the BLS host functions? I mean, I'm not familiar with the topic, but if the RFC is only about introducing new host functions, I could do that. CC @drskalman @davxy
Yeah the RFC should be mainly about introducing the new host functions and not more. You can take it if you like.
Yeah the RFC should be mainly about introducing the new host functions and not more. You can take it if you like.
Published a first draft: https://github.com/polkadot-fellows/RFCs/pull/156
@seunlanlege this is the issue you need to follow for the BLS integration.
Draft implementation of BLS host functions: https://github.com/paritytech/polkadot-sdk/pull/10327