From 99b1ecbfdd21f310cdb20d0218e416d9a1c70e68 Mon Sep 17 00:00:00 2001 From: Sixtysixter <20945591+Sixtysixter@users.noreply.github.com> Date: Tue, 13 Feb 2024 14:56:57 +0100 Subject: [PATCH] rpcdaemon: use of OverrideState in CallExecutor::executes_all_bundles (#1823) --- silkworm/rpc/core/call_many.cpp | 3 +-- silkworm/rpc/core/evm_executor.hpp | 12 +++++++----- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/silkworm/rpc/core/call_many.cpp b/silkworm/rpc/core/call_many.cpp index 28b7529485..b04eace6c8 100644 --- a/silkworm/rpc/core/call_many.cpp +++ b/silkworm/rpc/core/call_many.cpp @@ -50,8 +50,7 @@ CallManyResult CallExecutor::executes_all_bundles(const silkworm::ChainConfig& c const auto& block = block_with_hash->block; const auto& block_transactions = block.transactions; auto state = transaction_.create_state(this_executor, tx_database, storage, block.header.number); - state::OverrideState override_state{*state, accounts_overrides}; - EVMExecutor executor{config, workers_, state}; + EVMExecutor executor{config, workers_, std::make_shared(*state, accounts_overrides)}; std::uint64_t timeout = opt_timeout.value_or(5000); const auto start_time = clock_time::now(); diff --git a/silkworm/rpc/core/evm_executor.hpp b/silkworm/rpc/core/evm_executor.hpp index 92ab58075b..74b908c63d 100644 --- a/silkworm/rpc/core/evm_executor.hpp +++ b/silkworm/rpc/core/evm_executor.hpp @@ -18,6 +18,7 @@ #include #include +#include #include #include @@ -76,7 +77,8 @@ using Tracers = std::vector>; class EVMExecutor { public: - using StateFactory = std::function(boost::asio::any_io_executor&, BlockNum, const ChainStorage& chain_storage)>; + using StateFactory = std::function(boost::asio::any_io_executor&, BlockNum, const ChainStorage&)>; + static Task call( const silkworm::ChainConfig& config, const ChainStorage& storage, @@ -89,12 +91,12 @@ class EVMExecutor { bool gas_bailout = false); static std::string get_error_message(int64_t error_code, const Bytes& error_data, bool full_error = true); - EVMExecutor(const silkworm::ChainConfig& config, boost::asio::thread_pool& workers, std::shared_ptr& state) + EVMExecutor(const silkworm::ChainConfig& config, boost::asio::thread_pool& workers, std::shared_ptr state) : config_(config), workers_{workers}, - state_{state}, + state_{std::move(state)}, ibs_state_{*state_}, - rule_set_(protocol::rule_set_factory(config)) { + rule_set_{protocol::rule_set_factory(config)} { SILKWORM_ASSERT(rule_set_); if (!has_service(workers_)) { make_service(workers_); @@ -123,7 +125,7 @@ class EVMExecutor { const silkworm::ChainConfig& config_; boost::asio::thread_pool& workers_; - std::shared_ptr state_; + std::shared_ptr state_; IntraBlockState ibs_state_; protocol::RuleSetPtr rule_set_; };