33// SPDX-License-Identifier: Apache-2.0
44
55#include " precompiles.hpp"
6- #include " precompiles_cache.hpp"
76#include " precompiles_internal.hpp"
7+ #include " precompiles_stubs.hpp"
88#include < evmone_precompiles/blake2b.hpp>
99#include < evmone_precompiles/bn254.hpp>
1010#include < evmone_precompiles/ripemd160.hpp>
1111#include < evmone_precompiles/secp256k1.hpp>
1212#include < intx/intx.hpp>
13+ #include < array>
1314#include < bit>
1415#include < cassert>
15- #include < iostream>
1616#include < limits>
17- #include < unordered_map>
1817
1918#ifdef EVMONE_PRECOMPILES_SILKPRE
2019#include " precompiles_silkpre.hpp"
2120#endif
2221
2322namespace evmone ::state
2423{
24+ using evmc::bytes;
25+ using evmc::bytes_view;
2526using namespace evmc ::literals;
2627
2728namespace
@@ -292,26 +293,19 @@ struct PrecompileTraits
292293 decltype (identity_execute)* execute = nullptr ;
293294};
294295
295- template <PrecompileId Id>
296- ExecutionResult dummy_execute (const uint8_t *, size_t , uint8_t *, size_t ) noexcept
297- {
298- std::cerr << " Precompile " << static_cast <int >(Id) << " not implemented!\n " ;
299- return ExecutionResult{EVMC_INTERNAL_ERROR, 0 };
300- }
301-
302296inline constexpr auto traits = []() noexcept {
303297 std::array<PrecompileTraits, NumPrecompiles> tbl{{
304298 {}, // undefined for 0
305299 {ecrecover_analyze, ecrecover_execute},
306- {sha256_analyze, dummy_execute<PrecompileId::sha256> },
300+ {sha256_analyze, sha256_stub },
307301 {ripemd160_analyze, ripemd160_execute},
308302 {identity_analyze, identity_execute},
309- {expmod_analyze, dummy_execute<PrecompileId::expmod> },
303+ {expmod_analyze, expmod_stub },
310304 {ecadd_analyze, ecadd_execute},
311305 {ecmul_analyze, ecmul_execute},
312- {ecpairing_analyze, dummy_execute<PrecompileId::ecpairing> },
306+ {ecpairing_analyze, ecpairing_stub },
313307 {blake2bf_analyze, blake2bf_execute},
314- {point_evaluation_analyze, dummy_execute<PrecompileId::point_evaluation> },
308+ {point_evaluation_analyze, point_evaluation_stub },
315309 }};
316310#ifdef EVMONE_PRECOMPILES_SILKPRE
317311 // tbl[static_cast<size_t>(PrecompileId::ecrecover)].execute = silkpre_ecrecover_execute;
@@ -363,10 +357,6 @@ evmc::Result call_precompile(evmc_revision rev, const evmc_message& msg) noexcep
363357 if (gas_left < 0 )
364358 return evmc::Result{EVMC_OUT_OF_GAS};
365359
366- static Cache cache;
367- if (auto r = cache.find (static_cast <PrecompileId>(id), input, gas_left); r.has_value ())
368- return std::move (*r);
369-
370360 // Buffer for the precompile's output.
371361 // Big enough to handle all "expmod" tests, but in case does not match the size requirement
372362 // from analysis, the result will likely be incorrect.
@@ -380,8 +370,6 @@ evmc::Result call_precompile(evmc_revision rev, const evmc_message& msg) noexcep
380370 evmc::Result result{
381371 status_code, status_code == EVMC_SUCCESS ? gas_left : 0 , 0 , output_buf, output_size};
382372
383- cache.insert (static_cast <PrecompileId>(id), input, result);
384-
385373 return result;
386374}
387375} // namespace evmone::state
0 commit comments