Skip to content
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

EIP-4844: consensus-layer specs of Shard Blob Transactions #2850

Merged
merged 4 commits into from
Mar 15, 2022

Conversation

protolambda
Copy link
Collaborator

@protolambda protolambda commented Mar 10, 2022

This PR outlines the consensus-layer changes for EIP-4844.

Changes (split across multiple docs like other hardforks, in a "feature directory" named eip4844):

  • Update BeaconBlockBody to track the KZG commitments of the blobs
  • Update the beacon block processing to cross validate KZG commitments and blob-transactions within the execution payload, without duplicating the transaction definition
  • Introduce BlobsSidecar to sync blobs. Also note the shard field for forward compatibility - I think we can afford the mere 8 zero bytes in the blobs type to be compatible with a likely path forward with full sharding. (edit: not adding the shard field anymore)
  • Introduce SignedBlobsSidecar to gossip blobs: initially the signature is available. Long-term we cannot rely on the sidecar signature being available however, blobs are synced without signture (but still verified with KZG against the beacon block). The signature functions as a spam protection in gossip.
  • Introduce a temporary fork.md to define how to proceed with EIP-4844 testnet upgrade.
  • Define BlobsSidecarsByRange to sync blobs: no by-root equivalent since the expectation is to sync blobs after having a reference beacon chain that misses them. Additionally the serving span is reduced to a month (data availability period caps it naturally) compared to that of 5 months of beacon blocks. And no step here, based on previous complaints dev-feedback about the beacon blocks variant.
  • Define block production, including KZG commitment and versioned-hash sanity checks, and signing of the gossip object.

Possible TODO (or maybe for a later PR): the honest-validator spec covers the blob download obligation currently, but we should maybe emphasize it as a forkchoice-dependency. I am not aware of a dependency system in the existing fork-choice docs though, so it may require some refactoring (help/feedback appreciated there).

Once the EIP has gone through more testing and review, and once there is rough-consensus on inclusion in a hardfork, then we can merge the eip4844 feature-directory with other consensus features of that hardfork. The next consensus fork after the Merge, dubbed Capella currently, being the primary target.

In a follow-up PR I can work on enabling pyspec generation from this feature set, and corresponding testing. Need a stable base + format first before we refactor code-gen to support features instead of just phases.

@dapplion
Copy link
Collaborator

Define BlobsSidecarsByRange to sync blobs ... And no step here, based on previous complaints dev-feedback about the beacon blocks variant.

Thank you ❤️ 😄

specs/eip4844/beacon-chain.md Outdated Show resolved Hide resolved
specs/eip4844/beacon-chain.md Outdated Show resolved Hide resolved
specs/eip4844/beacon-chain.md Outdated Show resolved Hide resolved
specs/eip4844/beacon-chain.md Outdated Show resolved Hide resolved
specs/eip4844/validator.md Outdated Show resolved Hide resolved
specs/eip4844/validator.md Outdated Show resolved Hide resolved
specs/eip4844/validator.md Outdated Show resolved Hide resolved
specs/eip4844/validator.md Show resolved Hide resolved
specs/eip4844/validator.md Show resolved Hide resolved
Copy link
Contributor

@djrtwo djrtwo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nice!

specs/eip4844/beacon-chain.md Outdated Show resolved Hide resolved
specs/eip4844/beacon-chain.md Outdated Show resolved Hide resolved
specs/eip4844/beacon-chain.md Outdated Show resolved Hide resolved
specs/eip4844/beacon-chain.md Outdated Show resolved Hide resolved
specs/eip4844/beacon-chain.md Outdated Show resolved Hide resolved
specs/eip4844/p2p-interface.md Outdated Show resolved Hide resolved
specs/eip4844/p2p-interface.md Outdated Show resolved Hide resolved
specs/eip4844/validator.md Show resolved Hide resolved
specs/eip4844/validator.md Outdated Show resolved Hide resolved
specs/eip4844/validator.md Show resolved Hide resolved
Co-Authored-By: terenc3t <[email protected]>
Co-Authored-By: djrtwo <[email protected]>
@protolambda protolambda requested a review from djrtwo March 14, 2022 20:51
@protolambda
Copy link
Collaborator Author

Implemented changes based on review, thank you @terencechain and @djrtwo. And opened #2852 to track the remaining items like pyspec changes and move of download requirement from validator-doc to fork-choice-doc.

Copy link
Contributor

@djrtwo djrtwo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thank you @protolambda!

we'll merge this and move to the tracking issue for subsequent convo and development.
I really like that this is in a "feature" dir so it makes the notion of merging soon much easier :)

Copy link

@mohammadfarari1360 mohammadfarari1360 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Creating

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
general:enhancement New feature or request scope:sharding Sharding
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants