elements/src
Wladimir J. van der Laan 979150bc23
Merge #12729: Get rid of ambiguous OutputType::NONE value
1e46d8a Get rid of ambiguous OutputType::NONE value (Russell Yanofsky)

Pull request description:

  Based on suggestion by @sipa https://github.com/bitcoin/bitcoin/pull/12119#issuecomment-357982763

  After #12119, the NONE output type was overloaded to refer to either an output type that couldn't be parsed, or to an automatic change output mode.  This change drops the NONE enum and uses a simple bool to indicate parse failure, and a new CHANGE_AUTO enum to refer the change output type.

  This change is almost a pure refactoring except it makes RPCs reject empty string ("") address types instead of treating them like they were unset. This simplifies the parsing code a little bit and could prevent RPC usage mistakes. It's noted in the release notes.

  Follows up #12408 by @MarcoFalke

  Followups for future PRs:

  - [ ] Add explicit support for specifying "auto" in `ParseOutputType` as suggested by promag and sipa: https://github.com/bitcoin/bitcoin/pull/12729#issuecomment-374799567 and https://github.com/bitcoin/bitcoin/pull/12729#discussion_r175969481
  - [ ] Add wallet `AddressChangeType` method to complement `TransactionChangeType`:  https://github.com/bitcoin/bitcoin/pull/12729#discussion_r175969618.

