Skip to content

feat(l1): implement flatCallTracer#6705

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

feat(l1): implement flatCallTracer#6705
azteca1998 wants to merge 4 commits into
mainfrom
feat/flat-call-tracer

Conversation

@azteca1998
Copy link
Copy Markdown
Contributor

Summary

  • Add flatCallTracer tracer type for debug_traceTransaction and block tracing endpoints
  • Returns a flat array of call frames following the Parity/OpenEthereum trace format
  • Each frame includes traceAddress (position in call tree as array of indices) and subtraces (direct child count)
  • Uses the action/result sub-object structure: action.callType, action.from, action.to, etc.
  • Supports frame types: "call", "create", and "suicide"
  • Implemented by post-processing the existing call tracer output (depth-first recursive flattening)

Closes part of #6572

…ock tracing

Add support for the `flatCallTracer` tracer type which returns a flat
array of call frames following the Parity/OpenEthereum trace format.
Each frame includes `traceAddress` (position in call tree) and
`subtraces` (number of direct subcalls) instead of nested `calls`.

The action/result fields use the standard Parity format:
- action: callType, from, to, gas, input, value
- result: gasUsed, output
- type: "call", "create", or "suicide"

Implemented by post-processing the existing call tracer output,
recursively flattening the call tree with depth-first ordering.
@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: 255
Total lines removed: 0
Total lines changed: 255

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

Trace a real transfer with flatCallTracer and assert the response
is a flat array of call frames with the Parity trace format.
@azteca1998 azteca1998 changed the title feat(rpc): implement flatCallTracer feat(l1): implement flatCallTracer 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