-
Notifications
You must be signed in to change notification settings - Fork 74
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
Refactor chain information building process #2845
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Automatically approving tomaka's pull requests. This auto-approval will be removed once more maintainers are active.
twiggy diff reportDifference in .wasm size before and after this pull request.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
Close #1681
Right now the code of
warp_sync
andchain_spec
both build aChainInformation
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
andchain_spec
, andwarp_sync
andchain_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.