bitcoin/src
Alex Morcos 553cad94e2 Rewrite CreateNewBlock
Use the score index on the mempool to only add sorted txs in order.  Remove much of the validation while building the block, relying on mempool to be consistent and only contain txs that can be mined.
The mempool is assumed to be consistent as far as not containing txs which spend non-existent outputs or double spends, and scripts are valid.  Finality of txs is still checked (except not coinbase maturity, assumed in mempool).
Still TestBlockValidity in case mempool consistency breaks and return error state if an invalid block was created.
Unit tests are modified to realize that invalid blocks can now be constructed if the mempool breaks its consistency assumptions and also updated to have the right fees, since the cached value is now used for block construction.

Conflicts:
	src/miner.cpp
2015-12-01 12:09:37 -05:00
..
bench [Trivial] ensure minimal header conventions 2015-10-27 17:44:13 +01:00
compat Add an alternate location of endian.h header 2015-06-07 04:54:20 +03:00
config build: move bitcoin-config.h to its own directory 2014-06-21 19:47:43 +02:00
consensus Switch blocks to a constant-space Merkle root/branch algorithm. 2015-11-27 15:36:52 +01:00
crypto build: Endian compatibility 2015-03-06 15:54:53 +01:00
leveldb Update LevelDB 2015-11-04 23:46:47 +01:00
obj
obj-test
policy Change default block priority size to 0 2015-11-30 16:16:24 -05:00
primitives Merge pull request #6914 2015-12-01 10:22:14 +01:00
qt qt: periodic translations update 2015-12-01 13:26:50 +01:00
script Merge pull request #6914 2015-12-01 10:22:14 +01:00
secp256k1 Merge commit '5ad54630935d1f340666de7bc9ffef9b8a1df296' into HEAD 2015-11-24 09:22:18 +01:00
support Remove assertion from ~LockedPageManager 2015-05-15 11:44:58 +02:00
test Rewrite CreateNewBlock 2015-12-01 12:09:37 -05:00
univalue Merge commit '313e7f5c89d6e72e06efe9255089765b4c5815fe' into HEAD 2015-10-09 11:37:00 +02:00
wallet Merge pull request #7136 2015-12-01 10:23:05 +01:00
zmq zmq: prepend zmq to debug messages 2015-11-19 13:32:14 +11:00
.clang-format [trivial] clang-format: Set AlignAfterOpenBracket: false 2015-11-05 23:28:02 +01:00
addrman.cpp Creates unittests for addrman, makes addrman testable. 2015-09-24 15:20:48 -04:00
addrman.h Creates unittests for addrman, makes addrman testable. 2015-09-24 15:20:48 -04:00
alert.cpp TRIVIAL: Missing includes 2015-07-23 21:10:22 +02:00
alert.h use const references where appropriate 2015-06-04 19:34:18 +02:00
amount.cpp Rationalize currency unit to "BTC" 2015-08-03 22:58:30 +01:00
amount.h Add CFeeRate += operator 2015-10-13 01:04:39 -07:00
arith_uint256.cpp src/arith_256.cpp: bigendian compatibility 2015-03-06 17:21:59 +01:00
arith_uint256.h ensure consistent header comment naming conventions 2015-04-20 13:29:22 +02:00
base58.cpp openssl: abstract out OPENSSL_cleanse 2015-02-15 11:34:02 -05:00
base58.h don't try to decode invalid encoded ext keys 2015-07-25 09:51:52 +02:00
bitcoin-cli-res.rc Update Windows resource files (and add one for bitcoin-tx) 2015-05-22 02:56:55 +00:00
bitcoin-cli.cpp Constrain constant values to a single location in code 2015-11-28 18:47:29 +01: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 Switch to libsecp256k1-based validation for ECDSA 2015-11-15 16:06:57 +01:00
bitcoind-res.rc Update Windows resource files (and add one for bitcoin-tx) 2015-05-22 02:56:55 +00:00
bitcoind.cpp Initialize logging before we do parameter interaction 2015-11-27 13:26:28 +01:00
bloom.cpp Only use randomly created nonces in CRollingBloomFilter. 2015-07-27 19:09:39 +02:00
bloom.h Only use randomly created nonces in CRollingBloomFilter. 2015-07-27 19:09:39 +02:00
chain.cpp Allow block announcements with headers 2015-11-29 11:59:23 +01:00
chain.h Non-grammatical language improvements 2015-05-02 15:23:59 +00:00
chainparams.cpp Switch blocks to a constant-space Merkle root/branch algorithm. 2015-11-27 15:36:52 +01:00
chainparams.h Trivial: Fix warning introduced by #7053 by casting to uint64_t 2015-11-29 21:19:37 +01:00
chainparamsbase.cpp Chainparams: Translations: DRY: options and error strings 2015-10-20 14:28:43 +02:00
chainparamsbase.h Chainparams: Translations: DRY: options and error strings 2015-10-20 14:28:43 +02:00
chainparamsseeds.h Hardcoded seeds update June 2015 2015-06-25 08:05:52 +02:00
checkpoints.cpp TRIVIAL: Missing includes 2015-07-23 21:10:22 +02:00
checkpoints.h chainparams: move CCheckpointData into chainparams.h 2015-07-28 15:26:50 -04:00
checkqueue.h Bugfix: Grammar fixes 2015-05-01 11:21:27 +00:00
clientversion.cpp Added "Core" to copyright headers 2014-12-19 19:55:32 +01:00
clientversion.h bump version in clientversion.h 2015-06-02 17:11:05 +02:00
coincontrol.h Move fPayAtLeastCustomFee function to CC 2015-11-30 14:09:04 +01:00
coins.cpp Change GetPriority calculation. 2015-11-19 21:44:35 -05:00
coins.h Merge pull request #6942 2015-11-28 14:17:50 +01:00
compat.h Set TCP_NODELAY on P2P sockets. 2015-10-22 17:57:48 +00:00
compressor.cpp Added "Core" to copyright headers 2014-12-19 19:55:32 +01:00
compressor.h Added "Core" to copyright headers 2014-12-19 19:55:32 +01:00
core_io.h Resolve issue 3166. 2015-07-30 19:56:00 -04:00
core_memusage.h Prevector type 2015-11-13 18:15:20 +01:00
core_read.cpp [Univalue] add univalue over subtree 2015-10-01 10:49:57 +02:00
core_write.cpp [Univalue] add univalue over subtree 2015-10-01 10:49:57 +02:00
dbwrapper.cpp leveldbwrapper file rename to dbwrapper.* 2015-10-22 21:33:06 -04:00
dbwrapper.h constify missing catch cases 2015-10-27 17:39:42 +01:00
hash.cpp chaincodes: abstract away more chaincode behavior 2015-05-06 17:22:46 +02:00
hash.h Prevector type 2015-11-13 18:15:20 +01:00
httprpc.cpp Added additional config option for multiple RPC users. 2015-11-29 08:34:20 -05:00
httprpc.h evhttpd implementation 2015-09-03 10:59:18 +02:00
httpserver.cpp http: add Boost 1.49 compatibility 2015-11-20 10:14:21 +01:00
httpserver.h http: speed up shutdown 2015-11-13 11:10:48 +01:00
init.cpp Merge pull request #7136 2015-12-01 10:23:05 +01:00
init.h Initialize logging before we do parameter interaction 2015-11-27 13:26:28 +01:00
key.cpp Update key.cpp to new secp256k1 API 2015-11-13 00:12:53 +01:00
key.h Merge pull request #6034 2015-05-06 18:37:49 +02:00
keystore.cpp Add logic to track pubkeys as watch-only, not just scripts 2015-07-20 16:01:37 -07:00
keystore.h Add logic to track pubkeys as watch-only, not just scripts 2015-07-20 16:01:37 -07:00
limitedmap.h Disallow unlimited limited maps 2015-08-17 12:15:32 -04:00
main.cpp Expose FormatStateMessage 2015-12-01 10:10:25 -05:00
main.h Expose FormatStateMessage 2015-12-01 10:10:25 -05:00
Makefile.am Merge pull request #6914 2015-12-01 10:22:14 +01:00
Makefile.bench.include build: Split hardening/fPIE options out 2015-11-09 22:50:31 -05:00
Makefile.qt.include build: Use fPIC rather than fPIE for qt objects. 2015-11-09 22:50:31 -05:00
Makefile.qttest.include build: Use fPIC rather than fPIE for qt objects. 2015-11-09 22:50:31 -05:00
Makefile.test.include Merge pull request #6914 2015-12-01 10:22:14 +01:00
memusage.h Prevector type 2015-11-13 18:15:20 +01:00
merkleblock.cpp typofixes (found by misspell_fixer) 2015-08-10 22:06:27 +01:00
merkleblock.h Bugfix: Grammar fixes 2015-05-01 11:21:27 +00:00
miner.cpp Rewrite CreateNewBlock 2015-12-01 12:09:37 -05:00
miner.h Constrain constant values to a single location in code 2015-11-28 18:47:29 +01:00
mruset.h Revert "Cache transaction validation successes" 2015-07-28 20:15:00 +02:00
net.cpp Merge pull request #7079 2015-12-01 09:02:33 +01:00
net.h Merge pull request #7079 2015-12-01 09:02:33 +01:00
netbase.cpp [trivial] Reuse translation and cleanup DEFAULT_* values 2015-11-28 19:01:11 +01:00
netbase.h [trivial] Reuse translation and cleanup DEFAULT_* values 2015-11-28 19:01:11 +01:00
noui.cpp Added "Core" to copyright headers 2014-12-19 19:55:32 +01:00
noui.h Added "Core" to copyright headers 2014-12-19 19:55:32 +01:00
pow.cpp Added fPowNoRetargeting field to Consensus::Params that disables nBits recalculation. 2015-10-19 14:25:21 -04:00
pow.h Use equivalent PoW for non-main-chain requests 2015-04-22 03:53:25 -07:00
prevector.h Prevector type 2015-11-13 18:15:20 +01:00
protocol.cpp nLastTry is only used for addrman entries 2015-04-19 11:10:23 -07:00
protocol.h Add NODE_BLOOM service bit and bump protocol version 2015-09-05 23:29:13 -07:00
pubkey.cpp Switch to libsecp256k1-based validation for ECDSA 2015-11-15 16:06:57 +01:00
pubkey.h Switch to libsecp256k1-based validation for ECDSA 2015-11-15 16:06:57 +01:00
random.cpp WIN32 Seed Cleanup: Move nLastPerfmon behind win32 ifdef. 2015-02-25 18:37:06 -05:00
random.h Added "Core" to copyright headers 2014-12-19 19:55:32 +01:00
rest.cpp Globals: Explicit Consensus::Params arg for main: 2015-10-30 14:07:30 +01:00
reverselock.h Replace boost::reverse_lock with our own. 2015-09-03 15:13:40 -04:00
rpcblockchain.cpp Add a score index to the mempool. 2015-12-01 10:10:25 -05:00
rpcclient.cpp Expose RPC calls for estimatesmart functions 2015-11-16 15:42:31 -05:00
rpcclient.h [Univalue] add univalue over subtree 2015-10-01 10:49:57 +02:00
rpcmining.cpp Constrain constant values to a single location in code 2015-11-28 18:47:29 +01:00
rpcmisc.cpp Fix crash in validateaddress with -disablewallet 2015-11-09 08:44:19 +01:00
rpcnet.cpp Add relaytxes status to getpeerinfo 2015-11-20 16:07:12 -08:00
rpcprotocol.cpp evhttpd implementation 2015-09-03 10:59:18 +02:00
rpcprotocol.h [Univalue] add univalue over subtree 2015-10-01 10:49:57 +02:00
rpcrawtransaction.cpp [RPC] Add transaction size to JSON output 2015-11-28 17:06:56 +03:00
rpcserver.cpp Expose RPC calls for estimatesmart functions 2015-11-16 15:42:31 -05:00
rpcserver.h Expose RPC calls for estimatesmart functions 2015-11-16 15:42:31 -05:00
scheduler.cpp Replace boost::reverse_lock with our own. 2015-09-03 15:13:40 -04:00
scheduler.h More robust CScheduler unit test 2015-05-16 17:59:23 -04:00
serialize.h Prevector type 2015-11-13 18:15:20 +01:00
streams.h Add chainstate obfuscation to avoid spurious antivirus detection 2015-10-06 07:46:10 -07:00
sync.cpp Revert "Revert "Assert on probable deadlocks if the second lock isnt try_lock"" 2015-08-07 16:18:16 -04:00
sync.h typofixes (found by misspell_fixer) 2015-08-10 22:06:27 +01:00
threadsafety.h Added "Core" to copyright headers 2014-12-19 19:55:32 +01:00
timedata.cpp Move time data log print to 'net' category to reduce log noise 2015-11-22 06:48:25 +00:00
timedata.h Added "Core" to copyright headers 2014-12-19 19:55:32 +01:00
tinyformat.h Move *Version() functions to version.h/cpp 2014-08-26 13:25:21 +02:00
torcontrol.cpp torcontrol: only output disconnect if -debug=tor 2015-11-30 22:20:43 +11:00
torcontrol.h torcontrol improvements and fixes 2015-11-12 17:58:15 +01:00
txdb.cpp Fix chainstate serialized_size computation 2015-10-28 01:05:32 +01:00
txdb.h leveldbwrapper file rename to dbwrapper.* 2015-10-22 21:33:06 -04:00
txmempool.cpp Add a score index to the mempool. 2015-12-01 10:10:25 -05:00
txmempool.h Make accessing mempool parents and children public 2015-12-01 10:10:25 -05:00
ui_interface.h NotifyBlockTip signal: switch from hash (uint256) to CBlockIndex* 2015-11-30 08:50:59 +01:00
uint256.cpp BUGFIX: Stack around the variable 'rv' was corrupted 2015-03-12 22:17:22 +06:00
uint256.h uint256::GetCheapHash bigendian compatibility 2015-11-25 16:19:24 +08:00
undo.h MOVEONLY: CBlockUndo from main.h to undo.h 2014-12-27 16:01:31 +01:00
util.cpp [trivial] Reuse translation and cleanup DEFAULT_* values 2015-11-28 19:01:11 +01:00
util.h [qt] Move GUI related HelpMessage() part downstream 2015-11-28 19:01:26 +01:00
utilmoneystr.cpp Get rid of fPlus argument to FormatMoney 2015-06-06 09:30:41 +02:00
utilmoneystr.h Get rid of fPlus argument to FormatMoney 2015-06-06 09:30:41 +02:00
utilstrencodings.cpp SanitizeString: Allow hypen char 2015-09-23 12:06:00 +02:00
utilstrencodings.h [uacomment] Sanitize per BIP-0014 2015-09-16 15:23:29 +02:00
utiltime.cpp Assert now > 0 in GetTime GetTimeMillis GetTimeMicros 2015-11-24 18:39:19 -08:00
utiltime.h Add option for microsecond precision in debug.log 2015-10-26 15:05:37 -04:00
validationinterface.cpp Add ZeroMQ support. Notify blocks and transactions via ZeroMQ 2015-09-16 11:01:35 +01:00
validationinterface.h use CBlockIndex* insted of uint256 for UpdatedBlockTip signal 2015-09-16 16:51:21 +02:00
version.h Allow block announcements with headers 2015-11-29 11:59:23 +01:00