v31.1-roots.1 · Commit 5: [PATCH 05/17] feat(net): preserve Roots peer controls and health view on v31
doc/roots-v31-port-review.md
Before: doc/roots-v31-port-review.md · After: doc/roots-v31-port-review.md
File metadata
index 17b088f77e5b1e74c074db3f70766dea64156ca2..0948ff33ab106892045cf13b8157c1d4fadd214d 100644
Download original patch · Release notes
Diff rows 1–82 of 82. 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-v31-port-review.md
CHANGED
|
@@ -334,8 +334,8 @@ The remaining default headless functional suite is also covered, beyond the
|
|
| 334 |
selected policy filter. Its block resurrection, CSV/DER, orphan/package,
|
| 335 |
burn-accounting RPC and large wallet-script fixtures retain their original
|
| 336 |
assertions with explicit allowances for their constructed outputs and padding.
|
| 337 |
-
The IBD fee-filter fixture uses the buckets produced by the unchanged native
|
| 338 |
-
rounder from the Roots default relay fee. Full native units, non-Boost CTest
|
| 339 |
gates, and the applicable functional tests pass; optional-feature/environment
|
| 340 |
skips remain gaps. The bounded Clang ASan/UBSan campaigns cover parser,
|
| 341 |
transaction/carrier and native input/witness callers, not the L8/L9 extensions.
|
|
@@ -550,3 +550,72 @@ the dynamic/subdust template-reward interactions. The existing template matrix
|
|
| 550 |
sanitizer evidence retains the same production source and daemon hash. Parser,
|
| 551 |
penalty arithmetic and randomized native pool assembly have bounded sanitizer
|
| 552 |
fuzz smoke coverage. No repeated full sweep or exhaustive fuzz claim is made.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 334 |
selected policy filter. Its block resurrection, CSV/DER, orphan/package,
|
| 335 |
burn-accounting RPC and large wallet-script fixtures retain their original
|
| 336 |
assertions with explicit allowances for their constructed outputs and padding.
|
| 337 |
+
The IBD fee-filter fixture follows native bucket quantization; L10 restores
|
| 338 |
+
the source incremental-fee seed selection and its corresponding fixture values. Full native units, non-Boost CTest
|
| 339 |
gates, and the applicable functional tests pass; optional-feature/environment
|
| 340 |
skips remain gaps. The bounded Clang ASan/UBSan campaigns cover parser,
|
| 341 |
transaction/carrier and native input/witness callers, not the L8/L9 extensions.
|
|
|
|
| 550 |
sanitizer evidence retains the same production source and daemon hash. Parser,
|
| 551 |
penalty arithmetic and randomized native pool assembly have bounded sanitizer
|
| 552 |
fuzz smoke coverage. No repeated full sweep or exhaustive fuzz claim is made.
|
| 553 |
+
|
| 554 |
+
## L10.1 peer resource and permission controls
|
| 555 |
+
|
| 556 |
+
Compact reconstruction retains 32,768 extra slots by default with a separate
|
| 557 |
+
10 decimal MB transaction dynamic-usage budget. Zero/negative disables caching;
|
| 558 |
+
malformed fixed-point memory settings retain the source default. Four decimal
|
| 559 |
+
places of MB represent 100-byte increments. Slot allocation is capped from the
|
| 560 |
+
memory budget, avoiding an extreme count-only allocation. Eviction occurs
|
| 561 |
+
before addition to avoid size_t overflow on 32-bit platforms. The source's
|
| 562 |
+
100,000-byte individual dynamic-usage exclusion now covers replacements too,
|
| 563 |
+
matching the stated contract. Native v31 compact-block reconstruction is unchanged.
|
| 564 |
+
|
| 565 |
+
ForceInbound implies NoBan/Download. Its random fallback considers only inbound
|
| 566 |
+
ban-able peers, after unconditional NoBan/outbound protections; ordinary eviction
|
| 567 |
+
retains native scoring. Explicit blockfilters/compactfilters/cfilters permission
|
| 568 |
+
requires the basic index and grants native BIP157 services to that connection;
|
| 569 |
+
All retains the source non-explicit exception. Legacy whitelist defaults include
|
| 570 |
+
Addr; outbound ranges apply to automatic and manual connections. Bloom is
|
| 571 |
+
unadvertised globally by default and permitted on loopback unless explicitly
|
| 572 |
+
disabled. Onion-specific and first-bind Tor targets suppress address whitelist
|
| 573 |
+
permissions, including implicit loopback bloom.
|
| 574 |
+
|
| 575 |
+
Subnet disconnect uses v31's existing CSubNet overload and native RPC argument
|
| 576 |
+
views. Clearnet-v2-only suppresses v1 initiation and fallback for the source
|
| 577 |
+
routable IPv4/IPv6 classification; loopback/non-routable and encrypted overlay
|
| 578 |
+
networks retain source eligibility. Tests use a local forwarding SOCKS server
|
| 579 |
+
for routable targets and authentication, with no external traffic. Credentials
|
| 580 |
+
are not included in the proxy debug message. Fee filters default on with the
|
| 581 |
+
source explicit off switch. Fee-filter buckets retain the source 100 sat/kvB
|
| 582 |
+
seed below 1,000 sat/kvB initialized incremental fee and 1,000 otherwise;
|
| 583 |
+
both profiles and the IBD exit regression are tested. Duplicate CJDNS manual addresses ignore ports;
|
| 584 |
+
local-address scores saturate, and duplicate manual block fetch rejects before
|
| 585 |
+
resetting in-flight tracking. The source's nullable FetchBlock overload has no
|
| 586 |
+
production caller; v31's typed existing-header interface remains sufficient.
|
| 587 |
+
|
| 588 |
+
Native v31 already carries network-key inventory timers/address-cache grouping,
|
| 589 |
+
inactivity checks, reconnection cleanup, orphan resource controls, protected
|
| 590 |
+
outbound/manual peers and safe subversion handling. Their upstream regression
|
| 591 |
+
assertions remain. No new wire message/inventory type or filtered-witness-block
|
| 592 |
+
extension is introduced. These are local controls over existing P2P interfaces.
|
| 593 |
+
Peer-health fields and Qt evidence remain L10.2.
|
| 594 |
+
|
| 595 |
+
Provenance: mixed peer controls from `1b73fe3d21`, `ec9db369f5`; compact and
|
| 596 |
+
permission fixtures from `fc0dc945d0` plus their feature-owned corrective history
|
| 597 |
+
in the complete mapping. Retain Jaromil/devjoinedthechat and Core/Knots credit.
|
| 598 |
+
|
| 599 |
+
### L10.2 peer-health adaptation
|
| 600 |
+
|
| 601 |
+
The source current-connection fields travel through native `CNodeStats`,
|
| 602 |
+
`CNodeStateStats`, `getpeerinfo` and the existing GUI node interface. Thread CPU
|
| 603 |
+
measurement covers the message-processing/send pass, not historical samples.
|
| 604 |
+
Unavailable or backwards CPU readings are ignored, and RPC omits load unless
|
| 605 |
+
CPU time and connection duration are positive. Native v31's deprecated
|
| 606 |
+
`startingheight` RPC gate is retained rather than reversing upstream interface
|
| 607 |
+
changes. The source Starting Block detail uses the still-available native state
|
| 608 |
+
field and resets to Unknown when unavailable. Deprecated misbehavior score remains source-compatible at 0 or 100.
|
| 609 |
+
|
| 610 |
+
The peer detail pane clears state fields before each refresh, and clears the
|
| 611 |
+
hidden BIP324 session ID when switching transports. The model resolves peer data
|
| 612 |
+
by current row because refresh swaps its storage; persistent selection cannot
|
| 613 |
+
keep a pointer into a discarded snapshot. Native table columns and sorting are
|
| 614 |
+
preserved. Focused GUI tests can connect to caller-supplied real regtest nodes,
|
| 615 |
+
exercise sorting/refresh/disconnect selection and the production unavailable
|
| 616 |
+
try-lock branch, and capture the rendered window at the specified font/resolution
|
| 617 |
+
matrix. No static mockup or history collector is introduced.
|
| 618 |
+
|
| 619 |
+
These adaptations preserve the catalogued Roots contracts and attribution to
|
| 620 |
+
Jaromil and devjoinedthechat alongside the Bitcoin Core and Bitcoin Knots
|
| 621 |
+
provenance already recorded above.
|