bitcoin/src
Pieter Wuille e439aeb30c
Merge #15508: Refactor analyzepsbt for use outside RPC code
892eff05f1 Add documentation of struct PSBTAnalysis et al (Glenn Willen)
ef22fe8c1f Refactor analyzepsbt for use outside RPC code (Glenn Willen)
afd20a25f2 Move PSBT decoding functions from core_io to psbt.cpp (Glenn Willen)

Pull request description:

  Refactor the analyzepsbt RPC into (1) an AnalyzePSBT function, which returns
  its output as a new strongly-typed PSBTAnalysis struct, and (2) a thin wrapper
  which converts the struct into a UniValue for RPC use.

  ----

  As with my previous refactoring PR, I need this because I am creating a dependency on this code from the GUI. Per discussion in #bitcoin-core-dev on IRC, since we don't want to create a dependency on UniValue in anything outside RPC, I introduced some new structs to hold the info we get when analyzing a PSBT. For the field types, I used whatever types are already used internally for this data (e.g. CAmount, CFeeRate, CKeyID), and only convert to int/string etc. in the wrapper.

  @achow101, maybe take the first look? :-)

ACKs for commit 892eff:
  sipa:
    utACK 892eff05f1
  achow101:
    utACK 892eff05f1
  ryanofsky:
    utACK 892eff05f1. Just small cleanups since the last review: removing unneeded include, forward decl, adding const ref

