Skip to content

BlkExc - Improved peer selection #1018

Open
@benbierens

Description

@benbierens

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

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions