Skip to content
Bitcoin Roots

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