From f3f3e0494f2b1afd1571ee663807d364ae97d89e Mon Sep 17 00:00:00 2001 From: Uxio Fuentefria Date: Fri, 8 Mar 2024 14:12:07 +0100 Subject: [PATCH] Add removed attributes by mistake - #795 changes were removed by mistake --- gnosis/eth/account_abstraction/user_operation.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/gnosis/eth/account_abstraction/user_operation.py b/gnosis/eth/account_abstraction/user_operation.py index 19b55511a..2a0c962dd 100644 --- a/gnosis/eth/account_abstraction/user_operation.py +++ b/gnosis/eth/account_abstraction/user_operation.py @@ -1,9 +1,11 @@ import dataclasses +from functools import cached_property from typing import Any, Dict, List, Optional, TypedDict, Union from eth_abi import encode as abi_encode from eth_typing import ChecksumAddress, HexStr from hexbytes import HexBytes +from web3 import Web3 from gnosis.eth.utils import fast_keccak @@ -68,6 +70,16 @@ def from_bundler_response( def __str__(self): return f"User Operation sender={self.sender} nonce={self.nonce} hash={self.user_operation_hash.hex()}" + @cached_property + def paymaster(self) -> Optional[ChecksumAddress]: + if self.paymaster_and_data and len(self.paymaster_and_data) >= 20: + return Web3.to_checksum_address(self.paymaster_and_data[:20]) + return None + + @cached_property + def paymaster_data(self) -> bytes: + return self.paymaster_and_data[:20] + def calculate_user_operation_hash(self, chain_id: int) -> bytes: hash_init_code = fast_keccak(self.init_code) hash_call_data = fast_keccak(self.call_data)