Tree-SHA512: eb278b0a82717ebc3eb0c08dc5bb4eefb996a317a6a3a8ecf51cd88110ddbb188ad3482cdd9563e557995e73aca5a282c1f6e352bc598155f1203b7b46fe5dee
2019-04-06 08:55:17 -07:00
..
bench Merge #15519: Add Poly1305 implementation 2019-03-27 11:53:15 +01:00
compat Document assumptions about C++ compiler 2019-03-05 11:19:32 +01:00
config
consensus Update copyright headers to 2018 2018-12-29 10:15:01 +01:00
crypto Merge #15663: crypto: Remove unused AES-128 code 2019-03-29 10:22:24 +01:00
index scripted-diff: Rename CBlockDiskPos to FlatFilePos. 2019-02-22 17:38:45 -08:00
interfaces interfaces: Add Chain::requestMempoolTransactions 2019-03-31 11:37:28 +01:00
leveldb Pull leveldb subtree 2019-01-26 12:45:48 -05:00
node Remove use of CCoinsViewMemPool::GetCoin in wallet code 2019-03-05 10:20:00 -04:00
obj
obj-test
policy rpc: Pass mempool into MempoolToJSON 2019-02-25 10:12:29 -05:00
primitives Made expicit constructor CTransaction(const CMutableTransaction &tx). 2018-12-17 21:02:42 -08:00
qt [rpc] Remove signrawtransaction warning 2019-03-22 10:30:25 -04:00
rpc Merge #15508: Refactor analyzepsbt for use outside RPC code 2019-04-06 08:55:17 -07:00
script Merge #15368: Descriptor checksums 2019-02-16 21:39:32 +01:00
secp256k1 Bump secp256k1 subtree 2017-09-29 16:02:39 +02:00
support windows: Set _WIN32_WINNT to 0x0601 (Windows 7) 2019-01-23 16:28:27 +08:00
test Merge #15663: crypto: Remove unused AES-128 code 2019-03-29 10:22:24 +01:00
univalue Update univalue subtree 2018-09-07 08:21:14 -04:00
util dead code: Remove dead option in HexStr conversion 2019-03-10 21:45:31 -06:00
wallet Merge #15596: rpc: Ignore sendmany::minconf as dummy value 2019-04-04 13:17:31 -04:00
zmq RPCHelpMan: Pass through Result and Examples 2019-01-25 14:16:07 -05:00
.clang-format Fix inconsistent namespace formatting guidelines 2018-04-13 15:37:20 -04:00
addrdb.cpp banman: pass the banfile path in 2019-01-16 13:54:18 -05:00
addrdb.h banman: Add, use CBanEntry ctor that takes ban reason 2019-01-16 13:54:18 -05:00
addrman.cpp [addrman] Improve collision logging and address nits 2019-03-01 16:15:50 -05:00
addrman.h [addrman] Ensure collisions eventually get resolved 2019-02-27 16:53:44 -05:00
amount.h Update copyright headers to 2018 2018-12-29 10:15:01 +01:00
arith_uint256.cpp scripted-diff: Move util files to separate directory. 2018-11-04 22:46:07 -08:00
arith_uint256.h Use std::numeric_limits<UNSIGNED>::max()) instead of (UNSIGNED)-1 2018-12-04 19:55:04 +02:00
attributes.h Add NODISCARD to all {Decode,Parse}[...](...) functions returning bool. Sort includes. 2018-11-05 17:03:11 +01:00
banman.cpp Allow connections from misbehavior banned peers. 2019-01-22 21:10:48 +00:00
banman.h Allow connections from misbehavior banned peers. 2019-01-22 21:10:48 +00:00
base58.cpp scripted-diff: Move util files to separate directory. 2018-11-04 22:46:07 -08:00
base58.h Add NODISCARD to all {Decode,Parse}[...](...) functions returning bool. Sort includes. 2018-11-05 17:03:11 +01:00
bech32.cpp Make objects in range declarations immutable by default. Avoid unnecessary copying of objects in range declarations. 2018-08-27 18:19:33 +02:00
bech32.h Fix missing or inconsistent include guards 2018-03-22 16:23:04 +01: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 Merge #15564: cli: remove duplicate wallet fields from -getinfo 2019-03-11 10:28:42 -04:00
bitcoin-tx-res.rc
bitcoin-tx.cpp util: Add SetupHelpOptions() 2019-02-06 14:16:43 -05:00
bitcoin-wallet-res.rc [tools] Add wallet inspection and modification tool 2019-01-30 16:26:52 -05:00
bitcoin-wallet.cpp util: Add SetupHelpOptions() 2019-02-06 14:16:43 -05:00
bitcoind-res.rc
bitcoind.cpp Merge #14521: qt, docs: Fix bitcoin-qt -version output formatting 2018-11-23 10:17:46 +01:00
blockencodings.cpp Extract CSipHasher to it's own file in crypto/ directory. 2018-11-05 09:25:15 -08:00
blockencodings.h disallow oversized CBlockHeaderAndShortTxIDs 2018-11-13 12:41:41 -08:00
blockfilter.cpp Remove sharp edge (uninitialized m_filter_type) when using the compiler-generated constructor for BlockFilter 2019-03-05 09:08:04 +01:00
blockfilter.h Remove sharp edge (uninitialized m_filter_type) when using the compiler-generated constructor for BlockFilter 2019-03-05 09:08:04 +01:00
bloom.cpp Merge #13429: Return the script type from Solver 2018-08-25 17:41:00 +02:00
bloom.h Removes unsed CBloomFilter constructor. 2018-08-13 01:24:55 +02:00
chain.cpp Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
chain.h scripted-diff: Rename CBlockDiskPos to FlatFilePos. 2019-02-22 17:38:45 -08:00
chainparams.cpp Update assumevalid, minimumchainwork, and getchaintxstats to height 563378. 2019-02-17 03:38:08 +00:00
chainparams.h implements different disk sizes for different networks on intro 2018-10-07 13:11:36 +01:00
chainparamsbase.cpp scripted-diff: Move util files to separate directory. 2018-11-04 22:46:07 -08:00
chainparamsbase.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
chainparamsseeds.h net: Update hardcoded seeds 2018-08-13 13:57:15 +02:00
checkpoints.cpp Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
checkpoints.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
checkqueue.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
clientversion.cpp Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
clientversion.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
coins.cpp Extract CSipHasher to it's own file in crypto/ directory. 2018-11-05 09:25:15 -08:00
coins.h Trivial: fixup a few doxygen comments 2019-01-24 19:47:07 -08:00
compat.h windows: Set _WIN32_WINNT to 0x0601 (Windows 7) 2019-01-23 16:28:27 +08:00
compressor.cpp Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
compressor.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
core_io.h Move PSBT decoding functions from core_io to psbt.cpp 2019-03-26 17:38:00 -07:00
core_memusage.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
core_read.cpp Move PSBT decoding functions from core_io to psbt.cpp 2019-03-26 17:38:00 -07:00
core_write.cpp scripted-diff: Move util files to separate directory. 2018-11-04 22:46:07 -08:00
cuckoocache.h Make objects in range declarations immutable by default. Avoid unnecessary copying of objects in range declarations. 2018-08-27 18:19:33 +02:00
dbwrapper.cpp Fix typos reported by codespell 2018-09-04 13:11:26 +02:00
dbwrapper.h scripted-diff: Move util files to separate directory. 2018-11-04 22:46:07 -08:00
dummywallet.cpp wallet: Factor out LoadWallet 2019-02-04 12:20:42 +00:00
flatfile.cpp Style cleanup. 2019-02-22 17:38:45 -08:00
flatfile.h Style cleanup. 2019-02-22 17:38:45 -08:00
fs.cpp wallet: Use fsbridge::ifstream to fix Windows path issue 2019-02-23 23:44:28 +08:00
fs.h Update copyright headers to 2018 2018-12-29 10:15:01 +01:00
hash.cpp Extract CSipHasher to it's own file in crypto/ directory. 2018-11-05 09:25:15 -08:00
hash.h Merge #13258: uint256: Remove unnecessary crypto/common.h dependency 2018-11-30 18:48:58 +01:00
httprpc.cpp scripted-diff: Move util files to separate directory. 2018-11-04 22:46:07 -08:00
httprpc.h Cleanup StartRest() 2018-08-11 09:34:47 +03:00
httpserver.cpp log: Construct global logger on first use 2019-01-29 15:30:24 -05:00
httpserver.h convert C-style (void) parameter lists to C++ style () 2018-09-13 10:36:41 -07:00
indirectmap.h prepend license statement to indirectmap 2016-07-27 16:27:07 -07:00
init.cpp rpc: Uncouple rpcs from maxTxFee global 2019-03-18 13:56:56 -04:00
init.h Pass chain and client variables where needed 2018-11-06 11:44:40 -04:00
key.cpp Fix assertion in CKey::SignCompact 2019-01-31 15:00:56 +00:00
key.h convert C-style (void) parameter lists to C++ style () 2018-09-13 10:36:41 -07:00
key_io.cpp Avoid triggering undefined behaviour (std::memset(nullptr, 0, 0)) if an invalid string is passed to DecodeSecret(...) 2019-02-07 22:30:25 +01:00
key_io.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
keystore.cpp scripted-diff: Move util files to separate directory. 2018-11-04 22:46:07 -08:00
keystore.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
limitedmap.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
logging.cpp log: Construct global logger on first use 2019-01-29 15:30:24 -05:00
logging.h log: Construct global logger on first use 2019-01-29 15:30:24 -05:00
Makefile.am Merge #15508: Refactor analyzepsbt for use outside RPC code 2019-04-06 08:55:17 -07:00
Makefile.bench.include Merge #15519: Add Poly1305 implementation 2019-03-27 11:53:15 +01:00
Makefile.leveldb.include build: Remove WINVER pre define in Makefile.leveldb.inlcude 2019-01-26 09:28:48 +08:00
Makefile.qt.include gui: Add WalletController 2019-01-18 00:34:47 +00:00
Makefile.qttest.include Add BitcoinApplication & RPCConsole tests 2019-01-04 06:31:07 -05:00
Makefile.test.include Merge #15504: fuzz: Link BasicTestingSetup (shared with unit tests) 2019-03-06 15:16:23 -05:00
memusage.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
merkleblock.cpp Replace use of BEGIN and END macros on uint256 2019-01-10 01:58:33 +01:00
merkleblock.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
miner.cpp [rpc] mining: Omit uninitialized currentblockweight, currentblocktx 2019-02-12 11:34:57 -05:00
miner.h [rpc] mining: Omit uninitialized currentblockweight, currentblocktx 2019-02-12 11:34:57 -05:00
net.cpp net: Remove unused unsanitized user agent string CNode::strSubVer 2019-03-23 11:32:40 -04:00
net.h Merge #15654: net: Remove unused unsanitized user agent string CNode::strSubVer 2019-04-04 16:45:23 -04:00
net_processing.cpp Merge #15654: net: Remove unused unsanitized user agent string CNode::strSubVer 2019-04-04 16:45:23 -04:00
net_processing.h banman: create and split out banman 2019-01-16 13:54:18 -05:00
netaddress.cpp netaddress: Make IPv4 loopback comment more descriptive 2019-02-04 13:47:55 -05:00
netaddress.h Merge #14728: fix uninitialized read when stringifying an addrLocal 2018-11-23 09:53:20 +01:00
netbase.cpp Drop defunct Windows compat fixes 2019-01-24 15:58:49 -08:00
netbase.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
netmessagemaker.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
noui.cpp scripted-diff: Move util files to separate directory. 2018-11-04 22:46:07 -08:00
noui.h Update copyright headers to 2018 2018-12-29 10:15:01 +01:00
optional.h Remove 'boost::optional'-related gcc warnings 2019-01-30 22:44:28 +02:00
outputtype.cpp Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
outputtype.h Add NODISCARD to all {Decode,Parse}[...](...) functions returning bool. Sort includes. 2018-11-05 17:03:11 +01:00
pow.cpp Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
pow.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
prevector.h Implement prevector::fill once 2018-11-14 12:19:28 -05:00
protocol.cpp scripted-diff: Move util files to separate directory. 2018-11-04 22:46:07 -08:00
protocol.h Use C++11 default member initializers 2019-01-05 16:16:37 +01:00
psbt.cpp Refactor analyzepsbt for use outside RPC code 2019-03-26 17:38:00 -07:00
psbt.h Add documentation of struct PSBTAnalysis et al 2019-03-26 17:38:00 -07:00
pubkey.cpp Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
pubkey.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
random.cpp Merge #15250: Use RdSeed when available, and reduce RdRand load 2019-02-18 10:56:55 +01:00
random.h Use RdSeed when available, and reduce RdRand load 2019-02-03 17:34:26 -08:00
rest.cpp rpc: Pass mempool into MempoolToJSON 2019-02-25 10:12:29 -05:00
reverse_iterator.h scripted-diff: Remove trailing whitespaces 2018-07-24 20:46:23 +01:00
reverselock.h Increment MIT Licence copyright header year on files modified in 2016 2016-12-31 11:01:21 -07:00
scheduler.cpp Switch all RNG code to the built-in PRNG. 2019-01-16 16:34:56 -08:00
scheduler.h trivial: correct parameter name in comments 2019-02-10 17:17:32 -05:00
serialize.h Drop minor GetSerializeSize template 2018-09-11 00:58:13 -04:00
shutdown.cpp Break circular dependency: init -> * -> init by extracting shutdown.h 2018-06-25 00:08:49 -04:00
shutdown.h Break circular dependency: init -> * -> init by extracting shutdown.h 2018-06-25 00:08:49 -04:00
span.h Add more methods to Span class 2018-07-27 11:52:18 -07:00
streams.h Trivial: Doxygenize existing CBufferedFile and VectorReader comments 2019-01-25 12:32:37 -08:00
sync.cpp Prevent mutex lock fail even if --enable-debug 2019-01-25 13:21:59 +09:00
sync.h sync: Add RecursiveMutex type alias 2018-12-14 16:26:13 -05:00
threadinterrupt.cpp Merge #11640: Make LOCK, LOCK2, TRY_LOCK work with CWaitableCriticalSection 2018-08-31 16:00:38 +02:00
threadinterrupt.h Update copyright headers to 2018 2018-12-29 10:15:01 +01:00
threadsafety.h Pass chain locked variables where needed 2018-11-06 11:44:40 -04:00
timedata.cpp scripted-diff: Move util files to separate directory. 2018-11-04 22:46:07 -08:00
timedata.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
tinyformat.h Fix typos 2018-03-21 08:34:44 +02:00
torcontrol.cpp Drop IsLimited in favor of IsReachable 2019-01-13 22:50:36 -08:00
torcontrol.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
txdb.cpp scripted-diff: Move util files to separate directory. 2018-11-04 22:46:07 -08:00
txdb.h Merge #13780: 0.17: Pre-branch maintenance 2018-08-08 13:55:27 +02:00
txmempool.cpp rpc: Pass mempool into MempoolToJSON 2019-02-25 10:12:29 -05:00
txmempool.h rpc: Pass mempool into MempoolToJSON 2019-02-25 10:12:29 -05:00
ui_interface.cpp Remove use of uiInterface.LoadWallet in wallet code 2019-02-22 15:43:02 -04:00
ui_interface.h Remove use of uiInterface.LoadWallet in wallet code 2019-02-22 15:43:02 -04:00
uint256.cpp util: Make ToLower and ToUpper take a char 2019-01-10 02:51:14 +01:00
uint256.h uint256: Remove unnecessary crypto/common.h use 2018-09-18 14:27:05 +09:00
undo.h Extract CSipHasher to it's own file in crypto/ directory. 2018-11-05 09:25:15 -08:00
validation.cpp refactor: Expose UndoReadFromDisk in header 2019-03-19 14:20:43 -04:00
validation.h refactor: Expose UndoReadFromDisk in header 2019-03-19 14:20:43 -04:00
validationinterface.cpp Check m_internals in UnregisterValidationInterface 2019-02-03 22:23:44 +00:00
validationinterface.h Add compile time checking for all cs_main runtime locking assertions 2018-08-26 00:25:28 +02:00
version.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
versionbits.cpp MOVEONLY: Move versionbits info out of versionbits.o 2018-09-23 22:55:11 +02:00
versionbits.h MOVEONLY: Move versionbits info out of versionbits.o 2018-09-23 22:55:11 +02:00
versionbitsinfo.cpp MOVEONLY: Move versionbits info out of versionbits.o 2018-09-23 22:55:11 +02:00
versionbitsinfo.h MOVEONLY: Move versionbits info out of versionbits.o 2018-09-23 22:55:11 +02:00
walletinitinterface.h Remove direct node->wallet calls in init.cpp 2018-11-06 11:44:40 -04:00
warnings.cpp scripted-diff: Move util files to separate directory. 2018-11-04 22:46:07 -08:00
warnings.h Merge #13780: 0.17: Pre-branch maintenance 2018-08-08 13:55:27 +02:00