EOF Feature List

Tier I - Breaking Changes
Tier II - Address Feature Regressions
Tire III - Address cost/size regressions
Tier IV - New features

EOF Evolution Model

Compatible Changes

Compatible changes don't require a new EOF version.

  • Add new functionality or features without removing or altering other functionality or features
  • May make previously invalid code or invalid EOF containers valid
  • Does not change semantics of previosly deployed code
  • Minor changes in gas schedule

Incompatible Changes

Incompatible changes should require a new EOF version. Excetions are rare and should be existential in nature, such as the changes discussed for SELFDESTRUCT.

  • Removes or alters existing functionality
  • Changes that do not leave an equivalent feature set
  • May make previously valid code and valid EOF containers invalid
  • Changes semantics of previously deployed code
  • Significant alteations to the structure of the gas schedule

Tier I - Breaking Changes

Container Format

Includes Container Validation, and CALLF, RETF, and JUMPF to use code sections

Code Validation

replaces prior jumpdest analysis step
includes stack height validation

Remove Static Jumps

JUMP, JUMPI removal

Code Observability

EXTCODESIZE, EXTCODEHASH, and EXTCODECOPY removal,
CREATE and CREATE2 removal

Gas Observability

Remove GAS, remove old CALL series operations

Type II - Address Feature Regression

RJUMP Operations

Add RJUMP operations, addresses loss of JUMP/JUMPI

DATALOAD Operations

Add DATA* series operations, addresses loss of EXTCODE series operations

CALL2 Operations

Add CALL2, STATICALL2, DELEGATECALL2 operations, addresses removal of all CALL operations

  • No gas
  • No memory return buffers

CREATE3 and CREATE4 operations

Adds CREATE3 (create from EOF carried code) and CREATE4 (create referencing EOF container outside the EVM) to address removal of CREATE and CREATE2

EXTDATACOPY

Copy data from other smart contracts, for NFTs and such.

Type III - Address Cost/Size Regression

Add CALLFI and JUMPFI

Addresses size regression and cost regression for out-lining code sections

RETURNDATALOAD

Load from return data directly to stack

Type VI - New Features

SWAPMN

Swap two items on the stack not at the top

EVMMAX

EVM Modular Arithemetic Extension - arbitrary precision integer arithemetic

Select a repo