This EIP specifies validation rules for some important safety properties, including
- valid jump destinations,
- valid instructions,
- no stack underflows, and
- no stack overflows without recursion.
Valid contracts will not halt with an exception unless they either run out of gas or overflow stack during a recursive subroutine call.
Code is validated at contract creation time – not runtime – by the provided algorithm. This is a one-pass algorithm, linear in the size of the bytecode, so as not to be a DoS surface.