Tree-SHA512: 8b08b272bcb177a0a9e556dcd965840a7fe601ef83ca97938b879c9b1a33b5b3f96939e1bceef11ba7c644ac21bfd6c1dbc6ca715cd1da4ace50475240e4ee48
2018-05-03 11:53:30 +02:00
..
bench util: Store debug log file path in BCLog::Logger member. 2018-04-29 14:37:19 -07:00
compat Default to defining endian-conversion DECLs in compat w/o config 2018-04-16 11:47:32 -04:00
config
consensus Use P2SH consensus rules for all blocks 2018-04-13 09:52:50 -04:00
crypto Consensus: Fix bug when compiler do not support __builtin_clz* 2018-03-01 17:20:27 +08:00
index scripted-diff: Rename SetBestChain callback ChainStateFlushed 2018-04-27 14:44:22 -04:00
interfaces util: Encapsulate logCategories within BCLog::Logger. 2018-04-27 16:10:02 -07:00
leveldb Bump leveldb subtree 2018-02-16 08:59:28 -05:00
obj
obj-test
policy Extract consts for WITNESS_V0 hash sizes 2018-04-10 20:13:32 -07:00
primitives Support serialization as another type without casting 2018-03-20 17:08:06 -07:00
qt Merge #12729: Get rid of ambiguous OutputType::NONE value 2018-05-03 11:53:30 +02:00
rpc Add missing newlines to LogPrint debug logging 2018-05-02 15:14:04 +02:00
script Merge #13002: Do not treat bare multisig outputs as IsMine unless watched 2018-04-26 20:10:12 +02:00
secp256k1 Bump secp256k1 subtree 2017-09-29 16:02:39 +02:00
support Remove duplicate includes 2018-04-09 09:18:49 +02:00
test util: Store debug log file path in BCLog::Logger member. 2018-04-29 14:37:19 -07:00
univalue univalue: Bump subtree 2018-02-10 09:55:54 -05:00
wallet Merge #12729: Get rid of ambiguous OutputType::NONE value 2018-05-03 11:53:30 +02:00
zmq Increment MIT Licence copyright header year on files modified in 2017 2018-01-03 02:26:56 +09:00
.clang-format Fix inconsistent namespace formatting guidelines 2018-04-13 15:37:20 -04:00
addrdb.cpp Add logging and error handling for file syncing 2018-04-23 14:25:28 +02:00
addrdb.h Increment MIT Licence copyright header year on files modified in 2017 2018-01-03 02:26:56 +09:00
addrman.cpp net: Correct addrman logging 2018-03-06 21:52:53 +01:00
addrman.h Merge #12731: Support serialization as another type without casting 2018-04-10 20:54:33 +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 [arith_uint256] Do not destroy *this content if passed-in operator may reference it 2018-03-01 11:49:35 +09:00
arith_uint256.h [arith_uint256] Avoid unnecessary this-copy using prefix operator 2018-02-28 19:59:19 +09:00
base58.cpp use base58 map instead of strchr() 2018-03-21 11:57:57 +08:00
base58.h Split key_io (address/key encodings) off from base58 2018-02-19 18:55:21 -08:00
bech32.cpp scripted-diff: Replace #include "" with #include <> (ryanofsky) 2017-11-16 08:23:01 +13:00
bech32.h Fix missing or inconsistent include guards 2018-03-22 16:23:04 +01:00
bitcoin-cli-res.rc
bitcoin-cli.cpp Move ChainNameFromCommandLine into ArgsManager and rename to GetChainName 2018-04-06 04:46:02 +10:00
bitcoin-tx-res.rc
bitcoin-tx.cpp Merge #12950: bitcoin-tx: Flatten for loop over one element 2018-04-13 17:15:15 +02:00
bitcoind-res.rc
bitcoind.cpp net: Minor accumulated cleanups 2018-04-16 13:24:14 -07:00
blockencodings.cpp Increment MIT Licence copyright header year on files modified in 2017 2018-01-03 02:26:56 +09:00
blockencodings.h Fix missing or inconsistent include guards 2018-03-22 16:23:04 +01:00
bloom.cpp Increment MIT Licence copyright header year on files modified in 2017 2018-01-03 02:26:56 +09:00
bloom.h Increment MIT Licence copyright header year on files modified in 2017 2018-01-03 02:26:56 +09:00
chain.cpp Increment MIT Licence copyright header year on files modified in 2017 2018-01-03 02:26:56 +09:00
chain.h Add static_assert to prevent VARINT(<signed value>) 2018-03-15 18:57:55 -05:00
chainparams.cpp Use P2SH consensus rules for all blocks 2018-04-13 09:52:50 -04:00
chainparams.h [doc] Add comments for chainparams.h, validation.cpp 2018-04-17 17:15:20 -04:00
chainparamsbase.cpp ArgsManager: support config file sections 2018-04-11 23:15:28 +10:00
chainparamsbase.h Move ChainNameFromCommandLine into ArgsManager and rename to GetChainName 2018-04-06 04:46:02 +10:00
chainparamsseeds.h Fix a-vs-an typos 2018-02-11 10:48:15 +01:00
checkpoints.cpp Add LookupBlockIndex function 2018-03-06 19:52:19 +00:00
checkpoints.h Add LookupBlockIndex function 2018-03-06 19:52:19 +00:00
checkqueue.h [Refactor] Remove unused fQuit var from checkqueue.h 2018-01-07 20:44:21 +00:00
clientversion.cpp Merge #11966: clientversion: Use full commit hash for commit-based version descriptions 2018-02-13 10:58:41 +01:00
clientversion.h Increment MIT Licence copyright header year on files modified in 2017 2018-01-03 02:26:56 +09:00
coins.cpp Increment MIT Licence copyright header year on files modified in 2017 2018-01-03 02:26:56 +09:00
coins.h Support deserializing into temporaries 2018-03-13 17:04:31 -07:00
compat.h net: Minor accumulated cleanups 2018-04-16 13:24:14 -07:00
compressor.cpp Move compressor utility functions out of class 2018-03-21 14:17:18 -07:00
compressor.h Support serializing Span<unsigned char> and use that instead of FLATDATA 2018-04-05 08:20:37 -07:00
core_io.h Increment MIT Licence copyright header year on files modified in 2017 2018-01-03 02:26:56 +09:00
core_memusage.h Increment MIT Licence copyright header year on files modified in 2017 2018-01-03 02:26:56 +09:00
core_read.cpp Merge #10498: Use static_cast instead of C-style casts for non-fundamental types 2018-02-07 16:15:28 -05:00
core_write.cpp Merge #12885: Reduce implementation code inside CScript 2018-04-23 21:09:17 +02:00
cuckoocache.h Use explicit casting in cuckoocache's compute_hashes(...) to clarify integer conversion 2018-03-27 00:37:20 +02:00
dbwrapper.cpp [logging] Comment all continuing logs. 2018-04-07 12:29:48 -04:00
dbwrapper.h [db] Create separate database for txindex. 2018-04-25 11:25:05 -07:00
fs.cpp scripted-diff: Replace #include "" with #include <> (ryanofsky) 2017-11-16 08:23:01 +13:00
fs.h [Trivial] Add BITCOIN_FS_H endif footer in fs.h 2017-05-19 02:01:28 -07:00
hash.cpp Increment MIT Licence copyright header year on files modified in 2017 2018-01-03 02:26:56 +09:00
hash.h Support deserializing into temporaries 2018-03-13 17:04:31 -07:00
httprpc.cpp Merge #12859: Bugfix: Include <memory> for std::unique_ptr 2018-04-05 09:31:53 +02:00
httprpc.h Increment MIT Licence copyright header year on files modified in 2017 2018-01-03 02:26:56 +09:00
httpserver.cpp util: Encapsulate logCategories within BCLog::Logger. 2018-04-27 16:10:02 -07:00
httpserver.h util: Encapsulate logCategories within BCLog::Logger. 2018-04-27 16:10:02 -07:00
indirectmap.h
init.cpp util: Store debug log file path in BCLog::Logger member. 2018-04-29 14:37:19 -07:00
init.h wallet: Refactor g_wallet_init_interface to const reference 2018-04-13 14:07:21 +01:00
key.cpp Merge #9598: Improve readability by removing redundant casts to same type (on all platforms) 2018-03-07 17:47:46 +01:00
key.h Make CKey::Load references const 2018-01-23 13:16:56 -05:00
key_io.cpp Simplify Base32 and Base64 conversions 2018-03-07 07:04:07 -08:00
key_io.h Fix missing or inconsistent include guards 2018-03-22 16:23:04 +01:00
keystore.cpp Merge #12460: Assert CPubKey::ValidLength to the pubkey's header-relevant size 2018-04-04 17:50:32 -04:00
keystore.h Add compile time checking for all cs_KeyStore runtime locking assertions 2018-04-25 22:31:40 +02:00
limitedmap.h Increment MIT Licence copyright header year on files modified in 2017 2018-01-03 02:26:56 +09:00
logging.cpp util: Store debug log file path in BCLog::Logger member. 2018-04-29 14:37:19 -07:00
logging.h util: Store debug log file path in BCLog::Logger member. 2018-04-29 14:37:19 -07:00
Makefile.am Remove Safe mode 2018-04-26 15:33:11 +02:00
Makefile.bench.include benchmark: Removed bench/perf.cpp 2018-04-18 19:53:10 -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 Remove direct bitcoin calls from qt/splashscreen.cpp 2018-04-04 16:52:40 -04:00
Makefile.qttest.include [tests] [qt] Add tests for address book manipulation via EditAddressDialog 2018-04-25 13:13:24 -04:00
Makefile.test.include [test] Simple unit test for TxIndex. 2018-04-25 11:25:18 -07:00
memusage.h Bugfix: Include <memory> for std::unique_ptr 2018-04-02 18:31:52 +00:00
merkleblock.cpp Increment MIT Licence copyright header year on files modified in 2017 2018-01-03 02:26:56 +09:00
merkleblock.h Increment MIT Licence copyright header year on files modified in 2017 2018-01-03 02:26:56 +09:00
miner.cpp Remove duplicate includes 2018-04-09 09:18:49 +02:00
miner.h Remove unused variable in SortForBlock 2018-03-14 23:10:39 -07:00
net.cpp Add missing newlines to LogPrint debug logging 2018-05-02 15:14:04 +02:00
net.h Merge #12569: net: Increase signal-to-noise ratio in debug.log by adjusting log level when logging failed non-manual connect():s 2018-04-13 19:25:18 +02:00
net_processing.cpp Add missing newlines to LogPrint debug logging 2018-05-02 15:14:04 +02:00
net_processing.h Remove direct bitcoin calls from qt/peertablemodel.cpp 2018-04-04 16:52:40 -04:00
netaddress.cpp net: Minor accumulated cleanups 2018-04-16 13:24:14 -07:00
netaddress.h net: Minor accumulated cleanups 2018-04-16 13:24:14 -07:00
netbase.cpp net: Minor accumulated cleanups 2018-04-16 13:24:14 -07:00
netbase.h Increase signal-to-noise ratio in debug.log by adjusting log level when logging failed non-manual connect():s 2018-03-11 10:49:04 +01:00
netmessagemaker.h Increment MIT Licence copyright header year on files modified in 2017 2018-01-03 02:26:56 +09:00
noui.cpp Increment MIT Licence copyright header year on files modified in 2017 2018-01-03 02:26:56 +09:00
noui.h
pow.cpp Increment MIT Licence copyright header year on files modified in 2017 2018-01-03 02:26:56 +09:00
pow.h Increment MIT Licence copyright header year on files modified in 2017 2018-01-03 02:26:56 +09:00
prevector.h Use memset() to optimize prevector::resize() 2018-02-27 13:27:51 -08:00
protocol.cpp Add setter for g_initial_block_download_completed 2018-02-17 21:28:50 +11:00
protocol.h Merge #12731: Support serialization as another type without casting 2018-04-10 20:54:33 +02:00
pubkey.cpp Increment MIT Licence copyright header year on files modified in 2017 2018-01-03 02:26:56 +09:00
pubkey.h Assert CPubKey::ValidLength to the pubkey's header-relevent size 2018-02-16 12:30:26 -08:00
random.cpp Remove duplicate includes 2018-04-09 09:18:49 +02:00
random.h Merge #12742: Make FastRandomContext support standard C++11 RNG interface 2018-03-22 12:21:46 -04:00
rest.cpp [rpc] Public interfaces to GetTransaction block until synced. 2018-04-25 11:25:17 -07:00
reverse_iterator.h Declare single-argument (non-converting) constructors "explicit" 2017-08-16 16:33:25 +02:00
reverselock.h
scheduler.cpp Increment MIT Licence copyright header year on files modified in 2017 2018-01-03 02:26:56 +09:00
scheduler.h Increment MIT Licence copyright header year on files modified in 2017 2018-01-03 02:26:56 +09:00
serialize.h Merge #12916: Introduce BigEndian wrapper and use it for netaddress ports 2018-04-11 14:23:58 +02:00
span.h Add Slice: a (pointer, size) array view that acts like a container 2018-04-05 08:20:37 -07:00
streams.h Support deserializing into temporaries 2018-03-13 17:04:31 -07:00
sync.cpp [logging] Comment all continuing logs. 2018-04-07 12:29:48 -04:00
sync.h Increment MIT Licence copyright header year on files modified in 2017 2018-01-03 02:26:56 +09:00
threadinterrupt.cpp [index] Allow TxIndex sync thread to be interrupted. 2018-04-25 11:25:09 -07:00
threadinterrupt.h [index] Allow TxIndex sync thread to be interrupted. 2018-04-25 11:25:09 -07:00
threadsafety.h
timedata.cpp Add missing newlines to LogPrint debug logging 2018-05-02 15:14:04 +02:00
timedata.h Increment MIT Licence copyright header year on files modified in 2017 2018-01-03 02:26:56 +09:00
tinyformat.h Fix typos 2018-03-21 08:34:44 +02:00
torcontrol.cpp boost: drop boost threads from torcontrol 2018-02-08 14:35:29 -05:00
torcontrol.h boost: drop boost threads from torcontrol 2018-02-08 14:35:29 -05:00
txdb.cpp [db] Migration for txindex data to new, separate database. 2018-04-25 11:25:06 -07:00
txdb.h [init] Initialize and start TxIndex in init code. 2018-04-25 11:25:12 -07:00
txmempool.cpp Merge #11742: rpc: Add testmempoolaccept 2018-04-02 16:02:33 +02:00
txmempool.h Merge #11742: rpc: Add testmempoolaccept 2018-04-02 16:02:33 +02:00
ui_interface.cpp Increment MIT Licence copyright header year on files modified in 2017 2018-01-03 02:26:56 +09:00
ui_interface.h Increment MIT Licence copyright header year on files modified in 2017 2018-01-03 02:26:56 +09:00
uint256.cpp Increment MIT Licence copyright header year on files modified in 2017 2018-01-03 02:26:56 +09:00
uint256.h Increment MIT Licence copyright header year on files modified in 2017 2018-01-03 02:26:56 +09:00
undo.h Merge #12716: Fix typos and cleanup in various files 2018-03-21 11:17:43 -04:00
util.cpp Add logging and error handling for file syncing 2018-04-23 14:25:28 +02:00
util.h util: Establish global logger object. 2018-04-27 16:09:59 -07:00
utilmoneystr.cpp Increment MIT Licence copyright header year on files modified in 2017 2018-01-03 02:26:56 +09:00
utilmoneystr.h Increment MIT Licence copyright header year on files modified in 2017 2018-01-03 02:26:56 +09:00
utilstrencodings.cpp Simplify Base32 and Base64 conversions 2018-03-07 07:04:07 -08:00
utilstrencodings.h Generalize ConvertBits 2018-03-06 20:28:08 -08:00
utiltime.cpp Fix for utiltime to compile with msvc. 2018-04-20 08:41:15 +10:00
utiltime.h Avoid std::locale/imbue in DateTimeStrFormat 2018-04-13 01:36:53 -07:00
validation.cpp Simplify semantics of ChainStateFlushed callback 2018-04-27 14:44:56 -04:00
validation.h [validation] Replace tx index code in validation code with TxIndex. 2018-04-25 11:25:13 -07:00
validationinterface.cpp scripted-diff: Rename SetBestChain callback ChainStateFlushed 2018-04-27 14:44:22 -04:00
validationinterface.h Simplify semantics of ChainStateFlushed callback 2018-04-27 14:44:56 -04:00
version.h Increment MIT Licence copyright header year on files modified in 2017 2018-01-03 02:26:56 +09:00
versionbits.cpp scripted-diff: Convert 11 enums into scoped enums (C++11) 2018-03-09 15:03:40 +01:00
versionbits.h Merge #12757: Clarify include guard naming convention 2018-04-01 18:30:21 -04:00
walletinitinterface.h wallet: Make WalletInitInterface members const 2018-04-13 14:02:59 +01:00
warnings.cpp Remove "rpc" category from GetWarnings 2018-04-27 09:27:52 +02:00
warnings.h Remove "rpc" category from GetWarnings 2018-04-27 09:27:52 +02:00