Open
Description
I would like to discuss and design our way to better peer selection in the blockexchange engine. I think we can apply a similar pattern as for IndexingStrategy. We can make an abstraction that hides the peer-selection-strategy from the engine code, so that we can later slot in implementations that optimize for speed vs peer-reliability vs price.
What are the inputs required?
- Block being downloaded
- Currently connected peers
Per connected peer we might want to know: - Measure of reliability (did they respond to previous messages?)
- Measure of speed (duration of previous block downloads?)
- Price for block (can be omitted for now)
The biggest puzzles are acceptable ways of detecting reliability, speed, and deciding how to remember faulty/unreliable peers. At the moment, we just disconnect from them. But if discovery returns them again, we will reconnect.
Please put your insights here.
Metadata
Metadata
Assignees
Labels
No labels