You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
As it currently stands, Geth and Nethermind have different engine API error response formats, especially the ones relating to new payload validation. Here is an example:
The most relevant difference in these two messages is that Nethermind doesn't include the expected block hash whereas Geth does. This same pattern exists for other types, such as the following mismatching fields:
gas used
receipts root
logs bloom
state root
Standardizing these messages could be useful for two reasons: operators running different EL/CL combinations would have a more unified debugging experience, and as a secondary benefit receiving "hints" from EL block validation could be used to build blocks out of the EL client.
As an example, for https://github.com/chainbound/bolt we use the engine API response errors to parse hints to generate a valid local payload that includes a set of transactions (i.e. similar to how a same-slot inclusion list protocol would work). Of course this is far from an ideal block building setup, however it's also very low effort compared to other alternatives (if you are interested, we explore some of these here).
Happy to open a PR for this and answer any questions!
The text was updated successfully, but these errors were encountered:
As it currently stands, Geth and Nethermind have different engine API error response formats, especially the ones relating to new payload validation. Here is an example:
Geth:
blockhash mismatch, want %x, got %x
Ref: https://github.com/ethereum/go-ethereum/blob/c7e740f40ca93cd2b8681b97af71e0b20207ca09/beacon/engine/types.go#L222
Nethermind:
InvalidHeaderHash: Header hash does not match.
Ref:
nethermind/src/Nethermind/Nethermind.Consensus/Messages/BlockErrorMessages.cs
Line 50 in 3f19aee
The most relevant difference in these two messages is that Nethermind doesn't include the expected block hash whereas Geth does. This same pattern exists for other types, such as the following mismatching fields:
Standardizing these messages could be useful for two reasons: operators running different EL/CL combinations would have a more unified debugging experience, and as a secondary benefit receiving "hints" from EL block validation could be used to build blocks out of the EL client.
As an example, for https://github.com/chainbound/bolt we use the engine API response errors to parse hints to generate a valid local payload that includes a set of transactions (i.e. similar to how a same-slot inclusion list protocol would work). Of course this is far from an ideal block building setup, however it's also very low effort compared to other alternatives (if you are interested, we explore some of these here).
Happy to open a PR for this and answer any questions!
The text was updated successfully, but these errors were encountered: