mirror of
https://github.com/OffchainLabs/prysm.git
synced 2026-01-09 13:28:01 -05:00
* Ran gopls modernize to fix everything go run golang.org/x/tools/gopls/internal/analysis/modernize/cmd/modernize@latest -fix -test ./... * Override rules_go provided dependency for golang.org/x/tools to v0.38.0. To update this, checked out rules_go, then ran `bazel run //go/tools/releaser -- upgrade-dep -mirror=false org_golang_x_tools` and copied the patches. * Fix buildtag violations and ignore buildtag violations in external * Introduce modernize analyzer package. * Add modernize "any" analyzer. * Fix violations of any analyzer * Add modernize "appendclipped" analyzer. * Fix violations of appendclipped * Add modernize "bloop" analyzer. * Add modernize "fmtappendf" analyzer. * Add modernize "forvar" analyzer. * Add modernize "mapsloop" analyzer. * Add modernize "minmax" analyzer. * Fix violations of minmax analyzer * Add modernize "omitzero" analyzer. * Add modernize "rangeint" analyzer. * Fix violations of rangeint. * Add modernize "reflecttypefor" analyzer. * Fix violations of reflecttypefor analyzer. * Add modernize "slicescontains" analyzer. * Add modernize "slicessort" analyzer. * Add modernize "slicesdelete" analyzer. This is disabled by default for now. See https://go.dev/issue/73686. * Add modernize "stringscutprefix" analyzer. * Add modernize "stringsbuilder" analyzer. * Fix violations of stringsbuilder analyzer. * Add modernize "stringsseq" analyzer. * Add modernize "testingcontext" analyzer. * Add modernize "waitgroup" analyzer. * Changelog fragment * gofmt * gazelle * Add modernize "newexpr" analyzer. * Disable newexpr until go1.26 * Add more details in WORKSPACE on how to update the override * @nalepae feedback on min() * gofmt * Fix violations of forvar
107 lines
3.0 KiB
Go
107 lines
3.0 KiB
Go
package payloadattribute
|
|
|
|
import (
|
|
field_params "github.com/OffchainLabs/prysm/v7/config/fieldparams"
|
|
"github.com/OffchainLabs/prysm/v7/consensus-types/blocks"
|
|
"github.com/OffchainLabs/prysm/v7/consensus-types/interfaces"
|
|
"github.com/OffchainLabs/prysm/v7/consensus-types/primitives"
|
|
enginev1 "github.com/OffchainLabs/prysm/v7/proto/engine/v1"
|
|
"github.com/OffchainLabs/prysm/v7/runtime/version"
|
|
"github.com/pkg/errors"
|
|
)
|
|
|
|
var (
|
|
_ = Attributer(&data{})
|
|
)
|
|
|
|
type data struct {
|
|
version int
|
|
timeStamp uint64
|
|
prevRandao []byte
|
|
suggestedFeeRecipient []byte
|
|
withdrawals []*enginev1.Withdrawal
|
|
parentBeaconBlockRoot []byte
|
|
}
|
|
|
|
var (
|
|
errNilPayloadAttribute = errors.New("received nil payload attribute")
|
|
errUnsupportedPayloadAttribute = errors.New("unsupported payload attribute")
|
|
errNoParentRoot = errors.New("parent root is empty")
|
|
)
|
|
|
|
// New returns a new payload attribute with the given input object.
|
|
func New(i any) (Attributer, error) {
|
|
switch a := i.(type) {
|
|
case nil:
|
|
return nil, blocks.ErrNilObject
|
|
case *enginev1.PayloadAttributes:
|
|
return initPayloadAttributeFromV1(a)
|
|
case *enginev1.PayloadAttributesV2:
|
|
return initPayloadAttributeFromV2(a)
|
|
case *enginev1.PayloadAttributesV3:
|
|
return initPayloadAttributeFromV3(a)
|
|
default:
|
|
return nil, errors.Wrapf(errUnsupportedPayloadAttribute, "unable to create payload attribute from type %T", i)
|
|
}
|
|
}
|
|
|
|
// EmptyWithVersion returns an empty payload attribute with the given version.
|
|
func EmptyWithVersion(version int) Attributer {
|
|
return &data{
|
|
version: version,
|
|
}
|
|
}
|
|
|
|
func initPayloadAttributeFromV1(a *enginev1.PayloadAttributes) (Attributer, error) {
|
|
if a == nil {
|
|
return nil, errNilPayloadAttribute
|
|
}
|
|
|
|
return &data{
|
|
version: version.Bellatrix,
|
|
prevRandao: a.PrevRandao,
|
|
timeStamp: a.Timestamp,
|
|
suggestedFeeRecipient: a.SuggestedFeeRecipient,
|
|
}, nil
|
|
}
|
|
|
|
func initPayloadAttributeFromV2(a *enginev1.PayloadAttributesV2) (Attributer, error) {
|
|
if a == nil {
|
|
return nil, errNilPayloadAttribute
|
|
}
|
|
|
|
return &data{
|
|
version: version.Capella,
|
|
prevRandao: a.PrevRandao,
|
|
timeStamp: a.Timestamp,
|
|
suggestedFeeRecipient: a.SuggestedFeeRecipient,
|
|
withdrawals: a.Withdrawals,
|
|
}, nil
|
|
}
|
|
|
|
func initPayloadAttributeFromV3(a *enginev1.PayloadAttributesV3) (Attributer, error) {
|
|
if a == nil {
|
|
return nil, errNilPayloadAttribute
|
|
}
|
|
|
|
return &data{
|
|
version: version.Deneb,
|
|
prevRandao: a.PrevRandao,
|
|
timeStamp: a.Timestamp,
|
|
suggestedFeeRecipient: a.SuggestedFeeRecipient,
|
|
withdrawals: a.Withdrawals,
|
|
parentBeaconBlockRoot: a.ParentBeaconBlockRoot,
|
|
}, nil
|
|
}
|
|
|
|
// EventData holds the values for a PayloadAttributes event.
|
|
type EventData struct {
|
|
ProposerIndex primitives.ValidatorIndex
|
|
ProposalSlot primitives.Slot
|
|
ParentBlockNumber uint64
|
|
ParentBlockHash []byte
|
|
Attributer Attributer
|
|
HeadBlock interfaces.ReadOnlySignedBeaconBlock
|
|
HeadRoot [field_params.RootLength]byte
|
|
}
|