Skip to content

Commit c243e08

Browse files
committed
Merge #24512: 23.x backports
174af33 util: Add inotify_rm_watch to syscall sandbox (AllowFileSystem) (Hennadii Stepanov) ded10fe build: Fix Boost.Process test for Boost 1.78 (Hennadii Stepanov) 26c2f23 build: Fix Boost.Process detection on macOS arm64 (Hennadii Stepanov) 85f85c7 util: add linkat to syscall sandbox (AllowFileSystem) (fanquake) eaa0419 contrib: fix signet miner (sighash mismatch) (Sebastian Falbesoner) 235b042 rpc: Exclude descriptor when address is excluded (MarcoFalke) b05a59b ci: Temporarily use clang-13 to work around clang-14 TSan bug (MarcoFalke) 65b9667 doc, init: add links to doc/cjdns.md (Jon Atack) 7a553d4 doc: update i2p.md with cjdns, improve local addresses section (Jon Atack) 4148396 doc: update tor.md with cjdns and getnodeaddresses, fix tor grep, (Jon Atack) 4690e8a doc: create initial doc/cjdns.md for cjdns how-to documentation (Jon Atack) 5d24f61 Clarify in -maxtimeadjustment that only outbound peers influence time data (Jon Atack) b1646f1 test: set segwit height back to 0 on regtest (Martin Zumsande) ef6a37b rpc: rename getdeploymentinfo status-next to status_next (Jon Atack) 2a6fcf9 init, doc: improve -onlynet help and tor/i2p documentation (Jon Atack) Pull request description: Backport the following to 23.x: - #24468 - #24528 - #24527 - #24609 - #24555 - #24663 - #24572 - #24636 - #24553 - #24659 - #24521 - #24523 - #24690 - #24710 Possibly also: - #24579 - #24691 ACKs for top commit: laanwj: List-of-commits ACK 174af33, I think we should merge this and move forward with rc3.. hebasto: ACK 174af33 Tree-SHA512: 5a493e1652b780b527767d6ca9e67012abd2fa5573496e85e0d8aa4bed3eb332bfcd72610b8dfb954ff274d42450623233c96c479de2085b9c8344ba5abf1935
2 parents 7d03cf6 + 174af33 commit c243e08

17 files changed

+164
-33
lines changed

ci/test/00_setup_env_native_tsan.sh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ export LC_ALL=C.UTF-8
88

99
export CONTAINER_NAME=ci_native_tsan
1010
export DOCKER_NAME_TAG=ubuntu:22.04
11-
export PACKAGES="clang llvm libc++abi-dev libc++-dev python3-zmq"
12-
export DEP_OPTS="CC=clang CXX='clang++ -stdlib=libc++'"
11+
export PACKAGES="clang-13 llvm-13 libc++abi-13-dev libc++-13-dev python3-zmq"
12+
export DEP_OPTS="CC=clang-13 CXX='clang++-13 -stdlib=libc++'"
1313
export GOAL="install"
14-
export BITCOIN_CONFIG="--enable-zmq CPPFLAGS='-DARENA_DEBUG -DDEBUG_LOCKORDER' CXXFLAGS='-g' --with-sanitizers=thread CC=clang CXX='clang++ -stdlib=libc++'"
14+
export BITCOIN_CONFIG="--enable-zmq CPPFLAGS='-DARENA_DEBUG -DDEBUG_LOCKORDER' CXXFLAGS='-g' --with-sanitizers=thread CC=clang-13 CXX='clang++-13 -stdlib=libc++'"

configure.ac

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1438,13 +1438,21 @@ if test "$use_external_signer" != "no"; then
14381438
;;
14391439
*)
14401440
AC_MSG_CHECKING([whether Boost.Process can be used])
1441+
TEMP_CXXFLAGS="$CXXFLAGS"
1442+
dnl Boost 1.78 requires the following workaround.
1443+
dnl See: https://github.com/boostorg/process/issues/235
1444+
CXXFLAGS="$CXXFLAGS -Wno-error=narrowing"
1445+
TEMP_CPPFLAGS="$CPPFLAGS"
1446+
CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
14411447
TEMP_LDFLAGS="$LDFLAGS"
14421448
dnl Boost 1.73 and older require the following workaround.
14431449
LDFLAGS="$LDFLAGS $PTHREAD_CFLAGS"
14441450
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <boost/process.hpp>]])],
14451451
[have_boost_process="yes"],
14461452
[have_boost_process="no"])
14471453
LDFLAGS="$TEMP_LDFLAGS"
1454+
CPPFLAGS="$TEMP_CPPFLAGS"
1455+
CXXFLAGS="$TEMP_CXXFLAGS"
14481456
AC_MSG_RESULT([$have_boost_process])
14491457
if test "$have_boost_process" = "yes"; then
14501458
use_external_signer="yes"

contrib/signet/miner

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import base64
88
import json
99
import logging
1010
import math
11-
import os.path
11+
import os
1212
import re
1313
import struct
1414
import sys
@@ -493,10 +493,11 @@ def do_generate(args):
493493
logging.debug("Mining block delta=%s start=%s mine=%s", seconds_to_hms(mine_time-bestheader["time"]), mine_time, is_mine)
494494
mined_blocks += 1
495495
psbt = generate_psbt(tmpl, reward_spk, blocktime=mine_time)
496-
psbt_signed = json.loads(args.bcli("-stdin", "walletprocesspsbt", input=psbt.encode('utf8')))
496+
input_stream = os.linesep.join([psbt, "true", "ALL"]).encode('utf8')
497+
psbt_signed = json.loads(args.bcli("-stdin", "walletprocesspsbt", input=input_stream))
497498
if not psbt_signed.get("complete",False):
498499
logging.debug("Generated PSBT: %s" % (psbt,))
499-
sys.stderr.write("PSBT signing failed")
500+
sys.stderr.write("PSBT signing failed\n")
500501
return 1
501502
block, signet_solution = do_decode_psbt(psbt_signed["psbt"])
502503
block = finish_block(block, signet_solution, args.grind_cmd)

doc/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ The Bitcoin repo's [root README](/README.md) contains relevant information on th
7373
- [Assets Attribution](assets-attribution.md)
7474
- [Assumeutxo design](assumeutxo.md)
7575
- [bitcoin.conf Configuration File](bitcoin-conf.md)
76+
- [CJDNS Support](cjdns.md)
7677
- [Files](files.md)
7778
- [Fuzz-testing](fuzzing.md)
7879
- [I2P Support](i2p.md)

doc/cjdns.md

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
# CJDNS support in Bitcoin Core
2+
3+
It is possible to run Bitcoin Core over CJDNS, an encrypted IPv6 network that
4+
uses public-key cryptography for address allocation and a distributed hash table
5+
for routing.
6+
7+
## What is CJDNS?
8+
9+
CJDNS is like a distributed, shared VPN with multiple entry points where every
10+
participant can reach any other participant. All participants use addresses from
11+
the `fc00::/8` network (reserved IPv6 range). Installation and configuration is
12+
done outside of Bitcoin Core, similarly to a VPN (either in the host/OS or on
13+
the network router).
14+
15+
Compared to IPv4/IPv6, CJDNS provides end-to-end encryption and protects nodes
16+
from traffic analysis and filtering.
17+
18+
Used with Tor and I2P, CJDNS is a complementary option that can enhance network
19+
redundancy and robustness for both the Bitcoin network and individual nodes.
20+
21+
Each network has different characteristics. For instance, Tor is widely used but
22+
somewhat centralized. I2P connections have a source address and I2P is slow.
23+
CJDNS is fast but does not hide the sender and the recipient from intermediate
24+
routers.
25+
26+
## Installing CJDNS and connecting to the network
27+
28+
To install and set up CJDNS, follow the instructions at
29+
https://github.com/cjdelisle/cjdns#cjdns.
30+
31+
Don't skip steps
32+
["2. Find a friend"](https://github.com/cjdelisle/cjdns#2-find-a-friend) and
33+
["3. Connect your node to your friend's
34+
node"](https://github.com/cjdelisle/cjdns#3-connect-your-node-to-your-friends-node).
35+
You need to be connected to the CJDNS network before it will work with your
36+
Bitcoin Core node.
37+
38+
Typically, CJDNS might be launched from its directory with
39+
`sudo ./cjdroute < cjdroute.conf` and it sheds permissions after setting up the
40+
[TUN](https://en.wikipedia.org/wiki/TUN/TAP) interface. You may also [launch it as an
41+
unprivileged user](https://github.com/cjdelisle/cjdns/blob/master/doc/non-root-user.md)
42+
with some additional setup.
43+
44+
The network connection can be checked by running `./tools/peerStats` from the
45+
CJDNS directory.
46+
47+
## Run Bitcoin Core with CJDNS
48+
49+
Once you are connected to the CJDNS network, the following Bitcoin Core
50+
configuration option makes CJDNS peers automatically reachable:
51+
52+
```
53+
-cjdnsreachable
54+
```
55+
56+
When enabled, this option tells Bitcoin Core that it is running in an
57+
environment where a connection to an `fc00::/8` address will be to the CJDNS
58+
network instead of to an [RFC4193](https://datatracker.ietf.org/doc/html/rfc4193)
59+
IPv6 local network. This helps Bitcoin Core perform better address management:
60+
- Your node can consider incoming `fc00::/8` connections to be from the CJDNS
61+
network rather than from an IPv6 private one.
62+
- If one of your node's local addresses is `fc00::/8`, then it can choose to
63+
gossip that address to peers.
64+
65+
## Additional configuration options related to CJDNS
66+
67+
```
68+
-onlynet=cjdns
69+
```
70+
71+
Make automatic outbound connections only to CJDNS addresses. Inbound and manual
72+
connections are not affected by this option. It can be specified multiple times
73+
to allow multiple networks, e.g. onlynet=cjdns, onlynet=i2p, onlynet=onion.
74+
75+
CJDNS support was added to Bitcoin Core in version 23.0 and there may be fewer
76+
CJDNS peers than Tor or IP ones. You can use `bitcoin-cli -addrinfo` to see the
77+
number of CJDNS addresses known to your node.
78+
79+
In general, a node can be run with both an onion service and CJDNS (or any/all
80+
of IPv4/IPv6/onion/I2P/CJDNS), which can provide a potential fallback if one of
81+
the networks has issues. There are a number of ways to configure this; see
82+
[doc/tor.md](https://github.com/bitcoin/bitcoin/blob/master/doc/tor.md) for
83+
details.
84+
85+
## CJDNS-related information in Bitcoin Core
86+
87+
There are several ways to see your CJDNS address in Bitcoin Core:
88+
- in the "Local addresses" output of CLI `-netinfo`
89+
- in the "localaddresses" output of RPC `getnetworkinfo`
90+
91+
To see which CJDNS peers your node is connected to, use `bitcoin-cli -netinfo 4`
92+
or the `getpeerinfo` RPC (i.e. `bitcoin-cli getpeerinfo`).
93+
94+
To see which CJDNS addresses your node knows, use the `getnodeaddresses 0 cjdns`
95+
RPC.

doc/i2p.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,9 @@ logging` for more information.
6565
-onlynet=i2p
6666
```
6767

68-
Make outgoing connections only to I2P addresses. Incoming connections are not
69-
affected by this option. It can be specified multiple times to allow multiple
70-
network types, e.g. onlynet=onion, onlynet=i2p.
68+
Make automatic outbound connections only to I2P addresses. Inbound and manual
69+
connections are not affected by this option. It can be specified multiple times
70+
to allow multiple networks, e.g. onlynet=onion, onlynet=i2p.
7171

7272
I2P support was added to Bitcoin Core in version 22.0 and there may be fewer I2P
7373
peers than Tor or IP ones. Therefore, using I2P alone without other networks may
@@ -80,15 +80,15 @@ phase when syncing up a new node can be very slow. This phase can be sped up by
8080
using other networks, for instance `onlynet=onion`, at the same time.
8181

8282
In general, a node can be run with both onion and I2P hidden services (or
83-
any/all of IPv4/IPv6/onion/I2P), which can provide a potential fallback if one
84-
of the networks has issues.
83+
any/all of IPv4/IPv6/onion/I2P/CJDNS), which can provide a potential fallback if
84+
one of the networks has issues.
8585

8686
## I2P-related information in Bitcoin Core
8787

8888
There are several ways to see your I2P address in Bitcoin Core:
89-
- in the debug log (grep for `AddLocal`, the I2P address ends in `.b32.i2p`)
90-
- in the output of the `getnetworkinfo` RPC in the "localaddresses" section
91-
- in the output of `bitcoin-cli -netinfo` peer connections dashboard
89+
- in the "Local addresses" output of CLI `-netinfo`
90+
- in the "localaddresses" output of RPC `getnetworkinfo`
91+
- in the debug log (grep for `AddLocal`; the I2P address ends in `.b32.i2p`)
9292

9393
To see which I2P peers your node is connected to, use `bitcoin-cli -netinfo 4`
9494
or the `getpeerinfo` RPC (e.g. `bitcoin-cli getpeerinfo`).

doc/p2p-bad-ports.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
When Bitcoin Core automatically opens outgoing P2P connections it chooses
1+
When Bitcoin Core automatically opens outgoing P2P connections, it chooses
22
a peer (address and port) from its list of potential peers. This list is
3-
populated with unchecked data, gossiped over the P2P network by other peers.
3+
populated with unchecked data gossiped over the P2P network by other peers.
44

55
A malicious actor may gossip an address:port where no Bitcoin node is listening,
66
or one where a service is listening that is not related to the Bitcoin network.
@@ -17,7 +17,7 @@ authentication are unlikely to be considered a malicious action,
1717
e.g. port 80 (http).
1818

1919
Below is a list of "bad" ports which Bitcoin Core avoids when choosing a peer to
20-
connect to. If a node is listening on such a port, it will likely receive less
20+
connect to. If a node is listening on such a port, it will likely receive fewer
2121
incoming connections.
2222

2323
1: tcpmux

doc/tor.md

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ configure Tor.
1616
## How to see information about your Tor configuration via Bitcoin Core
1717

1818
There are several ways to see your local onion address in Bitcoin Core:
19-
- in the debug log (grep for "tor:" or "AddLocal")
20-
- in the output of RPC `getnetworkinfo` in the "localaddresses" section
21-
- in the output of the CLI `-netinfo` peer connections dashboard
19+
- in the "Local addresses" output of CLI `-netinfo`
20+
- in the "localaddresses" output of RPC `getnetworkinfo`
21+
- in the debug log (grep for "AddLocal"; the Tor address ends in `.onion`)
2222

2323
You may set the `-debug=tor` config logging option to have additional
2424
information in the debug log about your Tor configuration.
@@ -27,6 +27,9 @@ CLI `-addrinfo` returns the number of addresses known to your node per
2727
network. This can be useful to see how many onion peers your node knows,
2828
e.g. for `-onlynet=onion`.
2929

30+
To fetch a number of onion addresses that your node knows, for example seven
31+
addresses, use the `getnodeaddresses 7 onion` RPC.
32+
3033
## 1. Run Bitcoin Core behind a Tor proxy
3134

3235
The first step is running Bitcoin Core behind a Tor proxy. This will already anonymize all
@@ -55,10 +58,10 @@ outgoing connections, but more is possible.
5558
-seednode=X SOCKS5. In Tor mode, such addresses can also be exchanged with
5659
other P2P nodes.
5760

58-
-onlynet=onion Make outgoing connections only to .onion addresses. Incoming
59-
connections are not affected by this option. This option can be
60-
specified multiple times to allow multiple network types, e.g.
61-
onlynet=onion, onlynet=i2p.
61+
-onlynet=onion Make automatic outbound connections only to .onion addresses.
62+
Inbound and manual connections are not affected by this option.
63+
It can be specified multiple times to allow multiple networks,
64+
e.g. onlynet=onion, onlynet=i2p, onlynet=cjdns.
6265

6366
In a typical situation, this suffices to run behind a Tor proxy:
6467

src/chainparams.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -397,7 +397,7 @@ class CRegTestParams : public CChainParams {
397397
consensus.BIP65Height = 1; // Always active unless overridden
398398
consensus.BIP66Height = 1; // Always active unless overridden
399399
consensus.CSVHeight = 1; // Always active unless overridden
400-
consensus.SegwitHeight = 1; // Always active unless overridden
400+
consensus.SegwitHeight = 0; // Always active unless overridden
401401
consensus.MinBIP9WarningHeight = 0;
402402
consensus.powLimit = uint256S("7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
403403
consensus.nPowTargetTimespan = 14 * 24 * 60 * 60; // two weeks

src/core_write.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,9 @@ void ScriptPubKeyToUniv(const CScript& scriptPubKey, UniValue& out, bool include
153153
CTxDestination address;
154154

155155
out.pushKV("asm", ScriptToAsmStr(scriptPubKey));
156-
out.pushKV("desc", InferDescriptor(scriptPubKey, DUMMY_SIGNING_PROVIDER)->ToString());
156+
if (include_address) {
157+
out.pushKV("desc", InferDescriptor(scriptPubKey, DUMMY_SIGNING_PROVIDER)->ToString());
158+
}
157159
if (include_hex) out.pushKV("hex", HexStr(scriptPubKey));
158160

159161
std::vector<std::vector<unsigned char>> solns;

src/init.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -444,7 +444,7 @@ void SetupServerArgs(ArgsManager& argsman)
444444
argsman.AddArg("-asmap=<file>", strprintf("Specify asn mapping used for bucketing of the peers (default: %s). Relative paths will be prefixed by the net-specific datadir location.", DEFAULT_ASMAP_FILENAME), ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
445445
argsman.AddArg("-bantime=<n>", strprintf("Default duration (in seconds) of manually configured bans (default: %u)", DEFAULT_MISBEHAVING_BANTIME), ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
446446
argsman.AddArg("-bind=<addr>[:<port>][=onion]", strprintf("Bind to given address and always listen on it (default: 0.0.0.0). Use [host]:port notation for IPv6. Append =onion to tag any incoming connections to that address and port as incoming Tor connections (default: 127.0.0.1:%u=onion, testnet: 127.0.0.1:%u=onion, signet: 127.0.0.1:%u=onion, regtest: 127.0.0.1:%u=onion)", defaultBaseParams->OnionServiceTargetPort(), testnetBaseParams->OnionServiceTargetPort(), signetBaseParams->OnionServiceTargetPort(), regtestBaseParams->OnionServiceTargetPort()), ArgsManager::ALLOW_ANY | ArgsManager::NETWORK_ONLY, OptionsCategory::CONNECTION);
447-
argsman.AddArg("-cjdnsreachable", "If set then this host is configured for CJDNS (connecting to fc00::/8 addresses would lead us to the CJDNS network) (default: 0)", ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
447+
argsman.AddArg("-cjdnsreachable", "If set, then this host is configured for CJDNS (connecting to fc00::/8 addresses would lead us to the CJDNS network, see doc/cjdns.md) (default: 0)", ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
448448
argsman.AddArg("-connect=<ip>", "Connect only to the specified node; -noconnect disables automatic connections (the rules for this peer are the same as for -addnode). This option can be specified multiple times to connect to multiple nodes.", ArgsManager::ALLOW_ANY | ArgsManager::NETWORK_ONLY, OptionsCategory::CONNECTION);
449449
argsman.AddArg("-discover", "Discover own IP addresses (default: 1 when listening and no -externalip or -proxy)", ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
450450
argsman.AddArg("-dns", strprintf("Allow DNS lookups for -addnode, -seednode and -connect (default: %u)", DEFAULT_NAME_LOOKUP), ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
@@ -457,12 +457,12 @@ void SetupServerArgs(ArgsManager& argsman)
457457
argsman.AddArg("-maxconnections=<n>", strprintf("Maintain at most <n> connections to peers (default: %u). This limit does not apply to connections manually added via -addnode or the addnode RPC, which have a separate limit of %u.", DEFAULT_MAX_PEER_CONNECTIONS, MAX_ADDNODE_CONNECTIONS), ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
458458
argsman.AddArg("-maxreceivebuffer=<n>", strprintf("Maximum per-connection receive buffer, <n>*1000 bytes (default: %u)", DEFAULT_MAXRECEIVEBUFFER), ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
459459
argsman.AddArg("-maxsendbuffer=<n>", strprintf("Maximum per-connection send buffer, <n>*1000 bytes (default: %u)", DEFAULT_MAXSENDBUFFER), ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
460-
argsman.AddArg("-maxtimeadjustment", strprintf("Maximum allowed median peer time offset adjustment. Local perspective of time may be influenced by peers forward or backward by this amount. (default: %u seconds)", DEFAULT_MAX_TIME_ADJUSTMENT), ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
460+
argsman.AddArg("-maxtimeadjustment", strprintf("Maximum allowed median peer time offset adjustment. Local perspective of time may be influenced by outbound peers forward or backward by this amount (default: %u seconds).", DEFAULT_MAX_TIME_ADJUSTMENT), ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
461461
argsman.AddArg("-maxuploadtarget=<n>", strprintf("Tries to keep outbound traffic under the given target per 24h. Limit does not apply to peers with 'download' permission or blocks created within past week. 0 = no limit (default: %s). Optional suffix units [k|K|m|M|g|G|t|T] (default: M). Lowercase is 1000 base while uppercase is 1024 base", DEFAULT_MAX_UPLOAD_TARGET), ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
462462
argsman.AddArg("-onion=<ip:port>", "Use separate SOCKS5 proxy to reach peers via Tor onion services, set -noonion to disable (default: -proxy)", ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
463463
argsman.AddArg("-i2psam=<ip:port>", "I2P SAM proxy to reach I2P peers and accept I2P connections (default: none)", ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
464464
argsman.AddArg("-i2pacceptincoming", "If set and -i2psam is also set then incoming I2P connections are accepted via the SAM proxy. If this is not set but -i2psam is set then only outgoing connections will be made to the I2P network. Ignored if -i2psam is not set. Listening for incoming I2P connections is done through the SAM proxy, not by binding to a local address and port (default: 1)", ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
465-
argsman.AddArg("-onlynet=<net>", "Make automatic outgoing connections only through network <net> (" + Join(GetNetworkNames(), ", ") + "). Incoming connections are not affected by this option. This option can be specified multiple times to allow multiple networks.", ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
465+
argsman.AddArg("-onlynet=<net>", "Make automatic outbound connections only to network <net> (" + Join(GetNetworkNames(), ", ") + "). Inbound and manual connections are not affected by this option. It can be specified multiple times to allow multiple networks.", ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
466466
argsman.AddArg("-peerbloomfilters", strprintf("Support filtering of blocks and transaction with bloom filters (default: %u)", DEFAULT_PEERBLOOMFILTERS), ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
467467
argsman.AddArg("-peerblockfilters", strprintf("Serve compact block filters to peers per BIP 157 (default: %u)", DEFAULT_PEERBLOCKFILTERS), ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
468468
argsman.AddArg("-permitbaremultisig", strprintf("Relay non-P2SH multisig (default: %u)", DEFAULT_PERMIT_BAREMULTISIG), ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);

0 commit comments

Comments
 (0)