Skip to main content
This guide covers common issues with EVM transaction tracing on Sei and gives practical solutions for them.

Common error categories

1. Timeout errors

Error: execution timeout Cause: The tracer execution exceeded the configured timeout. Solutions:
Best practices:
  • Start with shorter timeouts (30s) for testing
  • Increase the timeout gradually, based on transaction complexity
  • Use built-in tracers when possible, because they are faster
  • Optimize JavaScript tracer code for performance

2. Memory limit errors

Error: out of memory or memory limit exceeded Cause: The tracer collected too much data or used memory inefficiently. Solutions:
Memory-efficient tracer pattern:

3. JavaScript tracer errors

Error: SyntaxError or ReferenceError in a JavaScript tracer Common issues:
Debugging JavaScript tracers:

4. Network and connection issues

Tracer not allowed / JavaScript tracers disabled

Error: debug tracer "..." is not allowed; JavaScript tracers are disabled and only native tracers listed in evm.trace_allowed_tracers may be used Cause: Sei gates which tracers callers may request through TraceConfig.Tracer on the debug_traceCall, debug_traceTransaction, debug_traceBlockByNumber, debug_traceBlockByHash, and debug_traceTransactionProfile endpoints. By default only the native tracers listed in the [evm] trace_allowed_tracers config are accepted, and request-supplied JavaScript tracer source is rejected. This deviates from upstream geth, which accepts JavaScript tracers by default. Solutions:
  • Use one of the allowlisted native tracers. The shipped default allowlist is:
  • If you are an operator and need to permit a native tracer that is not listed, add its name to trace_allowed_tracers. Only native geth tracer names are accepted here; a typo or JavaScript source causes the node to fail at startup. Setting the list to [] disables all named tracers.
  • To allow request-supplied JavaScript tracer source, an operator must explicitly opt in:
    This executes untrusted code in-process and should be kept disabled on public/default RPC nodes. Enabling it does not widen trace_allowed_tracers: native tracer names must still be listed there to be usable.
When using muxTracer, the nested tracer names in TracerConfig are validated recursively against the same allowlist, with a bounded nesting depth of 16. A nested name that is not allowlisted produces a nested debug tracer "..." is not allowed error. Also note that trace_bake_tracers names are validated as native-only at startup, so a non-native or mistyped name there will fail node startup rather than being evaluated as JavaScript.
Error: connection refused or network timeout Solutions:

5. Transaction not found

Error: transaction not found Debugging steps:

Performance optimization

Tracer performance tips

  1. Limit data collection:
  1. Use efficient data structures:
  1. Selective tracing:

Node configuration for better performance

Debugging workflows

1. Failed transaction analysis

2. Gas optimization workflow

Error code reference

Common HTTP error codes

Tracer-specific errors

Best practices summary

✅ Do’s

  • Start simple: Begin with built-in tracers before you write custom JavaScript.
  • Set timeouts: Always configure appropriate timeouts.
  • Limit data: Collect only the information that you need.
  • Test incrementally: Test tracers on simple transactions first.
  • Monitor resources: Watch memory and CPU usage.
  • Cache results: Store expensive trace results when possible.

❌ Don’ts

  • Do not collect everything: Avoid tracing all operations unnecessarily.
  • Do not ignore errors: Always handle tracer errors gracefully.
  • Do not use complex logic: Keep tracer step functions simple.
  • Do not forget timeouts: Never run tracers without timeout limits.
  • Do not trace in production: Avoid heavy tracing on production nodes.

Getting help

If you have an issue that this guide does not cover:
  1. Check node logs: Look for error messages in your Sei node logs.
  2. Verify the configuration: Make sure that tracing is enabled on your node.
  3. Test connectivity: Confirm that the RPC endpoints are accessible.
  4. Simplify tracers: Try built-in tracers first.
  5. Community support: Ask in the #dev-support channel of the Sei Discord.
When you report an issue, include your tracer code, the transaction hash, and any error messages that you receive. This helps the community help you.