Page MenuHomePhabricator

addrman: Use system time instead of adjusted network time
ClosedPublic

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

Details

Reviewers
Fabien
Group Reviewers
Restricted Project
Commits
rABCf3f9586e12b3: addrman: Use system time instead of adjusted network time
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

Diff Detail

Repository
rABC Bitcoin ABC
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

PiRK requested review of this revision.Sep 27 2024, 14:03
src/net_processing.cpp
42 ↗(On Diff #49839)

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

This revision is now accepted and ready to land.Sep 30 2024, 08:18