mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-03-05 14:06:27 -05:00
Merge bitcoin/bitcoin#25472: build: Increase MS Visual Studio minimum version
630c1711b4
refactor: Drop no longer needed `util/designator.h` (Hennadii Stepanov)88ec5d40dc
build: Increase MS Visual Studio minimum version (Hennadii Stepanov)555f9dd5d3
rpc, refactor: Add `decodepsbt_outputs` (Hennadii Stepanov)0c432cbbfa
rpc, refactor: Add `decodepsbt_inputs` (Hennadii Stepanov)01d95a3964
rpc, refactor: Add `getblock_prevout` (Hennadii Stepanov) Pull request description: Visual Studio 2022 with `/std:c++20` supports [designated initializers](https://github.com/bitcoin/bitcoin/pull/24531). ACKs for top commit: sipsorcery: reACK630c1711b4
. Tree-SHA512: 5b8933940dd69061c6b077512168bebb6fea05d429b63ffbab191950798b4c825e8484b1a651db0ae13f97eae481097d3c16395659c0f3b9f847af2aaf44b65d
This commit is contained in:
commit
c30b3e90f0
11 changed files with 246 additions and 257 deletions
|
@ -3,7 +3,9 @@ Building Bitcoin Core with Visual Studio
|
|||
|
||||
Introduction
|
||||
---------------------
|
||||
Solution and project files to build Bitcoin Core with `msbuild` or Visual Studio can be found in the `build_msvc` directory. The build has been tested with Visual Studio 2022 and Visual Studio 2019 (building with earlier versions of Visual Studio should not be expected to work).
|
||||
Visual Studio 2022 is minimum required to build Bitcoin Core.
|
||||
|
||||
Solution and project files to build with `msbuild` or Visual Studio can be found in the `build_msvc` directory.
|
||||
|
||||
To build Bitcoin Core from the command-line, it is sufficient to only install the Visual Studio Build Tools component.
|
||||
|
||||
|
|
|
@ -50,8 +50,8 @@
|
|||
/* Define this symbol if the consensus lib has been built */
|
||||
#define HAVE_CONSENSUS_LIB 1
|
||||
|
||||
/* define if the compiler supports basic C++17 syntax */
|
||||
#define HAVE_CXX17 1
|
||||
/* define if the compiler supports basic C++20 syntax */
|
||||
#define HAVE_CXX20 1
|
||||
|
||||
/* Define to 1 if you have the declaration of `be16toh', and to 0 if you
|
||||
don't. */
|
||||
|
|
|
@ -87,10 +87,10 @@
|
|||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<AdditionalOptions>/utf-8 /Zc:__cplusplus /std:c++17 %(AdditionalOptions)</AdditionalOptions>
|
||||
<AdditionalOptions>/utf-8 /Zc:__cplusplus /std:c++20 %(AdditionalOptions)</AdditionalOptions>
|
||||
<DisableSpecificWarnings>4018;4244;4267;4334;4715;4805;4834</DisableSpecificWarnings>
|
||||
<TreatWarningAsError>true</TreatWarningAsError>
|
||||
<PreprocessorDefinitions>DISABLE_DESIGNATED_INITIALIZER_ERRORS;_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING;_SILENCE_CXX17_OLD_ALLOCATOR_MEMBERS_DEPRECATION_WARNING;ZMQ_STATIC;NOMINMAX;WIN32;HAVE_CONFIG_H;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_CONSOLE;_WIN32_WINNT=0x0601;_WIN32_IE=0x0501;WIN32_LEAN_AND_MEAN;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>_SILENCE_CXX20_U8PATH_DEPRECATION_WARNING;_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING;_SILENCE_CXX17_OLD_ALLOCATOR_MEMBERS_DEPRECATION_WARNING;ZMQ_STATIC;NOMINMAX;WIN32;HAVE_CONFIG_H;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_CONSOLE;_WIN32_WINNT=0x0601;_WIN32_IE=0x0501;WIN32_LEAN_AND_MEAN;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>..\..\src;..\..\src\minisketch\include;..\..\src\univalue\include;..\..\src\secp256k1\include;..\..\src\leveldb\include;..\..\src\leveldb\helpers\memenv;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
|
|
|
@ -93,7 +93,7 @@ def set_properties(vcxproj_filename, placeholder, content):
|
|||
def main():
|
||||
parser = argparse.ArgumentParser(description='Bitcoin-core msbuild configuration initialiser.')
|
||||
parser.add_argument('-toolset', nargs='?', default=DEFAULT_PLATFORM_TOOLSET,
|
||||
help='Optionally sets the msbuild platform toolset, e.g. v142 for Visual Studio 2019, or v143 for Visual Studio 2022.'
|
||||
help='Optionally sets the msbuild platform toolset, e.g. v143 for Visual Studio 2022.'
|
||||
' default is %s.'%DEFAULT_PLATFORM_TOOLSET)
|
||||
args = parser.parse_args()
|
||||
set_properties(os.path.join(SOURCE_DIR, '../build_msvc/common.init.vcxproj'), '@TOOLSET@', args.toolset)
|
||||
|
|
|
@ -261,7 +261,6 @@ BITCOIN_CORE_H = \
|
|||
util/bip32.h \
|
||||
util/bytevectorhash.h \
|
||||
util/check.h \
|
||||
util/designator.h \
|
||||
util/epochguard.h \
|
||||
util/error.h \
|
||||
util/fastrange.h \
|
||||
|
|
|
@ -64,7 +64,6 @@
|
|||
#include <txorphanage.h>
|
||||
#include <util/asmap.h>
|
||||
#include <util/check.h>
|
||||
#include <util/designator.h>
|
||||
#include <util/moneystr.h>
|
||||
#include <util/strencodings.h>
|
||||
#include <util/string.h>
|
||||
|
@ -1425,8 +1424,8 @@ bool AppInitMain(NodeContext& node, interfaces::BlockAndHeaderTipInfo* tip_info)
|
|||
assert(!node.chainman);
|
||||
|
||||
CTxMemPool::Options mempool_opts{
|
||||
Desig(estimator) node.fee_estimator.get(),
|
||||
Desig(check_ratio) chainparams.DefaultConsistencyChecks() ? 1 : 0,
|
||||
.estimator = node.fee_estimator.get(),
|
||||
.check_ratio = chainparams.DefaultConsistencyChecks() ? 1 : 0,
|
||||
};
|
||||
ApplyArgsManOptions(args, mempool_opts);
|
||||
mempool_opts.check_ratio = std::clamp<int>(mempool_opts.check_ratio, 0, 1'000'000);
|
||||
|
|
29
src/net.cpp
29
src/net.cpp
|
@ -26,7 +26,6 @@
|
|||
#include <protocol.h>
|
||||
#include <random.h>
|
||||
#include <scheduler.h>
|
||||
#include <util/designator.h>
|
||||
#include <util/sock.h>
|
||||
#include <util/strencodings.h>
|
||||
#include <util/syscall_sandbox.h>
|
||||
|
@ -876,20 +875,20 @@ bool CConnman::AttemptToEvictConnection()
|
|||
if (node->fDisconnect)
|
||||
continue;
|
||||
NodeEvictionCandidate candidate{
|
||||
Desig(id) node->GetId(),
|
||||
Desig(m_connected) node->m_connected,
|
||||
Desig(m_min_ping_time) node->m_min_ping_time,
|
||||
Desig(m_last_block_time) node->m_last_block_time,
|
||||
Desig(m_last_tx_time) node->m_last_tx_time,
|
||||
Desig(fRelevantServices) HasAllDesirableServiceFlags(node->nServices),
|
||||
Desig(m_relay_txs) node->m_relays_txs.load(),
|
||||
Desig(fBloomFilter) node->m_bloom_filter_loaded.load(),
|
||||
Desig(nKeyedNetGroup) node->nKeyedNetGroup,
|
||||
Desig(prefer_evict) node->m_prefer_evict,
|
||||
Desig(m_is_local) node->addr.IsLocal(),
|
||||
Desig(m_network) node->ConnectedThroughNetwork(),
|
||||
Desig(m_noban) node->HasPermission(NetPermissionFlags::NoBan),
|
||||
Desig(m_conn_type) node->m_conn_type,
|
||||
.id = node->GetId(),
|
||||
.m_connected = node->m_connected,
|
||||
.m_min_ping_time = node->m_min_ping_time,
|
||||
.m_last_block_time = node->m_last_block_time,
|
||||
.m_last_tx_time = node->m_last_tx_time,
|
||||
.fRelevantServices = HasAllDesirableServiceFlags(node->nServices),
|
||||
.m_relay_txs = node->m_relays_txs.load(),
|
||||
.fBloomFilter = node->m_bloom_filter_loaded.load(),
|
||||
.nKeyedNetGroup = node->nKeyedNetGroup,
|
||||
.prefer_evict = node->m_prefer_evict,
|
||||
.m_is_local = node->addr.IsLocal(),
|
||||
.m_network = node->ConnectedThroughNetwork(),
|
||||
.m_noban = node->HasPermission(NetPermissionFlags::NoBan),
|
||||
.m_conn_type = node->m_conn_type,
|
||||
};
|
||||
vEvictionCandidates.push_back(candidate);
|
||||
}
|
||||
|
|
|
@ -603,6 +603,29 @@ static CBlockUndo GetUndoChecked(BlockManager& blockman, const CBlockIndex* pblo
|
|||
return blockUndo;
|
||||
}
|
||||
|
||||
const RPCResult getblock_vin{
|
||||
RPCResult::Type::ARR, "vin", "",
|
||||
{
|
||||
{RPCResult::Type::OBJ, "", "",
|
||||
{
|
||||
{RPCResult::Type::ELISION, "", "The same output as verbosity = 2"},
|
||||
{RPCResult::Type::OBJ, "prevout", "(Only if undo information is available)",
|
||||
{
|
||||
{RPCResult::Type::BOOL, "generated", "Coinbase or not"},
|
||||
{RPCResult::Type::NUM, "height", "The height of the prevout"},
|
||||
{RPCResult::Type::NUM, "value", "The value in " + CURRENCY_UNIT},
|
||||
{RPCResult::Type::OBJ, "scriptPubKey", "",
|
||||
{
|
||||
{RPCResult::Type::STR, "asm", "The asm"},
|
||||
{RPCResult::Type::STR, "hex", "The hex"},
|
||||
{RPCResult::Type::STR, "address", /*optional=*/true, "The Bitcoin address (only if a well-defined address exists)"},
|
||||
{RPCResult::Type::STR, "type", "The type (one of: " + GetAllOutputTypes() + ")"},
|
||||
}},
|
||||
}},
|
||||
}},
|
||||
}
|
||||
};
|
||||
|
||||
static RPCHelpMan getblock()
|
||||
{
|
||||
return RPCHelpMan{"getblock",
|
||||
|
@ -662,26 +685,7 @@ static RPCHelpMan getblock()
|
|||
{
|
||||
{RPCResult::Type::OBJ, "", "",
|
||||
{
|
||||
{RPCResult::Type::ARR, "vin", "",
|
||||
{
|
||||
{RPCResult::Type::OBJ, "", "",
|
||||
{
|
||||
{RPCResult::Type::ELISION, "", "The same output as verbosity = 2"},
|
||||
{RPCResult::Type::OBJ, "prevout", "(Only if undo information is available)",
|
||||
{
|
||||
{RPCResult::Type::BOOL, "generated", "Coinbase or not"},
|
||||
{RPCResult::Type::NUM, "height", "The height of the prevout"},
|
||||
{RPCResult::Type::NUM, "value", "The value in " + CURRENCY_UNIT},
|
||||
{RPCResult::Type::OBJ, "scriptPubKey", "",
|
||||
{
|
||||
{RPCResult::Type::STR, "asm", "The asm"},
|
||||
{RPCResult::Type::STR, "hex", "The hex"},
|
||||
{RPCResult::Type::STR, "address", /*optional=*/true, "The Bitcoin address (only if a well-defined address exists)"},
|
||||
{RPCResult::Type::STR, "type", "The type (one of: " + GetAllOutputTypes() + ")"},
|
||||
}},
|
||||
}},
|
||||
}},
|
||||
}},
|
||||
getblock_vin,
|
||||
}},
|
||||
}},
|
||||
}},
|
||||
|
|
|
@ -680,6 +680,200 @@ static RPCHelpMan signrawtransactionwithkey()
|
|||
};
|
||||
}
|
||||
|
||||
const RPCResult decodepsbt_inputs{
|
||||
RPCResult::Type::ARR, "inputs", "",
|
||||
{
|
||||
{RPCResult::Type::OBJ, "", "",
|
||||
{
|
||||
{RPCResult::Type::OBJ, "non_witness_utxo", /*optional=*/true, "Decoded network transaction for non-witness UTXOs",
|
||||
{
|
||||
{RPCResult::Type::ELISION, "",""},
|
||||
}},
|
||||
{RPCResult::Type::OBJ, "witness_utxo", /*optional=*/true, "Transaction output for witness UTXOs",
|
||||
{
|
||||
{RPCResult::Type::NUM, "amount", "The value in " + CURRENCY_UNIT},
|
||||
{RPCResult::Type::OBJ, "scriptPubKey", "",
|
||||
{
|
||||
{RPCResult::Type::STR, "asm", "The asm"},
|
||||
{RPCResult::Type::STR, "desc", "Inferred descriptor for the output"},
|
||||
{RPCResult::Type::STR_HEX, "hex", "The hex"},
|
||||
{RPCResult::Type::STR, "type", "The type, eg 'pubkeyhash'"},
|
||||
{RPCResult::Type::STR, "address", /*optional=*/true, "The Bitcoin address (only if a well-defined address exists)"},
|
||||
}},
|
||||
}},
|
||||
{RPCResult::Type::OBJ_DYN, "partial_signatures", /*optional=*/true, "",
|
||||
{
|
||||
{RPCResult::Type::STR, "pubkey", "The public key and signature that corresponds to it."},
|
||||
}},
|
||||
{RPCResult::Type::STR, "sighash", /*optional=*/true, "The sighash type to be used"},
|
||||
{RPCResult::Type::OBJ, "redeem_script", /*optional=*/true, "",
|
||||
{
|
||||
{RPCResult::Type::STR, "asm", "The asm"},
|
||||
{RPCResult::Type::STR_HEX, "hex", "The hex"},
|
||||
{RPCResult::Type::STR, "type", "The type, eg 'pubkeyhash'"},
|
||||
}},
|
||||
{RPCResult::Type::OBJ, "witness_script", /*optional=*/true, "",
|
||||
{
|
||||
{RPCResult::Type::STR, "asm", "The asm"},
|
||||
{RPCResult::Type::STR_HEX, "hex", "The hex"},
|
||||
{RPCResult::Type::STR, "type", "The type, eg 'pubkeyhash'"},
|
||||
}},
|
||||
{RPCResult::Type::ARR, "bip32_derivs", /*optional=*/true, "",
|
||||
{
|
||||
{RPCResult::Type::OBJ, "", "",
|
||||
{
|
||||
{RPCResult::Type::STR, "pubkey", "The public key with the derivation path as the value."},
|
||||
{RPCResult::Type::STR, "master_fingerprint", "The fingerprint of the master key"},
|
||||
{RPCResult::Type::STR, "path", "The path"},
|
||||
}},
|
||||
}},
|
||||
{RPCResult::Type::OBJ, "final_scriptSig", /*optional=*/true, "",
|
||||
{
|
||||
{RPCResult::Type::STR, "asm", "The asm"},
|
||||
{RPCResult::Type::STR, "hex", "The hex"},
|
||||
}},
|
||||
{RPCResult::Type::ARR, "final_scriptwitness", /*optional=*/true, "",
|
||||
{
|
||||
{RPCResult::Type::STR_HEX, "", "hex-encoded witness data (if any)"},
|
||||
}},
|
||||
{RPCResult::Type::OBJ_DYN, "ripemd160_preimages", /*optional=*/ true, "",
|
||||
{
|
||||
{RPCResult::Type::STR, "hash", "The hash and preimage that corresponds to it."},
|
||||
}},
|
||||
{RPCResult::Type::OBJ_DYN, "sha256_preimages", /*optional=*/ true, "",
|
||||
{
|
||||
{RPCResult::Type::STR, "hash", "The hash and preimage that corresponds to it."},
|
||||
}},
|
||||
{RPCResult::Type::OBJ_DYN, "hash160_preimages", /*optional=*/ true, "",
|
||||
{
|
||||
{RPCResult::Type::STR, "hash", "The hash and preimage that corresponds to it."},
|
||||
}},
|
||||
{RPCResult::Type::OBJ_DYN, "hash256_preimages", /*optional=*/ true, "",
|
||||
{
|
||||
{RPCResult::Type::STR, "hash", "The hash and preimage that corresponds to it."},
|
||||
}},
|
||||
{RPCResult::Type::STR_HEX, "taproot_key_path_sig", /*optional=*/ true, "hex-encoded signature for the Taproot key path spend"},
|
||||
{RPCResult::Type::ARR, "taproot_script_path_sigs", /*optional=*/ true, "",
|
||||
{
|
||||
{RPCResult::Type::OBJ, "signature", /*optional=*/ true, "The signature for the pubkey and leaf hash combination",
|
||||
{
|
||||
{RPCResult::Type::STR, "pubkey", "The x-only pubkey for this signature"},
|
||||
{RPCResult::Type::STR, "leaf_hash", "The leaf hash for this signature"},
|
||||
{RPCResult::Type::STR, "sig", "The signature itself"},
|
||||
}},
|
||||
}},
|
||||
{RPCResult::Type::ARR, "taproot_scripts", /*optional=*/ true, "",
|
||||
{
|
||||
{RPCResult::Type::OBJ, "", "",
|
||||
{
|
||||
{RPCResult::Type::STR_HEX, "script", "A leaf script"},
|
||||
{RPCResult::Type::NUM, "leaf_ver", "The version number for the leaf script"},
|
||||
{RPCResult::Type::ARR, "control_blocks", "The control blocks for this script",
|
||||
{
|
||||
{RPCResult::Type::STR_HEX, "control_block", "A hex-encoded control block for this script"},
|
||||
}},
|
||||
}},
|
||||
}},
|
||||
{RPCResult::Type::ARR, "taproot_bip32_derivs", /*optional=*/ true, "",
|
||||
{
|
||||
{RPCResult::Type::OBJ, "", "",
|
||||
{
|
||||
{RPCResult::Type::STR, "pubkey", "The x-only public key this path corresponds to"},
|
||||
{RPCResult::Type::STR, "master_fingerprint", "The fingerprint of the master key"},
|
||||
{RPCResult::Type::STR, "path", "The path"},
|
||||
{RPCResult::Type::ARR, "leaf_hashes", "The hashes of the leaves this pubkey appears in",
|
||||
{
|
||||
{RPCResult::Type::STR_HEX, "hash", "The hash of a leaf this pubkey appears in"},
|
||||
}},
|
||||
}},
|
||||
}},
|
||||
{RPCResult::Type::STR_HEX, "taproot_internal_key", /*optional=*/ true, "The hex-encoded Taproot x-only internal key"},
|
||||
{RPCResult::Type::STR_HEX, "taproot_merkle_root", /*optional=*/ true, "The hex-encoded Taproot merkle root"},
|
||||
{RPCResult::Type::OBJ_DYN, "unknown", /*optional=*/ true, "The unknown input fields",
|
||||
{
|
||||
{RPCResult::Type::STR_HEX, "key", "(key-value pair) An unknown key-value pair"},
|
||||
}},
|
||||
{RPCResult::Type::ARR, "proprietary", /*optional=*/true, "The input proprietary map",
|
||||
{
|
||||
{RPCResult::Type::OBJ, "", "",
|
||||
{
|
||||
{RPCResult::Type::STR_HEX, "identifier", "The hex string for the proprietary identifier"},
|
||||
{RPCResult::Type::NUM, "subtype", "The number for the subtype"},
|
||||
{RPCResult::Type::STR_HEX, "key", "The hex for the key"},
|
||||
{RPCResult::Type::STR_HEX, "value", "The hex for the value"},
|
||||
}},
|
||||
}},
|
||||
}},
|
||||
}
|
||||
};
|
||||
|
||||
const RPCResult decodepsbt_outputs{
|
||||
RPCResult::Type::ARR, "outputs", "",
|
||||
{
|
||||
{RPCResult::Type::OBJ, "", "",
|
||||
{
|
||||
{RPCResult::Type::OBJ, "redeem_script", /*optional=*/true, "",
|
||||
{
|
||||
{RPCResult::Type::STR, "asm", "The asm"},
|
||||
{RPCResult::Type::STR_HEX, "hex", "The hex"},
|
||||
{RPCResult::Type::STR, "type", "The type, eg 'pubkeyhash'"},
|
||||
}},
|
||||
{RPCResult::Type::OBJ, "witness_script", /*optional=*/true, "",
|
||||
{
|
||||
{RPCResult::Type::STR, "asm", "The asm"},
|
||||
{RPCResult::Type::STR_HEX, "hex", "The hex"},
|
||||
{RPCResult::Type::STR, "type", "The type, eg 'pubkeyhash'"},
|
||||
}},
|
||||
{RPCResult::Type::ARR, "bip32_derivs", /*optional=*/true, "",
|
||||
{
|
||||
{RPCResult::Type::OBJ, "", "",
|
||||
{
|
||||
{RPCResult::Type::STR, "pubkey", "The public key this path corresponds to"},
|
||||
{RPCResult::Type::STR, "master_fingerprint", "The fingerprint of the master key"},
|
||||
{RPCResult::Type::STR, "path", "The path"},
|
||||
}},
|
||||
}},
|
||||
{RPCResult::Type::STR_HEX, "taproot_internal_key", /*optional=*/ true, "The hex-encoded Taproot x-only internal key"},
|
||||
{RPCResult::Type::ARR, "taproot_tree", /*optional=*/ true, "The tuples that make up the Taproot tree, in depth first search order",
|
||||
{
|
||||
{RPCResult::Type::OBJ, "tuple", /*optional=*/ true, "A single leaf script in the taproot tree",
|
||||
{
|
||||
{RPCResult::Type::NUM, "depth", "The depth of this element in the tree"},
|
||||
{RPCResult::Type::NUM, "leaf_ver", "The version of this leaf"},
|
||||
{RPCResult::Type::STR, "script", "The hex-encoded script itself"},
|
||||
}},
|
||||
}},
|
||||
{RPCResult::Type::ARR, "taproot_bip32_derivs", /*optional=*/ true, "",
|
||||
{
|
||||
{RPCResult::Type::OBJ, "", "",
|
||||
{
|
||||
{RPCResult::Type::STR, "pubkey", "The x-only public key this path corresponds to"},
|
||||
{RPCResult::Type::STR, "master_fingerprint", "The fingerprint of the master key"},
|
||||
{RPCResult::Type::STR, "path", "The path"},
|
||||
{RPCResult::Type::ARR, "leaf_hashes", "The hashes of the leaves this pubkey appears in",
|
||||
{
|
||||
{RPCResult::Type::STR_HEX, "hash", "The hash of a leaf this pubkey appears in"},
|
||||
}},
|
||||
}},
|
||||
}},
|
||||
{RPCResult::Type::OBJ_DYN, "unknown", /*optional=*/true, "The unknown output fields",
|
||||
{
|
||||
{RPCResult::Type::STR_HEX, "key", "(key-value pair) An unknown key-value pair"},
|
||||
}},
|
||||
{RPCResult::Type::ARR, "proprietary", /*optional=*/true, "The output proprietary map",
|
||||
{
|
||||
{RPCResult::Type::OBJ, "", "",
|
||||
{
|
||||
{RPCResult::Type::STR_HEX, "identifier", "The hex string for the proprietary identifier"},
|
||||
{RPCResult::Type::NUM, "subtype", "The number for the subtype"},
|
||||
{RPCResult::Type::STR_HEX, "key", "The hex for the key"},
|
||||
{RPCResult::Type::STR_HEX, "value", "The hex for the value"},
|
||||
}},
|
||||
}},
|
||||
}},
|
||||
}
|
||||
};
|
||||
|
||||
static RPCHelpMan decodepsbt()
|
||||
{
|
||||
return RPCHelpMan{
|
||||
|
@ -719,194 +913,8 @@ static RPCHelpMan decodepsbt()
|
|||
{
|
||||
{RPCResult::Type::STR_HEX, "key", "(key-value pair) An unknown key-value pair"},
|
||||
}},
|
||||
{RPCResult::Type::ARR, "inputs", "",
|
||||
{
|
||||
{RPCResult::Type::OBJ, "", "",
|
||||
{
|
||||
{RPCResult::Type::OBJ, "non_witness_utxo", /*optional=*/true, "Decoded network transaction for non-witness UTXOs",
|
||||
{
|
||||
{RPCResult::Type::ELISION, "",""},
|
||||
}},
|
||||
{RPCResult::Type::OBJ, "witness_utxo", /*optional=*/true, "Transaction output for witness UTXOs",
|
||||
{
|
||||
{RPCResult::Type::NUM, "amount", "The value in " + CURRENCY_UNIT},
|
||||
{RPCResult::Type::OBJ, "scriptPubKey", "",
|
||||
{
|
||||
{RPCResult::Type::STR, "asm", "The asm"},
|
||||
{RPCResult::Type::STR, "desc", "Inferred descriptor for the output"},
|
||||
{RPCResult::Type::STR_HEX, "hex", "The hex"},
|
||||
{RPCResult::Type::STR, "type", "The type, eg 'pubkeyhash'"},
|
||||
{RPCResult::Type::STR, "address", /*optional=*/true, "The Bitcoin address (only if a well-defined address exists)"},
|
||||
}},
|
||||
}},
|
||||
{RPCResult::Type::OBJ_DYN, "partial_signatures", /*optional=*/true, "",
|
||||
{
|
||||
{RPCResult::Type::STR, "pubkey", "The public key and signature that corresponds to it."},
|
||||
}},
|
||||
{RPCResult::Type::STR, "sighash", /*optional=*/true, "The sighash type to be used"},
|
||||
{RPCResult::Type::OBJ, "redeem_script", /*optional=*/true, "",
|
||||
{
|
||||
{RPCResult::Type::STR, "asm", "The asm"},
|
||||
{RPCResult::Type::STR_HEX, "hex", "The hex"},
|
||||
{RPCResult::Type::STR, "type", "The type, eg 'pubkeyhash'"},
|
||||
}},
|
||||
{RPCResult::Type::OBJ, "witness_script", /*optional=*/true, "",
|
||||
{
|
||||
{RPCResult::Type::STR, "asm", "The asm"},
|
||||
{RPCResult::Type::STR_HEX, "hex", "The hex"},
|
||||
{RPCResult::Type::STR, "type", "The type, eg 'pubkeyhash'"},
|
||||
}},
|
||||
{RPCResult::Type::ARR, "bip32_derivs", /*optional=*/true, "",
|
||||
{
|
||||
{RPCResult::Type::OBJ, "", "",
|
||||
{
|
||||
{RPCResult::Type::STR, "pubkey", "The public key with the derivation path as the value."},
|
||||
{RPCResult::Type::STR, "master_fingerprint", "The fingerprint of the master key"},
|
||||
{RPCResult::Type::STR, "path", "The path"},
|
||||
}},
|
||||
}},
|
||||
{RPCResult::Type::OBJ, "final_scriptSig", /*optional=*/true, "",
|
||||
{
|
||||
{RPCResult::Type::STR, "asm", "The asm"},
|
||||
{RPCResult::Type::STR, "hex", "The hex"},
|
||||
}},
|
||||
{RPCResult::Type::ARR, "final_scriptwitness", /*optional=*/true, "",
|
||||
{
|
||||
{RPCResult::Type::STR_HEX, "", "hex-encoded witness data (if any)"},
|
||||
}},
|
||||
{RPCResult::Type::OBJ_DYN, "ripemd160_preimages", /*optional=*/ true, "",
|
||||
{
|
||||
{RPCResult::Type::STR, "hash", "The hash and preimage that corresponds to it."},
|
||||
}},
|
||||
{RPCResult::Type::OBJ_DYN, "sha256_preimages", /*optional=*/ true, "",
|
||||
{
|
||||
{RPCResult::Type::STR, "hash", "The hash and preimage that corresponds to it."},
|
||||
}},
|
||||
{RPCResult::Type::OBJ_DYN, "hash160_preimages", /*optional=*/ true, "",
|
||||
{
|
||||
{RPCResult::Type::STR, "hash", "The hash and preimage that corresponds to it."},
|
||||
}},
|
||||
{RPCResult::Type::OBJ_DYN, "hash256_preimages", /*optional=*/ true, "",
|
||||
{
|
||||
{RPCResult::Type::STR, "hash", "The hash and preimage that corresponds to it."},
|
||||
}},
|
||||
{RPCResult::Type::STR_HEX, "taproot_key_path_sig", /*optional=*/ true, "hex-encoded signature for the Taproot key path spend"},
|
||||
{RPCResult::Type::ARR, "taproot_script_path_sigs", /*optional=*/ true, "",
|
||||
{
|
||||
{RPCResult::Type::OBJ, "signature", /*optional=*/ true, "The signature for the pubkey and leaf hash combination",
|
||||
{
|
||||
{RPCResult::Type::STR, "pubkey", "The x-only pubkey for this signature"},
|
||||
{RPCResult::Type::STR, "leaf_hash", "The leaf hash for this signature"},
|
||||
{RPCResult::Type::STR, "sig", "The signature itself"},
|
||||
}},
|
||||
}},
|
||||
{RPCResult::Type::ARR, "taproot_scripts", /*optional=*/ true, "",
|
||||
{
|
||||
{RPCResult::Type::OBJ, "", "",
|
||||
{
|
||||
{RPCResult::Type::STR_HEX, "script", "A leaf script"},
|
||||
{RPCResult::Type::NUM, "leaf_ver", "The version number for the leaf script"},
|
||||
{RPCResult::Type::ARR, "control_blocks", "The control blocks for this script",
|
||||
{
|
||||
{RPCResult::Type::STR_HEX, "control_block", "A hex-encoded control block for this script"},
|
||||
}},
|
||||
}},
|
||||
}},
|
||||
{RPCResult::Type::ARR, "taproot_bip32_derivs", /*optional=*/ true, "",
|
||||
{
|
||||
{RPCResult::Type::OBJ, "", "",
|
||||
{
|
||||
{RPCResult::Type::STR, "pubkey", "The x-only public key this path corresponds to"},
|
||||
{RPCResult::Type::STR, "master_fingerprint", "The fingerprint of the master key"},
|
||||
{RPCResult::Type::STR, "path", "The path"},
|
||||
{RPCResult::Type::ARR, "leaf_hashes", "The hashes of the leaves this pubkey appears in",
|
||||
{
|
||||
{RPCResult::Type::STR_HEX, "hash", "The hash of a leaf this pubkey appears in"},
|
||||
}},
|
||||
}},
|
||||
}},
|
||||
{RPCResult::Type::STR_HEX, "taproot_internal_key", /*optional=*/ true, "The hex-encoded Taproot x-only internal key"},
|
||||
{RPCResult::Type::STR_HEX, "taproot_merkle_root", /*optional=*/ true, "The hex-encoded Taproot merkle root"},
|
||||
{RPCResult::Type::OBJ_DYN, "unknown", /*optional=*/ true, "The unknown input fields",
|
||||
{
|
||||
{RPCResult::Type::STR_HEX, "key", "(key-value pair) An unknown key-value pair"},
|
||||
}},
|
||||
{RPCResult::Type::ARR, "proprietary", /*optional=*/true, "The input proprietary map",
|
||||
{
|
||||
{RPCResult::Type::OBJ, "", "",
|
||||
{
|
||||
{RPCResult::Type::STR_HEX, "identifier", "The hex string for the proprietary identifier"},
|
||||
{RPCResult::Type::NUM, "subtype", "The number for the subtype"},
|
||||
{RPCResult::Type::STR_HEX, "key", "The hex for the key"},
|
||||
{RPCResult::Type::STR_HEX, "value", "The hex for the value"},
|
||||
}},
|
||||
}},
|
||||
}},
|
||||
}},
|
||||
{RPCResult::Type::ARR, "outputs", "",
|
||||
{
|
||||
{RPCResult::Type::OBJ, "", "",
|
||||
{
|
||||
{RPCResult::Type::OBJ, "redeem_script", /*optional=*/true, "",
|
||||
{
|
||||
{RPCResult::Type::STR, "asm", "The asm"},
|
||||
{RPCResult::Type::STR_HEX, "hex", "The hex"},
|
||||
{RPCResult::Type::STR, "type", "The type, eg 'pubkeyhash'"},
|
||||
}},
|
||||
{RPCResult::Type::OBJ, "witness_script", /*optional=*/true, "",
|
||||
{
|
||||
{RPCResult::Type::STR, "asm", "The asm"},
|
||||
{RPCResult::Type::STR_HEX, "hex", "The hex"},
|
||||
{RPCResult::Type::STR, "type", "The type, eg 'pubkeyhash'"},
|
||||
}},
|
||||
{RPCResult::Type::ARR, "bip32_derivs", /*optional=*/true, "",
|
||||
{
|
||||
{RPCResult::Type::OBJ, "", "",
|
||||
{
|
||||
{RPCResult::Type::STR, "pubkey", "The public key this path corresponds to"},
|
||||
{RPCResult::Type::STR, "master_fingerprint", "The fingerprint of the master key"},
|
||||
{RPCResult::Type::STR, "path", "The path"},
|
||||
}},
|
||||
}},
|
||||
{RPCResult::Type::STR_HEX, "taproot_internal_key", /*optional=*/ true, "The hex-encoded Taproot x-only internal key"},
|
||||
{RPCResult::Type::ARR, "taproot_tree", /*optional=*/ true, "The tuples that make up the Taproot tree, in depth first search order",
|
||||
{
|
||||
{RPCResult::Type::OBJ, "tuple", /*optional=*/ true, "A single leaf script in the taproot tree",
|
||||
{
|
||||
{RPCResult::Type::NUM, "depth", "The depth of this element in the tree"},
|
||||
{RPCResult::Type::NUM, "leaf_ver", "The version of this leaf"},
|
||||
{RPCResult::Type::STR, "script", "The hex-encoded script itself"},
|
||||
}},
|
||||
}},
|
||||
{RPCResult::Type::ARR, "taproot_bip32_derivs", /*optional=*/ true, "",
|
||||
{
|
||||
{RPCResult::Type::OBJ, "", "",
|
||||
{
|
||||
{RPCResult::Type::STR, "pubkey", "The x-only public key this path corresponds to"},
|
||||
{RPCResult::Type::STR, "master_fingerprint", "The fingerprint of the master key"},
|
||||
{RPCResult::Type::STR, "path", "The path"},
|
||||
{RPCResult::Type::ARR, "leaf_hashes", "The hashes of the leaves this pubkey appears in",
|
||||
{
|
||||
{RPCResult::Type::STR_HEX, "hash", "The hash of a leaf this pubkey appears in"},
|
||||
}},
|
||||
}},
|
||||
}},
|
||||
{RPCResult::Type::OBJ_DYN, "unknown", /*optional=*/true, "The unknown output fields",
|
||||
{
|
||||
{RPCResult::Type::STR_HEX, "key", "(key-value pair) An unknown key-value pair"},
|
||||
}},
|
||||
{RPCResult::Type::ARR, "proprietary", /*optional=*/true, "The output proprietary map",
|
||||
{
|
||||
{RPCResult::Type::OBJ, "", "",
|
||||
{
|
||||
{RPCResult::Type::STR_HEX, "identifier", "The hex string for the proprietary identifier"},
|
||||
{RPCResult::Type::NUM, "subtype", "The number for the subtype"},
|
||||
{RPCResult::Type::STR_HEX, "key", "The hex for the key"},
|
||||
{RPCResult::Type::STR_HEX, "value", "The hex for the value"},
|
||||
}},
|
||||
}},
|
||||
}},
|
||||
}},
|
||||
decodepsbt_inputs,
|
||||
decodepsbt_outputs,
|
||||
{RPCResult::Type::STR_AMOUNT, "fee", /*optional=*/true, "The transaction fee paid if all UTXOs slots in the PSBT have been filled."},
|
||||
}
|
||||
},
|
||||
|
|
|
@ -36,7 +36,6 @@
|
|||
#include <timedata.h>
|
||||
#include <txdb.h>
|
||||
#include <txmempool.h>
|
||||
#include <util/designator.h>
|
||||
#include <util/strencodings.h>
|
||||
#include <util/string.h>
|
||||
#include <util/thread.h>
|
||||
|
@ -158,10 +157,10 @@ BasicTestingSetup::~BasicTestingSetup()
|
|||
CTxMemPool::Options MemPoolOptionsForTest(const NodeContext& node)
|
||||
{
|
||||
CTxMemPool::Options mempool_opts{
|
||||
Desig(estimator) node.fee_estimator.get(),
|
||||
.estimator = node.fee_estimator.get(),
|
||||
// Default to always checking mempool regardless of
|
||||
// chainparams.DefaultConsistencyChecks for tests
|
||||
Desig(check_ratio) 1,
|
||||
.check_ratio = 1,
|
||||
};
|
||||
ApplyArgsManOptions(*node.args, mempool_opts);
|
||||
return mempool_opts;
|
||||
|
|
|
@ -1,21 +0,0 @@
|
|||
// Copyright (c) 2022 The Bitcoin Core developers
|
||||
// Distributed under the MIT software license, see the accompanying
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
#ifndef BITCOIN_UTIL_DESIGNATOR_H
|
||||
#define BITCOIN_UTIL_DESIGNATOR_H
|
||||
|
||||
/**
|
||||
* Designated initializers can be used to avoid ordering mishaps in aggregate
|
||||
* initialization. However, they do not prevent uninitialized members. The
|
||||
* checks can be disabled by defining DISABLE_DESIGNATED_INITIALIZER_ERRORS.
|
||||
* This should only be needed on MSVC 2019. MSVC 2022 supports them with the
|
||||
* option "/std:c++20"
|
||||
*/
|
||||
#ifndef DISABLE_DESIGNATED_INITIALIZER_ERRORS
|
||||
#define Desig(field_name) .field_name =
|
||||
#else
|
||||
#define Desig(field_name)
|
||||
#endif
|
||||
|
||||
#endif // BITCOIN_UTIL_DESIGNATOR_H
|
Loading…
Add table
Reference in a new issue