safe_eth.eth.account_abstraction package
Submodules
safe_eth.eth.account_abstraction.bundler_client module
- class safe_eth.eth.account_abstraction.bundler_client.BundlerClient(url: str, retry_count: int = 0)
Bases:
objectAccount Abstraction client for EIP4337 bundlers
- get_chain_id()
- get_user_operation_and_receipt(user_operation_hash: HexStr) Tuple[UserOperation | UserOperationV07, UserOperationReceipt] | None
Get UserOperation and UserOperationReceipt in the same request using a batch query. NOTE: Batch requests are not supported by Pimlico
- Parameters:
user_operation_hash
- Returns:
Tuple with
UserOperationandUserOperationReceipt, orNoneif not found- Raises:
- get_user_operation_by_hash(user_operation_hash: HexStr) UserOperation | UserOperationV07 | None
https://docs.alchemy.com/reference/eth-getuseroperationbyhash
- Parameters:
user_operation_hash
- Returns:
UserOperationorNoneif not found- Raises:
- get_user_operation_receipt(user_operation_hash: HexStr) UserOperationReceipt | None
https://docs.alchemy.com/reference/eth-getuseroperationreceipt
- Parameters:
user_operation_hash
- Returns:
UserOperationReceiptorNoneif not found- Raises:
- supported_entry_points() List[ChecksumAddress]
https://docs.alchemy.com/reference/eth-supportedentrypoints
- Returns:
List of supported entrypoints
- Raises:
safe_eth.eth.account_abstraction.constants module
safe_eth.eth.account_abstraction.exceptions module
- exception safe_eth.eth.account_abstraction.exceptions.BundlerClientConnectionException
Bases:
BundlerClientException,OSError
- exception safe_eth.eth.account_abstraction.exceptions.BundlerClientException
Bases:
ValueError
- exception safe_eth.eth.account_abstraction.exceptions.BundlerClientResponseException
Bases:
BundlerClientException
safe_eth.eth.account_abstraction.user_operation module
- class safe_eth.eth.account_abstraction.user_operation.UserOperation(user_operation_hash: bytes, sender: ChecksumAddress, nonce: int, init_code: bytes, call_data: bytes, call_gas_limit: int, verification_gas_limit: int, pre_verification_gas: int, max_fee_per_gas: int, max_priority_fee_per_gas: int, paymaster_and_data: bytes, signature: bytes, entry_point: ChecksumAddress, metadata: UserOperationMetadata | None = None)
Bases:
objectEIP4337 UserOperation for Entrypoint v0.6
- calculate_user_operation_hash(chain_id: int) bytes
- call_data: bytes
- call_gas_limit: int
- entry_point: ChecksumAddress
- classmethod from_bundler_response(user_operation_hash: HexStr | bytes, user_operation_response: Dict[str, Any]) UserOperation | UserOperationV07
- init_code: bytes
- max_fee_per_gas: int
- max_priority_fee_per_gas: int
- metadata: UserOperationMetadata | None = None
- nonce: int
- property paymaster: ChecksumAddress | None
- paymaster_and_data: bytes
- property paymaster_data: bytes | None
- pre_verification_gas: int
- sender: ChecksumAddress
- signature: bytes
- user_operation_hash: bytes
- verification_gas_limit: int
- class safe_eth.eth.account_abstraction.user_operation.UserOperationMetadata(transaction_hash: bytes, block_hash: bytes, block_number: int)
Bases:
object- block_hash: bytes
- block_number: int
- transaction_hash: bytes
- class safe_eth.eth.account_abstraction.user_operation.UserOperationV07(user_operation_hash: bytes, sender: ChecksumAddress, nonce: int, call_data: bytes, call_gas_limit: int, verification_gas_limit: int, pre_verification_gas: int, max_priority_fee_per_gas: int, max_fee_per_gas: int, signature: bytes, entry_point: ChecksumAddress, factory: ChecksumAddress | None = None, factory_data: bytes | None = None, paymaster_verification_gas_limit: int | None = None, paymaster_post_op_gas_limit: int | None = None, paymaster: bytes | None = None, paymaster_data: bytes | None = None, metadata: UserOperationMetadata | None = None)
Bases:
objectEIP4337 UserOperation for Entrypoint v0.7
- property account_gas_limits: bytes
:return:Account Gas Limits is a bytes32 in Solidity, first bytes16 verification_gas_limit and then call_gas_limit
- calculate_user_operation_hash(chain_id: int) bytes
- call_data: bytes
- call_gas_limit: int
- entry_point: ChecksumAddress
- factory: ChecksumAddress | None = None
- factory_data: bytes | None = None
- property gas_fees: bytes
- Returns:
Gas Fees is a bytes32 in Solidity, first bytes16 verification_gas_limit and then call_gas_limit
- property init_code: bytes
- Returns:
0.7 init_code bytes: factory address + factory_data.
- max_fee_per_gas: int
- max_priority_fee_per_gas: int
- metadata: UserOperationMetadata | None = None
- nonce: int
- paymaster: bytes | None = None
- property paymaster_and_data: bytes
- paymaster_data: bytes | None = None
- paymaster_post_op_gas_limit: int | None = None
- paymaster_verification_gas_limit: int | None = None
- pre_verification_gas: int
- sender: ChecksumAddress
- signature: bytes
- user_operation_hash: bytes
- verification_gas_limit: int
safe_eth.eth.account_abstraction.user_operation_receipt module
- class safe_eth.eth.account_abstraction.user_operation_receipt.UserOperationReceipt(user_operation_hash: bytes, entry_point: eth_typing.evm.ChecksumAddress, sender: eth_typing.evm.ChecksumAddress, nonce: int, paymaster: eth_typing.evm.ChecksumAddress | None, actual_gas_cost: int, actual_gas_used: int, success: bool, reason: str | None, logs: List[web3.types.LogReceipt])
Bases:
object- actual_gas_cost: int
- actual_gas_used: int
- entry_point: ChecksumAddress
- classmethod from_bundler_response(user_operation_receipt_response: Dict[str, Any]) UserOperationReceipt
- get_deployed_account() ChecksumAddress | None
- Returns:
Deployed account in case a new account was deployed
- get_deposit() int
- Returns:
Deposited value on the entrypoint for running the UserOperationReceipt
- get_module_address() ChecksumAddress | None
Use Safe’s ExecutionFromModuleSuccess event to get the 4337 module address
- Returns:
If using a
Safe, the4337 module addressused,Noneotherwise
- logs: List[LogReceipt]
- nonce: int
- paymaster: ChecksumAddress | None
- reason: str | None
- sender: ChecksumAddress
- success: bool
- user_operation_hash: bytes
Module contents
Account abstraction utils