diff --git a/pkg/eth/debug_test/debug_test.go b/pkg/eth/debug_test/debug_test.go index 64fd9e05..09512254 100644 --- a/pkg/eth/debug_test/debug_test.go +++ b/pkg/eth/debug_test/debug_test.go @@ -144,12 +144,11 @@ var _ = BeforeSuite(func() { Expect(err).ToNot(HaveOccurred()) tracingAPI, _ = eth.NewTracingAPI(backend, nil, eth.APIConfig{StateDiffTimeout: shared.DefaultStateDiffTimeout}) - + tb.teardown() }) var _ = AfterSuite(func() { shared.TearDownDB(db) - tb.teardown() }) var ( @@ -302,7 +301,7 @@ var _ = Describe("eth state reading tests", func() { Expect(err).ToNot(HaveOccurred()) have, _ := json.Marshal(result) want := tc.want - Expect(have).To(Equal(want)) + Expect(string(have)).To(Equal(want)) } } }) diff --git a/pkg/eth/tracing.go b/pkg/eth/tracing.go index a201f180..7c8e6982 100644 --- a/pkg/eth/tracing.go +++ b/pkg/eth/tracing.go @@ -236,9 +236,14 @@ type txTraceResult struct { Error string `json:"error,omitempty"` // Trace failure produced by the tracer } +var noGenesisErr = errors.New("genesis is not traceable") + // TraceBlockByNumber returns the structured logs created during the execution of // EVM and returns them as a JSON object. func (api *TracingAPI) TraceBlockByNumber(ctx context.Context, number rpc.BlockNumber, config *TraceConfig) ([]*txTraceResult, error) { + if number == 0 { + return nil, noGenesisErr + } block, err := api.blockByNumber(ctx, number) if err != nil { return nil, err @@ -263,6 +268,9 @@ func (api *TracingAPI) TraceBlockByHash(ctx context.Context, hash common.Hash, c if err != nil { return nil, err } + if block.NumberU64() == 0 { + return nil, noGenesisErr + } trace, err := api.traceBlock(ctx, block, config) if trace != nil && err == nil { return trace, nil