Files
prysm/consensus-types/payload-attribute/types.go
terencechain d17996f8b0 Update to V4 🚀 (#12134)
* Update V3 from V4

* Fix build v3 -> v4

* Update ssz

* Update beacon_chain.pb.go

* Fix formatter import

* Update update-mockgen.sh comment to v4

* Fix conflicts. Pass build and tests

* Fix test
2023-03-17 18:52:56 +00:00

74 lines
1.9 KiB
Go

package payloadattribute
import (
"github.com/pkg/errors"
"github.com/prysmaticlabs/prysm/v4/consensus-types/blocks"
enginev1 "github.com/prysmaticlabs/prysm/v4/proto/engine/v1"
"github.com/prysmaticlabs/prysm/v4/runtime/version"
)
var (
_ = Attributer(&data{})
)
type data struct {
version int
timeStamp uint64
prevRandao []byte
suggestedFeeRecipient []byte
withdrawals []*enginev1.Withdrawal
}
var (
errNilPayloadAttribute = errors.New("received nil payload attribute")
errUnsupportedPayloadAttribute = errors.New("unsupported payload attribute")
)
// New returns a new payload attribute with the given input object.
func New(i interface{}) (Attributer, error) {
switch a := i.(type) {
case nil:
return nil, blocks.ErrNilObject
case *enginev1.PayloadAttributes:
return initPayloadAttributeFromV1(a)
case *enginev1.PayloadAttributesV2:
return initPayloadAttributeFromV2(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
}