-
Notifications
You must be signed in to change notification settings - Fork 440
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add native call tracer #6945
Add native call tracer #6945
Conversation
d52b377
to
11f180e
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@benaadams we need your review on VirtualMachine stuff
src/Nethermind/Nethermind.Evm/Tracing/GethStyle/Custom/Native/Call/NativeCallTracerCallFrame.cs
Outdated
Show resolved
Hide resolved
@LukaszRozmej I added a commit to update all of the list fields to use Since some of these updates were non-trivial, especially in regards to the ArrayPoolList disposals, would you be able to look over the recent commits (Use ArrayPoolList for list objects, Fix selfdestruct bug) to see if you have any additional concerns prior to merging this? |
Changes
Adds a native call tracer implementation to the nethermind client. The callTracer tracks all the call frames executed during a transaction, including depth 0. The result will be a nested list of call frames, resembling how EVM works. They form a tree with the top-level call at root and sub-calls as children of the higher levels.
Users can conditionally only select the main call or add emitted logs to the call stack as well depending on the tracerConfig that they pass in.
Types of changes
What types of changes does your code introduce?
Testing
Requires testing
If yes, did you write tests?
Documentation
Requires explanation in Release Notes
The
ReportOperationLog
method andIsTracingOpLevelLogs
flag was added to theITxTracer
interface to allow tracing logs emitted at the operation level.