EVM Version Information

You are asked to provide the EVM version the contract uses during the verification process. If the bytecode does not match the version, we try to verify using the latest EVM version.

For more information, see the Solidity docs on specifying the EVM version when compiling a contract. Note that backward compatibility is not guaranteed between each version.

Name

Date

Mainnet Block #

Relevant changes / opcode specs

EIP details

Homestead

14 Mar 2016

Oldest version

Tangerine Whistle

18 Oct 2016

Gas cost to access other accounts increased, impacts gas estimation and optimization. All gas sent by default for external calls, previously a certain amount had to be retained.

Spurious Dragon

22 Nov 2016

Gas cost for the exp opcode increased, impacts gas estimation and optimization.

Byzantium

16 Oct 2017

Opcodes returndatacopy, returndatasize and staticcall available in assembly. staticcall opcode used when calling non-library view or pure functions, which prevents the functions from modifying state at the EVM level, this even applies to invalid type conversions. Ability to access dynamic data returned from function calls. revert opcode introduced, revert() will not waste gas.

Constantinople / Petersburg

28 Feb 2019

Opcodes create2, extcodehash, shl, shr and sar are available in assembly. Bitwise shifting operators use shifting opcodes (shl,shr,sar), requiring less gas.

Istanbul

08 Dec 2019

Opcodes chainid and selfbalance are available in assembly.

Berlin

14 Apr 2021

Gas costs for SLOAD, *CALL, BALANCE, EXT* and SELFDESTRUCT increased. The compiler assumes cold gas costs for such operations. This is relevant for gas estimation and the optimizer.

London

05 Aug 2021

The block’s base fee (EIP-3198 and EIP-1559) can be accessed via the global block.basefee or basefee() in inline assembly.

Arrow Glacier*

09 Aug 2021

Delays the difficulty bomb until June 2022.

Gray Glacier*

30 June 2022

Delays the difficulty bomb by an additional 3 months to September 2022.

Paris (The Merge)

15 Sep 2022

Introduces prevrandao() and block.prevrandao, and changes the semantics of the now deprecated block.difficulty, disallowing difficulty() in inline assembly (see EIP-4399).

Shanghai

12 Apr 2023

Smaller code size and gas savings due to the introduction of push0 (see EIP-3855).

Cancun

13 Mar 2024

The block’s blob base fee (EIP-7516 and EIP-4844) can be accessed via the global block.blobbasefee or blobbasefee() in inline assembly. Introduces blobhash() in inline assembly and a corresponding global function to retrieve versioned hashes of blobs associated with the transaction (see EIP-4844). Opcode mcopy is available in assembly (see EIP-5656). Opcodes tstore and tload are available in assembly (see EIP-1153).

Last updated

Logo

Copyright © Blockscout Limited 2023-2024