Description
Description
Presently Lighthouse uses a 2 second timeout for getPayload
, both when requesting a blinded block and when requesting a full block.
This means that if the EL is slow we could slow down blinded block proposals to the point where they exceed the 4s attestation deadline. We wait for the maximum of the builder/EL response times here:
lighthouse/beacon_node/execution_layer/src/lib.rs
Lines 675 to 692 in 38514c0
For the builder's payload, we will then also need to wait for the block to be un-blinded after signing, which adds yet more latency. With a 500ms offset from the start of the slot (due to e.g. attestation packing) plus 2 seconds of EL response time (worst-case) plus 1s for the VC to sign, unblind, and for the BN+relay to broadcast, we are cutting very close to the 4s deadline.
Steps to resolve
The engine API spec uses a 1s timeout for getPayload
at all times, which would be more consistent. However I think it could be advantageous to retain the longer timeout for full blocks and just use the shorter 1s timeout for blinded blocks. I think this could be implemented in a straight-forward way by passing the timeout to get_full_payload_caching
. This might be worth implementing after the capella
branch is merged, as it also makes a lot of changes to these code paths.