bitcoin/src
Wladimir J. van der Laan 5eaaa83ac1 Kill insecure_random and associated global state
There are only a few uses of `insecure_random` outside the tests.
This PR replaces uses of insecure_random (and its accompanying global
state) in the core code with an FastRandomContext that is automatically
seeded on creation.

This is meant to be used for inner loops. The FastRandomContext
can be in the outer scope, or the class itself, then rand32() is used
inside the loop. Useful e.g. for pushing addresses in CNode or the fee
rounding, or randomization for coin selection.

As a context is created per purpose, thus it gets rid of
cross-thread unprotected shared usage of a single set of globals, this
should also get rid of the potential race conditions.

- I'd say TxMempool::check is not called enough to warrant using a special
  fast random context, this is switched to GetRand() (open for
  discussion...)

- The use of `insecure_rand` in ConnectThroughProxy has been replaced by
  an atomic integer counter. The only goal here is to have a different
  credentials pair for each connection to go on a different Tor circuit,
  it does not need to be random nor unpredictable.

- To avoid having a FastRandomContext on every CNode, the context is
  passed into PushAddress as appropriate.

There remains an insecure_random for test usage in `test_random.h`.
2016-10-17 13:08:35 +02:00
..
bench Merge #8115: Avoid integer division in the benchmark inner-most loop. 2016-05-31 15:10:03 +02:00
compat Bump copyright headers to 2015 2015-12-13 18:08:39 +01:00
config
consensus Merge #8607: [doc] Fix doxygen off-by-one comments, fix typos 2016-08-28 16:06:03 +02:00
crypto crypto: add AES 128/256 CBC classes 2016-05-13 10:23:03 +02:00
leveldb Update LevelDB 2015-11-04 23:46:47 +01:00
obj
obj-test
policy Kill insecure_random and associated global state 2016-10-17 13:08:35 +02:00
primitives Adding method GetTotalSize() to CTransaction 2016-09-06 22:30:30 +02:00
qt Merge #8821: [qt] sync-overlay: Don't block during reindex 2016-10-10 16:52:44 +02:00
rpc Merge #8884: Bugfix: Trivial: RPC: getblockchaininfo help: pruneheight is the lowest, not highest, block 2016-10-05 14:44:07 +02:00
script Add NULLDUMMY verify flag in bitcoinconsensus.h 2016-09-30 23:09:19 +08:00
secp256k1 Merge commit 'b2135359b3ad37cf2ac09b008079ddb237eff2c9' 2016-08-16 11:34:43 +02:00
support Do not shadow variables 2016-09-27 09:25:15 +02:00
test Kill insecure_random and associated global state 2016-10-17 13:08:35 +02:00
univalue Merge commit '2ca7faab4205822b06dc2ab2bbda0a9a70fce7e0' into HEAD 2016-09-30 19:58:11 +02:00
wallet Kill insecure_random and associated global state 2016-10-17 13:08:35 +02:00
zmq Merge #8607: [doc] Fix doxygen off-by-one comments, fix typos 2016-08-28 16:06:03 +02:00
.clang-format [trivial] clang-format: Set AlignAfterOpenBracket: false 2015-11-05 23:28:02 +01:00
addrdb.cpp net: move CBanDB and CAddrDB out of net.h/cpp 2016-09-08 12:03:22 -04:00
addrdb.h [WIP] Remove unused statement in serialization 2016-09-09 13:59:34 +02:00
addrman.cpp Kill insecure_random and associated global state 2016-10-17 13:08:35 +02:00
addrman.h Kill insecure_random and associated global state 2016-10-17 13:08:35 +02:00
amount.cpp [amount] Add support for negative fee rates 2016-04-08 19:59:53 +02:00
amount.h [amount] Add support for negative fee rates 2016-04-08 19:59:53 +02:00
arith_uint256.cpp
arith_uint256.h Bump copyright headers to 2015 2015-12-13 18:08:39 +01:00
base58.cpp CBase58Data::SetString: cleanse the full vector 2016-04-21 18:28:57 -07:00
base58.h add bip32 pubkey serialization 2016-04-14 20:56:33 +02:00
bitcoin-cli-res.rc Unify package name to as few places as possible without major changes 2015-12-14 02:11:10 +00:00
bitcoin-cli.cpp Globals: Decouple GetConfigFile and ReadConfigFile from global mapArgs 2016-10-01 08:12:19 +02:00
bitcoin-tx-res.rc Update Windows resource files (and add one for bitcoin-tx) 2015-05-22 02:56:55 +00:00
bitcoin-tx.cpp C++11: s/boost::scoped_ptr/std::unique_ptr/ 2016-09-01 19:05:07 +02:00
bitcoind-res.rc Update Windows resource files (and add one for bitcoin-tx) 2015-05-22 02:56:55 +00:00
bitcoind.cpp Globals: Decouple GetConfigFile and ReadConfigFile from global mapArgs 2016-10-01 08:12:19 +02:00
blockencodings.cpp Use cmpctblock type 2 for segwit-enabled transfer 2016-10-04 19:10:41 +02:00
blockencodings.h Use cmpctblock type 2 for segwit-enabled transfer 2016-10-04 19:10:41 +02:00
bloom.cpp Do not shadow variables 2016-09-27 09:25:15 +02:00
bloom.h More efficient bitsliced rolling Bloom filter 2016-04-28 14:56:32 +02:00
chain.cpp chain: Add assertion in case of missing records in index db 2016-04-27 11:11:36 +02:00
chain.h [doc] Fix typos in comments, doxygen: Fix comment syntax 2016-08-22 10:51:41 +02:00
chainparams.cpp Set jonasschnellis dns-seeder filter flag 2016-08-24 09:06:56 +02:00
chainparams.h Allow changing BIP9 parameters on regtest 2016-07-29 09:41:58 -04:00
chainparamsbase.cpp Bump copyright headers to 2015 2015-12-13 18:08:39 +01:00
chainparamsbase.h Bump copyright headers to 2015 2015-12-13 18:08:39 +01:00
chainparamsseeds.h net: Hardcoded seeds update January 2016 2016-01-25 16:14:14 +01:00
checkpoints.cpp Bump copyright headers to 2015 2015-12-13 18:08:39 +01:00
checkpoints.h Bump copyright headers to 2015 2015-12-13 18:08:39 +01:00
checkqueue.h Bump copyright headers to 2015 2015-12-13 18:08:39 +01:00
clientversion.cpp build: Get rid of CLIENT_DATE 2016-06-09 13:34:09 +02:00
clientversion.h build: bump version to 0.13.99 2016-07-18 12:22:18 +02:00
coincontrol.h Add more clear interface for CoinControl.h regarding individual feerate 2016-05-06 11:01:50 +02:00
coins.cpp Fix relaypriority calculation error 2016-09-20 11:45:30 +08:00
coins.h Use C++11 thread-safe static initializers 2016-06-07 16:29:03 +02:00
compat.h don't run ThreadMessageHandler at lowered priority 2016-05-05 13:25:35 -07:00
compressor.cpp
compressor.h Fix OOM bug: UTXO entries with invalid script length 2016-04-25 14:42:07 +02:00
core_io.h BIP144: Serialization, hashes, relay (sender side) 2016-06-22 15:42:59 +02:00
core_memusage.h Rename CTxinWitness -> CTxInWitness 2016-07-06 19:46:46 -04:00
core_read.cpp BIP144: Serialization, hashes, relay (sender side) 2016-06-22 15:42:59 +02:00
core_write.cpp Fix formatting of NOPs for generated script tests 2016-04-05 14:54:37 +02:00
dbwrapper.cpp C++11: s/boost::scoped_ptr/std::unique_ptr/ 2016-09-01 19:05:07 +02:00
dbwrapper.h Do not shadow members in dbwrapper 2016-08-05 21:17:50 +02:00
hash.cpp Support SipHash with arbitrary byte writes 2016-06-07 16:20:40 +02:00
hash.h Squashed 'src/secp256k1/' changes from 6c527ec..7a49cac 2016-08-16 11:34:11 +02:00
httprpc.cpp Do not shadow member variables 2016-07-31 20:55:09 +02:00
httprpc.h evhttpd implementation 2015-09-03 10:59:18 +02:00
httpserver.cpp Merge #8109: Do not shadow member variables 2016-08-26 18:13:22 +02:00
httpserver.h Fix a type error that would not compile on Apple LLVM version 6.1.0 (clang-602.0.53) (based on LLVM 3.6.0svn) 2016-08-14 20:45:46 -04:00
indirectmap.h prepend license statement to indirectmap 2016-07-27 16:27:07 -07:00
init.cpp Globals: Decouple GetConfigFile and ReadConfigFile from global mapArgs 2016-10-01 08:12:19 +02:00
init.h [Wallet] refactor wallet/init interaction 2016-03-22 08:20:59 +01:00
key.cpp Do not shadow variables 2016-09-27 09:25:15 +02:00
key.h Merge #8321: [trivial] Switched constants to sizeof() 2016-07-28 13:54:08 +02:00
keystore.cpp Fix for incorrect locking in GetPubKey() (keystore.cpp) 2016-04-20 16:04:28 +03:00
keystore.h Bump copyright headers to 2015 2015-12-13 18:08:39 +01:00
limitedmap.h use std::map::erase(const_iterator, const_iterator) to get non-constant iterator 2016-08-09 03:11:28 +03:00
main.cpp Kill insecure_random and associated global state 2016-10-17 13:08:35 +02:00
main.h net: Pass CConnman around as needed 2016-09-08 12:04:35 -04:00
Makefile.am Add MIT license to Makefiles 2016-09-21 22:35:12 +00:00
Makefile.bench.include Add MIT license to Makefiles 2016-09-21 22:35:12 +00:00
Makefile.leveldb.include Merge #8826: Do not include env_win.cc on non-Windows systems 2016-09-29 17:27:28 +02:00
Makefile.qt.include qt: Translate all files, even if wallet disabled 2016-10-11 17:46:46 +02:00
Makefile.qttest.include Add MIT license to Makefiles 2016-09-21 22:35:12 +00:00
Makefile.test.include Add MIT license to Makefiles 2016-09-21 22:35:12 +00:00
memusage.h Add support for unique_ptr and shared_ptr to memusage 2016-06-05 00:31:35 +02:00
merkleblock.cpp BIP141: Other consensus critical limits, and BIP145 2016-06-22 15:43:00 +02:00
merkleblock.h Add importprunedfunds rpc call 2016-03-23 10:40:38 -04:00
miner.cpp Merge #8362: Scale legacy sigop count in CreateNewBlock 2016-07-25 18:08:09 +02:00
miner.h Rename "block cost" to "block weight" 2016-07-18 13:28:26 -04:00
net.cpp Kill insecure_random and associated global state 2016-10-17 13:08:35 +02:00
net.h Kill insecure_random and associated global state 2016-10-17 13:08:35 +02:00
netaddress.cpp Do not shadow variables in networking code 2016-08-15 14:10:07 +02:00
netaddress.h net: move CNetAddr/CService/CSubNet out of netbase 2016-07-31 14:01:44 -04:00
netbase.cpp Kill insecure_random and associated global state 2016-10-17 13:08:35 +02:00
netbase.h Do not shadow variables in networking code 2016-08-15 14:10:07 +02:00
noui.cpp Do not ask a UI question from bitcoind 2016-06-24 16:45:12 +02:00
noui.h Bump copyright headers to 2014 2016-01-05 21:01:39 +01:00
pow.cpp Deprecating the remaining LogPrintf dependencies that were made obsolete in PR #7459. 2016-04-27 22:36:45 -04:00
pow.h Merge #7311: MOVEONLY: Move non-consensus functions out of pow 2016-02-02 14:16:16 +01:00
prevector.h serialize: Deprecate begin_ptr / end_ptr 2016-10-02 09:50:25 +02:00
protocol.cpp net: Consistent checksum handling 2016-09-28 12:44:13 +02:00
protocol.h net: Hardcode protocol sizes and use fixed-size types 2016-09-28 15:33:45 +02:00
pubkey.cpp Do not shadow variables 2016-09-27 09:25:15 +02:00
pubkey.h Do not shadow variables 2016-09-27 09:25:15 +02:00
random.cpp Kill insecure_random and associated global state 2016-10-17 13:08:35 +02:00
random.h Kill insecure_random and associated global state 2016-10-17 13:08:35 +02:00
rest.cpp rest.cpp: change HTTP_INTERNAL_SERVER_ERROR to HTTP_BAD_REQUEST 2016-09-01 22:12:19 +12:00
reverselock.h Do not shadow variables 2016-09-27 09:25:15 +02:00
scheduler.cpp Notify other serviceQueue thread we are finished to prevent deadlocks. 2016-05-06 20:44:40 +02:00
scheduler.h More robust CScheduler unit test 2015-05-16 17:59:23 -04:00
serialize.h serialize: Deprecate begin_ptr / end_ptr 2016-10-02 09:50:25 +02:00
streams.h BIP144: Serialization, hashes, relay (sender side) 2016-06-22 15:42:59 +02:00
sync.cpp Clean up lockorder data of destroyed mutexes 2016-04-10 14:27:10 +02:00
sync.h Do not shadow LOCK's criticalblock variable for LOCK inside LOCK 2016-08-06 10:54:29 +02:00
threadsafety.h Bump copyright headers to 2014 2016-01-05 21:01:39 +01:00
timedata.cpp net: narrow include scope after moving to netaddress 2016-07-31 14:01:44 -04:00
timedata.h P2P: add maxtimeadjustment command line option 2016-03-29 14:40:00 +00:00
tinyformat.h util: Update tinyformat 2016-06-27 18:17:27 +02:00
torcontrol.cpp Do not shadow variables 2016-09-27 09:25:15 +02:00
torcontrol.h torcontrol improvements and fixes 2015-11-12 17:58:15 +01:00
txdb.cpp C++11: s/boost::scoped_ptr/std::unique_ptr/ 2016-09-01 19:05:07 +02:00
txdb.h C++11: s/boost::scoped_ptr/std::unique_ptr/ 2016-09-01 19:05:07 +02:00
txmempool.cpp Kill insecure_random and associated global state 2016-10-17 13:08:35 +02:00
txmempool.h Kill insecure_random and associated global state 2016-10-17 13:08:35 +02:00
ui_interface.cpp [wallet] Add high transaction fee warnings 2016-09-26 01:11:27 +02:00
ui_interface.h [wallet] Add high transaction fee warnings 2016-09-26 01:11:27 +02:00
uint256.cpp Use SipHash-2-4 for CCoinsCache index 2016-05-17 20:04:46 +02:00
uint256.h Use SipHash-2-4 for CCoinsCache index 2016-05-17 20:04:46 +02:00
undo.h Bump copyright headers to 2014 2016-01-05 21:01:39 +01:00
util.cpp Globals: Decouple GetConfigFile and ReadConfigFile from global mapArgs 2016-10-01 08:12:19 +02:00
util.h Globals: Decouple GetConfigFile and ReadConfigFile from global mapArgs 2016-10-01 08:12:19 +02:00
utilmoneystr.cpp Bump copyright headers to 2015 2015-12-13 18:08:39 +01:00
utilmoneystr.h Bump copyright headers to 2015 2015-12-13 18:08:39 +01:00
utilstrencodings.cpp util: Add ParseUInt32 and ParseUInt64 2016-06-08 10:28:51 +02:00
utilstrencodings.h util: Add ParseUInt32 and ParseUInt64 2016-06-08 10:28:51 +02:00
utiltime.cpp [doc] Fix doxygen comments for members 2016-04-03 11:58:01 +02:00
utiltime.h Bump copyright headers to 2015 2015-12-13 18:08:39 +01:00
validationinterface.cpp net: Pass CConnection to wallet rather than using the global 2016-09-08 12:04:35 -04:00
validationinterface.h net: Pass CConnection to wallet rather than using the global 2016-09-08 12:04:35 -04:00
version.h Add protocol messages for short-ids blocks 2016-06-19 01:34:57 -07:00
versionbits.cpp BIP141: Commitment structure and deployment 2016-06-22 15:42:59 +02:00
versionbits.h getblocktemplate: Explicitly handle the distinction between GBT-affecting softforks vs not 2016-06-06 17:10:23 +00:00