-
Notifications
You must be signed in to change notification settings - Fork 346
Open
Labels
128mb/6sWS: Big Blonks 🔭Improving consensus critical gossiping protocolsImproving consensus critical gossiping protocols
Description
per other sync etc, there are a few things that we can do to speed up blocksync, however these two options are what we're pursuing for now.
b. Speed (to be implemented)
1) Going to roughly about 1.5 - 1.6s per 128mb block
- save blocks in another goroutine, so this will not block the block processing.
The issue with this approach is that if the node is abruptly terminated, we can end up with the state at block N, but we would have less blocks saved in the storage (N - X), which causes node to fail to start. This can be mitigated by using rollback capabilities of the state (I tried rolling back to 40 blocks and this worked fine, by default it should be 362880 blocks (specified in pruning options).
Doing this will save us around 500ms, but we are still limited with process proposal.
2) Going to around 300-500ms per 128 Mb block
- only validate PartSets but skip ProcessProposal. This still confirms that the block were signed by 2/3+ of the vals, but we don't check row roots etc, i.e. that the blocks are properly formed.
It seems (afaiu) we would have roughly equal guarantees in these two cases:
- state sync to block N - X from trusted height/hash and then do blocksync without process proposal to block N. Here we trust the first state and then for each block we check that correct validators signed the next block (assuming that the block at trusted height was correct).
- state sync to block N
Originally posted by @mcrakhman in #2594
Metadata
Metadata
Assignees
Labels
128mb/6sWS: Big Blonks 🔭Improving consensus critical gossiping protocolsImproving consensus critical gossiping protocols
Type
Projects
Status
In Progress