Skip to content

Commit cd78b65

Browse files
authored
core: match on deposit contract log topic (#31317)
This resolves a situation on the Sepolia testnet, which has a different deposit contract. The contract on that network emits two kinds of logs, instead of only deposit events like the deposit contract on mainnet. So we need to skip events with mismatched topics.
1 parent 658c607 commit cd78b65

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

core/state_processor.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -305,12 +305,14 @@ func processRequestsSystemCall(requests *[][]byte, evm *vm.EVM, requestType byte
305305
*requests = append(*requests, requestsData)
306306
}
307307

308+
var depositTopic = common.HexToHash("0x649bbc62d0e31342afea4e5cd82d4049e7e1ee912fc0889aa790803be39038c5")
309+
308310
// ParseDepositLogs extracts the EIP-6110 deposit values from logs emitted by
309311
// BeaconDepositContract.
310312
func ParseDepositLogs(requests *[][]byte, logs []*types.Log, config *params.ChainConfig) error {
311313
deposits := make([]byte, 1) // note: first byte is 0x00 (== deposit request type)
312314
for _, log := range logs {
313-
if log.Address == config.DepositContractAddress {
315+
if log.Address == config.DepositContractAddress && len(log.Topics) > 0 && log.Topics[0] == depositTopic {
314316
request, err := types.DepositLogToRequest(log.Data)
315317
if err != nil {
316318
return fmt.Errorf("unable to parse deposit data: %v", err)

0 commit comments

Comments
 (0)