Skip to content

engine: return -38003 for FCUv2 payloadAttributes mismatch#10014

Draft
Muzry wants to merge 1 commit intobesu-eth:mainfrom
Muzry:fix-fcuv2-return-38003
Draft

engine: return -38003 for FCUv2 payloadAttributes mismatch#10014
Muzry wants to merge 1 commit intobesu-eth:mainfrom
Muzry:fix-fcuv2-return-38003

Conversation

@Muzry
Copy link

@Muzry Muzry commented Mar 10, 2026

This PR updates engine_forkchoiceUpdatedV2 to return -38003: Invalid payload attributes when the wrong payloadAttributes version is used.

In particular, FCUv2 payload-attribute version mismatches such as:

  • missing withdrawals at or after Shanghai
  • unexpected withdrawals before Shanghai

should be treated as Invalid payload attributes, not Invalid params.

Why

This change aligns the client with the latest Engine API spec update in:

It also follows the implementation discussion and prior client-side change in:

The spec was clarified so that FCUv2 now behaves consistently with newer forkchoiceUpdated versions for payloadAttributes structure/version
mismatches.

What changed

  • Updated FCUv2 payload attributes validation to return -38003 for payloadAttributes version mismatches.
  • Added/updated regression coverage for the affected FCUv2 cases.

Hive impact

This fixes the Hive engine-withdrawals failure caused by returning the wrong error code for FCUv2 payloadAttributes mismatches.

Relevant Hive failure:

After this change, the client returns the expected error code for the affected FCUv2 cases.

If my understanding or interpretation of the spec change is incorrect, please let me know and I can adjust the implementation accordingly.

@macfarla macfarla self-assigned this Mar 11, 2026
@macfarla macfarla added the hive relating to hive tests label Mar 11, 2026
@macfarla
Copy link
Contributor

@Muzry you'll need to add signoff to your commits to satisfy the DCO check. I need to check what's going on with hive tests as I'm not seeing any engine-withdrawal failures when running on main locally. what specific hive test is your PR addressing?

@macfarla macfarla assigned Muzry and unassigned macfarla Mar 18, 2026
@macfarla macfarla marked this pull request as draft March 18, 2026 03:48
@Muzry Muzry force-pushed the fix-fcuv2-return-38003 branch from 6974548 to 5202660 Compare March 19, 2026 13:00
Signed-off-by: muzry <muzrry@gmail.com>
@Muzry Muzry force-pushed the fix-fcuv2-return-38003 branch from 5202660 to 5eac4f5 Compare March 20, 2026 02:05
@Muzry
Copy link
Author

Muzry commented Mar 20, 2026

@macfarla Thanks, I’ve added signoff to my commit and re-ran the full engine-withdrawals suite locally against hive main using the Besu client from hive.

Hive commit used for the run: 1fc72ff41ba0903b46c4e210ead80f55a63e1718

commands: ./hive --sim ethereum/engine --sim.limit 'engine-withdrawals/' --client besu --sim.parallelism 50 --docker.output --docker.pull

The run produced 34 test cases: 20 passed and 14 failed.

The main failure cluster is exactly what this PR addresses: for engine_forkchoiceUpdatedV2, hive expects -38003, while the Besu version currently used by hive still returns -32602.

So this PR is addressing the engine-withdrawals FCUv2 error-code failures, rather than a withdrawal execution failure in engine_newPayload.

You can also check: https://hive.ethpandaops.io/#/test/generic/1773131670-9be21c1a6d01e061c51d963e43511cc1. The recent test runs there are also failing.

@macfarla macfarla assigned macfarla and unassigned Muzry Mar 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

hive relating to hive tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants