EEVM.Interpreter.MachineState.Env (eevm v0.1.0)

Copy Markdown View Source

Per-call read-only execution environment.

Bundles the fields that are set when a frame is constructed and never mutate during its lifetime:

  • tx — the transaction environment, EEVM.TxEnv (origin, gas price, blob hashes…)
  • block — the block environment, EEVM.BlockEnv (number, timestamp, coinbase, base fee…)
  • config — the active hardfork config (which EIPs are enabled, registered precompiles)
  • instruction_table — the hardfork's opcode dispatch table (EEVM.Interpreter.InstructionTable), resolved here once so the interpreter loop never re-checks the fork per opcode

Child frames inherit the parent's env unchanged. Treating them as a single immutable record makes intent explicit at call sites — state.env is what you pass through, state.frame and state.substate are what you evolve.

Summary

Types

t()

@type t() :: %EEVM.Interpreter.MachineState.Env{
  block: EEVM.BlockEnv.t(),
  config: EEVM.Config.t(),
  instruction_table: EEVM.Interpreter.InstructionTable.t(),
  tx: EEVM.TxEnv.t()
}

Functions

new(opts \\ [])

@spec new(keyword()) :: t()