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. The two line-number columns refer to before and after.
doc/roots-v31-port-review.md
CHANGED
|
@@ -334,8 +334,8 @@ The remaining default headless functional suite is also covered, beyond the
|
|
|
334
334
|
selected policy filter. Its block resurrection, CSV/DER, orphan/package,
|
|
335
335
|
burn-accounting RPC and large wallet-script fixtures retain their original
|
|
336
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
|
|
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
339
|
gates, and the applicable functional tests pass; optional-feature/environment
|
|
340
340
|
skips remain gaps. The bounded Clang ASan/UBSan campaigns cover parser,
|
|
341
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
550
|
sanitizer evidence retains the same production source and daemon hash. Parser,
|
|
551
551
|
penalty arithmetic and randomized native pool assembly have bounded sanitizer
|
|
552
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.
|