From d47ec6f3e4bcd0fd7e6715b92817cff48e08989d Mon Sep 17 00:00:00 2001 From: Felipe Alvarado Date: Wed, 17 Jun 2026 11:32:42 +0200 Subject: [PATCH] fix: handle undecodable MultiSend data in event processing --- app/services/events.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/app/services/events.py b/app/services/events.py index fe674a5..f1edc43 100644 --- a/app/services/events.py +++ b/app/services/events.py @@ -2,6 +2,7 @@ import json import logging +from eth_abi.exceptions import DecodingError from eth_typing import ChecksumAddress, HexStr from hexbytes import HexBytes from safe_eth.eth.constants import NULL_ADDRESS @@ -28,10 +29,14 @@ def get_contracts_from_data(self, data: HexStr | None) -> set[ChecksumAddress]: """ if not data: return set() - return { - multisend_tx.to - for multisend_tx in MultiSend.from_transaction_data(HexBytes(data)) - } + try: + return { + multisend_tx.to + for multisend_tx in MultiSend.from_transaction_data(HexBytes(data)) + } + except (ValueError, DecodingError, ArithmeticError) as exc: + logger.warning("Cannot decode MultiSend from data %s: %s", data, exc) + return set() async def process_event(self, message: str) -> None: """