Add ExecutionWitness to the ExecutionPayload to support the Verge#3923
Add ExecutionWitness to the ExecutionPayload to support the Verge#3923macladson wants to merge 23 commits intosigp:unstablefrom
ExecutionWitness to the ExecutionPayload to support the Verge#3923Conversation
This reverts commit 46ffb7f.
This reverts commit 89b64a6.
Co-authored-by: realbigsean <[email protected]>
Embed interop validators into genesis Working post bellatrix local testnet Cleanup appease clippy
paulhauner
left a comment
There was a problem hiding this comment.
I've had a look through the SSZ encoding of the new structs in consensus/types and they look good to me! I've left a couple of notes, nothing special.
Let me know if there are other structs you'd like me to look at
Regarding the transparent SSZ types PR, if you're using #3644 then you should be fine. The version in unstable has more features but should encode/decode the same.
| #[serde(bound = "T: EthSpec")] | ||
| #[serde(rename_all = "camelCase")] | ||
| pub struct SuffixStateDiff<T: EthSpec> { | ||
| //#[serde(with = "eth2_serde_utils::quoted_u8")] |
There was a problem hiding this comment.
It's unclear to me if this warrants quotes when serialized as JSON, but it shouldn't be consensus breaking and we can figure that out later.
| //#[serde(with = "eth2_serde_utils::quoted_u8")] | ||
| suffix: u8, | ||
| // `None` means not currently present. | ||
| current_value: Option<StateDiffValue<T>>, |
There was a problem hiding this comment.
The Verge spec isn't clear on how this should be serialized, but I believe our implementation uses Union[None, T] which I think is the latest version to almost make it into the spec 😅
There is a contender, which is different to what we have, but it's not clear that we should switch to that IMO.
| #[serde(bound = "T: EthSpec")] | ||
| #[ssz(struct_behaviour = "transparent")] | ||
| #[serde(transparent)] | ||
| pub struct BandersnatchGroupElement<T: EthSpec> { |
There was a problem hiding this comment.
If you're using these transparent structs just for readability, you could also do something like:
pub type BandersnatchGroupElement<T> = FixedVector<u8, T>;|
Closed in favour of #4891 |
Proposed Changes
Implement the draft spec for the Verge: ethereum/consensus-specs#3230
This succeeds the more basic implementation used on the first Kaustinen testnet (see #3639)
Additional Info
Does not currently contain any fork implementation, instead it adds the new field directly into the Bellatrix structures.
Contains both #3807 (used for local testing) and #3644
Checklist
ExecutionWitnesstoExecutionPayloadandExecutionPayloadHeader.