From 2c270e229464fe81d6633298159922ee665b1921 Mon Sep 17 00:00:00 2001 From: jonny rhea Date: Fri, 16 Jan 2026 13:38:54 -0600 Subject: [PATCH] eth/catalyst: add helper for ExecutableData telemetry attributes --- eth/catalyst/api.go | 41 ++++++++++++----------------------------- eth/catalyst/witness.go | 28 ++++------------------------ 2 files changed, 16 insertions(+), 53 deletions(-) diff --git a/eth/catalyst/api.go b/eth/catalyst/api.go index f36e9a40c0..497f787ced 100644 --- a/eth/catalyst/api.go +++ b/eth/catalyst/api.go @@ -626,14 +626,18 @@ func (api *ConsensusAPI) getBlobs(hashes []common.Hash, v2 bool) ([]*engine.Blob // Helper for NewPayload* methods. var invalidStatus = engine.PayloadStatusV1{Status: engine.INVALID} -// NewPayloadV1 creates an Eth1 block, inserts it in the chain, and returns the status of the chain. -func (api *ConsensusAPI) NewPayloadV1(ctx context.Context, params engine.ExecutableData) (result engine.PayloadStatusV1, err error) { - attrs := []telemetry.Attribute{ +// executableDataAttrs returns telemetry attributes for an ExecutableData payload. +func executableDataAttrs(params engine.ExecutableData) []telemetry.Attribute { + return []telemetry.Attribute{ telemetry.Int64Attribute("block.number", int64(params.Number)), telemetry.StringAttribute("block.hash", params.BlockHash.Hex()), telemetry.Int64Attribute("tx.count", int64(len(params.Transactions))), } - ctx, _, spanEnd := telemetry.StartSpan(ctx, "engine.newPayloadV1", attrs...) +} + +// NewPayloadV1 creates an Eth1 block, inserts it in the chain, and returns the status of the chain. +func (api *ConsensusAPI) NewPayloadV1(ctx context.Context, params engine.ExecutableData) (result engine.PayloadStatusV1, err error) { + ctx, _, spanEnd := telemetry.StartSpan(ctx, "engine.newPayloadV1", executableDataAttrs(params)...) defer spanEnd(err) if params.Withdrawals != nil { return invalidStatus, paramsErr("withdrawals not supported in V1") @@ -643,12 +647,7 @@ func (api *ConsensusAPI) NewPayloadV1(ctx context.Context, params engine.Executa // NewPayloadV2 creates an Eth1 block, inserts it in the chain, and returns the status of the chain. func (api *ConsensusAPI) NewPayloadV2(ctx context.Context, params engine.ExecutableData) (result engine.PayloadStatusV1, err error) { - attrs := []telemetry.Attribute{ - telemetry.Int64Attribute("block.number", int64(params.Number)), - telemetry.StringAttribute("block.hash", params.BlockHash.Hex()), - telemetry.Int64Attribute("tx.count", int64(len(params.Transactions))), - } - ctx, _, spanEnd := telemetry.StartSpan(ctx, "engine.newPayloadV2", attrs...) + ctx, _, spanEnd := telemetry.StartSpan(ctx, "engine.newPayloadV2", executableDataAttrs(params)...) defer spanEnd(err) var ( cancun = api.config().IsCancun(api.config().LondonBlock, params.Timestamp) @@ -671,12 +670,7 @@ func (api *ConsensusAPI) NewPayloadV2(ctx context.Context, params engine.Executa // NewPayloadV3 creates an Eth1 block, inserts it in the chain, and returns the status of the chain. func (api *ConsensusAPI) NewPayloadV3(ctx context.Context, params engine.ExecutableData, versionedHashes []common.Hash, beaconRoot *common.Hash) (result engine.PayloadStatusV1, err error) { - attrs := []telemetry.Attribute{ - telemetry.Int64Attribute("block.number", int64(params.Number)), - telemetry.StringAttribute("block.hash", params.BlockHash.Hex()), - telemetry.Int64Attribute("tx.count", int64(len(params.Transactions))), - } - ctx, _, spanEnd := telemetry.StartSpan(ctx, "engine.newPayloadV3", attrs...) + ctx, _, spanEnd := telemetry.StartSpan(ctx, "engine.newPayloadV3", executableDataAttrs(params)...) defer spanEnd(err) switch { case params.Withdrawals == nil: @@ -697,12 +691,7 @@ func (api *ConsensusAPI) NewPayloadV3(ctx context.Context, params engine.Executa // NewPayloadV4 creates an Eth1 block, inserts it in the chain, and returns the status of the chain. func (api *ConsensusAPI) NewPayloadV4(ctx context.Context, params engine.ExecutableData, versionedHashes []common.Hash, beaconRoot *common.Hash, executionRequests []hexutil.Bytes) (result engine.PayloadStatusV1, err error) { - attrs := []telemetry.Attribute{ - telemetry.Int64Attribute("block.number", int64(params.Number)), - telemetry.StringAttribute("block.hash", params.BlockHash.Hex()), - telemetry.Int64Attribute("tx.count", int64(len(params.Transactions))), - } - ctx, _, spanEnd := telemetry.StartSpan(ctx, "engine.newPayloadV4", attrs...) + ctx, _, spanEnd := telemetry.StartSpan(ctx, "engine.newPayloadV4", executableDataAttrs(params)...) defer spanEnd(err) switch { case params.Withdrawals == nil: @@ -745,16 +734,10 @@ func (api *ConsensusAPI) newPayload(ctx context.Context, params engine.Executabl defer api.newPayloadLock.Unlock() log.Trace("Engine API request received", "method", "NewPayload", "number", params.Number, "hash", params.BlockHash) - - attrs := []telemetry.Attribute{ - telemetry.Int64Attribute("block.number", int64(params.Number)), - telemetry.StringAttribute("block.hash", params.BlockHash.Hex()), - telemetry.Int64Attribute("tx.count", int64(len(params.Transactions))), - } + attrs := executableDataAttrs(params) _, _, spanEnd := telemetry.StartSpan(ctx, "engine.newPayload.ExecutableDataToBlock", attrs...) block, err := engine.ExecutableDataToBlock(params, versionedHashes, beaconRoot, requests) spanEnd(err) - if err != nil { bgu := "nil" if params.BlobGasUsed != nil { diff --git a/eth/catalyst/witness.go b/eth/catalyst/witness.go index d2f25e6b2d..4da107ec9f 100644 --- a/eth/catalyst/witness.go +++ b/eth/catalyst/witness.go @@ -89,12 +89,7 @@ func (api *ConsensusAPI) ForkchoiceUpdatedWithWitnessV3(update engine.Forkchoice // NewPayloadWithWitnessV1 is analogous to NewPayloadV1, only it also generates // and returns a stateless witness after running the payload. func (api *ConsensusAPI) NewPayloadWithWitnessV1(ctx context.Context, params engine.ExecutableData) (result engine.PayloadStatusV1, err error) { - attrs := []telemetry.Attribute{ - telemetry.Int64Attribute("block.number", int64(params.Number)), - telemetry.StringAttribute("block.hash", params.BlockHash.Hex()), - telemetry.Int64Attribute("tx.count", int64(len(params.Transactions))), - } - ctx, _, spanEnd := telemetry.StartSpan(ctx, "engine.newPayloadWithWitnessV1", attrs...) + ctx, _, spanEnd := telemetry.StartSpan(ctx, "engine.newPayloadWithWitnessV1", executableDataAttrs(params)...) defer spanEnd(err) if params.Withdrawals != nil { return engine.PayloadStatusV1{Status: engine.INVALID}, engine.InvalidParams.With(errors.New("withdrawals not supported in V1")) @@ -105,12 +100,7 @@ func (api *ConsensusAPI) NewPayloadWithWitnessV1(ctx context.Context, params eng // NewPayloadWithWitnessV2 is analogous to NewPayloadV2, only it also generates // and returns a stateless witness after running the payload. func (api *ConsensusAPI) NewPayloadWithWitnessV2(ctx context.Context, params engine.ExecutableData) (result engine.PayloadStatusV1, err error) { - attrs := []telemetry.Attribute{ - telemetry.Int64Attribute("block.number", int64(params.Number)), - telemetry.StringAttribute("block.hash", params.BlockHash.Hex()), - telemetry.Int64Attribute("tx.count", int64(len(params.Transactions))), - } - ctx, _, spanEnd := telemetry.StartSpan(ctx, "engine.newPayloadWithWitnessV2", attrs...) + ctx, _, spanEnd := telemetry.StartSpan(ctx, "engine.newPayloadWithWitnessV2", executableDataAttrs(params)...) defer spanEnd(err) var ( cancun = api.config().IsCancun(api.config().LondonBlock, params.Timestamp) @@ -134,12 +124,7 @@ func (api *ConsensusAPI) NewPayloadWithWitnessV2(ctx context.Context, params eng // NewPayloadWithWitnessV3 is analogous to NewPayloadV3, only it also generates // and returns a stateless witness after running the payload. func (api *ConsensusAPI) NewPayloadWithWitnessV3(ctx context.Context, params engine.ExecutableData, versionedHashes []common.Hash, beaconRoot *common.Hash) (result engine.PayloadStatusV1, err error) { - attrs := []telemetry.Attribute{ - telemetry.Int64Attribute("block.number", int64(params.Number)), - telemetry.StringAttribute("block.hash", params.BlockHash.Hex()), - telemetry.Int64Attribute("tx.count", int64(len(params.Transactions))), - } - ctx, _, spanEnd := telemetry.StartSpan(ctx, "engine.newPayloadWithWitnessV3", attrs...) + ctx, _, spanEnd := telemetry.StartSpan(ctx, "engine.newPayloadWithWitnessV3", executableDataAttrs(params)...) defer spanEnd(err) switch { case params.Withdrawals == nil: @@ -161,12 +146,7 @@ func (api *ConsensusAPI) NewPayloadWithWitnessV3(ctx context.Context, params eng // NewPayloadWithWitnessV4 is analogous to NewPayloadV4, only it also generates // and returns a stateless witness after running the payload. func (api *ConsensusAPI) NewPayloadWithWitnessV4(ctx context.Context, params engine.ExecutableData, versionedHashes []common.Hash, beaconRoot *common.Hash, executionRequests []hexutil.Bytes) (result engine.PayloadStatusV1, err error) { - attrs := []telemetry.Attribute{ - telemetry.Int64Attribute("block.number", int64(params.Number)), - telemetry.StringAttribute("block.hash", params.BlockHash.Hex()), - telemetry.Int64Attribute("tx.count", int64(len(params.Transactions))), - } - ctx, _, spanEnd := telemetry.StartSpan(ctx, "engine.newPayloadWithWitnessV4", attrs...) + ctx, _, spanEnd := telemetry.StartSpan(ctx, "engine.newPayloadWithWitnessV4", executableDataAttrs(params)...) defer spanEnd(err) switch { case params.Withdrawals == nil: