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);