diff --git a/validator/full-node-shard.cpp b/validator/full-node-shard.cpp index 688ab916f..cefa2e80c 100644 --- a/validator/full-node-shard.cpp +++ b/validator/full-node-shard.cpp @@ -1190,6 +1190,10 @@ const Neighbour &FullNodeShardImpl::choose_neighbour(bool require_state) const { return Neighbour::zero; } + double min_unreliability = 1e9; + for (auto &x : neighbours_) { + min_unreliability = std::min(min_unreliability, x.second.unreliability); + } for (int attempt = 0; attempt < (require_state ? 2 : 1); ++attempt) { const Neighbour *best = nullptr; td::uint32 sum = 0; @@ -1203,7 +1207,7 @@ const Neighbour &FullNodeShardImpl::choose_neighbour(bool require_state) const { continue; } } - auto unr = static_cast(x.second.unreliability); + auto unr = static_cast(x.second.unreliability - min_unreliability); if (x.second.proto_version < proto_version()) { unr += 4;