Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

netinfo: add peer services column and outbound-only option #30930

Merged

Conversation

jonatack
Copy link
Member

@jonatack jonatack commented Sep 19, 2024

Been using this since May 2023.

  • add a peer services column (considered displaying the p2p_v2 flag as "p" or "2"; proposing "2" here for continuity with the "v" column, but "p" is fine for me as well)
  • clarify in the help that "relaytxes" and "addr_relay_enabled" are from getpeerinfo
  • hoist (and rename) the max level constant to use in top-level help, to avoid overlooking to update the top-level help if the value of the constant changes (as caught by Larry Ruane in review below)
  • add an optional "outonly" (or "o") argument for an outbound-only peer list, as suggested by Vasil Dimov in his review below. Several people have requested this, to keep the output within screen limits when running netinfo as a live dashboard (i.e. with watch) on a node with many peers. While doing this, also permit passing "h" for the help in addition to "help".

@DrahtBot
Copy link
Contributor

DrahtBot commented Sep 19, 2024

The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.

Code Coverage & Benchmarks

For details see: https://corecheck.dev/bitcoin/bitcoin/pulls/30930.

Reviews

See the guideline for information on the review process.

Type Reviewers
ACK rkrux, tdb3, brunoerg, achow101
Stale ACK 1440000bytes, vasild

If your review is incorrectly listed, please react with 👎 to this comment and the bot will ignore it on the next update.

Conflicts

No conflicts as of last run.

@sipa
Copy link
Member

sipa commented Sep 19, 2024

It's possible to be connected to a peer that supports the v2 service using the v1 protocol.

@jonatack
Copy link
Member Author

jonatack commented Sep 19, 2024

It's possible to be connected to a peer that supports the v2 service using the v1 protocol.

Thanks! (I must be missing something.)

@sipa
Copy link
Member

sipa commented Sep 19, 2024

I meant this as a comment on:

remove the "v" transport protocol column, as that info is provided in the new peer services column

They represent different information. The "v" transport protocol column currently conveys whether or not you are right now speaking to that peer through the v1 or v2 protocol.

Peer services are about what a peer supports, not what protocol you're speaking with it.

If you run with -v2transport=0, the transport protocol will be v1 with all peers, includes ones that support v2. Similarly, If a peer recently upgraded to support v2, but you didn't know about that when you connected to them, you may be using v1 with them.

@jonatack jonatack force-pushed the 2023-05-add-peer-services-to-netinfo branch from 18fcca4 to 51206c6 Compare September 19, 2024 16:58
@jonatack
Copy link
Member Author

jonatack commented Sep 19, 2024

@sipa I guess it may make sense to only return the "v" column if the server node is -v2transport=0?

@sipa
Copy link
Member

sipa commented Sep 19, 2024

@jonatack I don't think so. It's possible that the service flag and transport type differ even with -v2transport=1.

@jonatack
Copy link
Member Author

jonatack commented Sep 19, 2024

@sipa Thank you. Dropped the commit that removed the "v" column.

<->   type   net   serv  v  mping   ping send recv  txn  blk  hb addrp addrl  age  asmap  id 
 in        onion    nwl  1    360    360    1    7   19             38         19          4 
 in        onion    nwl  1    372    472    1    6                  19         17         45 
 in        onion    nwl  1    499    593   25   25                   2          4         89 
 in        onion   nbwl  1    512    608    1   34                   .         18         26 
 in        onion nbwcl2  2    523    610    1    0   18             37         19         11 
 in        onion         1    565    789   82   81    *              .         11         71 
 in        onion    nwl  1    579    579   18  906                             15         57 
 in          i2p   nwl2  1    585   1200    6    2    6             27         17         47 
 in        onion   nwl2  2    603    885    1    2                  29         17         38 
 in        onion   nwl2  2    611   2714    1    2    4             39         18         20 
 in        onion   nbwl  1    615    615    1   27                   .          4         87 
 in        onion   nwl2  2    621    669    0    3   10             35         18         25 
 in        onion    nwl  1    626   2463    1    6    5             39     1   19          7 
 in        onion    nwl  1    647    651    1    4                  25         17         42 
 in        onion   nwl2  2    659   1151    1    0                  37         17         48 
 in          i2p   nwcl  1    867    867    1    0                              0        100 
 in          i2p  nwcl2  2    936   1369    0    0                  16         15         56 
 in          i2p   nwl2  1    972   1716    1    4                  30         17         39 
 in        onion   nwl2  2   1020   2064    1    1    0             36         18         30 
 in          i2p  nwcl2  2   1093   1176    1    4                  12          7         80 
 in          i2p   nbwl  1   1094  14142    6    0   14             31         17         49 
 in          i2p   nbwl  1   1245   1614    1    4                  16          6         82 
 in          i2p  nbwl2  2   1425 340508   37  103                   2         11         69 
 in          i2p    nwl  1   1546   1863    1    0                  24         18         21 
 in          i2p   nbwl  1   2202   2202   74   68                              1         97 
out  block  ipv4    nwl  1     91    100   88   87    *   10  .      .         19   7843   0 
out   full  ipv4    wl2  2    102    108    2   13    1           1023         19  20115  10 
out manual  ipv4    nwl  1    172    188    1    9    3           1017         19  47605   9 
out manual cjdns   nwl2  2    183    183    1    4    0           1020         19          1 
out   full  ipv4   nwl2  2    221    297    2    2    2           1016         18  35432  36 
out  block onion    nwl  1    614    818   79   79    *              .         19          2 
out   full onion   nwl2  2    645    772    0    0    0           1043         18         22 
out   full onion    nwl  1    677   3582    0    0    0           1036         18         32 
out   full   i2p  nbwcl  1    678   2217    2    0    3           1031         18         15 
out manual onion    wl2  2    692    926    4    1    0           1010         19          3 
out manual   i2p  nwcl2  2    748    910    4    0    0           1021         18         16 
out manual onion  nwcl2  2    786    797    1    0    1           1022         17         40 
out   full onion    nwl  1    795    916    0    0    0           1034         18         28 
out  block onion    nwl  1    965    965   55   55    *              .          0         99 
out   full   i2p    nwl  1   1042   1102    0    0    4           1019         11         70 
out   full  ipv4    nwl  1  28462 527279    0   17                1001         18   1351  33 
                               ms     ms  sec  sec  min  min                  min

Copy link
Contributor

@tdb3 tdb3 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approach ACK

Nice improvement.
Performed a quick initial code review and exercised the changes interactively running on signet. I plan to circle back.

Copy link
Contributor

@tdb3 tdb3 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Left a couple small comments.
Tested that using 5 does include only outbound peers by connecting two nodes locally.

