Skip to content
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

Use read_only_runtime_host in chain_information submodules #1681

Closed
tomaka opened this issue Nov 25, 2021 · 1 comment · Fixed by #2845
Closed

Use read_only_runtime_host in chain_information submodules #1681

tomaka opened this issue Nov 25, 2021 · 1 comment · Fixed by #2845

Comments

@tomaka
Copy link
Contributor

tomaka commented Nov 25, 2021

No description provided.

@tomaka
Copy link
Contributor Author

tomaka commented Aug 18, 2022

The chain_information submodules should be entirely reconsidered.
It is a bit cumbersome to create a separate API for a specific runtime function execution, while the caller could just use read_only_runtime_host directly.

@mergify mergify bot closed this as completed in #2845 Oct 10, 2022
mergify bot pushed a commit that referenced this issue Oct 10, 2022
Close #1681

Right now the code of `warp_sync` and `chain_spec` both build a
`ChainInformation` struct by making runtime calls. However the code of
these two modules is completely different.
Because these two modules were built very early on in smoldot's history,
they are getting help from the sub-modules of the `chain_information`
module, that are also very old.

This PR modernizes all of this: it removes all the sub-modules under
`chain_information` and merges them into one that does everything.

This new module is now used by `warp_sync` and `chain_spec`, and
`warp_sync` and `chain_spec` are now more simple.

I'm also planning to use this new module in order to refactor the SQLite
database. (#1752)

This PR slightly changes the behavior of the warp syncing: we now
download the runtime, then build it, and then only download the call
proofs to obtain the chain information. Right now all the downloads are
done in parallel.
This change is in principle more correct. At the moment we blindly call
functions that we expect to exist. By downloading and building the
runtime first, we can check the list of supported functions and then
only call them. (cc #949) This is really not a problem at the moment
because none of the functions that we use has ever been deprecated, but
it could have become one in the future.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant