-
Notifications
You must be signed in to change notification settings - Fork 388
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Extend Deneb with Execution layer cross-validation #557
base: main
Are you sure you want to change the base?
Conversation
Based on the discussions on discord, I've converted the witness to a fully opaque blob on the engine API. I.e.
This should both make the api diff smaller, as well as more performant by avoiding witness parsing CL side. |
We used to have |
This change is not part of any hard-fork, and can be enabled at any time (including before Pectra) by some clients without coordination. Given that where would you place it? |
|
||
- `status`: `enum` - `"VALID" | "INVALID"` | ||
- `stateRoot`: `DATA|null`, 32 Bytes - the state root of the most recent *valid* block in the branch defined by payload and its ancestors | ||
- `receiptsRoot`: `DATA|null`, 32 Bytes - the receipts root of the most recent *valid* block in the branch defined by payload and its ancestors |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@karalabe could you please share more info about why latestValidHash
can not work in the case of stateless execution?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There's no local chain. Stateless execution is stateless. Here's the input, here's the output. Forget we ever talked.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's more akin to a library verifying an execution than a full node being on the other side.
It seems that we would need to update PayloadStatusV2:
In this case it can become a part of the API since Prague. If we want to make this functionality parallel to the main payload processing flow (i.e. always be implemented via separate methods) then it can be introduced in Cancun I believe, and updated accordingly in Prague. |
Add spec for routes introduced by @karalabe in https://gist.github.com/karalabe/47c906f0ab4fdc5b8b791b74f084e5f9
In summary, these routes allow one to request witnesses from an execution client, and submit them to another for stateless execution.
Refer to Peter's doc for more detailed rationale https://gist.github.com/karalabe/47c906f0ab4fdc5b8b791b74f084e5f9#engine-api-specs