mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Adds support for the EVM version "Paris".
Deprecates `block.difficulty` and disallow `difficulty()` in inline assembly for EVM versions >= paris. The change is due to the renaming introduced by EIP-4399 (see: https://eips.ethereum.org/EIPS/eip-4399). Introduces `block.prevrandao` in Solidity and `prevrandao()` in inline assembly for EVM versions >= paris. Co-authored-by: Alex Beregszaszi <alex@rtfs.hu> Co-authored-by: Daniel <daniel@ekpyron.org> Co-authored-by: matheusaaguiar <95899911+matheusaaguiar@users.noreply.github.com> Co-authored-by: Nikola Matić <nikola.matic@ethereum.org>
This commit is contained in:
co-authored by
Alex Beregszaszi
Daniel
matheusaaguiar
Nikola Matić
parent
d70d79af4a
commit
ef6ff2f055
@@ -98,7 +98,7 @@ u256 EVMInstructionInterpreter::eval(
|
||||
using namespace solidity::evmasm;
|
||||
using evmasm::Instruction;
|
||||
|
||||
auto info = instructionInfo(_instruction);
|
||||
auto info = instructionInfo(_instruction, m_evmVersion);
|
||||
yulAssert(static_cast<size_t>(info.args) == _arguments.size(), "");
|
||||
|
||||
auto const& arg = _arguments;
|
||||
@@ -268,8 +268,8 @@ u256 EVMInstructionInterpreter::eval(
|
||||
return m_state.timestamp;
|
||||
case Instruction::NUMBER:
|
||||
return m_state.blockNumber;
|
||||
case Instruction::DIFFICULTY:
|
||||
return m_state.difficulty;
|
||||
case Instruction::PREVRANDAO:
|
||||
return (m_evmVersion < langutil::EVMVersion::paris()) ? m_state.difficulty : m_state.prevrandao;
|
||||
case Instruction::GASLIMIT:
|
||||
return m_state.gaslimit;
|
||||
// --------------- memory / storage / logs ---------------
|
||||
@@ -543,7 +543,7 @@ void EVMInstructionInterpreter::logTrace(
|
||||
)
|
||||
{
|
||||
logTrace(
|
||||
evmasm::instructionInfo(_instruction).name,
|
||||
evmasm::instructionInfo(_instruction, m_evmVersion).name,
|
||||
SemanticInformation::memory(_instruction) == SemanticInformation::Effect::Write,
|
||||
_arguments,
|
||||
_data
|
||||
|
||||
Reference in New Issue
Block a user