This repository was archived by the owner on Nov 15, 2023. It is now read-only.
Make genesis state locally-available on light client #1622
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There's currently issue with light client startup, similar to what has been fixed in #1130 - during
Clientinitialization we try to read genesis storage or execute code at genesis. And since it is initialization, the network is not yet started => no remote nodes can respond with remote call/read results.The fix is to read genesis storage/execute code at genesis block locally - that's what this PR is about. It adds two main structures -
OnDemandOrGenesisState(replacesOnDemandStateon light client) andRemoteOrLocalCallExecutor(replacesRemoteCallExecutoron light client). So when we start light client for first time (with empty db) - Aura, GRANDPA (in future PRs) and everything else has an access to full genesis state => has a chance to initialize.Later improvements: