From 905cbd63df7100d4bb56a8dd3f59b7da9c5e344a Mon Sep 17 00:00:00 2001 From: Daniel Liu <139250065@qq.com> Date: Sun, 31 Aug 2025 15:43:31 +0800 Subject: [PATCH] ethclient/gethclient: add method TraceTransaction #31288 (#1398) --- ethclient/gethclient/gethclient.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/ethclient/gethclient/gethclient.go b/ethclient/gethclient/gethclient.go index 09a31278cb..8b4a719d67 100644 --- a/ethclient/gethclient/gethclient.go +++ b/ethclient/gethclient/gethclient.go @@ -29,6 +29,7 @@ import ( "github.com/XinFinOrg/XDPoSChain/common" "github.com/XinFinOrg/XDPoSChain/common/hexutil" "github.com/XinFinOrg/XDPoSChain/core/types" + "github.com/XinFinOrg/XDPoSChain/eth/tracers" "github.com/XinFinOrg/XDPoSChain/p2p" "github.com/XinFinOrg/XDPoSChain/rpc" ) @@ -204,6 +205,17 @@ func (ec *Client) SubscribePendingTransactions(ctx context.Context, ch chan<- co return ec.c.EthSubscribe(ctx, ch, "newPendingTransactions") } +// TraceTransaction returns the structured logs created during the execution of EVM +// and returns them as a JSON object. +func (ec *Client) TraceTransaction(ctx context.Context, hash common.Hash, config *tracers.TraceConfig) (any, error) { + var result any + err := ec.c.CallContext(ctx, &result, "debug_traceTransaction", hash.Hex(), config) + if err != nil { + return nil, err + } + return result, nil +} + func toBlockNumArg(number *big.Int) string { if number == nil { return "latest"