nimbus-eth2
nimbus-eth2 copied to clipboard
verkle trees: add 2 fields to ExecutionPayload
Description
With the verge, proofs and witness of the pre-state of an (EL) block execution are included in the blocks. In order to build a PoS testnet that provides proofs in blocks, it would be great if it were possible to create a branch with the required fields to be added to the ExecutionPayload.
The ExecutionPayload needs to have two more, optional fields:
- VerkleProof, a byte array of variable length
- VerkleKeyVals, an array of (key, value) pairs, in which the key is a 32-byte vector, and value is a byte vector of length either 0 (missing value) or 32.
At the moment, there is no need to support forking as for this testnet, verkle trees are used since the genesis.
If present, these two fields should be propagated over the network with the rest of the ExecutionPayload so that other clients can inject these fields in their verkle-enabled EL.
For which hardforks (Capella, EIP4844, all of them, etc)? There are different ExecutionPayload
s for each Bellatrix-and-later hardfork.
And I'm not sure what you mean by "if present" -- the they be optional fields, or?
yes the keys could be optional, and I'm only interested in post-merge phases
can you point to a more formal description? "value is a byte vector of length either 0 (missing value) or 32." a vector is typically fixed-length. is this an optional-vector? a list of either 0 or 32 bytes?
Note that this will push the number of total members in ExecutionPayload
over the next power of 2, so all SSZ GeneralizedIndex
within ExecutionPayload
will double.
Part of https://github.com/status-im/nimbus-eth2/tree/verkle-kaustinen/capella