EVM Version Information
Last updated
Last updated
Copyright © Blockscout Limited 2023-2024
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 ( and ) 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 ).
Shanghai
12 Apr 2023
Smaller code size and gas savings due to the introduction of push0
(see ).
Cancun
13 Mar 2024
The block’s blob base fee ( and ) 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 ).
Opcode mcopy
is available in assembly (see ).
Opcodes tstore
and tload
are available in assembly (see ).