File tree Expand file tree Collapse file tree 2 files changed +34
-1
lines changed
main/java/org/hyperledger/besu/ethereum/mainnet/requests
test/java/org/hyperledger/besu/ethereum/core/encoding Expand file tree Collapse file tree 2 files changed +34
-1
lines changed Original file line number Diff line number Diff line change 1919import org .hyperledger .besu .ethereum .core .Request ;
2020import org .hyperledger .besu .ethereum .core .TransactionReceipt ;
2121import org .hyperledger .besu .ethereum .core .encoding .DepositLogDecoder ;
22+ import org .hyperledger .besu .evm .log .Log ;
23+ import org .hyperledger .besu .evm .log .LogTopic ;
2224
2325import java .util .List ;
2426import java .util .Optional ;
2729import org .apache .tuweni .bytes .Bytes ;
2830
2931public class DepositRequestProcessor implements RequestProcessor {
32+ private static final LogTopic DEPOSIT_EVENT_TOPIC =
33+ LogTopic .wrap (
34+ Bytes .fromHexString (
35+ "0x649bbc62d0e31342afea4e5cd82d4049e7e1ee912fc0889aa790803be39038c5" ));
3036
3137 private final Optional <Address > depositContractAddress ;
3238
@@ -49,8 +55,14 @@ Optional<Bytes> getDepositRequestData(final List<TransactionReceipt> transaction
4955 address ->
5056 transactionReceipts .stream ()
5157 .flatMap (receipt -> receipt .getLogsList ().stream ())
52- .filter (log -> address . equals ( log . getLogger () ))
58+ .filter (log -> isDepositEvent ( address , log ))
5359 .map (DepositLogDecoder ::decodeFromLog )
5460 .reduce (Bytes ::concatenate ));
5561 }
62+
63+ private boolean isDepositEvent (final Address depositContractAddress , final Log log ) {
64+ return depositContractAddress .equals (log .getLogger ())
65+ && !log .getTopics ().isEmpty ()
66+ && log .getTopics ().getFirst ().equals (DEPOSIT_EVENT_TOPIC );
67+ }
5668}
Original file line number Diff line number Diff line change @@ -47,4 +47,25 @@ void shouldDecodeDepositFromLog() {
4747
4848 assertThat (requestData ).isEqualTo (expectedDepositRequestData );
4949 }
50+
51+ @ Test
52+ void shouldDecodeSepoliaDepositFromLog () {
53+ final Address logger = Address .fromHexString ("0x00000000219ab540356cbb839cbe05303d7705fa" );
54+ final List <LogTopic > topics =
55+ List .of (
56+ LogTopic .fromHexString (
57+ "0x649bbc62d0e31342afea4e5cd82d4049e7e1ee912fc0889aa790803be39038c5" ));
58+ final Bytes data =
59+ Bytes .fromHexString (
60+ "0x00000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000800000c3d5d53aa01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000" );
61+
62+ final Log log = new Log (logger , data , topics );
63+ final Bytes requestData = DepositLogDecoder .decodeFromLog (log );
64+
65+ final Bytes expectedDepositRequestData =
66+ Bytes .fromHexString (
67+ "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000c3d5d53aa010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000" );
68+
69+ assertThat (requestData ).isEqualTo (expectedDepositRequestData );
70+ }
5071}
You can’t perform that action at this time.
0 commit comments