Skip to content

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

Open
rearden-grok[bot] wants to merge 9 commits into
masterfrom
core/p2p-followup
Open

Core functional leftover-P2P follow-up: official p2p_compactblocks_blocksonly + p2p_blocksonly (37 run)#125
rearden-grok[bot] wants to merge 9 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 Bot added 9 commits August 18, 2026 10:30
…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.
@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
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.

0 participants