diff --git a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/requests/DepositRequestProcessor.java b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/requests/DepositRequestProcessor.java
index 816fb4bcabb..10a69494594 100644
--- a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/requests/DepositRequestProcessor.java
+++ b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/requests/DepositRequestProcessor.java
@@ -19,6 +19,8 @@
import org.hyperledger.besu.ethereum.core.Request;
import org.hyperledger.besu.ethereum.core.TransactionReceipt;
import org.hyperledger.besu.ethereum.core.encoding.DepositLogDecoder;
+import org.hyperledger.besu.evm.log.Log;
+import org.hyperledger.besu.evm.log.LogTopic;
import java.util.List;
import java.util.Optional;
@@ -27,6 +29,10 @@
import org.apache.tuweni.bytes.Bytes;
public class DepositRequestProcessor implements RequestProcessor {
+ private static final LogTopic DEPOSIT_EVENT_TOPIC =
+ LogTopic.wrap(
+ Bytes.fromHexString(
+ "0x649bbc62d0e31342afea4e5cd82d4049e7e1ee912fc0889aa790803be39038c5"));
private final Optional
depositContractAddress;
@@ -49,8 +55,14 @@ Optional getDepositRequestData(final List transaction
address ->
transactionReceipts.stream()
.flatMap(receipt -> receipt.getLogsList().stream())
- .filter(log -> address.equals(log.getLogger()))
+ .filter(log -> isDepositEvent(address, log))
.map(DepositLogDecoder::decodeFromLog)
.reduce(Bytes::concatenate));
}
+
+ private boolean isDepositEvent(final Address depositContractAddress, final Log log) {
+ return depositContractAddress.equals(log.getLogger())
+ && !log.getTopics().isEmpty()
+ && log.getTopics().getFirst().equals(DEPOSIT_EVENT_TOPIC);
+ }
}
diff --git a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/core/encoding/DepositLogDecoderTest.java b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/core/encoding/DepositLogDecoderTest.java
index 14166553e62..d24d6ff3c3f 100644
--- a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/core/encoding/DepositLogDecoderTest.java
+++ b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/core/encoding/DepositLogDecoderTest.java
@@ -47,4 +47,25 @@ void shouldDecodeDepositFromLog() {
assertThat(requestData).isEqualTo(expectedDepositRequestData);
}
+
+ @Test
+ void shouldDecodeSepoliaDepositFromLog() {
+ final Address logger = Address.fromHexString("0x00000000219ab540356cbb839cbe05303d7705fa");
+ final List topics =
+ List.of(
+ LogTopic.fromHexString(
+ "0x649bbc62d0e31342afea4e5cd82d4049e7e1ee912fc0889aa790803be39038c5"));
+ final Bytes data =
+ Bytes.fromHexString(
+ "0x00000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000800000c3d5d53aa01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000");
+
+ final Log log = new Log(logger, data, topics);
+ final Bytes requestData = DepositLogDecoder.decodeFromLog(log);
+
+ final Bytes expectedDepositRequestData =
+ Bytes.fromHexString(
+ "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000c3d5d53aa010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000");
+
+ assertThat(requestData).isEqualTo(expectedDepositRequestData);
+ }
}