Skip to content

Geth returns VALID when using engine_forkchoiceUpdatedV1 post-Shanghai #26634

@marioevz

Description

@marioevz

System information

Geth version: v1.11.0-unstable-31d401ea-20230207
CL client & version: Hive (ethereum/hive#706)
OS & Version: Linux
Commit hash : 31d401e

Expected behaviour

Using genesis config:

"shanghaiTime": 4661 (0x1235)

It's intuitive that any engine_forkchoiceUpdatedV1 with timestamp>=0x1235 should return an error.

Actual behavior

Request:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "engine_forkchoiceUpdatedV1",
  "params": [
    {
      "headBlockHash": "0x9c7c0188ba0fa000b477eea628f620eb8a20a9a76e1f9b473e6b6243b6152c89",
      "safeBlockHash": "0x00..00",
      "finalizedBlockHash": "0x00..00"
    },
    {
      "timestamp": "0x1235",
      "prevRandao": "0x00..0",
      "suggestedFeeRecipient": "0x00..00",
      "withdrawals": null
    }
  ]
}

Response:

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "payloadStatus": {
      "status": "VALID",
      "latestValidHash": "0x9c7c0188ba0fa000b477eea628f620eb8a20a9a76e1f9b473e6b6243b6152c89",
      "validationError": null
    },
    "payloadId": "0x2952db219a7c0dcf"
  }
}

Technically, the spec does not explicitly state that this should return an error, but this was caught on nimbus and is causing hive CL+EL tests that involve nimbus to not progress (this is an open issue on nimbus too as it should not send this request in the first place).

Steps to reproduce the behavior

Use ethereum/hive#706 and run:

hive --client go-ethereum --sim ethereum/engine --sim.limit "engine-withdrawals/Withdrawals Fork on Block 1"

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions