From bcbfe77cd903f962f9eabd51917fc891b6602bfc Mon Sep 17 00:00:00 2001 From: cmgCr Date: Thu, 22 Jan 2026 21:05:47 +0800 Subject: [PATCH] fix(evm): correct LOG opcode topics order and byte loading --- src/action/evm_bytecode_visitor.h | 2 +- src/compiler/evm_frontend/evm_imported.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/action/evm_bytecode_visitor.h b/src/action/evm_bytecode_visitor.h index 454ea6f60..5e15a1989 100644 --- a/src/action/evm_bytecode_visitor.h +++ b/src/action/evm_bytecode_visitor.h @@ -852,7 +852,7 @@ template class EVMByteCodeVisitor { } else { std::array Topics; for (size_t i = 0; i < NumTopics; ++i) { - Topics[NumTopics - 1 - i] = pop(); + Topics[i] = pop(); } if constexpr (NumTopics == 1) { diff --git a/src/compiler/evm_frontend/evm_imported.cpp b/src/compiler/evm_frontend/evm_imported.cpp index 2b5c6dd4f..13987feee 100644 --- a/src/compiler/evm_frontend/evm_imported.cpp +++ b/src/compiler/evm_frontend/evm_imported.cpp @@ -686,7 +686,7 @@ static void evmEmitLogGeneric(zen::runtime::EVMInstance *Instance, for (size_t i = 0; i < MaxTopics; ++i) { if (TopicsData[i]) { - std::memcpy(Topics[ActualNumTopics].bytes, TopicsData[i], 32); + Topics[ActualNumTopics] = loadBytes32FromLE(TopicsData[i]); ActualNumTopics++; } }