From f00405fcdc7de12368df566fe2499704f708679e Mon Sep 17 00:00:00 2001 From: Sam Calder-Mason Date: Tue, 10 Oct 2023 13:00:44 +1000 Subject: [PATCH] feat(event): add BeaconBlobSidecar type --- .../beacon/eth/v1/beacon_blob_sidecar.go | 42 +++++++++++++++++++ .../service/event-ingester/event/event.go | 3 ++ 2 files changed, 45 insertions(+) create mode 100644 pkg/server/service/event-ingester/event/beacon/eth/v1/beacon_blob_sidecar.go diff --git a/pkg/server/service/event-ingester/event/beacon/eth/v1/beacon_blob_sidecar.go b/pkg/server/service/event-ingester/event/beacon/eth/v1/beacon_blob_sidecar.go new file mode 100644 index 00000000..0738f221 --- /dev/null +++ b/pkg/server/service/event-ingester/event/beacon/eth/v1/beacon_blob_sidecar.go @@ -0,0 +1,42 @@ +package v1 + +import ( + "context" + "errors" + + "github.com/ethpandaops/xatu/pkg/proto/xatu" + "github.com/sirupsen/logrus" +) + +const ( + BeaconBlobSidecarType = "BEACON_API_ETH_V1_BEACON_BLOB_SIDECAR" +) + +type BeaconBlobSidecar struct { + log logrus.FieldLogger + event *xatu.DecoratedEvent +} + +func NewBeaconBlobSidecar(log logrus.FieldLogger, event *xatu.DecoratedEvent) *BeaconBlobSidecar { + return &BeaconBlobSidecar{ + log: log.WithField("event", BeaconBlobSidecarType), + event: event, + } +} + +func (b *BeaconBlobSidecar) Type() string { + return BeaconBlobSidecarType +} + +func (b *BeaconBlobSidecar) Validate(_ context.Context) error { + _, ok := b.event.GetData().(*xatu.DecoratedEvent_EthV1BeaconBlockBlobSidecar) + if !ok { + return errors.New("failed to cast event data") + } + + return nil +} + +func (b *BeaconBlobSidecar) Filter(_ context.Context) bool { + return false +} diff --git a/pkg/server/service/event-ingester/event/event.go b/pkg/server/service/event-ingester/event/event.go index a156c31a..162b923d 100644 --- a/pkg/server/service/event-ingester/event/event.go +++ b/pkg/server/service/event-ingester/event/event.go @@ -51,6 +51,7 @@ const ( TypeBeaconEthV2BeaconWithdrawal Type = v2.BeaconBlockWithdrawalType TypeBlockprintBlockClassification Type = blockprint.BlockClassificationType TypeBeaconETHV1EventsBlobSidecar Type = v1.EventsBlobSidecarType + TypeBeaconETHV1BeaconBlobSidecar Type = v1.BeaconBlobSidecarType ) type Event interface { @@ -132,6 +133,8 @@ func New(eventType Type, log logrus.FieldLogger, event *xatu.DecoratedEvent, cac return blockprint.NewBlockClassification(log, event), nil case TypeBeaconETHV1EventsBlobSidecar: return v1.NewEventsBlobSidecar(log, event), nil + case TypeBeaconETHV1BeaconBlobSidecar: + return v1.NewBeaconBlobSidecar(log, event), nil default: return nil, fmt.Errorf("event type %s is unknown", eventType)