mirror of
https://github.com/OffchainLabs/prysm.git
synced 2026-05-02 03:02:54 -04:00
- This PR adds the execution_payload_envelope Beacon API endpoint supporting both JSON and SSZ - It add the execution_payload_available event stream it also adds as a stub without a trigger the execution_payload_bid event stream. These are the minimum necessary to get Dora happy on Kurtosis. Haven't reviewed this PR yet, so opening it as draft. Only check was in Kurtosis against Dora. <img width="1555" height="1177" alt="Screenshot 2026-02-27 at 7 18 01 PM" src="https://github.com/user-attachments/assets/e888ccf3-68fe-42c0-9f9a-f911438438d1" /> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
299 lines
10 KiB
Go
299 lines
10 KiB
Go
package structs
|
|
|
|
import (
|
|
"encoding/json"
|
|
)
|
|
|
|
type BlockRootResponse struct {
|
|
Data *BlockRoot `json:"data"`
|
|
ExecutionOptimistic bool `json:"execution_optimistic"`
|
|
Finalized bool `json:"finalized"`
|
|
}
|
|
|
|
type BlockRoot struct {
|
|
Root string `json:"root"`
|
|
}
|
|
|
|
type GetCommitteesResponse struct {
|
|
Data []*Committee `json:"data"`
|
|
ExecutionOptimistic bool `json:"execution_optimistic"`
|
|
Finalized bool `json:"finalized"`
|
|
}
|
|
|
|
type ListAttestationsResponse struct {
|
|
Version string `json:"version,omitempty"`
|
|
Data json.RawMessage `json:"data"`
|
|
}
|
|
|
|
type SubmitAttestationsRequest struct {
|
|
Data json.RawMessage `json:"data"`
|
|
}
|
|
|
|
type ListVoluntaryExitsResponse struct {
|
|
Data []*SignedVoluntaryExit `json:"data"`
|
|
}
|
|
|
|
type SubmitSyncCommitteeSignaturesRequest struct {
|
|
Data []*SyncCommitteeMessage `json:"data"`
|
|
}
|
|
|
|
type GetStateForkResponse struct {
|
|
Data *Fork `json:"data"`
|
|
ExecutionOptimistic bool `json:"execution_optimistic"`
|
|
Finalized bool `json:"finalized"`
|
|
}
|
|
|
|
type GetFinalityCheckpointsResponse struct {
|
|
ExecutionOptimistic bool `json:"execution_optimistic"`
|
|
Finalized bool `json:"finalized"`
|
|
Data *FinalityCheckpoints `json:"data"`
|
|
}
|
|
|
|
type FinalityCheckpoints struct {
|
|
PreviousJustified *Checkpoint `json:"previous_justified"`
|
|
CurrentJustified *Checkpoint `json:"current_justified"`
|
|
Finalized *Checkpoint `json:"finalized"`
|
|
}
|
|
|
|
type GetGenesisResponse struct {
|
|
Data *Genesis `json:"data"`
|
|
}
|
|
|
|
type Genesis struct {
|
|
GenesisTime string `json:"genesis_time"`
|
|
GenesisValidatorsRoot string `json:"genesis_validators_root"`
|
|
GenesisForkVersion string `json:"genesis_fork_version"`
|
|
}
|
|
|
|
type GetBlockHeadersResponse struct {
|
|
Data []*SignedBeaconBlockHeaderContainer `json:"data"`
|
|
ExecutionOptimistic bool `json:"execution_optimistic"`
|
|
Finalized bool `json:"finalized"`
|
|
}
|
|
|
|
type GetBlockHeaderResponse struct {
|
|
ExecutionOptimistic bool `json:"execution_optimistic"`
|
|
Finalized bool `json:"finalized"`
|
|
Data *SignedBeaconBlockHeaderContainer `json:"data"`
|
|
}
|
|
|
|
type GetValidatorsRequest struct {
|
|
Ids []string `json:"ids,omitempty"`
|
|
Statuses []string `json:"statuses,omitempty"`
|
|
}
|
|
|
|
type GetValidatorsResponse struct {
|
|
ExecutionOptimistic bool `json:"execution_optimistic"`
|
|
Finalized bool `json:"finalized"`
|
|
Data []*ValidatorContainer `json:"data"`
|
|
}
|
|
|
|
type GetValidatorResponse struct {
|
|
ExecutionOptimistic bool `json:"execution_optimistic"`
|
|
Finalized bool `json:"finalized"`
|
|
Data *ValidatorContainer `json:"data"`
|
|
}
|
|
|
|
type GetValidatorBalancesResponse struct {
|
|
ExecutionOptimistic bool `json:"execution_optimistic"`
|
|
Finalized bool `json:"finalized"`
|
|
Data []*ValidatorBalance `json:"data"`
|
|
}
|
|
|
|
type GetValidatorIdentitiesResponse struct {
|
|
ExecutionOptimistic bool `json:"execution_optimistic"`
|
|
Finalized bool `json:"finalized"`
|
|
Data []*ValidatorIdentity `json:"data"`
|
|
}
|
|
|
|
type ValidatorContainer struct {
|
|
Index string `json:"index"`
|
|
Balance string `json:"balance"`
|
|
Status string `json:"status"`
|
|
Validator *Validator `json:"validator"`
|
|
}
|
|
|
|
type ValidatorBalance struct {
|
|
Index string `json:"index"`
|
|
Balance string `json:"balance"`
|
|
}
|
|
|
|
type ValidatorIdentity struct {
|
|
Index string `json:"index"`
|
|
Pubkey string `json:"pubkey"`
|
|
ActivationEpoch string `json:"activation_epoch"`
|
|
}
|
|
|
|
type GetBlockResponse struct {
|
|
Data *SignedBlock `json:"data"`
|
|
}
|
|
|
|
type GetBlockV2Response struct {
|
|
Version string `json:"version"`
|
|
ExecutionOptimistic bool `json:"execution_optimistic"`
|
|
Finalized bool `json:"finalized"`
|
|
Data *SignedBlock `json:"data"`
|
|
}
|
|
|
|
type SignedBlock struct {
|
|
Message json.RawMessage `json:"message"` // represents the block values based on the version
|
|
Signature string `json:"signature"`
|
|
}
|
|
|
|
type GetBlockAttestationsResponse struct {
|
|
ExecutionOptimistic bool `json:"execution_optimistic"`
|
|
Finalized bool `json:"finalized"`
|
|
Data []*Attestation `json:"data"`
|
|
}
|
|
|
|
type GetBlockAttestationsV2Response struct {
|
|
Version string `json:"version"`
|
|
ExecutionOptimistic bool `json:"execution_optimistic"`
|
|
Finalized bool `json:"finalized"`
|
|
Data json.RawMessage `json:"data"` // Accepts both `Attestation` and `AttestationElectra` types
|
|
}
|
|
|
|
type GetStateRootResponse struct {
|
|
ExecutionOptimistic bool `json:"execution_optimistic"`
|
|
Finalized bool `json:"finalized"`
|
|
Data *StateRoot `json:"data"`
|
|
}
|
|
|
|
type StateRoot struct {
|
|
Root string `json:"root"`
|
|
}
|
|
|
|
type GetRandaoResponse struct {
|
|
ExecutionOptimistic bool `json:"execution_optimistic"`
|
|
Finalized bool `json:"finalized"`
|
|
Data *Randao `json:"data"`
|
|
}
|
|
|
|
type Randao struct {
|
|
Randao string `json:"randao"`
|
|
}
|
|
|
|
type GetSyncCommitteeResponse struct {
|
|
ExecutionOptimistic bool `json:"execution_optimistic"`
|
|
Finalized bool `json:"finalized"`
|
|
Data *SyncCommitteeValidators `json:"data"`
|
|
}
|
|
|
|
type SyncCommitteeValidators struct {
|
|
Validators []string `json:"validators"`
|
|
ValidatorAggregates [][]string `json:"validator_aggregates"`
|
|
}
|
|
|
|
type BLSToExecutionChangesPoolResponse struct {
|
|
Data []*SignedBLSToExecutionChange `json:"data"`
|
|
}
|
|
|
|
type GetAttesterSlashingsResponse struct {
|
|
Version string `json:"version,omitempty"`
|
|
Data json.RawMessage `json:"data"` // Accepts both `[]*AttesterSlashing` and `[]*AttesterSlashingElectra` types
|
|
}
|
|
|
|
type GetProposerSlashingsResponse struct {
|
|
Data []*ProposerSlashing `json:"data"`
|
|
}
|
|
|
|
type GetWeakSubjectivityResponse struct {
|
|
Data *WeakSubjectivityData `json:"data"`
|
|
}
|
|
|
|
type WeakSubjectivityData struct {
|
|
WsCheckpoint *Checkpoint `json:"ws_checkpoint"`
|
|
StateRoot string `json:"state_root"`
|
|
}
|
|
|
|
type GetIndividualVotesRequest struct {
|
|
Epoch string `json:"epoch"`
|
|
PublicKeys []string `json:"public_keys,omitempty"`
|
|
Indices []string `json:"indices,omitempty"`
|
|
}
|
|
|
|
type GetIndividualVotesResponse struct {
|
|
IndividualVotes []*IndividualVote `json:"individual_votes"`
|
|
}
|
|
|
|
type IndividualVote struct {
|
|
Epoch string `json:"epoch"`
|
|
PublicKey string `json:"public_keys,omitempty"`
|
|
ValidatorIndex string `json:"validator_index"`
|
|
IsSlashed bool `json:"is_slashed"`
|
|
IsWithdrawableInCurrentEpoch bool `json:"is_withdrawable_in_current_epoch"`
|
|
IsActiveInCurrentEpoch bool `json:"is_active_in_current_epoch"`
|
|
IsActiveInPreviousEpoch bool `json:"is_active_in_previous_epoch"`
|
|
IsCurrentEpochAttester bool `json:"is_current_epoch_attester"`
|
|
IsCurrentEpochTargetAttester bool `json:"is_current_epoch_target_attester"`
|
|
IsPreviousEpochAttester bool `json:"is_previous_epoch_attester"`
|
|
IsPreviousEpochTargetAttester bool `json:"is_previous_epoch_target_attester"`
|
|
IsPreviousEpochHeadAttester bool `json:"is_previous_epoch_head_attester"`
|
|
CurrentEpochEffectiveBalanceGwei string `json:"current_epoch_effective_balance_gwei"`
|
|
InclusionSlot string `json:"inclusion_slot"`
|
|
InclusionDistance string `json:"inclusion_distance"`
|
|
InactivityScore string `json:"inactivity_score"`
|
|
}
|
|
|
|
type ChainHead struct {
|
|
HeadSlot string `json:"head_slot"`
|
|
HeadEpoch string `json:"head_epoch"`
|
|
HeadBlockRoot string `json:"head_block_root"`
|
|
FinalizedSlot string `json:"finalized_slot"`
|
|
FinalizedEpoch string `json:"finalized_epoch"`
|
|
FinalizedBlockRoot string `json:"finalized_block_root"`
|
|
JustifiedSlot string `json:"justified_slot"`
|
|
JustifiedEpoch string `json:"justified_epoch"`
|
|
JustifiedBlockRoot string `json:"justified_block_root"`
|
|
PreviousJustifiedSlot string `json:"previous_justified_slot"`
|
|
PreviousJustifiedEpoch string `json:"previous_justified_epoch"`
|
|
PreviousJustifiedBlockRoot string `json:"previous_justified_block_root"`
|
|
OptimisticStatus bool `json:"optimistic_status"`
|
|
}
|
|
|
|
type GetPendingConsolidationsResponse struct {
|
|
Version string `json:"version"`
|
|
ExecutionOptimistic bool `json:"execution_optimistic"`
|
|
Finalized bool `json:"finalized"`
|
|
Data []*PendingConsolidation `json:"data"`
|
|
}
|
|
|
|
type GetPendingDepositsResponse struct {
|
|
Version string `json:"version"`
|
|
ExecutionOptimistic bool `json:"execution_optimistic"`
|
|
Finalized bool `json:"finalized"`
|
|
Data []*PendingDeposit `json:"data"`
|
|
}
|
|
|
|
type GetPendingPartialWithdrawalsResponse struct {
|
|
Version string `json:"version"`
|
|
ExecutionOptimistic bool `json:"execution_optimistic"`
|
|
Finalized bool `json:"finalized"`
|
|
Data []*PendingPartialWithdrawal `json:"data"`
|
|
}
|
|
|
|
type GetProposerLookaheadResponse struct {
|
|
Version string `json:"version"`
|
|
ExecutionOptimistic bool `json:"execution_optimistic"`
|
|
Finalized bool `json:"finalized"`
|
|
Data []string `json:"data"` // validator indexes
|
|
}
|
|
|
|
type GetBlobsResponse struct {
|
|
ExecutionOptimistic bool `json:"execution_optimistic"`
|
|
Finalized bool `json:"finalized"`
|
|
Data []string `json:"data"` //blobs
|
|
}
|
|
|
|
type GetExecutionPayloadEnvelopeResponse struct {
|
|
Version string `json:"version"`
|
|
ExecutionOptimistic bool `json:"execution_optimistic"`
|
|
Finalized bool `json:"finalized"`
|
|
Data *SignedExecutionPayloadEnvelope `json:"data"`
|
|
}
|
|
|
|
type SSZQueryRequest struct {
|
|
Query string `json:"query"`
|
|
IncludeProof bool `json:"include_proof,omitempty"`
|
|
}
|