or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Syncing
xxxxxxxxxx
Ethereum validator & builder interaction for Deneb
Background
This doc summarizes the updates that went into Deneb that require new validator and builder interactions. It assumes you have a basic understanding of today's interaction between validator and builder. We'll cover the new workflow and additional safety considerations.
What's new in Deneb? Validator signs block in addition blob sidecars.
Block now includes kzg commitment that anchors the blobsidecar.
What is a blob? It is the following in the consensus layer land for signed and unsigned version.
On the execution layer land, a new type of EIP-2718 transaction in introduced, “blob transaction”, where the
TransactionType
isBLOB_TX_TYPE
and theTransactionPayload
is the following RLP value:The most important thing to note is that a Deneb block is valid. All the following three fields have to align:
blob_kzg_commitments
execution_payload
'sblob_versioned_hashes
blob
Besides alignment, the
BlobSidecar
itself has to be valid concerning the consensus rule, but that's outside this doc's scope.Validator & builder interaction today
Note: I am generalizing the builder here. Builder means an external party for execution block construction. It could be mev-boost, relayer, builder, or searcher. Whomever the validator interacts with and agrees to exchange block construction with.
The interaction today is simple:
getHeader
to request a blind execution block to sign. (Think of it as the commit phase)execution_header
. Validator signs itsubmitBlindBlock
alongside the signed header and rest of the consensus block contentsThe interaction is simplified. I avoided side effects like timing, attacks, circuit breaker, fail-over, etc. We'll cover them in the later section for Deneb.
Validator & builder interaction in Deneb
The interaction in Deneb brings in additional complexity, given that blobs are decoupled from the block. They are highlighted in bold:
getHeader
to request a blind execution block and blind blobs bundle to sign so that validators can create signatures over the blind blobs. Blind blob utilizesblob_root
instead of clearblob
execution_header
andblinded_blobs
. Validator signs itsubmitBlindBlock
alongside theSignedBlindedBlockContents
ExecutionPayloadAndBlobsBundle
:execution_payload
and full blob sidecars usingblobs_bundle
and broadcasts them over respected gossip subnetsNew safety consideration
The consensus layer client can default to local execution block production in the event it detects
For (1), it performs the following safety check
Post-deneb, the following safety check could be applied on
BlindedBlobsBundle
at thegetHeader
phase:Once the CL client gets
ExecutionPayloadAndBlobsBundle
at thesubmitBlindBlock
phase, more validations can be done to broadcast the network, but this is not strictly necessary given its client's best interest to broadcast block and blobs as soon as possible to prevent reorg.