EVMHost: Support warm coinbase

This commit is contained in:
Alex Beregszaszi 2023-04-15 13:17:33 +02:00
parent f0c0df2d8c
commit 4264b5ae07

View File

@ -351,14 +351,19 @@ evmc::Result EVMHost::call(evmc_message const& _message) noexcept
transfer(sender, destination, value); transfer(sender, destination, value);
} }
// Populate the access access list. // Populate the access access list (enabled since Berlin).
// Note, this will also properly touch the created address. // Note, this will also properly touch the created address.
// TODO: support a user supplied access list too // TODO: support a user supplied access list too
if (m_evmRevision >= EVMC_BERLIN) if (m_evmRevision >= EVMC_BERLIN)
{ {
access_account(message.sender); access_account(message.sender);
access_account(message.recipient); access_account(message.recipient);
// EIP-3651 rule
if (m_evmRevision >= EVMC_SHANGHAI)
access_account(tx_context.block_coinbase);
} }
evmc::Result result = m_vm.execute(*this, m_evmRevision, message, code.data(), code.size()); evmc::Result result = m_vm.execute(*this, m_evmRevision, message, code.data(), code.size());
if (message.kind == EVMC_CREATE || message.kind == EVMC_CREATE2) if (message.kind == EVMC_CREATE || message.kind == EVMC_CREATE2)