bitcoin/src
Wladimir J. van der Laan 9c833f471c
Merge #11145: Fix rounding bug in calculation of minimum change
6af49dd Output a bit more information for fee calculation report. (Alex Morcos)
a54c7b9 Fix rounding errors in calculation of minimum change size (Alex Morcos)

Pull request description:

  Thanks to @juscamarena for reporting this.

  Please backport to 0.15.

  There was a potential rounding error where the fee for the change added to the fee for the original tx could be less than the fee for the tx including change.

  This is fixed in the first commit.  The second commit adds one more snippet of information in the fee calculation report.  I actually realized that there is more information that would be nice to report, but we can add that post 0.15.

  An open question is whether we should be returning failure if the test in line 2885 is hit or just resetting pick_new_inputs and continuing.  Originally I made it a failure to avoid any possible infinite loops.  But the case hit here is an example of where that logic possibly backfired.

Tree-SHA512: efe049781acc1f6a8ad429a689359ac6f7b7c44cdfc9578a866dff4a2f6596e8de474a89d25c704f31ef4f8c89af770e98b75ef06c25419d5a6dfc87247bf274
2017-08-28 10:06:00 +02:00
..
bench Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
compat Simplify bswap_16 implementation 2017-08-25 19:23:02 +03:00
config
consensus scripted-diff: Use the C++11 keyword nullptr to denote the pointer literal instead of the macro NULL 2017-08-07 07:36:37 +02:00
crypto Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
leveldb Update LevelDB with latest Bitcoin-specific patches 2017-08-01 12:40:42 -07:00
obj
obj-test
policy Remove redundant explicitly defined copy ctors 2017-08-28 01:29:48 +03:00
primitives Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
qt Make tabs toolbar no longer have a context menu 2017-08-27 01:08:19 -04:00
rpc rpc: Write authcookie atomically 2017-08-25 15:37:24 +02:00
script Comments: More comments on functions/globals in standard.h. 2017-08-18 14:45:08 -07:00
secp256k1 Fixed multiple typos 2017-06-22 19:18:10 +03:00
support Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
test Improve versionbits_computeblockversion test code consistency 2017-08-28 00:03:18 +03:00
univalue Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
wallet Merge #11145: Fix rounding bug in calculation of minimum change 2017-08-28 10:06:00 +02:00
zmq Merge #10809: optim: mark a few classes final 2017-08-21 18:25:48 +02:00
.clang-format Merge #10193: scripted-diff: Remove #include <boost/foreach.hpp> 2017-07-04 18:05:18 +02:00
addrdb.cpp Deduplicate addrdb.cpp and use CHashWriter/Verifier 2017-06-01 16:42:07 -07:00
addrdb.h Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
addrman.cpp scripted-diff: Use the C++11 keyword nullptr to denote the pointer literal instead of the macro NULL 2017-08-07 07:36:37 +02:00
addrman.h scripted-diff: Use the C++11 keyword nullptr to denote the pointer literal instead of the macro NULL 2017-08-07 07:36:37 +02:00
amount.h Consensus: Policy: MOVEONLY: Move CFeeRate out of the consensus module 2017-05-03 18:00:13 +02:00
arith_uint256.cpp Fix instantiation and array accesses in class base_uint<BITS> 2017-06-07 17:21:29 +00:00
arith_uint256.h Prefer compile-time checking over run-time checking 2017-08-17 00:42:32 +02:00
base58.cpp Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
base58.h scripted-diff: Use the C++11 keyword nullptr to denote the pointer literal instead of the macro NULL 2017-08-07 07:36:37 +02:00
bitcoin-cli-res.rc
bitcoin-cli.cpp Add option -stdinrpcpass to allow RPC password to be read from standard input 2017-08-23 12:48:00 -06:00
bitcoin-tx-res.rc
bitcoin-tx.cpp scripted-diff: stop using the gArgs wrappers 2017-08-14 17:02:10 +02:00
bitcoind-res.rc
bitcoind.cpp scripted-diff: stop using the gArgs wrappers 2017-08-14 17:02:10 +02:00
blockencodings.cpp Fix typos 2017-07-15 14:28:40 +02:00
blockencodings.h Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
bloom.cpp scripted-diff: Remove #include <boost/foreach.hpp> 2017-06-22 03:48:52 +02:00
bloom.h param variables made const 2017-02-13 14:39:48 +09:00
chain.cpp scripted-diff: Use the C++11 keyword nullptr to denote the pointer literal instead of the macro NULL 2017-08-07 07:36:37 +02:00
chain.h Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
chainparams.cpp Update chain transaction statistics 2017-08-03 16:39:58 -07:00
chainparams.h chainparams: make supported service bits option explicit 2017-06-22 15:21:22 -04:00
chainparamsbase.cpp scripted-diff: stop using the gArgs wrappers 2017-08-14 17:02:10 +02:00
chainparamsbase.h Chainparams: Use a regular factory for creating chainparams 2017-05-03 18:15:47 +02:00
chainparamsseeds.h p2p: Hardcoded seeds update pre-0.15 branch 2017-07-30 14:04:51 +02:00
checkpoints.cpp scripted-diff: Use the C++11 keyword nullptr to denote the pointer literal instead of the macro NULL 2017-08-07 07:36:37 +02:00
checkpoints.h [MOVEONLY] Move progress estimation out of checkpoints 2017-01-04 13:18:49 -08:00
checkqueue.h Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
clientversion.cpp Increment MIT Licence copyright header year on files modified in 2016 2016-12-31 11:01:21 -07:00
clientversion.h Fix build warning from #error text 2017-04-07 14:37:25 -04:00
coins.cpp Use nullptr instead of zero (0) as the null pointer constant 2017-08-16 10:24:18 +02:00
coins.h Merge #10558: Address nits from per-utxo change 2017-06-28 11:44:22 -07:00
compat.h Move CloseSocket out of SetSocketNonBlocking and pass SOCKET by const reference in SetSocket* functions 2017-07-22 09:11:55 +02:00
compressor.cpp Fix subscript[0] in compressor.cpp 2017-07-08 13:33:01 -07:00
compressor.h Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
core_io.h Pass serialization flags and whether to include hex to TxToUniv 2017-08-17 10:42:51 -07:00
core_memusage.h Avoid dereference-of-casted-pointer 2017-07-07 10:45:31 -07:00
core_read.cpp Fix signed/unsigned comparison warning introduced in c8e29d7ff0. 2017-07-12 14:03:42 -04:00
core_write.cpp Merge #11027: [RPC] Only return hex field once in getrawtransaction 2017-08-21 08:58:08 +02:00
cuckoocache.h Fix header guards using reserved identifiers 2017-08-26 02:56:53 +03:00
dbwrapper.cpp Merge #9964: Add const to methods that do not modify the object for which it is called 2017-08-16 02:09:49 +02:00
dbwrapper.h Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
fs.cpp Remove unused Boost includes 2017-06-09 10:25:26 +02:00
fs.h [Trivial] Add BITCOIN_FS_H endif footer in fs.h 2017-05-19 02:01:28 -07:00
hash.cpp Cleanup (safe, it was checked) subscript[0] in MurmurHash3 (and cleanup MurmurHash3 to be more clear). 2017-07-08 13:33:01 -07:00
hash.h Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
httprpc.cpp Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
httprpc.h Remove unnecessary forward class declarations in header files 2017-06-12 20:37:43 +02:00
httpserver.cpp Merge #10809: optim: mark a few classes final 2017-08-21 18:25:48 +02:00
httpserver.h Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
indirectmap.h prepend license statement to indirectmap 2016-07-27 16:27:07 -07:00
init.cpp Merge #10976: [MOVEONLY] Move some static functions out of wallet.h/cpp 2017-08-25 21:30:42 +02:00
init.h init: Factor out AppInitLockDataDirectory 2017-07-17 14:56:52 +02:00
key.cpp scripted-diff: Use the C++11 keyword nullptr to denote the pointer literal instead of the macro NULL 2017-08-07 07:36:37 +02:00
key.h Add length check for CExtKey deserialization 2017-08-17 21:54:23 +02:00
keystore.cpp Remove unused Boost includes 2017-06-09 10:25:26 +02:00
keystore.h Use the override specifier (C++11) where we expect to be overriding the virtual function of a base class 2017-06-28 02:12:06 +02:00
limitedmap.h Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
Makefile.am Move some static functions out of wallet.h/cpp 2017-08-14 11:19:38 -04:00
Makefile.bench.include leveldb: enable runtime-detected crc32 instructions 2017-06-09 19:25:36 -07:00
Makefile.leveldb.include build: verify that the assembler can handle crc32 functions 2017-07-13 12:49:05 -04:00
Makefile.qt.include leveldb: enable runtime-detected crc32 instructions 2017-06-09 19:25:36 -07:00
Makefile.qttest.include leveldb: enable runtime-detected crc32 instructions 2017-06-09 19:25:36 -07:00
Makefile.test.include Fix test_bitcoin circular dependency issue 2017-07-17 17:42:21 +02:00
memusage.h scripted-diff: Remove #include <boost/foreach.hpp> 2017-06-22 03:48:52 +02:00
merkleblock.cpp Merge #9980: Fix mem access violation merkleblock 2017-07-17 15:12:39 -07:00
merkleblock.h Add const to methods that do not modify the object for which it is called 2017-07-25 13:46:52 +02:00
miner.cpp Merge #9964: Add const to methods that do not modify the object for which it is called 2017-08-16 02:09:49 +02:00
miner.h Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
net.cpp Use nullptr instead of zero (0) as the null pointer constant 2017-08-16 10:24:18 +02:00
net.h scripted-diff: Use the C++11 keyword nullptr to denote the pointer literal instead of the macro NULL 2017-08-07 07:36:37 +02:00
net_processing.cpp Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
net_processing.h Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
netaddress.cpp scripted-diff: Use the C++11 keyword nullptr to denote the pointer literal instead of the macro NULL 2017-08-07 07:36:37 +02:00
netaddress.h Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
netbase.cpp scripted-diff: Use the C++11 keyword nullptr to denote the pointer literal instead of the macro NULL 2017-08-07 07:36:37 +02:00
netbase.h Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
netmessagemaker.h Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
noui.cpp Increment MIT Licence copyright header year on files modified in 2016 2016-12-31 11:01:21 -07:00
noui.h
pow.cpp scripted-diff: Use the C++11 keyword nullptr to denote the pointer literal instead of the macro NULL 2017-08-07 07:36:37 +02:00
pow.h Increment MIT Licence copyright header year on files modified in 2016 2016-12-31 11:01:21 -07:00
prevector.h Fix header guards using reserved identifiers 2017-08-26 02:56:53 +03:00
protocol.cpp Merge #9544: [trivial] Add end of namespace comments. Improve consistency. 2017-06-26 13:40:26 +02:00
protocol.h Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
pubkey.cpp scripted-diff: Use the C++11 keyword nullptr to denote the pointer literal instead of the macro NULL 2017-08-07 07:36:37 +02:00
pubkey.h Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
random.cpp Merge #10843: Add attribute [[noreturn]] (C++11) to functions that will not return 2017-08-22 09:38:49 +02:00
random.h Merge #10377: Use rdrand as entropy source on supported platforms 2017-06-14 15:22:15 +02:00
rest.cpp Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
reverse_iterator.h Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
reverselock.h Increment MIT Licence copyright header year on files modified in 2016 2016-12-31 11:01:21 -07:00
scheduler.cpp Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
scheduler.h Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
serialize.h Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
streams.h Trivial: Documentation fixes for CVectorWriter ctors 2017-08-26 13:20:36 +03:00
sync.cpp Use nullptr instead of zero (0) as the null pointer constant 2017-08-16 10:24:18 +02:00
sync.h Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
threadinterrupt.cpp net: add CThreadInterrupt and InterruptibleSleep 2017-01-03 17:53:09 -05:00
threadinterrupt.h net: add CThreadInterrupt and InterruptibleSleep 2017-01-03 17:53:09 -05:00
threadsafety.h
timedata.cpp scripted-diff: stop using the gArgs wrappers 2017-08-14 17:02:10 +02:00
timedata.h Merge #8808: Do not shadow variables (gcc set) 2017-03-03 15:48:53 +01:00
tinyformat.h Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
torcontrol.cpp Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
torcontrol.h
txdb.cpp Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
txdb.h Merge #10809: optim: mark a few classes final 2017-08-21 18:25:48 +02:00
txmempool.cpp Remove redundant explicitly defined copy ctors 2017-08-28 01:29:48 +03:00
txmempool.h Remove redundant explicitly defined copy ctors 2017-08-28 01:29:48 +03:00
ui_interface.cpp [wallet] Add high transaction fee warnings 2016-09-26 01:11:27 +02:00
ui_interface.h [Qt] allow to execute a callback during splashscreen progress 2017-06-29 17:48:08 +02:00
uint256.cpp uint256: replace sprintf with HexStr and reverse-iterator 2017-02-27 10:02:45 +01:00
uint256.h Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
undo.h Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
util.cpp Merge #10901: Fix constness of ArgsManager methods 2017-08-16 16:09:27 +02:00
util.h Merge #10901: Fix constness of ArgsManager methods 2017-08-16 16:09:27 +02:00
utilmoneystr.cpp Refactor: Remove using namespace <xxx> from util* 2017-03-08 08:47:02 -08:00
utilmoneystr.h doc: Add comment to use ValueFromAmount/AmountFromValue for JSON, not utilmoneystr 2017-08-07 17:10:42 +02:00
utilstrencodings.cpp scripted-diff: Use the C++11 keyword nullptr to denote the pointer literal instead of the macro NULL 2017-08-07 07:36:37 +02:00
utilstrencodings.h scripted-diff: Use the C++11 keyword nullptr to denote the pointer literal instead of the macro NULL 2017-08-07 07:36:37 +02:00
utiltime.cpp scripted-diff: Use the C++11 keyword nullptr to denote the pointer literal instead of the macro NULL 2017-08-07 07:36:37 +02:00
utiltime.h [logging] log system time and mock time 2017-05-10 15:49:00 -04:00
validation.cpp Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
validation.h Use nullptr instead of zero (0) as the null pointer constant 2017-08-16 10:24:18 +02:00
validationinterface.cpp Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
validationinterface.h Remove declaration of unused function: void UpdatedTransaction(const uint256 &) 2017-07-15 20:04:04 +02:00
version.h Remove unused constant MEMPOOL_GD_VERSION 2017-06-09 01:45:36 +02:00
versionbits.cpp Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
versionbits.h scripted-diff: Use the C++11 keyword nullptr to denote the pointer literal instead of the macro NULL 2017-08-07 07:36:37 +02:00
warnings.cpp scripted-diff: stop using the gArgs wrappers 2017-08-14 17:02:10 +02:00
warnings.h remove some unused functions 2017-07-22 09:55:57 +02:00