diff options
author | fanquake <fanquake@gmail.com> | 2022-01-06 07:34:32 +0800 |
---|---|---|
committer | fanquake <fanquake@gmail.com> | 2022-01-06 07:35:01 +0800 |
commit | 17fdbefd3f40ec79b98c876229760b8fbb1d8620 (patch) | |
tree | fa00ef0f333e4077ee11ad61f97bdff9f9d57d28 | |
parent | 801aaac2b39564aa14009785146ba26d2506fb53 (diff) | |
parent | fa9f4554ca5e64e7960b74dd0ad8fb1cd7c2f091 (diff) | |
download | bitcoin-17fdbefd3f40ec79b98c876229760b8fbb1d8620.tar.xz |
Merge bitcoin/bitcoin#23970: Remove pointless and confusing shift in RelayAddress
fa9f4554ca5e64e7960b74dd0ad8fb1cd7c2f091 refactor: Remove pointless and confusing shift in RelayAddress (MarcoFalke)
Pull request description:
The second argument written to the siphash is already quantized to 24 hours, so it seems confusing to quantize the first argument to 32 bits (out of 64 bits).
> The shifting is pointless, we should get rid of it. It seems to be a silly evolution of this 2010 Satoshi code: 5cbf753 (where it made sense because everything was XORed together, and the address used the high bits, while the time used the low ones).
(Copied from https://github.com/bitcoin/bitcoin/pull/18642#issuecomment-613773120)
(The original code was `uint256 hashRand = hashSalt ^ (((int64)addr.ip)<<32) ^ ((GetTime()+addr.ip)/(24*60*60));`)
This also allows to remove a integer sanitizer suppression for the whole file.
ACKs for top commit:
laanwj:
Code review ACK fa9f4554ca5e64e7960b74dd0ad8fb1cd7c2f091
sipa:
utACK fa9f4554ca5e64e7960b74dd0ad8fb1cd7c2f091
promag:
Code review ACK fa9f4554ca5e64e7960b74dd0ad8fb1cd7c2f091.
Tree-SHA512: f5fd107464ccd839d6749aed6914b4935e39ab42906546b3f3810a7339fc4633fef931a1783a287572af5ec64525626fa91d147d8ff52eb076740465bf5cf839
-rw-r--r-- | src/net_processing.cpp | 4 | ||||
-rw-r--r-- | test/sanitizer_suppressions/ubsan | 1 |
2 files changed, 2 insertions, 3 deletions
diff --git a/src/net_processing.cpp b/src/net_processing.cpp index 51aa498fb0..7ef0054630 100644 --- a/src/net_processing.cpp +++ b/src/net_processing.cpp @@ -1746,8 +1746,8 @@ void PeerManagerImpl::RelayAddress(NodeId originator, // Relay to a limited number of other nodes // Use deterministic randomness to send to the same nodes for 24 hours // at a time so the m_addr_knowns of the chosen nodes prevent repeats - uint64_t hashAddr = addr.GetHash(); - const CSipHasher hasher = m_connman.GetDeterministicRandomizer(RANDOMIZER_ID_ADDRESS_RELAY).Write(hashAddr << 32).Write((GetTime() + hashAddr) / (24 * 60 * 60)); + const uint64_t hashAddr{addr.GetHash()}; + const CSipHasher hasher{m_connman.GetDeterministicRandomizer(RANDOMIZER_ID_ADDRESS_RELAY).Write(hashAddr).Write((GetTime() + hashAddr) / (24 * 60 * 60))}; FastRandomContext insecure_rand; // Relay reachable addresses to 2 peers. Unreachable addresses are relayed randomly to 1 or 2 peers. diff --git a/test/sanitizer_suppressions/ubsan b/test/sanitizer_suppressions/ubsan index fc14998ba1..6e4ac80927 100644 --- a/test/sanitizer_suppressions/ubsan +++ b/test/sanitizer_suppressions/ubsan @@ -105,6 +105,5 @@ implicit-unsigned-integer-truncation:crypto/ shift-base:arith_uint256.cpp shift-base:crypto/ shift-base:hash.cpp -shift-base:net_processing.cpp shift-base:streams.h shift-base:util/bip32.cpp |