diff --git a/presets/mainnet/fulu.yaml b/presets/mainnet/fulu.yaml index 84111aba28..1a7bc87aa7 100644 --- a/presets/mainnet/fulu.yaml +++ b/presets/mainnet/fulu.yaml @@ -6,5 +6,5 @@ FIELD_ELEMENTS_PER_CELL: 64 # `uint64(2 * 4096)` (= 8192) FIELD_ELEMENTS_PER_EXT_BLOB: 8192 -# uint64(floorlog2(get_generalized_index(BeaconBlockBody, 'blob_kzg_commitments')) +# `uint64(floorlog2(get_generalized_index(BeaconBlockBody, 'blob_kzg_commitments'))` KZG_COMMITMENTS_INCLUSION_PROOF_DEPTH: 4 diff --git a/presets/minimal/fulu.yaml b/presets/minimal/fulu.yaml index 1204822fb8..0f3ca220bd 100644 --- a/presets/minimal/fulu.yaml +++ b/presets/minimal/fulu.yaml @@ -6,5 +6,5 @@ FIELD_ELEMENTS_PER_CELL: 64 # `uint64(2 * 4096)` (= 8192) FIELD_ELEMENTS_PER_EXT_BLOB: 8192 -# uint64(floorlog2(get_generalized_index(BeaconBlockBody, 'blob_kzg_commitments')) +# `uint64(floorlog2(get_generalized_index(BeaconBlockBody, 'blob_kzg_commitments'))` KZG_COMMITMENTS_INCLUSION_PROOF_DEPTH: 4 diff --git a/specs/deneb/validator.md b/specs/deneb/validator.md index e88fe198b1..e4c3b472c0 100644 --- a/specs/deneb/validator.md +++ b/specs/deneb/validator.md @@ -46,9 +46,9 @@ Please see related Beacon Chain doc before continuing and use them as a referenc ```python @dataclass class BlobsBundle(object): - commitments: Sequence[KZGCommitment] - proofs: Sequence[KZGProof] - blobs: Sequence[Blob] + commitments: List[KZGCommitment, MAX_BLOB_COMMITMENTS_PER_BLOCK] + proofs: List[KZGProof, MAX_BLOB_COMMITMENTS_PER_BLOCK] + blobs: List[Blob, MAX_BLOB_COMMITMENTS_PER_BLOCK] ``` ### Modified `GetPayloadResponse` diff --git a/specs/fulu/validator.md b/specs/fulu/validator.md index fb6534acb8..64ebbd6437 100644 --- a/specs/fulu/validator.md +++ b/specs/fulu/validator.md @@ -10,6 +10,12 @@ - [Prerequisites](#prerequisites) - [Configuration](#configuration) - [Custody setting](#custody-setting) +- [Helpers](#helpers) + - [`BlobsBundle`](#blobsbundle) + - [Modified `GetPayloadResponse`](#modified-getpayloadresponse) +- [Protocol](#protocol) + - [`ExecutionEngine`](#executionengine) + - [Modified `get_payload`](#modified-get_payload) - [Beacon chain responsibilities](#beacon-chain-responsibilities) - [Validator custody](#validator-custody) - [Block and sidecar proposal](#block-and-sidecar-proposal) @@ -44,6 +50,54 @@ document and used throughout. | `VALIDATOR_CUSTODY_REQUIREMENT` | `8` | Minimum number of custody groups an honest node with validators attached custodies and serves samples from | | `BALANCE_PER_ADDITIONAL_CUSTODY_GROUP` | `Gwei(32 * 10**9)` | Balance increment corresponding to one additional group to custody | +## Helpers + +### `BlobsBundle` + +*[Modified in Fulu:EIP7594]* + +The `BlobsBundle` object is modified to include cell KZG proofs instead of blob KZG proofs. + +```python +@dataclass +class BlobsBundle(object): + commitments: List[KZGCommitment, MAX_BLOB_COMMITMENTS_PER_BLOCK] + # [Modified in Fulu:EIP7594] + proofs: List[KZGProof, FIELD_ELEMENTS_PER_EXT_BLOB * MAX_BLOB_COMMITMENTS_PER_BLOCK] + blobs: List[Blob, MAX_BLOB_COMMITMENTS_PER_BLOCK] +``` + +### Modified `GetPayloadResponse` + +*[Modified in Fulu:EIP7594]* + +The `GetPayloadResponse` object is modified to use the updated `BlobsBundle` object. + +```python +@dataclass +class GetPayloadResponse(object): + execution_payload: ExecutionPayload + block_value: uint256 + blobs_bundle: BlobsBundle # [Modified in Fulu:EIP7594] +``` + +## Protocol + +### `ExecutionEngine` + +#### Modified `get_payload` + +The `get_payload` method is modified to return the updated `GetPayloadResponse` object. + +```python +def get_payload(self: ExecutionEngine, payload_id: PayloadId) -> GetPayloadResponse: + """ + Return ExecutionPayload, uint256, BlobsBundle objects. + """ + # pylint: disable=unused-argument + ... +``` + ## Beacon chain responsibilities ### Validator custody