# `EEVM.Interpreter.Instructions.Environment.Simple`
[🔗](https://github.com/mw2000/eevm/blob/v0.1.0/lib/eevm/interpreter/instructions/environment/simple.ex#L1)

Simple environment opcodes that read a single value from the execution context.

These opcodes push one value onto the stack with no dynamic gas cost beyond
the static base. They read from the transaction, block, or contract context.

Includes: ADDRESS, ORIGIN, CALLER, CALLVALUE, CALLDATASIZE, CODESIZE,
GASPRICE, RETURNDATASIZE, COINBASE, TIMESTAMP, NUMBER, PREVRANDAO,
GASLIMIT, CHAINID, BASEFEE, BLOBBASEFEE, BLOCKHASH, and BLOBHASH. (GAS reads the
interpreter loop's gas register, so `EEVM.Interpreter` implements it.)

# `execute`

```elixir
@spec execute(non_neg_integer(), EEVM.Interpreter.MachineState.t()) ::
  {:ok, EEVM.Interpreter.MachineState.t()}
  | {:error, atom(), EEVM.Interpreter.MachineState.t()}
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
