Merge bitcoin/bitcoin#36116: iwyu: Fix warnings in `src/rpc` and treat them as errors
What changed, and why it matters
This commit is a routine code cleanup that adjusts which C++ header files are included in the RPC (remote procedure call) parts of Bitcoin Core. It also tells the project's automated 'include what you use' checker to treat mistakes in those files as errors going forward. There is no change to program logic, no bug fix, and no security-relevant behavior.
No security action needed. Treat as normal maintenance; standard review/CI verification is sufficient.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The merge commit applies PR #36116, which is an IWYU (Include What You Use) hygiene pass across src/rpc/, src/rest.cpp, and a couple of fuzz tests. The diff consists entirely of adding, removing, or reordering #include directives and forward declarations so that each translation unit declares exactly the symbols it uses. The CI script 03_test_script.sh is updated to add src/rpc/., src/test/fuzz/(kitchen_sink|parse_univalue), and src/rest.cpp to FILES_WITH_ENFORCED_IWYU and to add rpc/protocol.h to the –check_also list. No functional code is modified.
Changed components
src/rpc/*.cppsrc/rpc/*.hsrc/rest.cppsrc/test/fuzz/kitchen_sink.cppsrc/test/fuzz/parse_univalue.cppci/test/03_test_script.shInspect captured patch +311 / −95
### ci/test/03_test_script.sh
@@ -234,7 +234,7 @@ fi
if [[ "${RUN_IWYU}" == true ]]; then
# TODO: Consider enforcing IWYU across the entire codebase.
- FILES_WITH_ENFORCED_IWYU='/src/((bench|common|consensus|crypto|index|init|kernel|primitives|script|univalue/(lib|test)|util|zmq)/.*|node/(blockstorage|interfaces|miner|mining_args|utxo_snapshot)|test/fuzz/minisketch|rpc/mining|clientversion|core_io|signet|init)\.cpp'
+ FILES_WITH_ENFORCED_IWYU='/src/((bench|common|consensus|crypto|index|init|kernel|primitives|rpc|script|univalue/(lib|test)|util|zmq)/.*|node/(blockstorage|interfaces|miner|mining_args|utxo_snapshot)|test/fuzz/(kitchen_sink|minisketch|parse_univalue)|clientversion|core_io|rest|signet|init)\.cpp'
jq --arg patterns "$FILES_WITH_ENFORCED_IWYU" 'map(select(.file | test($patterns)))' "${BASE_BUILD_DIR}/compile_commands.json" > "${BASE_BUILD_DIR}/compile_commands_iwyu_errors.json"
jq --arg patterns "$FILES_WITH_ENFORCED_IWYU" 'map(select(.file | test($patterns) | not))' "${BASE_BUILD_DIR}/compile_commands.json" > "${BASE_BUILD_DIR}/compile_commands_iwyu_warnings.json"
@@ -254,6 +254,7 @@ if [[ "${RUN_IWYU}" == true ]]; then
-Xiwyu --check_also='*/consensus/*\.h' \
-Xiwyu --check_also='*/interfaces/*\.h' \
-Xiwyu --check_also='*/primitives/transaction_identifier\.h' \
+ -Xiwyu --check_also='*/rpc/protocol\.h' \
2>&1 || true
} | tee /tmp/iwyu_ci.out
python3 "/include-what-you-use/fix_includes.py" --nosafe_headers < /tmp/iwyu_ci.out
### src/rest.cpp
@@ -7,36 +7,52 @@
#include <blockfilter.h>
#include <chain.h>
-#include <chainparams.h>
+#include <coins.h>
+#include <consensus/params.h>
#include <core_io.h>
+#include <crypto/hex_base.h>
#include <flatfile.h>
#include <httpserver.h>
#include <index/blockfilterindex.h>
#include <index/txindex.h>
#include <node/blockstorage.h>
#include <node/context.h>
+#include <node/transaction.h>
#include <primitives/block.h>
#include <primitives/transaction.h>
#include <rpc/blockchain.h>
#include <rpc/mempool.h>
#include <rpc/protocol.h>
+#include <rpc/request.h>
#include <rpc/server.h>
-#include <rpc/server_util.h>
+#include <rpc/util.h>
+#include <serialize.h>
#include <streams.h>
#include <sync.h>
+#include <tinyformat.h>
#include <txmempool.h>
+#include <uint256.h>
#include <undo.h>
+#include <univalue.h>
#include <util/any.h>
#include <util/check.h>
#include <util/overflow.h>
#include <util/strencodings.h>
+#include <util/string.h>
#include <validation.h>
#include <any>
+#include <cstdint>
+#include <cstring>
+#include <ios>
+#include <memory>
+#include <optional>
+#include <span>
+#include <stdexcept>
+#include <string_view>
+#include <utility>
#include <vector>
-#include <univalue.h>
-
using node::GetTransaction;
using node::NodeContext;
using util::SplitString;
### src/rpc/blockchain.cpp
@@ -4,66 +4,96 @@
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
#include <rpc/blockchain.h>
+#include <rpc/register.h> // IWYU pragma: associated
+#include <arith_uint256.h>
#include <blockfilter.h>
#include <chain.h>
#include <chainparams.h>
#include <chainparamsbase.h>
-#include <clientversion.h>
#include <coins.h>
#include <common/args.h>
#include <consensus/amount.h>
+#include <consensus/consensus.h>
#include <consensus/params.h>
#include <consensus/validation.h>
#include <core_io.h>
+#include <crypto/hex_base.h>
+#include <dbwrapper.h>
#include <deploymentinfo.h>
-#include <deploymentstatus.h>
#include <flatfile.h>
-#include <hash.h>
+#include <index/base.h>
#include <index/blockfilterindex.h>
#include <index/coinstatsindex.h>
#include <interfaces/mining.h>
+#include <interfaces/types.h>
#include <kernel/coinstats.h>
#include <logging/timer.h>
#include <net.h>
#include <net_processing.h>
#include <node/blockstorage.h>
#include <node/context.h>
-#include <node/transaction.h>
#include <node/utxo_snapshot.h>
#include <node/warnings.h>
+#include <policy/feerate.h>
+#include <prevector.h>
+#include <primitives/block.h>
#include <primitives/transaction.h>
+#include <protocol.h>
+#include <rpc/protocol.h>
#include <rpc/rawtransaction_util.h>
+#include <rpc/request.h>
#include <rpc/server.h>
#include <rpc/server_util.h>
#include <rpc/util.h>
#include <script/descriptor.h>
+#include <script/interpreter.h>
+#include <script/script.h>
+#include <script/signingprovider.h>
#include <serialize.h>
+#include <span.h>
#include <streams.h>
#include <sync.h>
#include <tinyformat.h>
#include <txdb.h>
#include <txmempool.h>
+#include <uint256.h>
#include <undo.h>
#include <univalue.h>
+#include <util/chaintype.h>
#include <util/check.h>
+#include <util/expected.h>
#include <util/fs.h>
-#include <util/strencodings.h>
+#include <util/log.h>
+#include <util/result.h>
+#include <util/string.h>
#include <util/syserror.h>
+#include <util/time.h>
#include <util/translation.h>
#include <validation.h>
#include <validationinterface.h>
#include <versionbits.h>
+#include <algorithm>
+#include <array>
+#include <atomic>
+#include <cerrno>
+#include <compare>
+#include <cstddef>
#include <cstdint>
-
-#include <condition_variable>
-#include <iterator>
+#include <cstdio>
+#include <functional>
+#include <ios>
+#include <map>
#include <memory>
-#include <mutex>
#include <optional>
+#include <ratio>
+#include <set>
+#include <span>
+#include <stdexcept>
#include <string>
#include <string_view>
+#include <tuple>
#include <vector>
using kernel::CCoinsStats;
### src/rpc/blockchain.h
@@ -6,22 +6,23 @@
#define BITCOIN_RPC_BLOCKCHAIN_H
#include <consensus/amount.h>
-#include <core_io.h>
-#include <streams.h>
#include <sync.h>
#include <util/fs.h>
#include <validation.h>
-#include <any>
#include <cstdint>
#include <optional>
+#include <utility>
#include <vector>
class CBlock;
class CBlockIndex;
class CChain;
-class Chainstate;
class UniValue;
+class AutoFile;
+class uint256;
+enum class TxVerbosity;
+
namespace node {
class BlockManager;
struct NodeContext;
### src/rpc/client.cpp
@@ -3,14 +3,17 @@
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
-#include <common/args.h>
#include <rpc/client.h>
+
#include <tinyformat.h>
-#include <cstdint>
-#include <set>
+#include <algorithm>
+#include <cstddef>
+#include <ranges>
+#include <stdexcept>
#include <string>
#include <string_view>
+#include <utility>
//! Specify whether parameter should be parsed by bitcoin-cli as a JSON value,
//! or passed unchanged as a string, or a combination of both.
### src/rpc/client.h
@@ -6,11 +6,11 @@
#ifndef BITCOIN_RPC_CLIENT_H
#define BITCOIN_RPC_CLIENT_H
-#include <string>
-#include <string_view>
-
#include <univalue.h>
+#include <string>
+#include <vector>
+
/** Convert positional arguments to command-specific RPC representation */
UniValue RPCConvertValues(const std::string& strMethod, const std::vector<std::string>& strParams);
### src/rpc/external_signer.cpp
@@ -4,15 +4,19 @@
#include <bitcoin-build-config.h> // IWYU pragma: keep
-#include <common/args.h>
-#include <common/system.h>
#include <external_signer.h>
+#include <rpc/register.h> // IWYU pragma: associated
+
+#include <common/args.h>
#include <rpc/protocol.h>
+#include <rpc/request.h>
#include <rpc/server.h>
#include <rpc/util.h>
-#include <util/strencodings.h>
+#include <univalue.h>
+#include <exception>
#include <string>
+#include <utility>
#include <vector>
#ifdef ENABLE_EXTERNAL_SIGNER
### src/rpc/fees.cpp
@@ -3,27 +3,35 @@
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
+#include <rpc/register.h> // IWYU pragma: associated
+
#include <common/messages.h>
#include <core_io.h>
#include <node/context.h>
#include <policy/feerate.h>
#include <policy/fees/block_policy_estimator.h>
#include <policy/fees/estimator_man.h>
+#include <policy/fees/mempool_estimator.h>
#include <rpc/protocol.h>
#include <rpc/request.h>
#include <rpc/server.h>
#include <rpc/server_util.h>
#include <rpc/util.h>
#include <txmempool.h>
#include <univalue.h>
+#include <util/check.h>
+#include <util/expected.h>
#include <util/fees.h>
#include <validationinterface.h>
#include <algorithm>
#include <array>
#include <cmath>
+#include <map>
#include <string>
#include <string_view>
+#include <utility>
+#include <vector>
using common::FeeModeFromString;
using common::FeeModesDetail;
### src/rpc/mempool.cpp
@@ -3,38 +3,69 @@
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
-#include <rpc/blockchain.h>
+#include <rpc/mempool.h>
+#include <rpc/register.h> // IWYU pragma: associated
-#include <node/mempool_persist.h>
-
-#include <chainparams.h>
#include <common/args.h>
+#include <consensus/amount.h>
#include <consensus/validation.h>
#include <core_io.h>
#include <index/txospenderindex.h>
-#include <kernel/mempool_entry.h>
+#include <net.h>
#include <net_processing.h>
+#include <netaddress.h>
#include <netbase.h>
+#include <node/mempool_persist.h>
#include <node/mempool_persist_args.h>
+#include <node/transaction.h>
+#include <node/txorphanage.h>
#include <node/types.h>
+#include <policy/feerate.h>
+#include <policy/packages.h>
+#include <policy/policy.h>
#include <policy/rbf.h>
-#include <policy/settings.h>
#include <primitives/transaction.h>
+#include <rpc/protocol.h>
+#include <rpc/request.h>
#include <rpc/server.h>
#include <rpc/server_util.h>
#include <rpc/util.h>
+#include <script/script.h>
+#include <sync.h>
+#include <tinyformat.h>
+#include <txgraph.h>
#include <txmempool.h>
+#include <uint256.h>
#include <univalue.h>
+#include <util/check.h>
+#include <util/expected.h>
+#include <util/feefrac.h>
#include <util/fs.h>
#include <util/moneystr.h>
-#include <util/strencodings.h>
+#include <util/string.h>
#include <util/time.h>
#include <util/vector.h>
+#include <validation.h>
+#include <algorithm>
+#include <cstddef>
+#include <cstdint>
+#include <functional>
+#include <list>
#include <map>
+#include <memory>
+#include <optional>
#include <ranges>
+#include <set>
+#include <string>
#include <string_view>
+#include <tuple>
#include <utility>
+#include <vector>
+
+namespace node {
+struct NodeContext;
+} // namespace node
using node::DumpMempool;
### src/rpc/mining.cpp
@@ -6,6 +6,7 @@
#include <bitcoin-build-config.h> // IWYU pragma: keep
#include <interfaces/mining.h>
+#include <rpc/register.h> // IWYU pragma: associated
#include <addresstype.h>
#include <arith_uint256.h>
### src/rpc/net.cpp
@@ -2,47 +2,64 @@
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
+#include <rpc/register.h> // IWYU pragma: associated
#include <rpc/server.h>
#include <addrman.h>
#include <addrman_impl.h>
#include <banman.h>
#include <chainparams.h>
#include <clientversion.h>
-#include <common/args.h>
#include <core_io.h>
-#include <hash.h>
+#include <net.h>
#include <net_permissions.h>
#include <net_processing.h>
#include <net_types.h>
+#include <netaddress.h>
#include <netbase.h>
+#include <node/connection_types.h>
#include <node/context.h>
-#ifdef ENABLE_EMBEDDED_ASMAP
-#include <node/data/ip_asn.dat.h>
-#endif
#include <node/protocol_version.h>
#include <node/warnings.h>
-#include <policy/settings.h>
+#include <policy/feerate.h>
#include <protocol.h>
-#include <rpc/blockchain.h>
#include <rpc/protocol.h>
+#include <rpc/request.h>
#include <rpc/server_util.h>
#include <rpc/util.h>
+#include <semaphore_grant.h>
#include <sync.h>
+#include <tinyformat.h>
+#include <txmempool.h>
#include <univalue.h>
-#include <util/asmap.h>
#include <util/chaintype.h>
+#include <util/check.h>
#include <util/strencodings.h>
#include <util/string.h>
#include <util/time.h>
-#include <util/translation.h>
#include <validation.h>
+#ifdef ENABLE_EMBEDDED_ASMAP
+#include <common/args.h>
+#include <hash.h>
+#include <node/data/ip_asn.dat.h>
+#include <streams.h>
+#include <util/asmap.h>
+#include <util/fs.h>
+#endif
-#include <chrono>
+#include <atomic>
+#include <compare>
+#include <cstdint>
+#include <functional>
+#include <map>
+#include <memory>
#include <optional>
+#include <sstream>
#include <stdexcept>
#include <string>
#include <string_view>
+#include <type_traits>
+#include <utility>
#include <vector>
using node::NodeContext;
### src/rpc/node.cpp
@@ -5,8 +5,10 @@
#include <bitcoin-build-config.h> // IWYU pragma: keep
+#include <rpc/register.h> // IWYU pragma: associated
+
#include <chainparams.h>
-#include <httpserver.h>
+#include <index/base.h>
#include <index/blockfilterindex.h>
#include <index/coinstatsindex.h>
#include <index/txindex.h>
@@ -18,18 +20,30 @@
#include <kernel/cs_main.h>
#include <logging.h>
#include <node/context.h>
+#include <rpc/protocol.h>
+#include <rpc/request.h>
#include <rpc/server.h>
#include <rpc/server_util.h>
#include <rpc/util.h>
#include <scheduler.h>
+#include <support/lockedpool.h>
+#include <sync.h>
#include <tinyformat.h>
#include <univalue.h>
-#include <util/any.h>
#include <util/check.h>
#include <util/time.h>
+#include <validationinterface.h>
#include <cstdint>
+#include <cstdio>
+#include <cstdlib>
#include <limits>
+#include <memory>
+#include <optional>
+#include <stdexcept>
+#include <string>
+#include <utility>
+#include <vector>
#ifdef HAVE_MALLOC_INFO
#include <malloc.h>
#endif
### src/rpc/output_script.cpp
@@ -3,6 +3,11 @@
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
+#include <rpc/register.h> // IWYU pragma: associated
+
+#include <addresstype.h>
+#include <crypto/hex_base.h>
+#include <key.h>
#include <key_io.h>
#include <outputtype.h>
#include <pubkey.h>
@@ -16,14 +21,18 @@
#include <tinyformat.h>
#include <univalue.h>
#include <util/check.h>
-#include <util/strencodings.h>
+#include <cstddef>
#include <cstdint>
+#include <map>
#include <memory>
#include <optional>
+#include <span>
#include <string>
#include <string_view>
#include <tuple>
+#include <utility>
+#include <variant>
#include <vector>
static RPCMethod validateaddress()
### src/rpc/protocol.h
@@ -6,6 +6,8 @@
#ifndef BITCOIN_RPC_PROTOCOL_H
#define BITCOIN_RPC_PROTOCOL_H
+#include <string_view>
+
//! HTTP status codes
enum HTTPStatusCode : int
{
### src/rpc/rawtransaction.cpp
@@ -3,48 +3,75 @@
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
+#include <rpc/register.h> // IWYU pragma: associated
+
+#include <addresstype.h>
#include <base58.h>
#include <chain.h>
#include <coins.h>
+#include <common/types.h>
#include <consensus/amount.h>
-#include <consensus/validation.h>
#include <core_io.h>
+#include <crypto/common.h>
+#include <crypto/hex_base.h>
+#include <hash.h>
#include <index/txindex.h>
+#include <kernel/chainparams.h>
+#include <key.h>
#include <key_io.h>
#include <node/blockstorage.h>
#include <node/coin.h>
#include <node/context.h>
#include <node/psbt.h>
#include <node/transaction.h>
-#include <node/types.h>
-#include <policy/packages.h>
-#include <policy/policy.h>
-#include <policy/rbf.h>
+#include <policy/feerate.h>
+#include <primitives/block.h>
#include <primitives/transaction.h>
#include <psbt.h>
+#include <pubkey.h>
#include <random.h>
-#include <rpc/blockchain.h>
+#include <rpc/protocol.h>
#include <rpc/rawtransaction_util.h>
+#include <rpc/request.h>
#include <rpc/server.h>
#include <rpc/server_util.h>
#include <rpc/util.h>
+#include <script/interpreter.h>
+#include <script/keyorigin.h>
#include <script/script.h>
#include <script/sign.h>
#include <script/signingprovider.h>
#include <script/solver.h>
+#include <serialize.h>
+#include <streams.h>
+#include <sync.h>
+#include <tinyformat.h>
+#include <txmempool.h>
#include <uint256.h>
#include <undo.h>
+#include <univalue.h>
#include <util/bip32.h>
#include <util/check.h>
+#include <util/expected.h>
+#include <util/result.h>
#include <util/strencodings.h>
-#include <util/string.h>
+#include <util/translation.h>
#include <util/vector.h>
#include <validation.h>
-#include <validationinterface.h>
+#include <algorithm>
+#include <any>
+#include <bitset>
+#include <cstddef>
#include <cstdint>
-
-#include <univalue.h>
+#include <map>
+#include <memory>
+#include <optional>
+#include <set>
+#include <span>
+#include <tuple>
+#include <utility>
+#include <vector>
using node::AnalyzePSBT;
using node::FindCoins;
### src/rpc/rawtransaction_util.cpp
@@ -8,20 +8,29 @@
#include <coins.h>
#include <consensus/amount.h>
#include <core_io.h>
+#include <crypto/hex_base.h>
#include <key_io.h>
+#include <policy/feerate.h>
#include <policy/policy.h>
#include <primitives/transaction.h>
+#include <rpc/protocol.h>
#include <rpc/request.h>
#include <rpc/util.h>
+#include <script/interpreter.h>
+#include <script/script.h>
#include <script/sign.h>
#include <script/signingprovider.h>
#include <tinyformat.h>
#include <univalue.h>
#include <util/check.h>
#include <util/rbf.h>
-#include <util/string.h>
-#include <util/strencodings.h>
#include <util/translation.h>
+#include <util/vector.h>
+
+#include <cstddef>
+#include <set>
+#include <span>
+#include <variant>
void AddInputs(CMutableTransaction& rawTx, const UniValue& inputs_in, std::optional<bool> rbf)
{
### src/rpc/rawtransaction_util.h
@@ -8,9 +8,13 @@
#include <addresstype.h>
#include <consensus/amount.h>
#include <rpc/util.h>
+
+#include <cstdint>
#include <map>
-#include <string>
#include <optional>
+#include <string>
+#include <utility>
+#include <vector>
struct bilingual_str;
struct FlatSigningProvider;
### src/rpc/request.cpp
@@ -6,16 +6,21 @@
#include <rpc/request.h>
#include <common/args.h>
+#include <crypto/hex_base.h>
#include <logging.h>
#include <random.h>
#include <rpc/protocol.h>
#include <util/fs.h>
#include <util/fs_helpers.h>
#include <util/strencodings.h>
+#include <cstddef>
#include <fstream>
+#include <span>
#include <stdexcept>
#include <string>
+#include <system_error>
+#include <utility>
#include <vector>
/**
### src/rpc/request.h
@@ -6,12 +6,14 @@
#ifndef BITCOIN_RPC_REQUEST_H
#define BITCOIN_RPC_REQUEST_H
+#include <univalue.h>
+#include <util/fs.h>
+
#include <any>
+#include <cstdint>
#include <optional>
#include <string>
-
-#include <univalue.h>
-#include <util/fs.h>
+#include <vector>
enum class JSONRPCVersion {
V1_LEGACY,
### src/rpc/server.cpp
@@ -11,22 +11,26 @@
#include <common/system.h>
#include <logging.h>
#include <node/context.h>
-#include <node/kernel_notifications.h>
+#include <rpc/protocol.h>
#include <rpc/server_util.h>
#include <rpc/util.h>
#include <sync.h>
+#include <tinyformat.h>
+#include <util/check.h>
+#include <util/fs.h>
#include <util/overloaded.h>
-#include <util/signalinterrupt.h>
#include <util/strencodings.h>
#include <util/string.h>
#include <util/time.h>
-#include <validation.h>
#include <algorithm>
-#include <cassert>
-#include <chrono>
-#include <memory>
+#include <atomic>
+#include <cstddef>
+#include <exception>
+#include <list>
#include <mutex>
+#include <optional>
+#include <set>
#include <span>
#include <string_view>
#include <unordered_map>
### src/rpc/server.h
@@ -8,16 +8,15 @@
#include <rpc/request.h>
#include <rpc/util.h>
+#include <univalue.h>
#include <cstdint>
#include <functional>
#include <map>
#include <string>
#include <string_view>
-
-#include <univalue.h>
-
-class CRPCCommand;
+#include <utility>
+#include <vector>
/** Query whether RPC is running */
bool IsRPCRunning();
### src/rpc/server_util.cpp
@@ -5,19 +5,22 @@
#include <rpc/server_util.h>
#include <chain.h>
-#include <common/args.h>
-#include <net_processing.h>
#include <node/context.h>
#include <node/miner.h>
-#include <policy/fees/estimator_man.h>
#include <pow.h>
+#include <primitives/block.h>
#include <rpc/protocol.h>
#include <rpc/request.h>
-#include <txmempool.h>
+#include <uint256.h>
#include <util/any.h>
-#include <validation.h>
#include <any>
+#include <memory>
+#include <string>
+
+namespace Consensus {
+struct Params;
+} // namespace Consensus
using node::NodeContext;
using node::UpdateTime;
### src/rpc/server_util.h
@@ -7,8 +7,6 @@
#include <any>
-#include <consensus/params.h>
-
class AddrMan;
class ArgsManager;
class CBlockIndex;
@@ -18,6 +16,10 @@ class CTxMemPool;
class ChainstateManager;
class PeerManager;
class BanMan;
+namespace Consensus {
+struct Params;
+} // namespace Consensus
+
namespace node {
struct NodeContext;
} // namespace node
### src/rpc/signmessage.cpp
@@ -4,6 +4,8 @@
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
#include <common/signmessage.h>
+#include <rpc/register.h> // IWYU pragma: associated
+
#include <key.h>
#include <key_io.h>
#include <rpc/protocol.h>
@@ -13,6 +15,8 @@
#include <univalue.h>
#include <string>
+#include <string_view>
+#include <vector>
static RPCMethod verifymessage()
{
### src/rpc/txoutproof.cpp
@@ -3,21 +3,36 @@
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
+#include <rpc/register.h> // IWYU pragma: associated
+
#include <chain.h>
-#include <chainparams.h>
#include <coins.h>
+#include <crypto/hex_base.h>
#include <index/txindex.h>
#include <merkleblock.h>
#include <node/blockstorage.h>
+#include <node/transaction.h>
+#include <primitives/block.h>
#include <primitives/transaction.h>
#include <rpc/blockchain.h>
+#include <rpc/protocol.h>
+#include <rpc/request.h>
#include <rpc/server.h>
#include <rpc/server_util.h>
#include <rpc/util.h>
+#include <streams.h>
+#include <sync.h>
+#include <uint256.h>
#include <univalue.h>
-#include <util/strencodings.h>
#include <validation.h>
+#include <memory>
+#include <set>
+#include <span>
+#include <string>
+#include <utility>
+#include <vector>
+
using node::GetTransaction;
static RPCMethod gettxoutproof()
### src/rpc/util.cpp
@@ -2,19 +2,20 @@
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
+#include <rpc/util.h>
+
+#include <arith_uint256.h>
#include <chain.h>
#include <common/args.h>
#include <common/messages.h>
#include <common/types.h>
#include <consensus/amount.h>
#include <core_io.h>
-#include <key_io.h>
+#include <crypto/hex_base.h>
#include <node/types.h>
#include <outputtype.h>
#include <pow.h>
-#include <rpc/util.h>
#include <script/descriptor.h>
-#include <script/interpreter.h>
#include <script/signingprovider.h>
#include <script/solver.h>
#include <tinyformat.h>
@@ -29,6 +30,9 @@
#include <algorithm>
#include <iterator>
+#include <memory>
+#include <set>
+#include <span>
#include <string_view>
#include <tuple>
#include <utility>
### src/rpc/util.h
@@ -7,35 +7,33 @@
#include <addresstype.h>
#include <consensus/amount.h>
-#include <node/transaction.h>
-#include <outputtype.h>
+#include <policy/feerate.h>
#include <pubkey.h>
#include <rpc/protocol.h>
#include <rpc/request.h>
#include <script/script.h>
-#include <script/sign.h>
#include <uint256.h>
#include <univalue.h>
#include <util/check.h>
#include <cstddef>
#include <cstdint>
#include <functional>
-#include <initializer_list>
#include <map>
#include <optional>
+#include <stdexcept>
#include <string>
#include <string_view>
#include <type_traits>
#include <utility>
#include <variant>
#include <vector>
-class JSONRPCRequest;
-enum ServiceFlags : uint64_t;
enum class OutputType;
struct FlatSigningProvider;
struct bilingual_str;
+class CBlockIndex;
+
namespace common {
enum class PSBTError;
} // namespace common
@@ -63,8 +61,6 @@ extern const std::string UNIX_EPOCH_TIME;
*/
extern const std::string EXAMPLE_ADDRESS[2];
-class FillableSigningProvider;
-class CScript;
struct Sections;
struct HelpResult : std::runtime_error {
### src/test/fuzz/kitchen_sink.cpp
@@ -5,16 +5,18 @@
#include <common/messages.h>
#include <merkleblock.h>
#include <node/types.h>
+#include <outputtype.h>
#include <policy/fees/block_policy_estimator.h>
#include <rpc/util.h>
#include <test/fuzz/FuzzedDataProvider.h>
#include <test/fuzz/fuzz.h>
#include <test/fuzz/util.h>
+#include <util/check.h>
#include <util/translation.h>
-#include <array>
#include <cstdint>
#include <optional>
+#include <string>
#include <vector>
using common::TransactionErrorString;
### src/test/fuzz/parse_univalue.cpp
@@ -3,12 +3,15 @@
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
#include <chainparams.h>
-#include <rpc/client.h>
#include <rpc/util.h>
+#include <script/signingprovider.h>
#include <test/fuzz/fuzz.h>
+#include <univalue.h>
#include <util/chaintype.h>
+#include <functional>
#include <limits>
+#include <stdexcept>
#include <string>
void initialize_parse_univalue()Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.