diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 66f4212f7..e5e269d2e 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -10,11 +10,14 @@ if(NOT CMAKE_CXX_STANDARD) endif() set(CMAKE_DEBUG_POSTFIX "") +hunter_add_package(ethash) +find_package(ethash CONFIG REQUIRED) + add_subdirectory(example_vm) add_subdirectory(example_precompiles_vm) add_library(evmc-example-host STATIC example_host.cpp) -target_link_libraries(evmc-example-host PRIVATE evmc) +target_link_libraries(evmc-example-host PRIVATE evmc ethash::keccak) add_executable(evmc-example-static example.c) target_link_libraries(evmc-example-static PRIVATE evmc-example-host evmc::example-vm-static evmc) diff --git a/examples/example_host.cpp b/examples/example_host.cpp index ff1c98727..f1961106b 100644 --- a/examples/example_host.cpp +++ b/examples/example_host.cpp @@ -8,6 +8,7 @@ #include "example_host.h" +#include #include #include @@ -26,14 +27,7 @@ struct account virtual evmc::bytes32 code_hash() { - // Extremely dumb "hash" function. - evmc::bytes32 ret{}; - for (std::vector::size_type i = 0; i != code.size(); i++) - { - auto v = code[i]; - ret.bytes[v % sizeof(ret.bytes)] ^= v; - } - return ret; + return evmc_bytes32{*ethash::keccak256(code.data(), code.size()).bytes}; } };