Files
prysm/specrefs/dataclasses.yml
Justin Traglia fab687d96d Improve ethspecify integration (#16304)
**What type of PR is this?**

Documentation

**What does this PR do? Why is it needed?**

* Move the ethspecify config from `/specrefs/.ethspecify` to
`/.ethspecify`.
* This allows developers to use inline specrefs (eg spec functions in
godoc comments).
* To do this, simply add a spec tag and run `ethspecify` to populate it.
* Clean up specref exceptions; organize by upgrade & put items in the
correct section.
* Update a few godoc comments to use the new inline specref feature.
* Update check-specrefs GitHub action so that it enforces up-to-date
godocs.
* Standardize specref naming; requiring a `#fork` tag for everything.
* Add new specrefs (which haven't been implemented yet) which were
missing.

**Acknowledgements**

- [x] I have read
[CONTRIBUTING.md](https://github.com/prysmaticlabs/prysm/blob/develop/CONTRIBUTING.md).
- [x] I have included a uniquely named [changelog fragment
file](https://github.com/prysmaticlabs/prysm/blob/develop/CONTRIBUTING.md#maintaining-changelogmd).
- [x] I have added a description with sufficient context for reviewers
to understand this PR.
- [x] I have tested that my changes work as expected and I added a
testing plan to the PR description (if applicable).

---------

Co-authored-by: james-prysm <90280386+james-prysm@users.noreply.github.com>
2026-02-04 18:44:01 +00:00

338 lines
12 KiB
YAML

- name: BlobParameters#fulu
sources: []
spec: |
<spec dataclass="BlobParameters" fork="fulu" hash="a4575aa8">
class BlobParameters:
epoch: Epoch
max_blobs_per_block: uint64
</spec>
- name: BlobsBundle#deneb
sources:
- file: proto/engine/v1/execution_engine.proto
search: ^message BlobsBundle\s*\{
regex: true
spec: |
<spec dataclass="BlobsBundle" fork="deneb" hash="8d6e7be6">
class BlobsBundle(object):
commitments: List[KZGCommitment, MAX_BLOB_COMMITMENTS_PER_BLOCK]
proofs: List[KZGProof, MAX_BLOB_COMMITMENTS_PER_BLOCK]
blobs: List[Blob, MAX_BLOB_COMMITMENTS_PER_BLOCK]
</spec>
- name: BlobsBundle#fulu
sources:
- file: proto/engine/v1/execution_engine.proto
search: ^message BlobsBundleV2
regex: true
spec: |
<spec dataclass="BlobsBundle" fork="fulu" hash="e265362d">
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]
</spec>
- name: ExpectedWithdrawals#capella
sources: []
spec: |
<spec dataclass="ExpectedWithdrawals" fork="capella" hash="73becb4c">
class ExpectedWithdrawals(object):
withdrawals: Sequence[Withdrawal]
processed_sweep_withdrawals_count: uint64
</spec>
- name: ExpectedWithdrawals#electra
sources: []
spec: |
<spec dataclass="ExpectedWithdrawals" fork="electra" hash="a3827f01">
class ExpectedWithdrawals(object):
withdrawals: Sequence[Withdrawal]
# [New in Electra:EIP7251]
processed_partial_withdrawals_count: uint64
processed_sweep_withdrawals_count: uint64
</spec>
- name: ExpectedWithdrawals#gloas
sources: []
spec: |
<spec dataclass="ExpectedWithdrawals" fork="gloas" hash="b32cc9c9">
class ExpectedWithdrawals(object):
withdrawals: Sequence[Withdrawal]
# [New in Gloas:EIP7732]
processed_builder_withdrawals_count: uint64
processed_partial_withdrawals_count: uint64
# [New in Gloas:EIP7732]
processed_builders_sweep_count: uint64
processed_sweep_withdrawals_count: uint64
</spec>
- name: GetPayloadResponse#bellatrix
sources:
- file: consensus-types/blocks/get_payload.go
search: type GetPayloadResponse struct {
- file: consensus-types/blocks/get_payload.go
search: GetPayloadResponseV(1
spec: |
<spec dataclass="GetPayloadResponse" fork="bellatrix" hash="bc71e6e6">
class GetPayloadResponse(object):
execution_payload: ExecutionPayload
</spec>
- name: GetPayloadResponse#capella
sources:
- file: consensus-types/blocks/get_payload.go
search: type GetPayloadResponse struct {
- file: consensus-types/blocks/get_payload.go
search: GetPayloadResponseV(1|2
spec: |
<spec dataclass="GetPayloadResponse" fork="capella" hash="5f10deae">
class GetPayloadResponse(object):
execution_payload: ExecutionPayload
block_value: uint256
</spec>
- name: GetPayloadResponse#deneb
sources:
- file: consensus-types/blocks/get_payload.go
search: type GetPayloadResponse struct {
- file: consensus-types/blocks/get_payload.go
search: GetPayloadResponseV(1|2|3
spec: |
<spec dataclass="GetPayloadResponse" fork="deneb" hash="95f3156d">
class GetPayloadResponse(object):
execution_payload: ExecutionPayload
block_value: uint256
# [New in Deneb:EIP4844]
blobs_bundle: BlobsBundle
</spec>
- name: GetPayloadResponse#electra
sources:
- file: consensus-types/blocks/get_payload.go
search: type GetPayloadResponse struct {
- file: consensus-types/blocks/get_payload.go
search: GetPayloadResponseV(1|2|3|4
spec: |
<spec dataclass="GetPayloadResponse" fork="electra" hash="7a57aa32">
class GetPayloadResponse(object):
execution_payload: ExecutionPayload
block_value: uint256
blobs_bundle: BlobsBundle
# [New in Electra]
execution_requests: Sequence[bytes]
</spec>
- name: GetPayloadResponse#fulu
sources:
- file: consensus-types/blocks/get_payload.go
search: type GetPayloadResponse struct {
- file: consensus-types/blocks/get_payload.go
search: GetPayloadResponseV(1|2|3|4|5
spec: |
<spec dataclass="GetPayloadResponse" fork="fulu" hash="0fbc9ac9">
class GetPayloadResponse(object):
execution_payload: ExecutionPayload
block_value: uint256
# [Modified in Fulu:EIP7594]
blobs_bundle: BlobsBundle
execution_requests: Sequence[bytes]
</spec>
- name: LatestMessage#phase0
sources: []
spec: |
<spec dataclass="LatestMessage" fork="phase0" hash="44e832d0">
@dataclass(eq=True, frozen=True)
class LatestMessage(object):
epoch: Epoch
root: Root
</spec>
- name: LatestMessage#gloas
sources: []
spec: |
<spec dataclass="LatestMessage" fork="gloas" hash="a0030894">
@dataclass(eq=True, frozen=True)
class LatestMessage(object):
slot: Slot
root: Root
payload_present: boolean
</spec>
- name: LightClientStore#altair
sources: []
spec: |
<spec dataclass="LightClientStore" fork="altair" hash="24725cec">
class LightClientStore(object):
# Header that is finalized
finalized_header: LightClientHeader
# Sync committees corresponding to the finalized header
current_sync_committee: SyncCommittee
next_sync_committee: SyncCommittee
# Best available header to switch finalized head to if we see nothing else
best_valid_update: Optional[LightClientUpdate]
# Most recent available reasonably-safe header
optimistic_header: LightClientHeader
# Max number of active participants in a sync committee (used to calculate safety threshold)
previous_max_active_participants: uint64
current_max_active_participants: uint64
</spec>
- name: LightClientStore#capella
sources: []
spec: |
<spec dataclass="LightClientStore" fork="capella" hash="04b41062">
class LightClientStore(object):
# [Modified in Capella]
finalized_header: LightClientHeader
current_sync_committee: SyncCommittee
next_sync_committee: SyncCommittee
# [Modified in Capella]
best_valid_update: Optional[LightClientUpdate]
# [Modified in Capella]
optimistic_header: LightClientHeader
previous_max_active_participants: uint64
current_max_active_participants: uint64
</spec>
- name: NewPayloadRequest#bellatrix
sources:
- file: beacon-chain/execution/engine_client.go
search: func (s *Service) NewPayload(ctx context.Context, payload interfaces.ExecutionData
spec: |
<spec dataclass="NewPayloadRequest" fork="bellatrix" hash="4d32e8c7">
class NewPayloadRequest(object):
execution_payload: ExecutionPayload
</spec>
- name: NewPayloadRequest#deneb
sources:
- file: beacon-chain/execution/engine_client.go
search: func (s *Service) NewPayload(ctx context.Context, payload interfaces.ExecutionData, versionedHashes []common.Hash, parentBlockRoot *common.Hash
spec: |
<spec dataclass="NewPayloadRequest" fork="deneb" hash="26cf2e26">
class NewPayloadRequest(object):
execution_payload: ExecutionPayload
versioned_hashes: Sequence[VersionedHash]
parent_beacon_block_root: Root
</spec>
- name: NewPayloadRequest#electra
sources:
- file: beacon-chain/execution/engine_client.go
search: func (s *Service) NewPayload(ctx context.Context, payload interfaces.ExecutionData, versionedHashes []common.Hash, parentBlockRoot *common.Hash, executionRequests *pb.ExecutionRequests
spec: |
<spec dataclass="NewPayloadRequest" fork="electra" hash="b1f69cc9">
class NewPayloadRequest(object):
execution_payload: ExecutionPayload
versioned_hashes: Sequence[VersionedHash]
parent_beacon_block_root: Root
# [New in Electra]
execution_requests: ExecutionRequests
</spec>
- name: OptimisticStore#bellatrix
sources: []
spec: |
<spec dataclass="OptimisticStore" fork="bellatrix" hash="a2b2182c">
class OptimisticStore(object):
optimistic_roots: Set[Root]
head_block_root: Root
blocks: Dict[Root, BeaconBlock] = field(default_factory=dict)
block_states: Dict[Root, BeaconState] = field(default_factory=dict)
</spec>
- name: PayloadAttributes#bellatrix
sources:
- file: proto/engine/v1/execution_engine.proto
search: ^message PayloadAttributes\s*\{
regex: true
spec: |
<spec dataclass="PayloadAttributes" fork="bellatrix" hash="8f6fc523">
class PayloadAttributes(object):
timestamp: uint64
prev_randao: Bytes32
suggested_fee_recipient: ExecutionAddress
</spec>
- name: PayloadAttributes#capella
sources:
- file: proto/engine/v1/execution_engine.proto
search: ^message PayloadAttributesV2
regex: true
spec: |
<spec dataclass="PayloadAttributes" fork="capella" hash="f63ac439">
class PayloadAttributes(object):
timestamp: uint64
prev_randao: Bytes32
suggested_fee_recipient: ExecutionAddress
# [New in Capella]
withdrawals: Sequence[Withdrawal]
</spec>
- name: PayloadAttributes#deneb
sources:
- file: proto/engine/v1/execution_engine.proto
search: ^message PayloadAttributesV3
regex: true
spec: |
<spec dataclass="PayloadAttributes" fork="deneb" hash="2beea525">
class PayloadAttributes(object):
timestamp: uint64
prev_randao: Bytes32
suggested_fee_recipient: ExecutionAddress
withdrawals: Sequence[Withdrawal]
# [New in Deneb:EIP4788]
parent_beacon_block_root: Root
</spec>
- name: Store#phase0
sources: []
spec: |
<spec dataclass="Store" fork="phase0" hash="abe525d6">
class Store(object):
time: uint64
genesis_time: uint64
justified_checkpoint: Checkpoint
finalized_checkpoint: Checkpoint
unrealized_justified_checkpoint: Checkpoint
unrealized_finalized_checkpoint: Checkpoint
proposer_boost_root: Root
equivocating_indices: Set[ValidatorIndex]
blocks: Dict[Root, BeaconBlock] = field(default_factory=dict)
block_states: Dict[Root, BeaconState] = field(default_factory=dict)
block_timeliness: Dict[Root, boolean] = field(default_factory=dict)
checkpoint_states: Dict[Checkpoint, BeaconState] = field(default_factory=dict)
latest_messages: Dict[ValidatorIndex, LatestMessage] = field(default_factory=dict)
unrealized_justifications: Dict[Root, Checkpoint] = field(default_factory=dict)
</spec>
- name: Store#gloas
sources: []
spec: |
<spec dataclass="Store" fork="gloas" hash="4dbfec46">
class Store(object):
time: uint64
genesis_time: uint64
justified_checkpoint: Checkpoint
finalized_checkpoint: Checkpoint
unrealized_justified_checkpoint: Checkpoint
unrealized_finalized_checkpoint: Checkpoint
proposer_boost_root: Root
equivocating_indices: Set[ValidatorIndex]
blocks: Dict[Root, BeaconBlock] = field(default_factory=dict)
block_states: Dict[Root, BeaconState] = field(default_factory=dict)
block_timeliness: Dict[Root, Vector[boolean, NUM_BLOCK_TIMELINESS_DEADLINES]] = field(
default_factory=dict
)
checkpoint_states: Dict[Checkpoint, BeaconState] = field(default_factory=dict)
latest_messages: Dict[ValidatorIndex, LatestMessage] = field(default_factory=dict)
unrealized_justifications: Dict[Root, Checkpoint] = field(default_factory=dict)
# [New in Gloas:EIP7732]
execution_payload_states: Dict[Root, BeaconState] = field(default_factory=dict)
# [New in Gloas:EIP7732]
ptc_vote: Dict[Root, Vector[boolean, PTC_SIZE]] = field(default_factory=dict)
</spec>