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. The two line-number columns refer to before and after.
doc/roots-features.md
CHANGED
|
@@ -255,34 +255,51 @@ mining. Explicitly supplied staged options warn that they are not enforced.
|
|
|
255
255
|
individual extras; provides `forceinbound` (implies `noban`) and explicit
|
|
256
256
|
compact-filter permissions; permits subnet disconnect; and can disable
|
|
257
257
|
outbound v1 on clearnet (`v2onlyclearnet`, default false). Default fee filters
|
|
258
|
-
are enabled. Bloom service is not globally advertised by default, with
|
|
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
|
|
259
260
|
implicit loopback permission when not explicitly disabled. Retain inactivity
|
|
260
261
|
limits, protected outbound/manual peers, bounded address scoring/cache behavior,
|
|
261
262
|
duplicate manual-connection checks and block-fetch safeguards. Tor binds must
|
|
262
263
|
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.
|
|
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.
|
|
286
303
|
|
|
287
304
|
### Wallet authorization, signing and spend controls
|
|
288
305
|
|