-
Notifications
You must be signed in to change notification settings - Fork 696
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
omni node without embedded chainspecs #5210
Comments
|
Good. Will it happen within 4 weeks? If yes I can wait, otherwise I will prefer to do it myself if that can speed it up.
We don't have any custom EVM related code in our node. Our EVM solution works with Chopsticks which only implements standard RPC. |
Removing the chain-specs from our side is a few days worth of work at most, but it might also break a lot of things in our CI etc, because things like Let me loop in @bkchr and @PierreBesson to see what they think. I kinda regret not forking |
Not sure why it should take multiple days of work. I never advocated to keep them part of the binary. Parity CI or any other random parity internals should never be a blocker for these kind of changes. However I can see the argument for externals. As we have now "stable" releases. We could remove the code on master and add a pr to stable that prints warnings that people should stop using these and switch over to providing the chain specs. Then in 3 months we can remove them entirely in the stable release. |
@kianenigma did you actually read this? Because that was not really planned? Maybe what we could do until we have bootnodes on the relay chain dht, there exists some central registry to resolve these names to an actual chain spec. So, we would download this file and then final chain spec on the fly. |
@kianenigma In any case removing the embedded chainspecs is a big breaking change and should be clearly communicated to users with release notes/print warnings etc. Although users can always adjust their configurations, we don't want to break our promise of stability so we must minimize disruptions to existing flows including binary upgrades. In terms of backward compatibility, I like the approach that @xlc wants to take with Acala which is to have one binary with embedded chainspec and another without. This allows to keep 100% backward compatibility and provide a migration path for parachains who are already distributing their node binaries and want to switch to the omni-node. If we were to take this approach for system parachains, we could have eg. Could we facilitate that process somehow by creating an omni-node "extension template" where you simply have to drop your chainspecs in a folder ? I think this could go a long way to foster adoption of the omni-node. We would of course use this ourselves for our system parachains binary. As a caveat, it could also be argued that doing it this way kind of defeat the philosophy of the omni-node as it will multiply the number of node binaries in use in the wild. |
Can we do it step by step? I only need step 1 to unblock me.
I think we need step 1 done regardless the whole plan so let's do it? |
The idea of separating the common logic sounds good to me. And we can definitely do it within 4 weeks if there are no concerns about it. I can prioritize this. I just want to try a bit to see if we can do it without a separate crate as a first step. For example just to make polkadot-parachain compilable both as a bin and as a library and maybe also add a feature flag. LE: But, just a heads-up. This common logic is still under development. We still plan to do some more refactoring and to make some things more generic, so the interfaces might change during the following months. |
the public interface should be very simple: take a list of chain specs. I don’t think you will be able to break such simple interface with whatever refactoring that may happen. and that’s the main point. you are free to change the node implementation and it won’t impact downstream users |
This public interface should be kept at the very very bare minimum, because the point of it is its stability. If we break this interface, the underlying goal of the whole thing is compromised. For now we can try with a simple interface that allows you to build your own omni-node with custom I am generally a fan of moving the omni-node towards being a library as well (I have called it |
The main thing is I don't want to break compatibility. Also it will be more work to update the deployment process to add a json file alongside with a docker image / binary. Having one or two teams to update is fine but there are exchanges, RPC providers, collator runners etc all need to update their setup and they will have different setup. I just want to save people's time. |
Opened the following PR to address this issue: #5288 @xlc @kianenigma can you PTAL ? |
Merged PR #5288 which separates
@xlc if there are other remaining items related to this, please feel free to add them here |
@PierreBesson sorry I missed your comment about compatibility.
Sounds like a great idea, we will work on it. #5288 generally solves the issue of users who wish to use We could indefinitely keep these chain-specs in Given the comments in #5269 (comment), we can, upon one breaking release:
|
@kianenigma I would also fully endorse approach. Keep |
Related to: #5210 Follow-up for #5288, as per this comment: #5288 (comment) I hope I understood this correctly.
I would like to delete all the node related code from Acala repo and start using omni node but got some blockers:
--chain acala
should still work. So I need a way to build a binary with minimal change to embed the Acala and Karura chainspec to the binary.Suggestion: make a new crate, move all the logic in
polkadot-parachain-bin
to there, except all the chainspec for various networks. Updatepolkadot-parachain-bin
to use this new crate. And then I will be able to do similar thing at Acala.The text was updated successfully, but these errors were encountered: