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

Prioritize peers to resist eclipsing #38

Open
xloem opened this issue Jan 31, 2016 · 1 comment
Open

Prioritize peers to resist eclipsing #38

xloem opened this issue Jan 31, 2016 · 1 comment

Comments

@xloem
Copy link

xloem commented Jan 31, 2016

An eclipse attack is when the client is provided with a mess of peers all of which misbehave, offering it a "virtual world" which is false. This can also happen by accident, in the case of a network split for example.

Resistance to this can be much stronger than simply keeping the longest-connected peers. Research into academically-reviewed solutions to these issues is the right way to go. I have not done this.

I at least, however, recommended prioritizing peers by behavior. Following priority list is in need of review:

  1. The best peers are those which have provided us other peers that are behaving well. These peers are crucial to keep us in a working network. Ideally these peers also provide items 2 and 3.
  2. Second-best peers are those which have provided us with valid blocks which contain all the transactions we have produced and broadcast since the block preceding and have the highest generating balance. This could be a % evenly distributed over the different keys signing the transactions, to resist identity censorship. Ideally these peers also provide item 3.
  3. Third-best peers are those which provide blocks containing transactions for which we are the recipient, with similar concerns as item 2.
  4. In the event of no transactions related to us in blocks on the network, peer is considered unsynchronized, and user is advised to visit faucet to verify they are on the network.

It would additionally be helpful to support proxy connections so other channels can be used in these events (web proxy, tor, i2p, sneakernet)

@xloem
Copy link
Author

xloem commented Feb 6, 2016

From chat: Qora/src/utils/PeersForSortComparator.java The formula by which selecting the best peers can be modified

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