From 333751735e6aa4947f071adf769ef087ca65e19f Mon Sep 17 00:00:00 2001 From: rodiazet Date: Wed, 8 Feb 2023 23:01:04 +0100 Subject: [PATCH 1/4] Add state.reward processing --- test/t8n/t8n.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/test/t8n/t8n.cpp b/test/t8n/t8n.cpp index 4c1a0bfe17..b2e2f5079a 100644 --- a/test/t8n/t8n.cpp +++ b/test/t8n/t8n.cpp @@ -30,6 +30,7 @@ int main(int argc, const char* argv[]) fs::path output_dir; fs::path output_result_file; fs::path output_alloc_file; + intx::uint256 state_reward; for (int i = 0; i < argc; ++i) { @@ -54,6 +55,13 @@ int main(int argc, const char* argv[]) output_result_file = argv[i]; else if (arg == "--output.alloc" && ++i < argc) output_alloc_file = argv[i]; + else if (arg == "--state.reward" && ++i < argc) + { + if (std::string(argv[i]) == "-1") + state_reward = std::numeric_limits::max(); + else + state_reward = intx::from_string(argv[i]); + } } state::BlockInfo block; @@ -128,6 +136,16 @@ int main(int argc, const char* argv[]) } } + if (state_reward != 0 && state_reward != std::numeric_limits::max()) + state.get_or_insert(block.coinbase).balance += state_reward; + else if (state_reward == 0) + state.touch(block.coinbase); + else if (state_reward == std::numeric_limits::max()) + { + if (state.get_or_insert(block.coinbase).is_empty()) + state.get_accounts().erase(block.coinbase); + } + j_result["logsHash"] = hex0x(logs_hash(txs_logs)); j_result["stateRoot"] = hex0x(state::mpt_hash(state.get_accounts())); } From 4a0ecd6ad7719c2b00ad826e7444e762f74c2fef Mon Sep 17 00:00:00 2001 From: rodiazet Date: Thu, 9 Feb 2023 12:13:48 +0100 Subject: [PATCH 2/4] Fix after CR --- test/t8n/t8n.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/test/t8n/t8n.cpp b/test/t8n/t8n.cpp index b2e2f5079a..38d0c4111c 100644 --- a/test/t8n/t8n.cpp +++ b/test/t8n/t8n.cpp @@ -30,7 +30,7 @@ int main(int argc, const char* argv[]) fs::path output_dir; fs::path output_result_file; fs::path output_alloc_file; - intx::uint256 state_reward; + std::optional block_reward; for (int i = 0; i < argc; ++i) { @@ -58,9 +58,9 @@ int main(int argc, const char* argv[]) else if (arg == "--state.reward" && ++i < argc) { if (std::string(argv[i]) == "-1") - state_reward = std::numeric_limits::max(); + block_reward = {}; else - state_reward = intx::from_string(argv[i]); + block_reward = intx::from_string(argv[i]); } } @@ -136,15 +136,15 @@ int main(int argc, const char* argv[]) } } - if (state_reward != 0 && state_reward != std::numeric_limits::max()) - state.get_or_insert(block.coinbase).balance += state_reward; - else if (state_reward == 0) - state.touch(block.coinbase); - else if (state_reward == std::numeric_limits::max()) + if (block_reward.has_value()) { - if (state.get_or_insert(block.coinbase).is_empty()) - state.get_accounts().erase(block.coinbase); + if (*block_reward == 0) + state.touch(block.coinbase); + else + state.get_or_insert(block.coinbase).balance += *block_reward; } + else if (rev <= EVMC_TANGERINE_WHISTLE) + state.get_accounts().erase(block.coinbase); j_result["logsHash"] = hex0x(logs_hash(txs_logs)); j_result["stateRoot"] = hex0x(state::mpt_hash(state.get_accounts())); From 2f8755616e2d4c8c26801cd8de6f6ab33f0bf174 Mon Sep 17 00:00:00 2001 From: rodiazet Date: Thu, 9 Feb 2023 15:34:51 +0100 Subject: [PATCH 3/4] Fix after CR --- test/t8n/t8n.cpp | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/test/t8n/t8n.cpp b/test/t8n/t8n.cpp index 38d0c4111c..a9caf7312b 100644 --- a/test/t8n/t8n.cpp +++ b/test/t8n/t8n.cpp @@ -57,7 +57,7 @@ int main(int argc, const char* argv[]) output_alloc_file = argv[i]; else if (arg == "--state.reward" && ++i < argc) { - if (std::string(argv[i]) == "-1") + if (std::string_view(argv[i]) == "-1") block_reward = {}; else block_reward = intx::from_string(argv[i]); @@ -137,13 +137,8 @@ int main(int argc, const char* argv[]) } if (block_reward.has_value()) - { - if (*block_reward == 0) - state.touch(block.coinbase); - else - state.get_or_insert(block.coinbase).balance += *block_reward; - } - else if (rev <= EVMC_TANGERINE_WHISTLE) + state.touch(block.coinbase).balance += *block_reward; + else if (rev <= EVMC_TANGERINE_WHISTLE) // This behaviour is required by retesteth state.get_accounts().erase(block.coinbase); j_result["logsHash"] = hex0x(logs_hash(txs_logs)); From 02de26a23f09b299840fa0ff9542be7ac3bfa790 Mon Sep 17 00:00:00 2001 From: rodiazet Date: Thu, 9 Feb 2023 22:44:26 +0100 Subject: [PATCH 4/4] Fix after CR --- test/t8n/t8n.cpp | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/test/t8n/t8n.cpp b/test/t8n/t8n.cpp index a9caf7312b..29c7d2f72b 100644 --- a/test/t8n/t8n.cpp +++ b/test/t8n/t8n.cpp @@ -16,6 +16,7 @@ namespace fs = std::filesystem; namespace json = nlohmann; using namespace evmone; using namespace evmone::test; +using namespace std::literals; static const auto NULL_HEXSTRING_256 = "0x" + std::string(512, '0'); static const auto NULL_HEXSTRING_32 = "0x" + std::string(64, '0'); @@ -55,13 +56,8 @@ int main(int argc, const char* argv[]) output_result_file = argv[i]; else if (arg == "--output.alloc" && ++i < argc) output_alloc_file = argv[i]; - else if (arg == "--state.reward" && ++i < argc) - { - if (std::string_view(argv[i]) == "-1") - block_reward = {}; - else - block_reward = intx::from_string(argv[i]); - } + else if (arg == "--state.reward" && ++i < argc && argv[i] != "-1"sv) + block_reward = intx::from_string(argv[i]); } state::BlockInfo block; @@ -138,8 +134,6 @@ int main(int argc, const char* argv[]) if (block_reward.has_value()) state.touch(block.coinbase).balance += *block_reward; - else if (rev <= EVMC_TANGERINE_WHISTLE) // This behaviour is required by retesteth - state.get_accounts().erase(block.coinbase); j_result["logsHash"] = hex0x(logs_hash(txs_logs)); j_result["stateRoot"] = hex0x(state::mpt_hash(state.get_accounts()));