Skip to content

Investigating debug_traceTransaction Performance and its Impact on Blockscout #4897

@DenSmolonski

Description

@DenSmolonski

Large Transaction Traces Causing Timeouts and Incorrect EOA Identification.

The data indicates a critical issue stemming from the debug_traceTransaction RPC method in Blockscout. Specifically, transactions with exceptionally large trace data, such as the example transaction 0x0d8a0dbeb84c3c3299293555be4b57eb239a7aeee4b8dacf1fcf5ca3036b15f7, can exceed size limitations (as evidenced by the 128MB response) and cause timeouts (413 Request Entity Too Large).

This problem is exacerbated by Blockscout's current approach of processing transactions, where individual failures on large traces can halt the processing of entire blocks. Consequently, the inability to successfully execute debug_traceTransaction on these problematic transactions prevents the correct identification of contract types, leading to smart contracts being incorrectly tagged as Externally Owned Accounts (EOAs).

application=ethereum_jsonrpc fetcher=internal_transaction count=1 [error] 413 Request Entity Too Large returned from single request batch. Cannot shrink the batch further. The actual batched request was [%{id: 0, params: ["0x0d8a0dbeb84c3c3299293555be4b57eb239a7aeee4b8dacf1fcf5ca3036b15f7", %{:timeout => "5s", "tracer" => "callTracer"}], method: "debug_traceTransaction", jsonrpc: "2.0"}]. The actual response of the method was :timeout.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions