Page MenuHomePhabricator

addrman: Use system time instead of adjusted network time
Needs ReviewPublic

Authored by PiRK on Fri, Sep 27, 14:03.

Details

Reviewers
None
Group Reviewers
Restricted Project
Summary

This changes addrman to use system time for address relay instead of the network adjusted time.

This is an improvement, because network time has multiple issues:

  • It is non-monotonic, even if the system time is monotonic.
  • It may be wrong, even if the system time is correct.
  • It may be wrong, if the system time is wrong. For example, when the node has limited number of connections (4), or the system time is wrong by too much (more than +-70 minutes), or the system time only got wrong after timedata collected more than half of the entries while the time was correct, ...)

This may slightly degrade addr relay for nodes where timedata successfully adjusted the time. Addr relay can already deal with minor offsets of up to 10 minutes. Offsets larger than this should still allow addr relay and not result in a DoS.

This is a backport of core#24662

Test Plan

ninja all check-all

Event Timeline

PiRK requested review of this revision.Fri, Sep 27, 14:03
src/net_processing.cpp
42

this was missed when backporting core#24697, and is now required (compiler error)