In ePBS/Gloas, the execution payload is delivered via envelope, not
embedded in the beacon block. produce_inclusion_list was trying to
extract parent_hash from the beacon block's execution payload (which
doesn't exist), causing every IL fetch to fail.
Use cached_head.head_hash() which correctly tracks the execution
block hash through fork choice, including envelope imports.
Besu does not implement this method. Lodestar handles IL satisfaction
checking via the il_transactions param in newPayloadV6 instead of a
separate engine call. Skip the call and assume satisfied for now.
- Force engine_newPayloadV6 for Heze blocks (Besu supports V6 but
capability detection was falling through to broken V5 path)
- Pass parentHash to engine_getInclusionListV1 (was sending empty
params, Besu/Lodestar expect the parent block hash)
We yolo'd to alpha 7. We're just changing the proposer preference to include dependent root, instead of checkpoint root. This way we can actually construct it within the VC without needing a view of fork choice.
Co-Authored-By: Eitan Seri-Levi <eserilev@ucsc.edu>
- test_utils: Heze branch uses DataColumnSidecarGloas (shared format), keeps
heze_enabled() check ahead of gloas_enabled() so Heze blocks are handled first
- genesis.rs: Keep both Gloas and Heze bid initialisation in genesis_block()
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
We are not submitting ptc votes that we produce to our lcoal ptc op pool. So when we are the block producer we don't include our own ptc votes!
Co-Authored-By: Eitan Seri-Levi <eserilev@ucsc.edu>
Fixes a bug where a proposer votes payload missing on its own block.
The payload is published to the network but never imported locally. This PR adds gossip verification and import when a payload is sent to the http API
Co-Authored-By: Jimmy Chen <jchen.tc@gmail.com>
Closes:
- https://github.com/sigp/lighthouse/issues/8689
- Calculate the proposer index on the canonical chain (from canonical head) at `slot` and plumb it through to fork choice so it can be used to determine whether or not to apply the proposer boost. We use the proposer cache to handle state advances and avoid duplicate work.
- Update our FC tests to use `block.message().proposer_index()` (always pass), we are not attempting to test this feature in those tests. The EF tests use the correct canonical proposer idnex via `on_block`, except for invalid blocks which just auto-pass this check (these blocks get rejected by other checks in `on_block` anyway).
Co-Authored-By: Michael Sproul <michael@sigmaprime.io>
Payloads from the reprocess queue should be gossiped after import if they are still timely. In devnets this happens frequently since there are many cases where the envelope arrives before the block
Co-Authored-By: Eitan Seri-Levi <eserilev@ucsc.edu>
Store gossip-verified `PayloadAttestationMessage`s in the operation pool and pack them into the block body at during block production.
Built on top of #9145.
Co-Authored-By: Jimmy Chen <jchen.tc@gmail.com>
#6689
Inspired by the initial implementation of #9108, credit to @chong-he.
This adds an extension trait to `Hash256` and add a `short` method to provide smaller formatted hashes for logging.
Co-Authored-By: Mac L <mjladson@pm.me>