pub struct LevmCallTracer {
pub callframes: Vec<CallTraceFrame>,
pub only_top_call: bool,
pub with_log: bool,
pub active: bool,
}Expand description
Geth’s callTracer (https://geth.ethereum.org/docs/developers/evm-tracing/built-in-tracers)
Use LevmCallTracer::disabled() when tracing is not wanted.
Fields§
§callframes: Vec<CallTraceFrame>Stack for tracer callframes, at the end of execution there will be only one element.
only_top_call: boolIf true, trace only the top call (a.k.a. the external transaction)
with_log: boolIf true, trace logs
active: boolIf active is set to false it won’t trace.
Implementations§
Source§impl LevmCallTracer
impl LevmCallTracer
pub fn new(only_top_call: bool, with_log: bool) -> Self
Sourcepub fn disabled() -> Self
pub fn disabled() -> Self
This is to keep LEVM’s code clean, like self.tracer.enter(...),
instead of something more complex or uglier when we don’t want to trace.
(For now that we only implement one tracer it may be the most convenient solution)
Sourcepub fn enter(
&mut self,
call_type: CallType,
from: Address,
to: Address,
value: U256,
gas: u64,
input: &Bytes,
)
pub fn enter( &mut self, call_type: CallType, from: Address, to: Address, value: U256, gas: u64, input: &Bytes, )
Starts trace call.
Sourcepub fn exit_context(
&mut self,
ctx_result: &ContextResult,
is_top_call: bool,
) -> Result<(), InternalError>
pub fn exit_context( &mut self, ctx_result: &ContextResult, is_top_call: bool, ) -> Result<(), InternalError>
Exits trace call using the ContextResult.
Sourcepub fn exit_early(
&mut self,
gas_used: u64,
error: Option<String>,
) -> Result<(), InternalError>
pub fn exit_early( &mut self, gas_used: u64, error: Option<String>, ) -> Result<(), InternalError>
Exits trace call when CALL or CREATE opcodes return early or in case SELFDESTRUCT is called.
Trait Implementations§
Source§impl Debug for LevmCallTracer
impl Debug for LevmCallTracer
Source§impl Default for LevmCallTracer
impl Default for LevmCallTracer
Source§fn default() -> LevmCallTracer
fn default() -> LevmCallTracer
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl Freeze for LevmCallTracer
impl RefUnwindSafe for LevmCallTracer
impl Send for LevmCallTracer
impl Sync for LevmCallTracer
impl Unpin for LevmCallTracer
impl UnsafeUnpin for LevmCallTracer
impl UnwindSafe for LevmCallTracer
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Returns the layout of the type.
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Returns whether the given value has been niched. Read more
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
Writes data to
out indicating that a T is niched.