safe_eth.safe.account_abstraction package

Submodules

safe_eth.safe.account_abstraction.safe_operation module

class safe_eth.safe.account_abstraction.safe_operation.SafeOperation(safe: ChecksumAddress, nonce: int, init_code_hash: bytes, call_data_hash: 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_hash: bytes, valid_after: int, valid_until: int, entry_point: ChecksumAddress, signature: bytes, TYPE_HASH: bytes = HexBytes('0x84aa190356f56b8c87825f54884392a9907c23ee0f8e1ea86336b763faf021bd'), DOMAIN_SEPARATOR_TYPE_HASH: bytes = HexBytes('0x47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a79469218'), safe_operation_hash: bytes | None = None)

Bases: object

Safe EIP4337 operation More info: https://github.com/safe-global/safe-modules/blob/main/modules/4337/contracts/Safe4337Module.sol#L55

TypeHash calculation:

keccak256(
    "SafeOp(address safe,uint256 nonce,bytes initCode,bytes callData,uint256 callGasLimit,uint256 verificationGasLimit,uint256 preVerificationGas,uint256 maxFeePerGas,uint256 maxPriorityFeePerGas,bytes paymasterAndData,uint48 validAfter,uint48 validUntil,address entryPoint)"
)

Domain separator calculation:

DOMAIN_SEPARATOR_TYPE_HASH: bytes = HexBytes('0x47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a79469218')
TYPE_HASH: bytes = HexBytes('0x84aa190356f56b8c87825f54884392a9907c23ee0f8e1ea86336b763faf021bd')
call_data_hash: bytes
call_gas_limit: int
entry_point: ChecksumAddress
classmethod from_user_operation(user_operation: UserOperation | UserOperationV07)
get_domain_separator(chain_id: int, module_address: ChecksumAddress) bytes
get_safe_operation_hash(chain_id: int, module_address: ChecksumAddress) bytes
init_code_hash: bytes
max_fee_per_gas: int
max_priority_fee_per_gas: int
nonce: int
paymaster_and_data_hash: bytes
pre_verification_gas: int
safe: ChecksumAddress
safe_operation_hash: bytes | None = None
property safe_operation_hash_preimage: bytes
signature: bytes
valid_after: int
property valid_after_as_datetime: datetime | None
valid_until: int
property valid_until_as_datetime: datetime | None
verification_gas_limit: int

Module contents

Safe Account abstraction utils