Skip to content

RFC: Engine API response status when merge transition block is INVALID #212

@mkalinin

Description

@mkalinin

Problem

Merge transition block (the first PoS block in the chain) is a direct child of a terminal PoW block. Currently, Engine API spec prescribes EL to respond with {status: INVALID, latestValidHash: validAncestorHash, validationError: null | message} if transition block appears to be INVALID.

The problem is that validAncestorHash in this case should reference a terminal PoW block which isn't in CL's block tree. This makes CL client's behaviour underspecified.

Options

  1. Leave the spec as it is. If transition block appears to be INVALID CL gets a response with validAncestorHash: terminalBlockHash, then it invalidates transition block and stops further traversing because the parent of transition beacon block doesn't have a payload at all (it's filled with zeroes)
  2. Return INVALID_TERMINAL_BLOCK which explicitly tells CL to invalidate a subchain starting from a transition block
  3. Remove INVALID_TERMINAL_BLOCK, and make EL respond with {status INVALID, latestValidHash: 0x00...00} when either terminal PoW block or transition block is INVALID. Then CL will naturally stop block tree traversing at a pre-transition block

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions