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

addrmgr: Properly scale up. #1131

Open
markusrichter opened this issue Mar 6, 2018 · 1 comment
Open

addrmgr: Properly scale up. #1131

markusrichter opened this issue Mar 6, 2018 · 1 comment

Comments

@markusrichter
Copy link
Contributor

Commit c80c8e7 was supposed to mimic
Bitcoin Core commit bitcoin/bitcoin@1d21ba2 in order to implement the suggested Countermeasure 6 in
Eclipse Attacks on Bitcoin’s Peer-to-Peer Network, Ethan
Heilman, Alison Kendler, Aviv Zohar, Sharon Goldberg. ePrint Archive
Report 2015/263. March 2015.

However, erroneously the triedBucketSize was increased instead of the triedBucketCount.

markusrichter added a commit to markusrichter/dcrd that referenced this issue Mar 6, 2018
Commit c80c8e7
was supposed to mimic
Bitcoin Core commit 1d21ba2f5ecbf03086d0b65c4c4c80a39a94c2ee
in order to implement the suggested Countermeasure 6 in
Eclipse Attacks on Bitcoin’s Peer-to-Peer Network, Ethan
Heilman, Alison Kendler, Aviv Zohar, Sharon Goldberg. ePrint Archive
Report 2015/263. March 2015.

However, erroneously the triedBucketSize was increased instead of the
triedBucketCount.

This commit fixes this error in order to properly mimic the Bitcoin Core
commit referenced above.

This change in isolation is problematic, because after applying it old
peers.json files will still load, but with many empty new tried buckets and
potentially overfull old tried buckets.

See issue decred#1131 for discussion.
@markusrichter
Copy link
Contributor Author

PR #1132 partially addresses the issue by changing the constants accordingly.

However, the change in isolation is problematic, because after applying it old
peers.json files will still load, but with many empty new tried buckets and
potentially overfull old tried buckets.

I'm not sure what the implications are and what would be the best approach to solve it.
Some ideas:

  • Bump serialisationVersion and somehow "rebalance" tried buckets after loading old version.
  • Bump serialisationVersion and simply invalidate old version. That is, bootstrapping again from seeders.

Any ideas?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants