Handling `latestValidHash` in opti-sync
This commit is contained in:
parent
981b05afb0
commit
4893f9efc9
|
@ -163,6 +163,24 @@ the merge block MUST be treated the same as
|
||||||
an `INVALIDATED` block (i.e., it and all its descendants are invalidated and
|
an `INVALIDATED` block (i.e., it and all its descendants are invalidated and
|
||||||
removed from the block tree).
|
removed from the block tree).
|
||||||
|
|
||||||
|
### How to apply `latestValidHash` when payload status is `INVALID`
|
||||||
|
|
||||||
|
Processing the `INVALID` payload status by consensus engine
|
||||||
|
depends on the value returned in `latestValidHash` parameter.
|
||||||
|
The general approach is as follows:
|
||||||
|
1. Consensus engine MUST identify `invalidBlock` as per definition in the table below
|
||||||
|
2. `invalidBlock` and all its descendants MUST be transitioned from `NOT_VALIDATED` to `INVALIDATED`
|
||||||
|
|
||||||
|
| `latestValidHash` | `invalidBlock` |
|
||||||
|
|:- |:- |
|
||||||
|
| Execution block hash | The *child* of a block with `body.execution_payload.block_hash == latestValidHash` in the chain containing a block with payload in question |
|
||||||
|
| `0x00..00` (all zeroes) | The first block with `body.execution_payload != ExecutionPayload()` in the chain containing a block with payload in question |
|
||||||
|
| `null` | Block with payload in question |
|
||||||
|
|
||||||
|
When `latestValidHash` is a meaningful execution block hash but consensus engine
|
||||||
|
can't find a block satisfying `body.execution_payload.block_hash == latestValidHash`,
|
||||||
|
consensus engine SHOULD behave the same as if `latestValidHash` was `null`.
|
||||||
|
|
||||||
### Execution Engine Errors
|
### Execution Engine Errors
|
||||||
|
|
||||||
When an execution engine returns an error or fails to respond to a payload
|
When an execution engine returns an error or fails to respond to a payload
|
||||||
|
|
Loading…
Reference in New Issue