src/bitcoin-cli.cpp Outdated Show resolved Hide resolved
src/bitcoin-cli.cpp Outdated Show resolved Hide resolved
@jonatack
Copy link
Member Author

jonatack commented Oct 2, 2024

Updated to take @tdb3 review feedback (thanks!) and make minor adjustments.

git diff 51206c6 683b558

diff --git a/src/bitcoin-cli.cpp b/src/bitcoin-cli.cpp
index 3207a5d9c97..000f7695de6 100644
--- a/src/bitcoin-cli.cpp
    b/src/bitcoin-cli.cpp
@@ -391,10  391,10 @@ private:
         return UNKNOWN_NETWORK;
     }
     uint8_t m_details_level{0}; //!< Optional user-supplied arg to set dashboard details level
-    bool OutboundOnlySelected() const { return m_details_level == 5; }
     bool DetailsRequested() const { return m_details_level > 0 && m_details_level <= MAX_DETAIL_LEVEL; }
     bool IsAddressSelected() const { return m_details_level == 2 || m_details_level >= 4; }
-    bool IsVersionSelected() const { return m_details_level == 3 || m_details_level >= 4; }
     bool IsVersionSelected() const { return m_details_level >= 3; }
     bool OutboundOnlySelected() const { return m_details_level == 5; }
     bool m_is_asmap_on{false};
     size_t m_max_addr_length{0};
     size_t m_max_addr_processed_length{5};
@@ -407,8  407,8 @@ private:
         std::string sub_version;
         std::string conn_type;
         std::string network;
-        std::string services;
         std::string age;
         std::string services;
         std::string transport_protocol_type;
         double min_ping;
         double ping;
@@ -463,7  463,6 @@ private:
     {
         std::string str;
         for (size_t i = 0; i < services.size();   i) {
-            if (services[i].isNull()) continue;
             const std::string s{services[i].get_str()};
             str  = s == "NETWORK_LIMITED" ? 'l' : s == "P2P_V2" ? '2' : ToLower(s[0]);
         }
@@ -539,7  538,7 @@ public:
                 const bool is_addr_relay_enabled{peer["addr_relay_enabled"].isNull() ? false : peer["addr_relay_enabled"].get_bool()};
                 const bool is_bip152_hb_from{peer["bip152_hb_from"].get_bool()};
                 const bool is_bip152_hb_to{peer["bip152_hb_to"].get_bool()};
-                m_peers.push_back({addr, sub_version, conn_type, NETWORK_SHORT_NAMES[network_id], services, age, transport, min_ping, ping, addr_processed, addr_rate_limited, last_blck, last_recv, last_send, last_trxn, peer_id, mapped_as, version, is_addr_relay_enabled, is_bip152_hb_from, is_bip152_hb_to, is_outbound, is_tx_relay});
                 m_peers.push_back({addr, sub_version, conn_type, NETWORK_SHORT_NAMES[network_id], age, services, transport, min_ping, ping, addr_processed, addr_rate_limited, last_blck, last_recv, last_send, last_trxn, peer_id, mapped_as, version, is_addr_relay_enabled, is_bip152_hb_from, is_bip152_hb_to, is_outbound, is_tx_relay});
                 m_max_addr_length = std::max(addr.length()   1, m_max_addr_length);
                 m_max_addr_processed_length = std::max(ToString(addr_processed).length(), m_max_addr_processed_length);
                 m_max_addr_rate_limited_length = std::max(ToString(addr_rate_limited).length(), m_max_addr_rate_limited_length);
@@ -684,13  683,13 @@ public:
         "           \"addr\"   - address fetch; short-lived connection for requesting addresses\n"
         "  net      Network the peer connected through (\"ipv4\", \"ipv6\", \"onion\", \"i2p\", \"cjdns\", or \"npr\" (not publicly routable))\n"
         "  serv     Services offered by the peer\n"
-        "           \"n\" - NETWORK, can serve the full block chain\n"
-        "           \"b\" - BLOOM, can handle bloom-filtered connections (see BIP 111)\n"
-        "           \"w\" - WITNESS, can be asked for blocks and transactions with witness data (SegWit)\n"
-        "           \"c\" - COMPACT_FILTERS, can handle basic block filter requests (see BIPs 157 and 158)\n"
-        "           \"l\" - NETWORK_LIMITED, limited to serving only the last 288 blocks (~2 days)\n"
-        "           \"2\" - P2P_V2, supports version 2 P2P transport protocol, as defined in BIP324\n"
-        "           \"u\" - UNKNOWN, unrecognized bit flag\n"
         "           \"n\" - NETWORK: peer can serve the full block chain\n"
         "           \"b\" - BLOOM: peer can handle bloom-filtered connections (see BIP 111)\n"
         "           \"w\" - WITNESS: peer can be asked for blocks and transactions with witness data (SegWit)\n"
         "           \"c\" - COMPACT_FILTERS: peer can handle basic block filter requests (see BIPs 157 and 158)\n"
         "           \"l\" - NETWORK_LIMITED: peer limited to serving only the last 288 blocks (~2 days)\n"
         "           \"2\" - P2P_V2: peer supports version 2 P2P transport protocol, as defined in BIP 324\n"
         "           \"u\" - UNKNOWN: unrecognized bit flag\n"
         "  v        Version of transport protocol used for the connection\n"
         "  mping    Minimum observed ping time, in milliseconds (ms)\n"
         "  ping     Last observed ping time, in milliseconds (ms)\n"

Copy link
Contributor

@tdb3 tdb3 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

code review and light test ACK 683b558

Good catch with age/services

Copy link

@1440000bytes 1440000bytes left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ACK 683b558

Copy link
Contributor

@vasild vasild left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ACK 683b558

src/bitcoin-cli.cpp Outdated Show resolved Hide resolved
Copy link
Contributor

@LarryRuane LarryRuane left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you also should update line 93 (change "4" to "5")

argsman.AddArg("-netinfo", "Get network peer connection information from the remote server. An optional integer argument from 0 to 4 can be passed for different peers listings (default: 0). Pass \"help\" for detailed help documentation.", ArgsManager::ALLOW_ANY, OptionsCategory::CLI_COMMANDS);

src/bitcoin-cli.cpp Show resolved Hide resolved
@jonatack jonatack force-pushed the 2023-05-add-peer-services-to-netinfo branch from 683b558 to 823564d Compare October 17, 2024 20:49
@jonatack
Copy link
Member Author

I think you also should update line 93 (change "4" to "5")

argsman.AddArg("-netinfo", "Get network peer connection information from the remote server. An optional integer argument from 0 to 4 can be passed for different peers listings (default: 0). Pass \"help\" for detailed help documentation.", ArgsManager::ALLOW_ANY, OptionsCategory::CLI_COMMANDS);

Good catch @LarryRuane -- added 153b898 to ensure we don't overlook updating this.

@jonatack jonatack force-pushed the 2023-05-add-peer-services-to-netinfo branch 2 times, most recently from 1847b90 to 17f8f03 Compare October 17, 2024 21:32
@jonatack
Copy link
Member Author

Updated to take @vasild's suggestion and a fix for @LarryRuane's catch (thanks!) and doc updates I overlooked.

git diff 683b558 17f8f03

diff --git a/src/bitcoin-cli.cpp b/src/bitcoin-cli.cpp
index 000f7695de6..6bda4cbe0c5 100644
--- a/src/bitcoin-cli.cpp
    b/src/bitcoin-cli.cpp
@@ -57,6  57,7 @@ static const int DEFAULT_HTTP_CLIENT_TIMEOUT=900;
 static constexpr int DEFAULT_WAIT_CLIENT_TIMEOUT = 0;
 static const bool DEFAULT_NAMED=false;
 static const int CONTINUE_EXECUTION=-1;
 static constexpr uint8_t NETINFO_MAX_LEVEL{4};
 static constexpr int8_t UNKNOWN_NETWORK{-1};
 // See GetNetworkName() in netbase.cpp
 static constexpr std::array NETWORKS{"not_publicly_routable", "ipv4", "ipv6", "onion", "i2p", "cjdns", "internal"};
@@ -90,7  91,7 @@ static void SetupCliArgs(ArgsManager& argsman)
                    ArgsManager::ALLOW_ANY, OptionsCategory::CLI_COMMANDS);
     argsman.AddArg("-addrinfo", "Get the number of addresses known to the node, per network and total, after filtering for quality and recency. The total number of addresses known to the node may be higher.", ArgsManager::ALLOW_ANY, OptionsCategory::CLI_COMMANDS);
     argsman.AddArg("-getinfo", "Get general information from the remote server. Note that unlike server-side RPC calls, the output of -getinfo is the result of multiple non-atomic requests. Some entries in the output may represent results from different states (e.g. wallet balance may be as of a different block from the chain state reported)", ArgsManager::ALLOW_ANY, OptionsCategory::CLI_COMMANDS);
-    argsman.AddArg("-netinfo", "Get network peer connection information from the remote server. An optional integer argument from 0 to 4 can be passed for different peers listings (default: 0). Pass \"help\" for detailed help documentation.", ArgsManager::ALLOW_ANY, OptionsCategory::CLI_COMMANDS);
     argsman.AddArg("-netinfo", strprintf("Get network peer connection information from the remote server. An optional argument from 0 to %d can be passed for different peers listings (default: 0). If a non-zero value is passed, an additional \"outonly\" (or \"o\") argument can be passed to see outbound peers only. Pass \"help\" (or \"h\") for detailed help documentation.", NETINFO_MAX_LEVEL), ArgsManager::ALLOW_ANY, OptionsCategory::CLI_COMMANDS);
 
     SetupChainParamsBaseOptions(argsman);
     argsman.AddArg("-color=<when>", strprintf("Color setting for CLI output (default: %s). Valid values: always, auto (add color codes when standard output is connected to a terminal and OS is not WIN32), never.", DEFAULT_COLOR_SETTING), ArgsManager::ALLOW_ANY | ArgsManager::DISALLOW_NEGATION, OptionsCategory::OPTIONS);
@@ -379,7  380,6 @@ public:
 class NetinfoRequestHandler : public BaseRequestHandler
 {
 private:
-    static constexpr uint8_t MAX_DETAIL_LEVEL{5};
     std::array<std::array<uint16_t, NETWORKS.size()   1>, 3> m_counts{{{}}}; //!< Peer counts by (in/out/total, networks/total)
     uint8_t m_block_relay_peers_count{0};
     uint8_t m_manual_peers_count{0};
@@ -391,10  391,10 @@ private:
         return UNKNOWN_NETWORK;
     }
     uint8_t m_details_level{0}; //!< Optional user-supplied arg to set dashboard details level
-    bool DetailsRequested() const { return m_details_level > 0 && m_details_level <= MAX_DETAIL_LEVEL; }
-    bool IsAddressSelected() const { return m_details_level == 2 || m_details_level >= 4; }
-    bool IsVersionSelected() const { return m_details_level >= 3; }
-    bool OutboundOnlySelected() const { return m_details_level == 5; }
     bool DetailsRequested() const { return m_details_level > 0 && m_details_level < 5; }
     bool IsAddressSelected() const { return m_details_level == 2 || m_details_level == 4; }
     bool IsVersionSelected() const { return m_details_level == 3 || m_details_level == 4; }
     bool m_outbound_only_selected{false};
     bool m_is_asmap_on{false};
     size_t m_max_addr_length{0};
     size_t m_max_addr_processed_length{5};
@@ -478,9  478,18 @@ public:
         if (!args.empty()) {
             uint8_t n{0};
             if (ParseUInt8(args.at(0), &n)) {
-                m_details_level = (n <= MAX_DETAIL_LEVEL) ? n : 4;
                 m_details_level = std::min(n, NETINFO_MAX_LEVEL);
             } else {
-                throw std::runtime_error(strprintf("invalid -netinfo argument: %s\nFor more information, run: bitcoin-cli -netinfo help", args.at(0)));
                 throw std::runtime_error(strprintf("invalid -netinfo level argument: %s\nFor more information, run: bitcoin-cli -netinfo help", args.at(0)));
             }
             if (args.size() > 1) {
                 if (std::string_view s{args.at(1)}; n && (s == "o" || s == "outonly")) {
                     m_outbound_only_selected = true;
                 } else if (n) {
                     throw std::runtime_error(strprintf("invalid -netinfo outonly argument: %s\nFor more information, run: bitcoin-cli -netinfo help", args.at(1)));
                 } else {
                     throw std::runtime_error(strprintf("invalid -netinfo outonly argument: %s\nThe outonly argument is only valid for details levels higher than 0. For more information, run: bitcoin-cli -netinfo help", args.at(1)));
                 }
             }
         }
         UniValue result(UniValue::VARR);
@@ -515,7  524,7 @@ public:
               m_counts.at(2).at(NETWORKS.size());           // total overall
             if (conn_type == "block-relay-only")   m_block_relay_peers_count;
             if (conn_type == "manual")   m_manual_peers_count;
-            if (!is_outbound && OutboundOnlySelected()) continue;
             if (m_outbound_only_selected && !is_outbound) continue;
             if (DetailsRequested()) {
                 // Push data for this peer to the peers vector.
                 const int peer_id{peer["id"].getInt<int>()};
@@ -650,26  659,28 @@ public:
     }
 
     const std::string m_help_doc{
-        "-netinfo level|\"help\" \n\n"
         "-netinfo level|outonly|help\n\n"
         "Returns a network peer connections dashboard with information from the remote server.\n"
         "This human-readable interface will change regularly and is not intended to be a stable API.\n"
         "Under the hood, -netinfo fetches the data by calling getpeerinfo and getnetworkinfo.\n"
-          strprintf("An optional integer argument from 0 to %d can be passed for different peers listings; %d to 255 are parsed as %d.\n", MAX_DETAIL_LEVEL, MAX_DETAIL_LEVEL, MAX_DETAIL_LEVEL)  
-        "Pass \"help\" to see this detailed help documentation.\n"
-        "If more than one argument is passed, only the first one is read and parsed.\n"
-        "Suggestion: use with the Linux watch(1) command for a live dashboard; see example below.\n\n"
           strprintf("An optional argument from 0 to %d can be passed for different peers listings; values above %d up to 255 are parsed as %d.\n", NETINFO_MAX_LEVEL, NETINFO_MAX_LEVEL, NETINFO_MAX_LEVEL)  
         "If that argument is passed, an optional additional \"outonly\" argument may be passed to obtain the listing with outbound peers only.\n"
         "Pass \"help\" or \"h\" to see this detailed help documentation.\n"
         "If more than two arguments are passed, only the first two are read and parsed.\n"
         "Suggestion: use -netinfo with the Linux watch(1) command for a live dashboard; see example below.\n\n"
         "Arguments:\n"
-          strprintf("1. level (integer 0-%d, optional)  Specify the info level of the peers dashboard (default 0):\n", MAX_DETAIL_LEVEL)  
           strprintf("1. level (integer 0-%d, optional)  Specify the info level of the peers dashboard (default 0):\n", NETINFO_MAX_LEVEL)  
         "                                  0 - Peer counts for each reachable network as well as for block relay peers\n"
         "                                      and manual peers, and the list of local addresses and ports\n"
         "                                  1 - Like 0 but preceded by a peers listing (without address and version columns)\n"
         "                                  2 - Like 1 but with an address column\n"
         "                                  3 - Like 1 but with a version column\n"
         "                                  4 - Like 1 but with both address and version columns\n"
-        "                                  5 - Like 4 but limited to outbound peers only, to save screen space\n"
-        "2. help (string \"help\", optional) Print this help documentation instead of the dashboard.\n\n"
         "2. outonly (\"outonly\" or \"o\", optional) Return the peers listing with outbound peers only, i.e. to save screen space\n"
         "                                        when a node has many inbound peers. Only valid if a level is passed.\n\n"
         "help (\"help\" or \"h\", optional) Print this help documentation instead of the dashboard.\n\n"
         "Result:\n\n"
-          strprintf("* The peers listing in levels 1-%d displays all of the peers sorted by direction and minimum ping time:\n\n", MAX_DETAIL_LEVEL)  
           strprintf("* The peers listing in levels 1-%d displays all of the peers sorted by direction and minimum ping time:\n\n", NETINFO_MAX_LEVEL)  
         "  Column   Description\n"
         "  ------   -----------\n"
         "  <->      Direction\n"
@@ -719,9  730,11 @@ public:
         "The same, preceded by a peers listing without address and version columns\n"
         "> bitcoin-cli -netinfo 1\n\n"
         "Full dashboard\n"
-          strprintf("> bitcoin-cli -netinfo %d\n\n", MAX_DETAIL_LEVEL)  
           strprintf("> bitcoin-cli -netinfo %d\n\n", NETINFO_MAX_LEVEL)  
         "Full dashboard, but with outbound peers only\n"
           strprintf("> bitcoin-cli -netinfo %d outonly\n\n", NETINFO_MAX_LEVEL)  
         "Full live dashboard, adjust --interval or --no-title as needed (Linux)\n"
-          strprintf("> watch --interval 1 --no-title bitcoin-cli -netinfo %d\n\n", MAX_DETAIL_LEVEL)  
           strprintf("> watch --interval 1 --no-title bitcoin-cli -netinfo %d\n\n", NETINFO_MAX_LEVEL)  
         "See this help\n"
         "> bitcoin-cli -netinfo help\n"};
 };
@@ -1245,7  1258,7 @@ static int CommandLineRPC(int argc, char *argv[])
         if (gArgs.IsArgSet("-getinfo")) {
             rh.reset(new GetinfoRequestHandler());
         } else if (gArgs.GetBoolArg("-netinfo", false)) {
-            if (!args.empty() && args.at(0) == "help") {
             if (!args.empty() && (args.at(0) == "h" || args.at(0) == "help")) {
                 tfm::format(std::cout, "%s\n", NetinfoRequestHandler().m_help_doc);
                 return 0;
             }

Copy link

@1440000bytes 1440000bytes left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ACK 17f8f03

Changes since last review: #30930 (comment)

@DrahtBot DrahtBot requested review from vasild and tdb3 October 18, 2024 00:13
Copy link
Contributor

@tdb3 tdb3 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

re ACK 17f8f03

Code reviewed diff.

Ran sanity check using the new outonly arg:

$ build/src/bitcoin-cli -signet -netinfo 1
Bitcoin Core client v28.99.0-17f8f03ec69b signet - server 70016/Satoshi:28.99.0/

<->   type   net   serv  v  mping   ping send recv  txn  blk  hb addrp addrl  age id 
 in          npr   nwl2  2      1      2   38   24    1              2          6 13 
out   full  ipv6    nwl  1     82     91   24   24         3  .   1001         25  6 
...

$ build/src/bitcoin-cli -signet -netinfo 1 outonly
Bitcoin Core client v28.99.0-17f8f03ec69b signet - server 70016/Satoshi:28.99.0/

<->   type   net   serv  v  mping   ping send recv  txn  blk  hb addrp addrl  age id 
out   full  ipv6    nwl  1     82     91   26   26         3  .   1001         25  6 
...

Compared the output of 17f8f03 to master (e8f72ae) for 1 through 4. Saw serv column and no unexpected differences.

Sanity checked that >4 acts as 4.

@jonatack jonatack changed the title netinfo: add peer services column and outbound-only peers list netinfo: add peer services column and outbound-only option Oct 18, 2024
Copy link
Contributor

@vasild vasild left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ACK 17f8f03

src/bitcoin-cli.cpp Outdated Show resolved Hide resolved
src/bitcoin-cli.cpp Outdated Show resolved Hide resolved
by passing an additional argument of "outonly" or "o".

This has been requested in order to keep the output within screen limits when running -netinfo
as a live dashboard, i.e. with `watch`.

Also allow passing "h" in addition to "help" to see the help documentation.
@jonatack jonatack force-pushed the 2023-05-add-peer-services-to-netinfo branch from 17f8f03 to 87532fe Compare October 25, 2024 13:23
@jonatack
Copy link
Member Author

jonatack commented Oct 25, 2024

Updated the last commit to take @vasild's feedback (thanks!) and slightly improve an error message on the same line, per the following 3-line diff.

git diff 17f8f03 87532fe

diff --git a/src/bitcoin-cli.cpp b/src/bitcoin-cli.cpp
index 6bda4cbe0c5..f63dd22e621 100644
--- a/src/bitcoin-cli.cpp
    b/src/bitcoin-cli.cpp
@@ -486,9  486,9 @@ public:
                 if (std::string_view s{args.at(1)}; n && (s == "o" || s == "outonly")) {
                     m_outbound_only_selected = true;
                 } else if (n) {
-                    throw std::runtime_error(strprintf("invalid -netinfo outonly argument: %s\nFor more information, run: bitcoin-cli -netinfo help", args.at(1)));
                     throw std::runtime_error(strprintf("invalid -netinfo outonly argument: %s\nFor more information, run: bitcoin-cli -netinfo help", s));
                 } else {
-                    throw std::runtime_error(strprintf("invalid -netinfo outonly argument: %s\nThe outonly argument is only valid for details levels higher than 0. For more information, run: bitcoin-cli -netinfo help", args.at(1)));
                     throw std::runtime_error(strprintf("invalid -netinfo outonly argument: %s\nThe outonly argument is only valid for a level greater than 0 (the first argument). For more information, run: bitcoin-cli -netinfo help", s));
                 }
             }
         }
