Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add standardized error messages in engine API responses #7901

Open
merklefruit opened this issue Dec 12, 2024 · 0 comments · May be fixed by #7939
Open

feat: add standardized error messages in engine API responses #7901

merklefruit opened this issue Dec 12, 2024 · 0 comments · May be fixed by #7939

Comments

@merklefruit
Copy link

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:

"InvalidHeaderHash: Header hash does not match.";

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!

@merklefruit merklefruit linked a pull request Dec 19, 2024 that will close this issue
5 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant