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

Explicitly pull missing data using data hashes #77

Open
loongy opened this issue Apr 1, 2020 · 0 comments
Open

Explicitly pull missing data using data hashes #77

loongy opened this issue Apr 1, 2020 · 0 comments

Comments

@loongy
Copy link
Contributor

loongy commented Apr 1, 2020

Currently, when blocks are proposed they include all of the previous state. It should be possible to only include the prevStateRef (in the block header), and then explicitly request the prevState if required (most nodes will have the prevState because of participation in execution of the previous block).

However, this gives rise to a broader question: can we send all messages as just identifying hashes and the explicitly request the full message only if it is required? This question is a bit broader than just Hyperdrive — and could even be implemented at the airwave level — but there are some Hyperdrive-specific versions of this. For example, the LatestCommit object could be just the hash of the LatestCommit, and only if the node needs to fast-forward does it then go and explicitly request the full object.

Another question that arises: can we aggregate signatures into a single message? For example, when sending the LatestCommit object, we could send only one full Precommit but include 2F+1 signatures for it. This would reduce the size of this message significantly (up to 5 kilobytes when there are 100 nodes).

Lastly, resynchronisation and resending of messages. Resynchronisation is not always necessary, so there should be some basic check that receiving nodes do before resending all their messages. But, we should also be able to trim down on exactly what is resent and only cherry-pick messages that are known to be missing.

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

No branches or pull requests

1 participant