Description
Lighthouse currently verifies KZG proofs returned from the EL:
engine_getPayloadV5
(during block production, GETv3/validator/blocks
)engine_getBlobsV2
(during attestation window for data availability checks)
It was a good to have at the time it was implemented, because the verification is quite cheap at the current blob levels, but it grows as the blob count increases and could get quite significant for supernode after PeerDAS.
Both of these verifications are redundant and could be safely skipped, because the EL already verifies them as the blobs enter the mempool, and the EL is considered a trusted component (below from Francesco):
If the EL is malicious it could say that invalid payloads are valid, which is not something the CL can verify
Additionally we could also skip the KZG verification during block publishing (POST v2/beacon/blocks
), ONLY for locally built blocks, as we can't assume builder blobs are valid.