Skip to content

Core functional leftover-P2P follow-up: official p2p_compactblocks_blocksonly + p2p_blocksonly (37 run) - #125

Merged
reardencode merged 10 commits into
masterfrom
core/p2p-followup
Aug 18, 2026
Merged

Core functional leftover-P2P follow-up: official p2p_compactblocks_blocksonly + p2p_blocksonly (37 run)#125
reardencode merged 10 commits into
masterfrom
core/p2p-followup

Conversation

@rearden-grok

@rearden-grok rearden-grok Bot commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

Summary

Leftover-P2P follow-up after #116. Official unmodified p2p_compactblocks_blocksonly.py is whole-script green (run.sh --v2transport) and is now run (35→36).

Product:

  • -blocksonly does not select BIP152 HB; it getdata's MSG_WITNESS_BLOCK. Relay peers getdata MSG_CMPCT_BLOCK only after the peer sends sendcmpct v2 (not by default — that broke feature_csv_activation).
  • Handshake advertises BIP155 sendaddrv2 before verack.
  • Low-work header announces log Core Ignoring low-work chain (height=N) / Synchronizing blockheaders, height: N using the pending-path height (14 one-header announces → 14). Non-noban does not persist a low-work headers tree; noban stores headers-only.
  • INV of a known fork header may getdata missing bodies on that path.

Honest skip analogs (fresh official first-fails):

  • p2p_headers_sync_with_minchainwork.py:112 — ~2032-block generatetoaddress 120s timeout (then 4110-block reorg + presynced_headers)
  • p2p_invalid_messages.py:203 — empty addrv2 Core log zoo (then oversized + v1 test_resource_exhaustion)
  • p2p_unrequested_blocks.py:225 — INV getdata[0] is not the headers-only parent

Q-41 is 36 / 267. Prior 35 run names unchanged.

Pins

Official run.sh green: p2p_compactblocks, p2p_compactblocks_hb (v1+v2), p2p_sendheaders, p2p_initial_headers_sync, mempool_reorg, p2p_block_sync (v1+v2), rpc_getchaintips, feature_bip68_sequence, feature_csv_activation.

Do not merge unless asked.

@rearden-grok rearden-grok Bot added the core-functional Run Core functional nightly.sh on this PR (inventory + release-pin warn) label Aug 18, 2026
@rearden-grok

rearden-grok Bot commented Aug 18, 2026

Copy link
Copy Markdown
Contributor Author

Retrigger CI after push that did not start workflows.

@rearden-grok rearden-grok Bot closed this Aug 18, 2026
@rearden-grok rearden-grok Bot reopened this Aug 18, 2026
@rearden-grok
rearden-grok Bot force-pushed the core/p2p-followup branch 2 times, most recently from 9f9bc5a to f1aeb2d Compare August 18, 2026 16:10
@rearden-grok rearden-grok Bot changed the title Core functional leftover-P2P follow-up: official p2p_compactblocks_blocksonly (36 run) Core functional leftover-P2P follow-up: official p2p_compactblocks_blocksonly + p2p_blocksonly (37 run) Aug 18, 2026
@rearden-grok
rearden-grok Bot force-pushed the core/p2p-followup branch from 6eaafb3 to 690ee76 Compare August 18, 2026 17:33
rearden-grok Bot added 10 commits August 18, 2026 10:53
…ocksonly (36 run)

-blocksonly stays off HB and getdata's MSG_WITNESS_BLOCK; relay peers
request MSG_CMPCT_BLOCK after sendcmpct v2. Handshake advertises
sendaddrv2. Low-work header announces log Core ignore/sync needles at
the pending-path height; non-noban does not persist a low-work headers
tree. INV of a known fork header may getdata missing bodies.

minchainwork / invalid_messages / unrequested stay skip at their
fresh official first-fails. Q-41 is 36/267.
Known-header INV getdata stole sendheaders inv_node and failed
p2p_sendheaders wait_for_getdata / tip INV announce. Bodies still come
from header announcements. Disconnect on a consensus-invalid block and
hold it for getblock confirmations=-1.

p2p_unrequested_blocks stays skip at :275.
Holding a consensus-invalid submitblock added a second chaintip and
failed submitheader_invalid_parent_keeps_one_header_tip. Mark invalid
and disconnect; do not hold.

-blocksonly (relay off) must not sendcmpct(announce=1) after a new tip.
-blocksonly reports getnetworkinfo.localrelay=false and disconnects
P2P txs and tx invs (whitelist relay still allowed). getpeerinfo
gains relaytxes. RPC sendraw still accepts when P2P relay is off.

p2p_blocksonly stays skip at inbound wait_for_tx (:48).
RPC sendraw notes unbroadcast after accept and re-announces so an
inbound peer getdata's the tx (p2p_blocksonly.py:48). Unbroadcast
INVs skip the 30s inbound age gate. getpeerinfo exposes whitelist
permissions. Official p2p_blocksonly stays skip at first_peer →
second_peer wait_for_tx (:74). Q-41 remains 36/267.
STEAL_CLAIMS is process-global. Parallel 256-job pool tests added
8+8 claims and failed steal_chunk_amortizes_claims on CI. Count
only while that test is running; serialize the two 256-job cases.
Duplicate sendraw must not re-enter the unbroadcast set
(mempool_unbroadcast.py:93). Unbroadcast skips the inbound age gate
only when -blocksonly. Inbound announce waits unless noban or relay
is off (mempool_reorg.py:71). Official mempool_reorg +
mempool_unbroadcast Passed.
…draw

testmempoolaccept rolls back with evict_live_txids while relay is off
so sendraw can note unbroadcast (p2p_blocksonly.py:48). flush_tx_invs
sync-writes INVs onto attached writers. Inbound + relay-on does not
let clock_due or current_relay_seq snap INV/GetData a brand-new
sendraw after mocktime +300 (mempool_reorg.py:122).

Official p2p_blocksonly + mempool_reorg + mempool_unbroadcast Passed.
Q-41 is 37/267.
The in-flight getheaders left awaiting_headers set, so a replacement
never sent (p2p_initial_headers_sync noban count 0). Clear awaiting
on timeout, restart from the setmocktime inv_flush, and CAS
n_sync_started so two sessions cannot both start (count 2).

Official p2p_initial_headers_sync Passed twice; blocksonly / reorg /
unbroadcast still Passed.
@rearden-grok
rearden-grok Bot force-pushed the core/p2p-followup branch from 7f92b09 to 802b8bb Compare August 18, 2026 17:53
@reardencode
reardencode merged commit 13e5c9e into master Aug 18, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

core-functional Run Core functional nightly.sh on this PR (inventory + release-pin warn)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant