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

EVM cryptographic opcode: KECCAK256 (0x20).

# `execute`

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

Hashes a region of memory with Keccak-256 and pushes the result.

Pops `offset` and `length` from the stack, reads `length` bytes of memory
starting at `offset`, and pushes the 32-byte Keccak-256 hash as a uint256.
An empty input (length == 0) is valid and returns the hash of the empty string.

Gas: 30 (static) + 6 per word (dynamic) + memory expansion cost if applicable.

---

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