-
Notifications
You must be signed in to change notification settings - Fork 1.2k
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
backport: merge bitcoin#21261, #20877, #21832, #22547, #22544, #22959, #23324, partial bitcoin#20764 (cli backports: part 2) #6034
Conversation
The loop is supposed to iterate for `rows.size()` (which is `3`, and this change is done in bitcoin#23324), not for `m_networks.size()` (which is also `3` but subsequent backports change that).
…networks, add I2P peers
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM bde72a4
" peer selection (only displayed if the -asmap config option is set)\n" | ||
" id Peer index, in increasing order of peer connections since node startup\n" | ||
" address IP address and port of the peer\n" | ||
" version Peer version and subversion concatenated, e.g. \"70016/Satoshi:21.0.0/\"\n\n" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: should it be dashified? probably not
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
utACK
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
utACK bde72a4
, bitcoin#26065, bitcoin#26837, bitcoin#25993, bitcoin#26838, bitcoin#27937, partial bitcoin#22589, bitcoin#22229 (i2p support: part 2) 0a23820 merge bitcoin#27937: i2p documentation updates (Kittywhiskers Van Gogh) 1dc50d0 merge bitcoin#26838: I2P documentation updates (Kittywhiskers Van Gogh) 5058519 merge bitcoin#25993: Add I2P guidance related to bandwidth and i2pd software version (Kittywhiskers Van Gogh) 859f59b merge bitcoin#26837: I2P network optimizations (Kittywhiskers Van Gogh) 9f80734 merge bitcoin#26065: use the same destination type for transient and persistent addresses (Kittywhiskers Van Gogh) 9bf3829 merge bitcoin#25355: add support for transient addresses for outbound connections (Kittywhiskers Van Gogh) 4977073 merge bitcoin#22497: remove ResetI2PPorts() (Kittywhiskers Van Gogh) 63d5853 merge bitcoin#22648: improve i2p/tor docs and i2p reachable unit tests (Kittywhiskers Van Gogh) f04ce8b partial bitcoin#22229: consolidate to f-strings (part 1) (Kittywhiskers Van Gogh) 68ea6cc merge bitcoin#22589: update I2P hardcoded seeds and docs for 22.0 (Kittywhiskers Van Gogh) Pull request description: ## Additional Information * Dependent on #6034 ## Breaking Changes * With I2P connections, a new, transient address is used for each outbound connection if `-i2pacceptincoming=0`. ## Checklist: - [x] I have performed a self-review of my own code - [x] I have commented my code, particularly in hard-to-understand areas **(note: N/A)** - [x] I have added or updated relevant unit/integration/functional/e2e tests - [x] I have made corresponding changes to the documentation - [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_ ACKs for top commit: PastaPastaPasta: re-utACK [0a23820](0a23820); only changed commit title / text Tree-SHA512: ef426263d7e81a5eec8555db21dcd24f5dbb65f5faa7013c7e0601a4c60ae675813aadf68ebc19936aa15bdbd8f6db88b4bd55dfaf4ac412abbda86fb1ac9c83
, bitcoin#24555, bitcoin#24663, bitcoin#24205, bitcoin#24687, bitcoin#25173, bitcoin#24991, partial bitcoin#24468 (cjdns support) 32f8fda merge bitcoin#24991: allow startup with -onlynet=onion -listenonion=1 (Kittywhiskers Van Gogh) e67ed92 merge bitcoin#25173: add coverage for unknown network in -onlynet (Kittywhiskers Van Gogh) 77efd36 merge bitcoin#24687: Check an invalid -i2psam will raise an init error (Kittywhiskers Van Gogh) fb1416f merge bitcoin#24205: improve network reachability test coverage and safety (Kittywhiskers Van Gogh) 7cb7479 merge bitcoin#24663: add links to doc/cjdns.md (Kittywhiskers Van Gogh) c736ebf merge bitcoin#24555: create initial doc/cjdns.md for CJDNS how-to documentation (Kittywhiskers Van Gogh) 554bd24 partial bitcoin#24468: improve -onlynet help and related tor/i2p documentation (Kittywhiskers Van Gogh) 5436b6a merge bitcoin#24165: extend inbound eviction protection by network to CJDNS peers (Kittywhiskers Van Gogh) d52724d merge bitcoin#22834: respect -onlynet= when making outbound connections (Kittywhiskers Van Gogh) f9d1a9a merge bitcoin#23077: Full CJDNS support (Kittywhiskers Van Gogh) Pull request description: ## Additional Information * Depends on #6034 * Depends on #6035 * If `-proxy=` is given together with `-noonion` then the provided proxy will not be set as a proxy for reaching the Tor network. So it will not be possible to open manual connections to the Tor network for example with the `addnode` RPC. To mimic the old behavior use `-proxy=` together with `-onlynet=` listing all relevant networks except `onion`. * [bitcoin#24165](bitcoin#24165) has been backported _before_ [bitcoin#23758](bitcoin#23758) and to account for this, minor changes were made in `src/test/net_peer_eviction_tests.cpp` (using `nTimeConnected` instead of `m_connected`). When backporting [bitcoin#23758](bitcoin#23758), these changes will have to be reversed as they won't be covered by the cherry-pick diff. * CJDNS support has been labelled as being introduced in Dash Core 21.0, in line with the milestone designation of the PR. Should `develop` be used for a new minor/patch release, `doc/cjdns.md` will have to be modified to reflect the correct version number. ## Breaking changes No expected protocol or consensus changes. ## Checklist: - [x] I have performed a self-review of my own code - [x] I have commented my code, particularly in hard-to-understand areas **(note: N/A)** - [x] I have added or updated relevant unit/integration/functional/e2e tests - [x] I have made corresponding changes to the documentation - [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_ ACKs for top commit: PastaPastaPasta: utACK 32f8fda Tree-SHA512: e23b22ca5edbe4c4abeab0bc07780303e68e7c4cc46b7697300b0837c5acd3a98649b6b03bd07a23c827bd85f64210173027b0b0eea31872c031fa4ed04eeb0c
, bitcoin#22340, bitcoin#20799, bitcoin#25147, bitcoin#20764, bitcoin-core/gui#206 (BIP152 backports) 1cbf3b9 merge bitcoin-core/gui#206: Display fRelayTxes and bip152_highbandwidth_{to, from} in peer details (Kittywhiskers Van Gogh) 2390621 merge bitcoin#20764: cli -netinfo peer connections dashboard updates (Kittywhiskers Van Gogh) 06a6f84 merge bitcoin#25147: follow ups to bitcoin#20799 (removing support for v1 compact blocks) (Kittywhiskers Van Gogh) 6274a57 merge bitcoin#20799: Only support version 2 compact blocks (Kittywhiskers Van Gogh) f4ce573 merge bitcoin#22340: Use legacy relaying to download blocks in blocks-only mode (Kittywhiskers Van Gogh) 73b8f84 merge bitcoin#22147: p2p: Protect last outbound HB compact block peer (Kittywhiskers Van Gogh) 2ce4818 merge bitcoin#20599: Tolerate sendheaders and sendcmpct messages before verack (Kittywhiskers Van Gogh) 799214b merge bitcoin#19776: expose high bandwidth mode state via getpeerinfo (Kittywhiskers Van Gogh) Pull request description: ## Additional Information * Version 2 of BIP152 high-bandwidth mode/compact blocks implements SegWit support. As Dash does not implement SegWit, there has never been a need to implement v2 (and therefore, have all the code necessary to support both v1 and v2, that gets removed as part of making support v2 only). * Despite that, the changes surrounding removing support for both versions (that in our case, do not apply as we never have supported v2) refactor the code in other ways and influence their behaviour. In the interest of upstream alignment, those changes have been backported. * [bitcoin#19776](bitcoin#19776) doesn't seem to work on its own without successive backports, specifically [bitcoin#20799](bitcoin#20799), despite the latter being a later backport. <details> <summary>19776-only p2p_compactblocks.py run (9f2c868)</summary> ``` dash@825a14c32b73:/src/dash$ ./test/functional/p2p_compactblocks.py 2024-06-09T12:29:09.777000Z TestFramework (INFO): Initializing test directory /tmp/dash_func_test_kb2nr5oe 2024-06-09T12:29:16.341000Z TestFramework (INFO): Testing SENDCMPCT p2p message... 2024-06-09T12:29:31.432000Z TestFramework (INFO): Testing compactblock construction... 2024-06-09T12:29:40.068000Z TestFramework (INFO): Testing compactblock requests... 2024-06-09T12:29:44.597000Z TestFramework (INFO): Testing getblocktxn handler... 2024-06-09T12:29:59.808000Z TestFramework (INFO): Testing compactblock requests/announcements not at chain tip... 2024-06-09T12:30:03.855000Z TestFramework (INFO): Testing handling of incorrect blocktxn responses... 2024-06-09T12:30:05.868000Z TestFramework (INFO): Testing reconstructing compact blocks from all peers... 2024-06-09T12:30:09.389000Z TestFramework (INFO): Testing end-to-end block relay... 2024-06-09T12:30:10.404000Z TestFramework (INFO): Testing handling of invalid compact blocks... 2024-06-09T12:30:12.418000Z TestFramework (INFO): Testing invalid index in cmpctblock message... 2024-06-09T12:30:14.384000Z TestFramework (INFO): Testing high-bandwidth mode states via getpeerinfo... 2024-06-09T12:30:16.893000Z TestFramework (ERROR): Assertion failed Traceback (most recent call last): File "/src/dash/test/functional/test_framework/test_framework.py", line 158, in main self.run_test() File "./test/functional/p2p_compactblocks.py", line 849, in run_test self.test_highbandwidth_mode_states_via_getpeerinfo() File "./test/functional/p2p_compactblocks.py", line 791, in test_highbandwidth_mode_states_via_getpeerinfo hb_test_node.send_and_ping(msg_block(block)) File "/src/dash/test/functional/test_framework/p2p.py", line 579, in send_and_ping self.sync_with_ping(timeout=timeout) File "/src/dash/test/functional/test_framework/p2p.py", line 596, in sync_with_ping self.wait_until(test_function, timeout=timeout) File "/src/dash/test/functional/test_framework/p2p.py", line 487, in wait_until wait_until_helper(test_function, timeout=timeout, lock=p2p_lock, timeout_factor=self.timeout_factor) File "/src/dash/test/functional/test_framework/util.py", line 249, in wait_until_helper if predicate(): File "/src/dash/test/functional/test_framework/p2p.py", line 484, in test_function assert self.is_connected AssertionError 2024-06-09T12:30:17.396000Z TestFramework (INFO): Stopping nodes 2024-06-09T12:30:18.400000Z TestFramework (WARNING): Not cleaning up dir /tmp/dash_func_test_kb2nr5oe 2024-06-09T12:30:18.401000Z TestFramework (ERROR): Test failed. Test logging available at /tmp/dash_func_test_kb2nr5oe/test_framework.log 2024-06-09T12:30:18.401000Z TestFramework (ERROR): 2024-06-09T12:30:18.401000Z TestFramework (ERROR): Hint: Call /src/dash/test/functional/combine_logs.py '/tmp/dash_func_test_kb2nr5oe' to consolidate all logs 2024-06-09T12:30:18.401000Z TestFramework (ERROR): 2024-06-09T12:30:18.401000Z TestFramework (ERROR): If this failure happened unexpectedly or intermittently, please file a bug and provide a link or upload of the combined log. 2024-06-09T12:30:18.402000Z TestFramework (ERROR): https://github.com/dashpay/dash/issues 2024-06-09T12:30:18.402000Z TestFramework (ERROR): ``` </details> <details> <summary>20799-incl p2p_compactblocks.py run (aa116c4)</summary> ``` dash@825a14c32b73:/src/dash$ ./test/functional/p2p_compactblocks.py 2024-06-09T12:34:27.169000Z TestFramework (INFO): Initializing test directory /tmp/dash_func_test_7d65lmhz 2024-06-09T12:34:32.695000Z TestFramework (INFO): Testing SENDCMPCT p2p message... 2024-06-09T12:34:51.288000Z TestFramework (INFO): Testing compactblock construction... 2024-06-09T12:34:55.325000Z TestFramework (INFO): Testing compactblock requests... 2024-06-09T12:34:59.861000Z TestFramework (INFO): Testing getblocktxn handler... 2024-06-09T12:35:07.460000Z TestFramework (INFO): Testing compactblock requests/announcements not at chain tip... 2024-06-09T12:35:09.503000Z TestFramework (INFO): Testing handling of incorrect blocktxn responses... 2024-06-09T12:35:11.519000Z TestFramework (INFO): Testing reconstructing compact blocks from all peers... 2024-06-09T12:35:15.039000Z TestFramework (INFO): Testing end-to-end block relay... 2024-06-09T12:35:16.055000Z TestFramework (INFO): Testing handling of invalid compact blocks... 2024-06-09T12:35:17.062000Z TestFramework (INFO): Testing invalid index in cmpctblock message... 2024-06-09T12:35:19.139000Z TestFramework (INFO): Testing high-bandwidth mode states via getpeerinfo... 2024-06-09T12:35:22.159000Z TestFramework (INFO): Stopping nodes 2024-06-09T12:35:23.163000Z TestFramework (INFO): Cleaning up /tmp/dash_func_test_7d65lmhz on exit 2024-06-09T12:35:23.163000Z TestFramework (INFO): Tests successful ``` </details> * The backport of [bitcoin-core/gui#206](bitcoin-core/gui#206) is a continuation of 3e8ba24 from [dash#5964](#5964) * The backport of [bitcoin#20764](bitcoin#20764) is a continuation of bd934c7 from [dash#6034](#6034) ## Breaking changes * The `getpeerinfo` RPC returns two new boolean fields, `bip152_hb_to` and `bip152_hb_from`, that respectively indicate whether we selected a peer to be in compact blocks high-bandwidth mode or whether a peer selected us as a compact blocks high-bandwidth peer. High-bandwidth peers send new block announcements via a `cmpctblock` message rather than the usual inv/headers announcements. See BIP 152 for more details. * Blocks-only mode will use legacy relaying instead of BIP152 high-bandwidth mode ## Checklist: - [x] I have performed a self-review of my own code - [x] I have commented my code, particularly in hard-to-understand areas **(note: N/A)** - [x] I have added or updated relevant unit/integration/functional/e2e tests - [x] I have made corresponding changes to the documentation - [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_ ACKs for top commit: UdjinM6: utACK 1cbf3b9 PastaPastaPasta: utACK 1cbf3b9 knst: utACK 1cbf3b9 Tree-SHA512: 5947b622d8d57a1dc9445cd6e07d4ad690379416d0fcf04ed574269975d1beb704691a79ff081341f3c800cf11869d401f1ed90baa5449f371f9ce658f2d2e95
Additional Information
Dependency for backport: merge bitcoin#22648, #22497, #25355, #26065, #26837, #25993, #26838, #27937, partial bitcoin#22589, #22229 (i2p support: part 2) #6035
Dependency for backport: merge bitcoin#23077, #22834, #24165, #24555, #24663, #24205, #24687, #25173, #24991, partial bitcoin#24468 (cjdns support) #6031
In dash#5904 (bitcoin#21595), one of the loops in
ProcessReply
is supposed to iteraterows.size()
times (which at the time was hardcoded to3
), the backport erroneously set the value tom_networks.size()
(which also evaluated to3
) as part of increasingm_networks.size()
usage.As this pull request includes bitcoin#23324, which changes it over to
rows.size()
, the above has been corrected in a separate commit for documentation purposes.-addrinfo
output-getinfo
output (diamonds are due to rendering limitations of my terminal and are not indicative of the symbols used)-netinfo
outputBreaking Changes
CLI
-addrinfo
now returns a single field for the number ofonion
addresses known to the node instead of separatetorv2
andtorv3
fields, as support for TorV2 addresses was removed from Dash Core in 18.0.-getinfo
has been updated to return data in a user-friendly format that also reduces vertical space.Checklist