prysm-pulse/beacon-chain
Potuz b6ce6c2eba
Do not check parent weight on early FCU (#13683)
When a late block arrives and the beacon is proposing the next block, we
perform several checks to allow for the next block to reorg the incoming
late block.

Among those checks, we check that the parent block has been heavily
attested (currently 160% of the committee size).

We perform this check in these circumstances:
- When the late block arrives
- At 10 seconds into the slot
- At 0 seconds into the next slot (at proposing time)

The problem is that for blocks that arrive between 4 seconds and 10
seconds, the parent block will not have yet this expected weight since
attestations from the current committee were not imported yet, and thus
Prysm will send an FCU with payload attributes anyway at this time.

What happens is that Prysm keeps the EL building different blocks based
on different parents at the same time, when later in the next slot it
calls to propose, it will reorg the late block anyway and the EL would
have been computing a second payload uselessly.

This PR enables this check only when calling `ShouldOverrideFCU` after
10 seconds into the slot which we do only after having imported the
current attestations. We may want to actually remove this check entirely
from `ShouldOverrideFCU` and only keep it in `ProposerHead`.

Shout out to Anthithesis for reporting an issue that led to this
discoverly.
2024-03-05 15:07:39 +00:00
..
blockchain tests for origin blob fetching (#13667) 2024-03-02 15:11:22 +00:00
builder Update to V5 (#13622) 2024-02-15 05:46:47 +00:00
cache Employ Dynamic Cache Sizes (#13640) 2024-02-28 10:46:52 +00:00
core Employ Dynamic Cache Sizes (#13640) 2024-02-28 10:46:52 +00:00
das Update to V5 (#13622) 2024-02-15 05:46:47 +00:00
db tests for origin blob fetching (#13667) 2024-03-02 15:11:22 +00:00
deterministic-genesis Update to V5 (#13622) 2024-02-15 05:46:47 +00:00
execution Unify log fields (#13654) 2024-02-22 22:40:36 +00:00
forkchoice Do not check parent weight on early FCU (#13683) 2024-03-05 15:07:39 +00:00
gateway move setting route handlers to registration from start (#13676) 2024-02-28 11:30:31 +00:00
monitor Unify log fields (#13654) 2024-02-22 22:40:36 +00:00
node move setting route handlers to registration from start (#13676) 2024-02-28 11:30:31 +00:00
operations Unify log fields (#13654) 2024-02-22 22:40:36 +00:00
p2p Update to V5 (#13622) 2024-02-15 05:46:47 +00:00
package Update cross compile toolchains (#12069) 2023-03-07 20:09:46 +00:00
rpc Fix failed reorg log (#13679) 2024-02-29 15:23:29 +00:00
slasher Slasher: Reduce surrounding/surrounded attestations processing time (#13629) 2024-02-21 15:12:37 +00:00
startup Update to V5 (#13622) 2024-02-15 05:46:47 +00:00
state add changes (#13661) 2024-02-26 13:45:17 +00:00
sync exit blob fetching for cp block if outside retention (#13686) 2024-03-05 02:57:06 +00:00
verification Unify log fields (#13654) 2024-02-22 22:40:36 +00:00
README.md Change Eth2 Repository Names (#9425) 2021-08-19 13:00:57 -05:00

Prysmatic Labs Beacon Chain Implementation

This is the main project folder for the beacon chain implementation of Ethereum written in Go by Prysmatic Labs.

You can also read our main README and join our active chat room on Discord.

Discord

Also, read the official beacon chain specification, this design spec serves as a source of truth for the beacon chain implementation we follow at Prysmatic Labs.