From d9a9db7e72acf736d72b33f0e6410ec07c6f4a9f Mon Sep 17 00:00:00 2001 From: Bartosz Zawistowski <bartosz.zawistowski@erigon.tech> Date: Tue, 18 Mar 2025 15:43:55 +0100 Subject: [PATCH 1/2] Post testnet fixes --- silkworm/core/types/eip_7685_requests.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/silkworm/core/types/eip_7685_requests.cpp b/silkworm/core/types/eip_7685_requests.cpp index 10430261ed..511b14be7a 100644 --- a/silkworm/core/types/eip_7685_requests.cpp +++ b/silkworm/core/types/eip_7685_requests.cpp @@ -55,8 +55,11 @@ Bytes extract_deposit(const Bytes& data) { } void FlatRequests::extract_deposits_from_logs(const std::vector<Log>& logs) { + // See EIP-6110: Supply validator deposits on chain + static constexpr evmc::bytes32 kDepositEventSignatureHash = 0x649bbc62d0e31342afea4e5cd82d4049e7e1ee912fc0889aa790803be39038c5_bytes32; for (const auto& log : logs) { - if (log.address == protocol::kDepositContractAddress) { + const auto is_deposit_event = std::size(log.topics) > 0 && log.topics[0] == kDepositEventSignatureHash; + if (log.address == protocol::kDepositContractAddress && is_deposit_event) { auto bytes = extract_deposit(log.data); requests_[magic_enum::enum_integer(FlatRequestType::kDepositRequest)] += bytes; } From 2717b2e9ea79be750b3be0540568387f1ab2a1b1 Mon Sep 17 00:00:00 2001 From: Bartosz Zawistowski <bartosz.zawistowski@erigon.tech> Date: Tue, 18 Mar 2025 16:35:24 +0100 Subject: [PATCH 2/2] Fixing test --- silkworm/core/types/eip_7685_requests_test.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/silkworm/core/types/eip_7685_requests_test.cpp b/silkworm/core/types/eip_7685_requests_test.cpp index c7393b3f9e..956123fcba 100644 --- a/silkworm/core/types/eip_7685_requests_test.cpp +++ b/silkworm/core/types/eip_7685_requests_test.cpp @@ -38,7 +38,8 @@ TEST_CASE("EIP-7585 tests") { "0000000000000000000000000000000000000000000000000000000000") .value(); - const std::vector logs = {Log{.address = protocol::kDepositContractAddress, .topics = {}, .data = encoded_event}}; + // Topics is a single-element vector containing hash of deposit event signature + const std::vector logs = {Log{.address = protocol::kDepositContractAddress, .topics = {0x649bbc62d0e31342afea4e5cd82d4049e7e1ee912fc0889aa790803be39038c5_bytes32}, .data = encoded_event}}; FlatRequests requests; requests.extract_deposits_from_logs(logs);