mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-08-29 13:59:29 +02:00
Merge bitcoin/bitcoin#29625: Several randomness improvements
ce8094246e
random: replace construct/assign with explicit Reseed() (Pieter Wuille)2ae392d561
random: use LogError for init failure (Pieter Wuille)97e16f5704
tests: make fuzz tests (mostly) deterministic with fixed seed (Pieter Wuille)2c91330dd6
random: cleanup order, comments, static (Pieter Wuille)8e31cf9c9b
net, net_processing: use existing RNG objects more (Pieter Wuille)d5fcbe966b
random: improve precision of MakeExponentiallyDistributed (Pieter Wuille)cfb0dfe2cf
random: convert GetExponentialRand into rand_exp_duration (Pieter Wuille)4eaa239dc3
random: convert GetRand{Micros,Millis} into randrange (Pieter Wuille)82de1b80d9
net: use GetRandMicros for cache expiration (Pieter Wuille)ddc184d999
random: get rid of GetRand by inlining (Pieter Wuille)e2d1f84858
random: make GetRand() support entire range (incl. max) (Pieter Wuille)810cdf6b4e
tests: overhaul deterministic test randomness (Pieter Wuille)6cfdc5b104
random: convert XoRoShiRo128PlusPlus into full RNG (Pieter Wuille)8cc2f45065
random: move XoRoShiRo128PlusPlus into random module (Pieter Wuille)8f5ac0d0b6
xoroshiro128plusplus: drop comment about nonexisting copy() (Pieter Wuille)8924f5120f
random: modernize XoRoShiRo128PlusPlus a bit (Pieter Wuille)ddb7d26cfd
random: add RandomMixin::randbits with compile-known bits (Pieter Wuille)21ce9d8658
random: Improve RandomMixin::randbits (Pieter Wuille)9b14d3d2da
random: refactor: move rand* utilities to RandomMixin (Pieter Wuille)40dd86fc3b
random: use BasicByte concept in randbytes (Pieter Wuille)27cefc7fd6
random: add a few noexcepts to FastRandomContext (Pieter Wuille)b3b382dde2
random: move rand256() and randbytes() to .h file (Pieter Wuille)493a2e024e
random: write rand256() in function of fillrand() (Pieter Wuille) Pull request description: This PR contains a number of vaguely-related improvements to the random module. The specific changes and more detailed rationale is in the commit messages, but the highlights are: * `XoRoShiRo128PlusPlus` (previously a test-only RNG) moves to random.h and becomes `InsecureRandomContext`, which is even faster than `FastRandomContext` but non-cryptographic. It also gets all helper randomness functions (`randrange`, `fillrand`, ...), making it a lot more succinct to use. * During tests, **all** randomness is made deterministic (except for `GetStrongRandBytes`) but non-repeating (like `GetRand()` used to be when `g_mock_deterministic_tests` was used), either fixed, or from a random seed (overridden by env var). * Several infrequently used top-level functions (`GetRandMillis`, `GetRandMicros`, `GetExponentialRand`) are converted into member functions of `FastRandomContext` (and `InsecureRandomContext`). * `GetRand<T>()` (without argument) can now return the maximum value of the type (previously e.g. `GetRand<uint32_t>()` would never return 0xffffffff). ACKs for top commit: achow101: ACKce8094246e
maflcko: re-ACKce8094246e
🐈 hodlinator: ACKce8094246e
dergoegge: utACKce8094246e
Tree-SHA512: 79bc0cbafaf27e95012c1ce2947a8ca6f9a3c78af5f1f16e69354b6fc9b987a28858adf4cd356dc5baf21163e9af8dcc24e70f8d7173be870e8a3ddcdd47c02c
This commit is contained in:
@@ -56,7 +56,8 @@ unsigned-integer-overflow:CBlockPolicyEstimator::processBlockTx
|
||||
unsigned-integer-overflow:TxConfirmStats::EstimateMedianVal
|
||||
unsigned-integer-overflow:prevector.h
|
||||
unsigned-integer-overflow:EvalScript
|
||||
unsigned-integer-overflow:xoroshiro128plusplus.h
|
||||
unsigned-integer-overflow:InsecureRandomContext::rand64
|
||||
unsigned-integer-overflow:InsecureRandomContext::SplitMix64
|
||||
unsigned-integer-overflow:bitset_detail::PopCount
|
||||
implicit-integer-sign-change:CBlockPolicyEstimator::processBlockTx
|
||||
implicit-integer-sign-change:SetStdinEcho
|
||||
@@ -73,4 +74,6 @@ shift-base:arith_uint256.cpp
|
||||
shift-base:crypto/
|
||||
shift-base:streams.h
|
||||
shift-base:FormatHDKeypath
|
||||
shift-base:xoroshiro128plusplus.h
|
||||
shift-base:InsecureRandomContext::rand64
|
||||
shift-base:RandomMixin<*>::randbits
|
||||
shift-base:RandomMixin<*>::randbits<*>
|
||||
|
Reference in New Issue
Block a user