Skip to content

Commit 40cac1d

Browse files
authored
eth/catalyst: prettier output on bad new payloads (ethereum#29259)
When we receive a bad NewPayload, we currently emit a lot of data to the logging facilities. This PR makes it so we print less data.
1 parent 95715fd commit 40cac1d

File tree

2 files changed

+39
-1
lines changed

2 files changed

+39
-1
lines changed

common/types.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -475,3 +475,14 @@ func (d *Decimal) UnmarshalJSON(input []byte) error {
475475
return err
476476
}
477477
}
478+
479+
type PrettyBytes []byte
480+
481+
// TerminalString implements log.TerminalStringer, formatting a string for console
482+
// output during logging.
483+
func (b PrettyBytes) TerminalString() string {
484+
if len(b) < 7 {
485+
return fmt.Sprintf("%x", b)
486+
}
487+
return fmt.Sprintf("%#x...%x (%dB)", b[:3], b[len(b)-3:], len(b))
488+
}

eth/catalyst/api.go

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ package catalyst
2020
import (
2121
"errors"
2222
"fmt"
23+
"strconv"
2324
"sync"
2425
"time"
2526

@@ -540,7 +541,33 @@ func (api *ConsensusAPI) newPayload(params engine.ExecutableData, versionedHashe
540541
log.Trace("Engine API request received", "method", "NewPayload", "number", params.Number, "hash", params.BlockHash)
541542
block, err := engine.ExecutableDataToBlock(params, versionedHashes, beaconRoot)
542543
if err != nil {
543-
log.Warn("Invalid NewPayload params", "params", params, "error", err)
544+
bgu := "nil"
545+
if params.BlobGasUsed != nil {
546+
bgu = strconv.Itoa(int(*params.BlobGasUsed))
547+
}
548+
ebg := "nil"
549+
if params.BlobGasUsed != nil {
550+
ebg = strconv.Itoa(int(*params.ExcessBlobGas))
551+
}
552+
log.Warn("Invalid NewPayload params",
553+
"params.Number", params.Number,
554+
"params.ParentHash", params.ParentHash,
555+
"params.BlockHash", params.BlockHash,
556+
"params.StateRoot", params.StateRoot,
557+
"params.FeeRecipient", params.FeeRecipient,
558+
"params.LogsBloom", common.PrettyBytes(params.LogsBloom),
559+
"params.Random", params.Random,
560+
"params.GasLimit", params.GasLimit,
561+
"params.GasUsed", params.GasUsed,
562+
"params.Timestamp", params.Timestamp,
563+
"params.ExtraData", common.PrettyBytes(params.ExtraData),
564+
"params.BaseFeePerGas", params.BaseFeePerGas,
565+
"params.BlobGasUsed", bgu,
566+
"params.ExcessBlobGas", ebg,
567+
"len(params.Transactions)", len(params.Transactions),
568+
"len(params.Withdrawals)", len(params.Withdrawals),
569+
"beaconRoot", beaconRoot,
570+
"error", err)
544571
return api.invalid(err, nil), nil
545572
}
546573
// Stash away the last update to warn the user if the beacon client goes offline

0 commit comments

Comments
 (0)