diff options
author | Pieter Wuille <pieter.wuille@gmail.com> | 2015-03-19 09:51:59 -0700 |
---|---|---|
committer | Pieter Wuille <pieter.wuille@gmail.com> | 2015-03-23 17:24:18 -0700 |
commit | c6a63ceeb4956933588995bcf01dc3095aaeb1fc (patch) | |
tree | b88a7fe5aebb9118f552d4be074a6e7eca22fa8d /src/addrman.cpp | |
parent | f68ba3f67bd500a64fb8932c6b41924ddc31d76f (diff) |
Always use a 50% chance to choose between tried and new entries
This change was suggested as Countermeasure 2 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.
Diffstat (limited to 'src/addrman.cpp')
-rw-r--r-- | src/addrman.cpp | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/src/addrman.cpp b/src/addrman.cpp index eb431ec59c..5d9527f0e1 100644 --- a/src/addrman.cpp +++ b/src/addrman.cpp @@ -332,14 +332,13 @@ void CAddrMan::Attempt_(const CService& addr, int64_t nTime) info.nAttempts++; } -CAddress CAddrMan::Select_(int nUnkBias) +CAddress CAddrMan::Select_() { if (size() == 0) return CAddress(); - double nCorTried = sqrt(nTried) * (100.0 - nUnkBias); - double nCorNew = sqrt(nNew) * nUnkBias; - if ((nCorTried + nCorNew) * GetRandInt(1 << 30) / (1 << 30) < nCorTried) { + // Use a 50% chance for choosing between tried and new table entries. + if (nTried > 0 && (nNew == 0 || GetRandInt(2) == 0)) { // use a tried node double fChanceFactor = 1.0; while (1) { |