@@ -659,7  659,7 @@ public:
     }
 
     const std::string m_help_doc{
-        "-netinfo level|outonly|help\n\n"
         "-netinfo (level [outonly]) | help\n\n"
         "Returns a network peer connections dashboard with information from the remote server.\n"

Copy link

@rkrux rkrux left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tACK 87532fe

Successful make and functional tests. I used the -netinfo command with various verbosities and the outonly option. Also checked for verbosities greater than 4.

Asked a question for clarity.

src/bitcoin-cli.cpp Show resolved Hide resolved
Copy link
Contributor

@tdb3 tdb3 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cr re ACK 87532fe

Copy link
Contributor

@brunoerg brunoerg left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

crACK 87532fe

code looks great, but I didn't test in practice yet.

@achow101
Copy link
Member

achow101 commented Nov 4, 2024

ACK 87532fe

@achow101 achow101 merged commit 05aebe3 into bitcoin:master Nov 4, 2024
16 checks passed
@jonatack jonatack deleted the 2023-05-add-peer-services-to-netinfo branch November 4, 2024 21:01
TheCharlatan added a commit to TheCharlatan/rust-bitcoinkernel that referenced this pull request Nov 14, 2024
…158303fe2

48158303fe2 kernel: Add pure kernel bitcoin-chainstate
bf80d2f5009 kernel: Add block index utility functions to C header
a6ab5345e3b kernel: Add function to read block undo data from disk to C header
845b824d6c7 kernel: Add functions to read block from disk to C header
9324c8c4f67 kernel: Add function for copying  block data to C header
368fc93fd80 kernel: Add functions for the block validation state to C header
eb6e25ac007 kernel: Add validation interface to C header
cdce4484005 kernel: Add interrupt function to C header
7e47ec78768 kernel: Add import blocks function to C header
2b803d50747 kernel: Add chainstate load options for in-memory dbs in C header
ea92eb13c4a kernel: Add options for reindexing in C header
8254f2035a7 kernel: Add block validation to C header
ad7b880346e Kernel: Add chainstate loading to kernel C header
583820c4487 kernel: Add chainstate manager object to C header
ec137a086a0 kernel: Add notifications context option to C header
62a89689266 kerenl: Add chain params context option to C header
bb482dcbd30 kernel: Add kernel library context object
d114ccfdf8a kernel: Add logging to kernel library C header
44c65c46c43 kernel: Introduce initial kernel C header API
69c03134440 Merge bitcoin/bitcoin#31269: validation: Remove RECENT_CONSENSUS_CHANGE validation result
42282592943 Merge bitcoin/bitcoin#31000: bench: add support for custom data directory
36f5effa178 Merge bitcoin/bitcoin#31235: addrman: cap the `max_pct` to not exceed the maximum number of addresses
98ad249b69f Merge bitcoin/bitcoin#31277: doc: mention `descriptorprocesspsbt` in psbt.md
b0222bbb494 Merge bitcoin/bitcoin#30239: Ephemeral Dust
1dda1892b6b Merge bitcoin/bitcoin#31037: test: enhance p2p_orphan_handling
5c2e291060c bench: Add basic CheckEphemeralSpends benchmark
3f6559fa581 Add release note for ephemeral dust
71a6ab4b33d test: unit test for CheckEphemeralSpends
21d28b2f362 fuzz: add ephemeral_package_eval harness
127719f516a test: Add CheckMempoolEphemeralInvariants
e2e30e89ba4 functional test: Add ephemeral dust tests
4e68f901390 rpc: disallow in-mempool prioritisation of dusty tx
e1d3e81ab4d policy: Allow dust in transactions, spent in-mempool
04b2714fbbc functional test: Add new -dustrelayfee=0 test case
ebb6cd82baf doc: mention `descriptorprocesspsbt` in psbt.md
2b33322169b Merge bitcoin/bitcoin#31249: test: Add combinerawtransaction test to rpc_createmultisig
3fb6229dcfd Merge bitcoin/bitcoin#31271: doc: correct typos
fa66e0887ca bench: add support for custom data directory
ad9c2cceda9 test, bench: specialize working directory name
9c5775c331e addrman: cap the `max_pct` to not exceed the maximum number of addresses
8d340be9247 Merge bitcoin/bitcoin#31181: cmake: Revamp `FindLibevent` module
9a8e5adb161 Merge bitcoin/bitcoin#31267: refactor: Drop deprecated space in operator""_mst
726cbee9553 doc: correct typos
9fdfb73ca84 doc: fix typos
af6088701a2 Merge bitcoin/bitcoin#31237: doc: Add missing 'blank=true' option in offline-signing-tutorial.md
7a526653022 Merge bitcoin/bitcoin#31239: test: clarify log messages when handling SOCKS5 proxy connections
900b17239fb Merge bitcoin/bitcoin#31259: doc: Fix missing comma in JSON example in REST-interface.md
faf21625652 refactor: Drop deprecated space in operator""_mst
c889890e4a3 Merge bitcoin/bitcoin#31264: doc: Fixup bitcoin-wallet manpage chain selection args
0f6d20e43f2 Merge bitcoin/bitcoin#31163: scripted-diff: get rid of remaining "command" terminology in protocol.{h,cpp}
5acd5e7f874 Merge bitcoin/bitcoin#31257: ci: make ctest stop on failure
19f277711eb Merge bitcoin/bitcoin#26593: tracing: Only prepare tracepoint arguments when actually tracing
e80e4c6ff91 validation: Remove RECENT_CONSENSUS_CHANGE validation result
fa729ab4a27 doc: Fixup bitcoin-wallet manpage chain selection args
5e3b444022c doc: Fix missing comma in JSON example in REST-interface.md
0903ce8dbc2 Merge bitcoin/bitcoin#30592: Remove mempoolfullrbf
f842d0801e1 Merge bitcoin/bitcoin#29686: Update manpage descriptions
36a22e56833 ci: make ctest stop on failure
83fab3212c9 test: Add combinerawtransaction test to rpc_createmultisig
018e5fcc462 Merge bitcoin/bitcoin#31190: TxDownloadManager followups
3a5f6027e16 Merge bitcoin/bitcoin#31171: depends: Specify CMake generator explicitly
99d9a093cf6 test: clarify log messages when handling SOCKS5 proxy connections
c9e67e214f0 Merge bitcoin/bitcoin#31238: fuzz: Limit wallet_notifications iterations
564238aabf1 Merge bitcoin/bitcoin#31164: net: Use actual memory size in receive buffer accounting
fa461d7a43a fuzz: Limit wallet_notifications iterations
ec375de39ff doc: Add missing 'blank=true' option in offline-signing-tutorial.md
5a96767e3f5 depends, libevent: Do not install *.pc files and remove patches for them
ffda355b5a2 cmake, refactor: Move `HAVE_EVHTTP_...` to `libevent` interface
b619bdc3303 cmake: Revamp `FindLibevent` module
2c90f8e08c4 Merge bitcoin/bitcoin#31232: ci: `add second_deadlock_stack=1` to TSAN options
5dc94d13d41 fuzz fix: assert MAX_PEER_TX_ANNOUNCEMENTS is not exceeded
45e2f8f87d8 Merge bitcoin/bitcoin#31173: cmake: Add `FindQRencode` module and enable `libqrencode` package for MSVC
80cb630bd94 Merge bitcoin/bitcoin#31216: Update secp256k1 subtree to v0.6.0
5161c2618cd ci: add second_deadlock_stack=1 to TSAN options
85224f92d52 Merge bitcoin/bitcoin#30811: build: Unify `-logsourcelocations` format
9719d373dc2 Merge bitcoin/bitcoin#30634: ci: Use clang-19 from apt.llvm.org
97235c446e9 build: Disable secp256k1 musig module
9e5089dbb02 build, msvc: Enable `libqrencode` vcpkg package
30089b0cb61 cmake: Add `FindQRencode` module
65b19419366 Merge bitcoin/bitcoin#31186: msvc: Update vcpkg manifest
d3388720837 Merge bitcoin/bitcoin#31206: doc: Use relative hyperlinks in release-process.md
ffc05fca6f7 Merge bitcoin/bitcoin#31220: doc: Fix word order in developer-notes.md
9f2c8287a24 Merge bitcoin/bitcoin#31192: depends, doc: List packages required to build `qt` package separately
03cff2c1421 Merge bitcoin/bitcoin#31191: build: Make G_FUZZING constexpr, require -DBUILD_FOR_FUZZING=ON to fuzz
44939e5de1b doc: Fix word order in developer-notes.md
b934954ad10 Merge bitcoin/bitcoin#30670: doc: Extend developer-notes with file-name-only debugging fix
05aebe3790f Merge bitcoin/bitcoin#30930: netinfo: add peer services column and outbound-only option
0ba680d41b4 Update secp256k1 subtree to v0.6.0
2d46a89386d Squashed 'src/secp256k1/' changes from 2f2ccc46954..0cdc758a563
d22a234ed27 net: Use actual memory size in receive buffer accounting
047b5e2af1f streams: add DataStream::GetMemoryUsage
c3a6722f34a net: Use DynamicUsage(m_type) in CSerializedNetMsg::GetMemoryUsage
c6863c0b142 memusage: Add DynamicUsage for std::string
7596282a556 memusage: Allow counting usage of vectors with different allocators
6463117a292 Merge bitcoin/bitcoin#31208: doc: archive release notes for v27.2
788c1324f3d build: Unify `-logsourcelocations` format
4747f030956 depends, doc: List packages required to build `qt` package separately
1a05c86ae47 doc: archive release notes for v27.2
9f71cff6ab3 doc: Use relative hyperlinks in release-process.md
f1bcf3edc50 Merge bitcoin/bitcoin#31139: test: added test to assert TX decode rpc error on submitpackage rpc
975b115e1a2 Merge bitcoin/bitcoin#31198: init: warn, don't error, when '-upnp' is set
4a0251c05dd Merge bitcoin/bitcoin#31187: ci: Do not error on unused-member-function in test each commit
e001dc3dc6e Merge bitcoin/bitcoin#31203: fuzz: fix `implicit-integer-sign-change` in wallet_create_transaction
5a26cf7773e fuzz: fix `implicit-integer-sign-change` in wallet_create_transaction
a1b3ccae4be init: warn, don't error, when '-upnp' is set
c189eec848e doc: release note for mempoolrullrbf removal
d47297c6aab rpc: Mark fullrbf and bip125-replaceable as deprecated
04a5dcee8ab docs: remove requirement to signal bip125
fafbf8acf41 Make G_FUZZING constexpr, require -DBUILD_FOR_FUZZING=ON to execute a fuzz target
fae3cf0ffa6 ci: Temporarily disable macOS/Windows fuzz step
f6577b71741 build, msvc: Update vcpkg manifest baseline
16e16013bfa build, msvc: Document `libevent` version pinning
ec47cd2b508 build, msvc: Drop no longer needed `liblzma` version pinning
9a0734df5f1 build, msvc: Reorder keys in `vcpkg.json`
8351562bec6 [fuzz] allow negative time jumps in txdownloadman_impl
917ab810d93 [doc] comment fixups from n30110
f07a533dfcb Merge bitcoin/bitcoin#24214: Fix unsigned integer overflows in interpreter
62516105536 Merge bitcoin/bitcoin#31015: build: have "make test" depend on "make all"
4a31f8ccc9d Merge bitcoin/bitcoin#31156: test: Don't enforce BIP94 on regtest unless specified by arg
02be3dced71 Merge bitcoin/bitcoin#31166: key: clear out secret data in `DecodeExtKey`
54d07dd37d5 ci: Do not error on unused-member-function in test each commit
47f50c7af55 doc: add bitcoin-qt man description
40b82e3ab0a doc: add bitcoin-util man description
a7bf80f3a2d doc: add bitcoin-tx man description
3f9a5168323 doc: add bitcoin-wallet man description
d8c0bb23ef8 doc: add bitcoin-cli man description
09abccfa772 doc: add bitcoind man description
97b790e844a Merge bitcoin/bitcoin#29420: test: extend the SOCKS5 Python proxy to actually connect to a destination
6b73eb9a1a2 Merge bitcoin/bitcoin#31064: init: Correct coins db cache size setting
27d12cf17f2 Merge bitcoin/bitcoin#31043: rpc: getorphantxs follow-up
7b66815b16b Merge bitcoin/bitcoin#30110: refactor: TxDownloadManager   fuzzing
dc97e7f6dba Merge bitcoin/bitcoin#30903: cmake: Add `FindZeroMQ` module
1b0b9b4c787 Extend possible debugging fixes with file-name-only
da10e0bab4a Merge bitcoin/bitcoin#30942: test: Remove dead code from interface_zmq test
111a23d9b36 Remove -mempoolfullrbf option
e96ffa98b04 Merge bitcoin/bitcoin#31142: test: fix intermittent failure in p2p_seednode.py, don't connect to random IPs
54c4b09f083 Merge bitcoin/bitcoin#31042: build: Rename `PACKAGE_*` variables to `CLIENT_*`
e60cecc8115 doc: add release note for 31156
fc7dfb3df5b test: Don't enforce BIP94 on regtest unless specified by arg
fabe90c8242 ci: Use clang-19 from apt.llvm.org
0de3e96e333 tracing: use bitcoind pid in bcc tracing examples
411c6cfc6c2 tracing: only prepare tracepoint args if attached
d524c1ec066 tracing: dedup TRACE macros & rename to TRACEPOINT
70713303b63 scripted-diff: Rename `PACKAGE_*` variables to `CLIENT_*`
332655cb52c build: Rename `PACKAGE_*` variables to `CLIENT_*`
e6e29e3c94c scripted-diff: Clarify "user agent" variable name
e2ba8236715 depends: Specify CMake generator explicitly
1c7ca6e64de Merge bitcoin/bitcoin#31093: Introduce `g_fuzzing` global for fuzzing checks
6e21dedbf2b Merge bitcoin/bitcoin#31130: Drop miniupnp dependency
d7fd766feb2 test: added test to assert TX decode rpc error on submitpackage rpc
559a8dd9c0a key: clear out secret data in `DecodeExtKey`
4120c7543ee scripted-diff: get rid of remaining "command" terminology in protocol.{h,cpp}
2a52718d734 Merge bitcoin/bitcoin#31152: functional test: Additional package evaluation coverage
9de9c858d5a test: enhance p2p_orphan_handling
33af14b62e4 test: reduce assert_debug_log reliance
0ea84bc362f test: explicitly check boolean verbosity is disallowed
7a2e6b68cd9 doc: add rpc guidance for boolean verbosity avoidance
698f302df8b rpc: disallow boolean verbosity in getorphantxs
63f5e6ec795 test: add entry and expiration time checks
808a708107e rpc: add entry time to getorphantxs
56bf3027144 refactor: rename rpc_getorphantxs to rpc_orphans
7824f6b0770 test: check that getorphantxs is hidden
ac68fcca701 rpc: disallow undefined verbosity in getorphantxs
25dacae9c7f Merge bitcoin/bitcoin#31040: test: Assert that when we add the max orphan amount that we cannot add anymore and that a random orphan gets dropped
40e5f26a3ff mapport: remove dead code in DispatchMapPort
38fdf7c1fb1 mapport: drop outdated comments
915640e191b depends: zeromq: don't install .pc files and remove patches for them
6b8a74463b5 cmake: Add `FindZeroMQ` module
9a7206a34e3 Merge bitcoin/bitcoin#29536: fuzz: fuzz connman with non-empty addrman   ASMap
d4abaf8c9d9 Merge bitcoin/bitcoin#29608: optimization: Preallocate addresses in GetAddr based on nNodes
b7b24352906 doc: add release note for #31130
1b6dec98da3 depends: drop miniupnpc
953533d0214 doc: remove mentions of UPnP
94ad614482f ci: remove UPnP options
f32c34d0c3d functional test: Additional package evaluation coverage
87532fe5585 netinfo: allow setting an outbound-only peer list
9f243cd7fa6 Introduce `g_fuzzing` global for fuzzing checks
b95adf057a4 Merge bitcoin/bitcoin#31150: util: Treat Assume as Assert when evaluating at compile-time
8f24e492e20 Merge bitcoin/bitcoin#29991: depends: sqlite 3.46.1
2ef5004f78c Merge bitcoin/bitcoin#31146: ci: Temporary workaround for old CCACHE_DIR cirrus env
8c12fe828de Merge bitcoin/bitcoin#29936: fuzz: wallet: add target for `CreateTransaction`
5c299ecafe6 test: Assert that when we add the max orphan amount that we cannot add anymore and that a random orphan gets dropped
0f4bc635854 [fuzz] txdownloadman and txdownload_impl
699643f23a1 [unit test] MempoolRejectedTx
fa584cbe727 [p2p] add TxDownloadOptions bool to make TxRequestTracker deterministic
f803c8ce8dd [p2p] filter 1p1c for child txid in recent rejects
5269d57e6d7 [p2p] don't process orphan if in recent rejects
2266eba43a9 [p2p] don't find 1p1cs for reconsiderable txns that are AlreadyHaveTx
fa7027d0fc1 [refactor] add CheckIsEmpty and GetOrphanTransactions, remove access to TxDownloadMan internals
969b07237b9 [refactor] wrap {Have,Get}TxToReconsider in txdownload
f150fb94e7d [refactor] make AlreadyHaveTx and Find1P1CPackage private to TxDownloadImpl
1e08195135b [refactor] move new tx logic to txdownload
257568eab5b [refactor] move invalid package processing to TxDownload
c4ce0c1218d [refactor] move invalid tx processing to TxDownload
c6b21749ca0 [refactor] move valid tx processing to TxDownload
a8cf3b6e845 [refactor] move Find1P1CPackage to txdownload
f497414ce76 [refactor] put peerman tasks at the end of ProcessInvalidTx
6797bc42a76 [p2p] restrict RecursiveDynamicUsage of orphans added to vExtraTxnForCompact
798cc8f5aac [refactor] move Find1P1CPackage into ProcessInvalidTx
416fbc952b2 [refactor] move new orphan handling to ProcessInvalidTx
c8e67b9169b [refactor] move ProcessInvalidTx and ProcessValidTx definitions down
3a41926d1b5 [refactor] move notfound processing to txdownload
042a97ce7fc [refactor] move tx inv/getdata handling to txdownload
58e09f244b4 [p2p] don't log tx invs when in IBD
288865338f5 [refactor] rename maybe_add_extra_compact_tx to first_time_failure
f48d36cd97e [refactor] move peer (dis)connection logic to TxDownload
f61d9e4b4b8 [refactor] move AlreadyHaveTx to TxDownload
84e4ef843db [txdownload] add read-only reference to mempool
af918349de5 [refactor] move ValidationInterface functions to TxDownloadManager
f6c860efb12 [doc] fix typo in m_lazy_recent_confirmed_transactions doc
5f9004e1550 [refactor] add TxDownloadManager wrapping TxOrphanage, TxRequestTracker, and bloom filters
947f2925d55 Merge bitcoin/bitcoin#31124: util: Remove RandAddSeedPerfmon
7640cfdd624 Merge bitcoin/bitcoin#31118: doc: replace `-?` with `-h` and `-help`
74fb19317ae Merge bitcoin/bitcoin#30849: refactor: migrate `bool GetCoin` to return `optional<Coin>`
c16e909b3e2 Merge bitcoin/bitcoin#28574: wallet: optimize migration process, batch db transactions
a9598e5eaab build: drop miniupnpc dependency
a5fcfb7385c interfaces: remove now unused 'use_upnp' arg from 'mapPort'
038bbe7b200 daemon: remove UPnP support
844770b05eb qt: remove UPnP settings
dd92911732d Merge bitcoin/bitcoin#31148: ci: display logs of failed unit tests automatically
fa69a5f4b76 util: Treat Assume as Assert when evaluating at compile-time
0c79c343a9f Merge bitcoin/bitcoin#31147: cmake, qt, test: Remove problematic code
8523d8c0fc8 ci: display logs of failed tests automatically
2f40e453ccd Merge bitcoin/bitcoin#29450: build: replace custom `MAC_OSX` macro with existing `__APPLE__`
cb7c5ca824e Add gdb and lldb links to debugging troubleshooting
6c6b2442eda build: Replace MAC_OSX macro with existing __APPLE__
fb46d57d4e7 cmake, qt, test: Remove problematic code
fa9747a8961 ci: Temporary workaround for old CCACHE_DIR cirrus env
6c9fe7b73ea test: Prevent connection attempts to random IPs in p2p_seednodes.py
bb97b1ffa9f test: fix intermittent timeout in p2p_seednodes.py
57529ac4dbb test: set P2PConnection.p2p_connected_to_node in peer_connect_helper()
22cd0e888c7 test: support WTX INVs from P2PDataStore and fix a comment
ebe42c00aa4 test: extend the SOCKS5 Python proxy to actually connect to a destination
9bb92c0e7ff util: Remove RandAddSeedPerfmon
c98fc36d094 wallet: migration, consolidate external wallets db writes
7c9076a2d2e wallet: migration, consolidate main wallet db writes
9ef20e86d7f wallet: provide WalletBatch to 'SetupDescriptorScriptPubKeyMans'
34bf0795fc0 wallet: refactor ApplyMigrationData to return util::Result<void>
aacaaaa0d3a wallet: provide WalletBatch to 'RemoveTxs'
57249ff6697 wallet: introduce active db txn listeners
91e065ec175 wallet: remove post-migration signals connection
055c0532fc8 wallet: provide WalletBatch to 'DeleteRecords'
122d103ca22 wallet: introduce 'SetWalletFlagWithDB'
6052c7891dc wallet: decouple default descriptors creation from external signer setup
f2541d09e13 wallet: batch MigrateToDescriptor() db transactions
66c9936455f bench: add coverage for wallet migration process
33a28e252a7 Change default help arg to `-help` and mention `-h` and `-?` as alternatives
f0130ab1a1e doc: replace `-?` with `-h` for bench_bitcoin help
681ebcceca7 netinfo: rename and hoist max level constant to use in top-level help
e7d307ce8cf netinfo: clarify relaytxes and addr_relay_enabled help docs
eef2a9d4062 netinfo: add peer services column
3a4a788ee0d init: Correct coins db cache size setting
2957ca96119 build: have "make test" depend on "make all"
bbbbaa0d9ac Fix unsigned integer overflows in interpreter
c4dc81f9c69 test: Remove dead code from interface_zmq
c495731a316 fuzz: wallet: add target for `CreateTransaction`
3db68e29ec6 wallet: move `ImportDescriptors`/`FuzzedWallet` to util
552cae243a1 fuzz: cover `ASMapHealthCheck` in connman target
33b0f3ae966 fuzz: use `ConsumeNetGroupManager` in connman target
18c8a0945bd fuzz: move `ConsumeNetGroupManager` to util
fe624631aeb fuzz: fuzz `connman` with a non-empty addrman
0a12cff2a8e fuzz: move `AddrManDeterministic` to util
4feaa287284 refactor: Rely on returned value of GetCoin instead of parameter
46dfbf169b4 refactor: Return optional of Coin in GetCoin
e31bfb26c21 refactor: Remove unrealistic simulation state
ba621ffb9cb test: improve debug log message from P2PConnection::connection_made()
def6dd0c597 depends: sqlite 3.46.1
66082ca3488 Preallocate addresses in GetAddr based on nNodes
REVERT: 1047757ea3b kernel: Add pure kernel bitcoin-chainstate
REVERT: c568fdf75fd kernel: Add block index utility functions to C header
REVERT: 0f1da1dcba5 kernel: Add function to read block undo data from disk to C header
REVERT: 45af559c9f6 kernel: Add functions to read block from disk to C header
REVERT: 2a7f8a8240c kernel: Add function for copying  block data to C header
REVERT: b19f5336c03 kernel: Add functions for the block validation state to C header
REVERT: 9c0ffa913f4 kernel: Add validation interface to C header
REVERT: a93318c6152 kernel: Add interrupt function to C header
REVERT: 51053f33720 kernel: Add import blocks function to C header
REVERT: 6b0ada2af42 kernel: Add chainstate load options for in-memory dbs in C header
REVERT: 34427bfa9c7 kernel: Add options for reindexing in C header
REVERT: ca57311c969 kernel: Add block validation to C header
REVERT: 44156d84838 Kernel: Add chainstate loading to kernel C header
REVERT: 2cee46cdcc1 kernel: Add chainstate manager object to C header
REVERT: 7102c7ae45e kernel: Add notifications context option to C header
REVERT: ed628a2a3c4 kerenl: Add chain params context option to C header
REVERT: 27643297ff7 kernel: Add kernel library context object
REVERT: 2ba22cf3f90 kernel: Add logging to kernel library C header
REVERT: 873874c03e9 kernel: Introduce initial kernel C header API

git-subtree-dir: libbitcoinkernel-sys/bitcoin
git-subtree-split: 48158303fe276cb2f8fbc53ff31a4162d8f55c84
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.