Interface BlockAwareOperationTracer

All Superinterfaces:
org.hyperledger.besu.evm.tracing.OperationTracer

public interface BlockAwareOperationTracer extends org.hyperledger.besu.evm.tracing.OperationTracer
An extended operation tracer that can trace the start and end of a block.

The block start hook receives the world view and the block header, plus the block body when an existing block is traced; the block end hook receives the block header and body.

  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    BlockAwareOperationTracer object with no tracing functionality.
  • Method Summary

    Modifier and Type
    Method
    Description
    default boolean
     
    default boolean
    Whether this tracer wants to observe system-call execution (e.g.
    default void
    traceEndBlock(org.hyperledger.besu.plugin.data.BlockHeader blockHeader, org.hyperledger.besu.plugin.data.BlockBody blockBody)
    Trace the end of a block.
    default void
    traceStartBlock(org.hyperledger.besu.evm.worldstate.WorldView worldView, org.hyperledger.besu.plugin.data.BlockHeader blockHeader, org.hyperledger.besu.plugin.data.BlockBody blockBody, org.hyperledger.besu.datatypes.Address miningBeneficiary)
    Trace the start of a block.
    default void
    traceStartBlock(org.hyperledger.besu.evm.worldstate.WorldView worldView, org.hyperledger.besu.plugin.data.ProcessableBlockHeader processableBlockHeader, org.hyperledger.besu.datatypes.Address miningBeneficiary)
    When building a block this API is called at the start of the process

    Methods inherited from interface org.hyperledger.besu.evm.tracing.OperationTracer

    getTraceFrames, isEnabled, traceAccountCreationResult, traceBeforeRewardTransaction, traceContextEnter, traceContextExit, traceContextReEnter, traceEndTransaction, tracePostExecution, tracePrecompileCall, tracePreExecution, tracePrepareTransaction, traceStartTransaction
  • Field Details

    • NO_TRACING

      static final BlockAwareOperationTracer NO_TRACING
      BlockAwareOperationTracer object with no tracing functionality. This serves as a default for scenarios where no specific tracing operation is required.
  • Method Details

    • traceStartBlock

      default void traceStartBlock(org.hyperledger.besu.evm.worldstate.WorldView worldView, org.hyperledger.besu.plugin.data.BlockHeader blockHeader, org.hyperledger.besu.plugin.data.BlockBody blockBody, org.hyperledger.besu.datatypes.Address miningBeneficiary)
      Trace the start of a block.
      Parameters:
      worldView - the world view at the start of the block
      blockHeader - the header of the block which is traced
      blockBody - the body of the block which is traced
      miningBeneficiary - the address of miner building the block
    • traceEndBlock

      default void traceEndBlock(org.hyperledger.besu.plugin.data.BlockHeader blockHeader, org.hyperledger.besu.plugin.data.BlockBody blockBody)
      Trace the end of a block.
      Parameters:
      blockHeader - the header of the block which is traced
      blockBody - the body of the block which is traced
    • traceStartBlock

      default void traceStartBlock(org.hyperledger.besu.evm.worldstate.WorldView worldView, org.hyperledger.besu.plugin.data.ProcessableBlockHeader processableBlockHeader, org.hyperledger.besu.datatypes.Address miningBeneficiary)
      When building a block this API is called at the start of the process
      Parameters:
      worldView - the world view at the start of the block
      processableBlockHeader - the processable header
      miningBeneficiary - the address of miner building the block
    • isSystemCallTracingEnabled

      default boolean isSystemCallTracingEnabled()
      Whether this tracer wants to observe system-call execution (e.g. EIP-2935, EIP-7002).

      System calls run outside of normal transaction processing. By default, they are not traced. Tracers that need to inspect system-call code (for example an execution-witness builder) should override this to return true.

      Returns:
      true if the tracer wants system calls to be traced; false by default
    • isExtendedTracing

      default boolean isExtendedTracing()
      Specified by:
      isExtendedTracing in interface org.hyperledger.besu.evm.tracing.OperationTracer