15#include <evmc/evmc.hpp>
16#include <evmc/hex.hpp>
19 #define interface __STRUCT__
24#include <spdlog/spdlog.h>
25#include <absl/container/flat_hash_map.h>
40 std::vector<std::uint8_t>
code;
41 absl::flat_hash_map<evmc::bytes32, evmc::bytes32>
storage;
55 spdlog::error(std::format(
"add_account: Account {} already exists",
addr));
66 spdlog::error(std::format(
"set_balance : Account {} does not exist",
addr));
71 acc.balance = evmc::uint256be{};
72 for (std::size_t
i = 0;
i <
sizeof(
x); ++
i)
73 acc.balance.bytes[
sizeof(
acc.balance) - 1 -
i] =
static_cast<uint8_t>(
x >> (8 *
i));
78 evmc::bytes32
get_storage(
const evmc::address&
addr,
const evmc::bytes32&
key)
const noexcept override;
82 evmc::uint256be
get_balance(
const evmc::address&
addr)
const noexcept override;
139 return H::combine(std::move(
h),
addr.bytes);
Definition evm_storage.hpp:35
evmc_address derive_create2_address(const evmc::address &sender, const evmc::bytes32 &salt, const std::vector< std::uint8_t > &code)
Definition evm_storage.cpp:328
std::size_t get_code_size(const evmc::address &addr) const noexcept override
Definition evm_storage.cpp:48
std::string to_key(const evmc::address &addr) const
Definition evm_storage.cpp:309
bool add_account(const evmc::address &addr)
Definition evm_storage.hpp:51
void set_transient_storage(const evmc::address &addr, const evmc::bytes32 &key, const evmc::bytes32 &value) noexcept override
Definition evm_storage.cpp:300
bool account_exists(const evmc::address &addr) const noexcept override
Definition evm_storage.cpp:11
evmc::bytes32 get_code_hash(const evmc::address &addr) const noexcept override
Definition evm_storage.cpp:54
std::size_t copy_code(const evmc::address &addr, std::size_t code_offset, std::uint8_t *buffer_data, std::size_t buffer_size) const noexcept override
Definition evm_storage.cpp:68
evmc_storage_status set_storage(const evmc::address &address, const evmc::bytes32 &key, const evmc::bytes32 &value) noexcept override
Definition evm_storage.cpp:30
evmc_tx_context get_tx_context() const noexcept override
Definition evm_storage.cpp:189
evmc::bytes32 get_storage(const evmc::address &addr, const evmc::bytes32 &key) const noexcept override
Definition evm_storage.cpp:18
evmc::Result call(const evmc_message &msg) noexcept override
Definition evm_storage.cpp:98
evmc_access_status access_account(const evmc::address &addr) noexcept override
Definition evm_storage.cpp:277
void emit_log(const evmc::address &addr, const std::uint8_t *data, size_t data_size, const evmc::bytes32 topics[], size_t num_topics) noexcept override
Definition evm_storage.cpp:248
void set_balance(const evmc::address &addr, std::uint64_t x) noexcept
Definition evm_storage.hpp:62
evmc_address derive_create_address(const evmc::address &sender, std::uint64_t nonce)
Definition evm_storage.cpp:314
evmc::bytes32 get_transient_storage(const evmc::address &addr, const evmc::bytes32 &key) const noexcept override
Definition evm_storage.cpp:291
bool selfdestruct(const evmc::address &addr, const evmc::address &beneficiary) noexcept override
Definition evm_storage.cpp:85
evmc::bytes32 get_block_hash(int64_t block_number) const noexcept override
Definition evm_storage.cpp:227
evmc::uint256be get_balance(const evmc::address &addr) const noexcept override
Definition evm_storage.cpp:37
void deploy_contract(evmc::address addr, std::vector< std::uint8_t > &&code, evmc_uint256be value, evmc::address creator, std::uint64_t nonce)
Definition evm_storage.cpp:349
evmc_access_status access_storage(const evmc::address &addr, const evmc::bytes32 &key) noexcept override
Definition evm_storage.cpp:284
Definition decentralised_art.hpp:30
H AbslHashValue(H h, const evmc::address &addr)
Definition evm_storage.hpp:137
Definition evm_storage.hpp:38
uint64_t timestamp
Definition evm_storage.hpp:46
absl::flat_hash_map< evmc::bytes32, evmc::bytes32 > storage
Definition evm_storage.hpp:41
uint64_t nonce
Definition evm_storage.hpp:45
std::vector< std::uint8_t > code
Definition evm_storage.hpp:40
evmc::address creator
Definition evm_storage.hpp:44
evmc_uint256be balance
Definition evm_storage.hpp:39