Skip to content

feat(l1): implement muxTracer for debug_traceTransaction#6706

Draft
azteca1998 wants to merge 4 commits into
mainfrom
feat/mux-tracer
Draft

feat(l1): implement muxTracer for debug_traceTransaction#6706
azteca1998 wants to merge 4 commits into
mainfrom
feat/mux-tracer

Conversation

@azteca1998
Copy link
Copy Markdown
Contributor

Summary

  • Add muxTracer tracer type for debug_traceTransaction
  • Runs multiple sub-tracers on the same transaction and returns a combined map of tracerName -> result
  • Supported sub-tracers: callTracer, prestateTracer, opcodeTracer, 4byteTracer, noopTracer
  • Each sub-tracer re-executes the transaction independently (correct but not single-pass optimized)
  • Block-level muxTracer is not yet supported

Example

{
  "tracer": "muxTracer",
  "tracerConfig": {
    "callTracer": {"onlyTopCall": true},
    "prestateTracer": {"diffMode": false}
  }
}

Closes part of #6572

Add support for the `muxTracer` tracer type which runs multiple
sub-tracers on the same transaction and returns a combined result
map of `tracerName -> result`.

Supported sub-tracers: callTracer, prestateTracer, opcodeTracer,
4byteTracer, noopTracer.

Example config:
  {"tracer": "muxTracer", "tracerConfig": {
    "callTracer": {"onlyTopCall": true},
    "prestateTracer": {"diffMode": false}
  }}

Note: block-level muxTracer is not yet supported and returns an error.
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 21, 2026

⚠️ Known Issues — intentionally skipped tests

Source: docs/known_issues.md

Known Issues

Tests intentionally excluded from CI. Source of truth for the Known
Issues
section the L1 workflow appends to each ef-tests job summary
and posts as a sticky PR comment.

EF Tests — Stateless coverage narrowed to EIP-8025 optional-proofs

make -C tooling/ef_tests/blockchain test calls test-stateless-zkevm
instead of test-stateless. The zkevm@v0.3.3 fixtures are filled against
bal@v5.6.1, out of sync with current bal spec; the broad target trips ~549
fixtures. Re-broaden once the zkevm bundle is regenerated.

Why and resolution path

PR #6527 broadened
test-stateless to extract the entire for_amsterdam/ tree from the
zkevm bundle and run all of it under --features stateless; combined with
this branch's bal-devnet-7 semantics that scope produces ~549
GasUsedMismatch / ReceiptsRootMismatch /
BlockAccessListHashMismatch failures.

test-stateless-zkevm filters cargo to the eip8025_optional_proofs
suite, which still validates the stateless harness without the bal-version
mismatch.

Re-broaden by switching test: back to test-stateless in
tooling/ef_tests/blockchain/Makefile once the zkevm bundle is regenerated
against the current bal spec.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 21, 2026

Lines of code report

Total lines added: 348
Total lines removed: 0
Total lines changed: 348

Detailed view
+-----------------------------------------+-------+------+
| File                                    | Lines | Diff |
+-----------------------------------------+-------+------+
| ethrex/crates/networking/rpc/tracing.rs | 663   | +348 |
+-----------------------------------------+-------+------+

Tests for parse, config validation, tracer type deserialization,
and collect_four_byte_selectors helper function.
Trace a real transfer with muxTracer running callTracer and
prestateTracer simultaneously. Assert both sub-results are present.
@azteca1998 azteca1998 changed the title feat(rpc): implement muxTracer for debug_traceTransaction feat(l1): implement muxTracer for debug_traceTransaction May 21, 2026
@github-actions github-actions Bot added the L1 Ethereum client label May 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

L1 Ethereum client

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

1 participant