Skip to content

Conversation

@HNYuuu
Copy link

@HNYuuu HNYuuu commented Dec 4, 2025

I have added one specification for the engine_newPayloadV5 method.

According to the Amsterdam upgrade, when the blockAccessList field is missing in engine_newPayloadV5, the error message: -32602: Invalid params should be returned. However, without specifying which error code should be returned, the {status: INVALID, latestValidHash: null, validationError: errorMessage | null} may be wrongly returned according to the previous description, which may lead to inconsistencies among clients. Therefore, I think it is necessary to clearly specify the should-be-returned error code.

I have added one specification for the `engine_newPayloadV5` method.

According to the Amsterdam upgrade, when the `blockAccessList` field is missing in `engine_newPayloadV5`, the error message: `-32602: Invalid params` should be returned. However, without specifying which error code should be returned, the `{status: INVALID, latestValidHash: null, validationError: errorMessage | null}` may be wrongly returned according to the previous description, which may lead to inconsistencies among clients. Therefore, I think it is necessary to clearly specify the should-be-returned error code.
1. Client software **MUST** return `-38005: Unsupported fork` error if the `timestamp` of the payload does not fall within the time frame of the EIP-7928 activation.

2. Client software **MUST** validate the `blockAccessList` field by executing the payload's transactions and verifying that the computed access list matches the provided one.
2. Client software **MUST** return `-32602: Invalid params` error if the `blockAccessList` field is missing.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

https://github.com/ethereum/execution-apis/blob/main/src/engine/cancun.md#specification has:

  1. Client software MUST check that provided set of parameters and their fields strictly matches the expected one and return -32602: Invalid params error if this check fails. Any field having null value MUST be considered as not provided.

Which kind of covers this case, but it might be missed because stated two forks ago. So, it is probably a good practice to be specific about new fields that must be checked when processing a call of a new version of a method

@HNYuuu
Copy link
Author

HNYuuu commented Dec 5, 2025

Hi @mkalinin ,

The reason I submitted this PR is that I observed the text in the eip7928.md and amsterdam.md files to be almost identical, except for the handling of the blockAccessList field in engine_newPayloadV5.

The main point is that in eip7928.md, if the blockAccessList field is missing, it returns {status: INVALID, latestValidHash: null, validationError: errorMessage | null}; while in amsterdam.md, it returns the error code -32602.

Therefore, I believe one of these two files should be modified or one should be deleted to avoid inconsistent behavior caused by client developers using two different specifications.

@mkalinin
Copy link
Contributor

mkalinin commented Dec 5, 2025

Given that EIP-7928 is SFIed for Amsterdam, I think it makes sense to remove eip7928 doc from the spec and use amsterdam doc in its replacement.

cc @nerolation

@mkalinin
Copy link
Contributor

mkalinin commented Dec 8, 2025

Closing in favour of #715

@mkalinin mkalinin closed this Dec 8, 2025
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 this pull request may close these issues.

2 participants