v31.1-roots.1 · Commit 5: [PATCH 05/17] feat(net): preserve Roots peer controls and health view on v31
doc/roots-features.md
Before: doc/roots-features.md · After: doc/roots-features.md
File metadata
index 097da9686f535814c26a80a03a95347bc1101e1a..eb9921dfd7bf10781d8ba03c50b4168803b3b418 100644
Download original patch · Release notes
Diff rows 1–75 of 75. Line numbers refer to the original before/after files.
+ Added− RemovedUnmarked lines are context.
Scroll the code area horizontally to read long lines. Before is on the left; after is on the right. Unified view fits narrow screens more easily.
doc/roots-features.md
CHANGED
|
@@ -255,34 +255,51 @@ mining. Explicitly supplied staged options warn that they are not enforced.
|
|
| 255 |
individual extras; provides `forceinbound` (implies `noban`) and explicit
|
| 256 |
compact-filter permissions; permits subnet disconnect; and can disable
|
| 257 |
outbound v1 on clearnet (`v2onlyclearnet`, default false). Default fee filters
|
| 258 |
-
are enabled. Bloom service is not globally advertised by default, with
|
|
|
|
| 259 |
implicit loopback permission when not explicitly disabled. Retain inactivity
|
| 260 |
limits, protected outbound/manual peers, bounded address scoring/cache behavior,
|
| 261 |
duplicate manual-connection checks and block-fetch safeguards. Tor binds must
|
| 262 |
not accidentally grant clearnet whitelist permission; SOCKS credentials must
|
| 263 |
-
not be logged. See networking (`src/net.cpp`, source reference),
|
| 264 |
-
processing (`src/net_processing.cpp`, source reference), permissions (`src/net_permissions.cpp`, source reference)
|
| 265 |
-
and proxy (`src/netbase.cpp`, source reference). Acceptance:
|
| 266 |
-
p2p_compactblocks_extratxs.py (`test/functional/p2p_compactblocks_extratxs.py`, source reference),
|
| 267 |
-
p2p_permissions.py (`test/functional/p2p_permissions.py`, source reference),
|
| 268 |
-
p2p_disconnect_ban.py (`test/functional/p2p_disconnect_ban.py`, source reference),
|
| 269 |
-
p2p_eviction.py (`test/functional/p2p_eviction.py`, source reference),
|
| 270 |
-
p2p_filter.py (`test/functional/p2p_filter.py`, source reference) and
|
| 271 |
-
p2p_invalid_messages.py (`test/functional/p2p_invalid_messages.py`, source reference), each
|
| 272 |
-
`run_test`. Gap: the full new permission/memory/transport/Tor-bind combination
|
| 273 |
-
matrix and platform-specific CPU measurement.
|
| 274 |
-
- **peer-health:** keep sorting/selection and current connection facts in the
|
| 275 |
-
existing peer table/detail pane. Missing state must reset to unavailable,
|
| 276 |
-
never another peer's stale values. Node RPC adds last block announcement,
|
| 277 |
-
forced-inbound state, deprecated misbehavior score and optional CPU load in
|
| 278 |
-
per mille of connection duration; omit CPU load when not measured or duration
|
| 279 |
-
is unsuitable. No history retention or content/activity feed. See
|
| 280 |
-
peer RPC (`src/rpc/net.cpp`, source reference), peer table (`src/qt/peertablemodel.cpp`, source reference) and
|
| 281 |
-
details (`src/qt/rpcconsole.cpp`, source reference). Acceptance:
|
| 282 |
-
apptests.cpp (`src/qt/test/apptests.cpp`, source reference) `consoleTests` resets unavailable
|
| 283 |
-
details; rpc_net.py (`test/functional/rpc_net.py`, source reference) `run_test` covers RPC.
|
| 284 |
-
Gap: visual checks at 1280×800 and 1920×1080, 100%/150% font scale, populated
|
| 285 |
-
sorting/selection and refresh; these were not executed by the headless baseline.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 286 |
|
| 287 |
### Wallet authorization, signing and spend controls
|
| 288 |
|
|
|
|
| 255 |
individual extras; provides `forceinbound` (implies `noban`) and explicit
|
| 256 |
compact-filter permissions; permits subnet disconnect; and can disable
|
| 257 |
outbound v1 on clearnet (`v2onlyclearnet`, default false). Default fee filters
|
| 258 |
+
are enabled; quantization uses a 100 sat/kvB seed below 1,000 sat/kvB
|
| 259 |
+
incremental fee, and a 1,000 sat/kvB seed otherwise. Bloom service is not globally advertised by default, with
|
| 260 |
implicit loopback permission when not explicitly disabled. Retain inactivity
|
| 261 |
limits, protected outbound/manual peers, bounded address scoring/cache behavior,
|
| 262 |
duplicate manual-connection checks and block-fetch safeguards. Tor binds must
|
| 263 |
not accidentally grant clearnet whitelist permission; SOCKS credentials must
|
| 264 |
+
not be logged. See [networking](/src/net.cpp),
|
| 265 |
+
[processing](/src/net_processing.cpp), [permissions](/src/net_permissions.cpp)
|
| 266 |
+
and [proxy](/src/netbase.cpp). Acceptance:
|
| 267 |
+
[p2p_compactblocks_extratxs.py](/test/functional/p2p_compactblocks_extratxs.py),
|
| 268 |
+
[p2p_permissions.py](/test/functional/p2p_permissions.py),
|
| 269 |
+
[p2p_disconnect_ban.py](/test/functional/p2p_disconnect_ban.py),
|
| 270 |
+
[p2p_eviction.py](/test/functional/p2p_eviction.py),
|
| 271 |
+
[p2p_filter.py](/test/functional/p2p_filter.py) and
|
| 272 |
+
[p2p_invalid_messages.py](/test/functional/p2p_invalid_messages.py), each
|
| 273 |
+
`run_test`. Candidate boundaries additionally use
|
| 274 |
+
[p2p_roots_controls.py](/test/functional/p2p_roots_controls.py),
|
| 275 |
+
[p2p_feefilter.py](/test/functional/p2p_feefilter.py) and
|
| 276 |
+
[rpc_getblockfrompeer.py](/test/functional/rpc_getblockfrompeer.py).
|
| 277 |
+
Memory uses four decimal places of MB (100-byte increments); negative values
|
| 278 |
+
disable and malformed values retain the default, matching source behavior.
|
| 279 |
+
The cap tracks recursive transaction dynamic usage; slot metadata is separately
|
| 280 |
+
bounded by that cap. Oversized replacements are excluded as well as rejects.
|
| 281 |
+
Clearnet uses the source routable IPv4/IPv6 classification: loopback and
|
| 282 |
+
non-routable addresses remain eligible for v1. Tests redirect routable targets
|
| 283 |
+
through a local SOCKS server. Gap: exhaustive combinations and non-Linux
|
| 284 |
+
platform measurements; current-connection CPU reporting belongs to peer-health.
|
| 285 |
+
- **peer-health:** sorting, selection and current connection facts use the
|
| 286 |
+
existing peer table/detail pane. Missing state resets to unavailable, never
|
| 287 |
+
another peer's stale values. Persistent table indexes resolve the current row
|
| 288 |
+
after storage refresh. Node RPC adds last block announcement, forced-inbound
|
| 289 |
+
state, deprecated misbehavior score (0 or 100 pending discouragement) and
|
| 290 |
+
optional CPU load in per mille of connection duration. CPU load is omitted
|
| 291 |
+
when not measured or duration is non-positive; failed/backwards CPU-clock
|
| 292 |
+
readings are ignored. Measurement uses one scalar per current connection, with
|
| 293 |
+
no history retention or content/activity feed. See [peer RPC](../src/rpc/net.cpp),
|
| 294 |
+
[peer table](../src/qt/peertablemodel.cpp) and
|
| 295 |
+
[details](../src/qt/rpcconsole.cpp). Acceptance:
|
| 296 |
+
[apptests](../src/qt/test/apptests.cpp) tests empty refresh, unavailable reset and
|
| 297 |
+
an optional live regtest sorting/selection/refresh profile;
|
| 298 |
+
[rpc_net.py](../test/functional/rpc_net.py) covers current RPC fields and
|
| 299 |
+
zero/backwards duration. Native v31 starting-height RPC deprecation is retained.
|
| 300 |
+
The live GUI profile captures Peers table/detail/unavailable at 1280×800 and
|
| 301 |
+
1920×1080 with 100%/150% application font scale. Gap: non-Linux visual/CPU
|
| 302 |
+
measurements and exhaustive timing races.
|
| 303 |
|
| 304 |
### Wallet authorization, signing and spend controls
|
| 305 |
|