Axir Wallet Core
Overview
Axir Wallet Core is a comprehensive smart contract that implements various functionalities to manage account operations, module installations, and user operations validation. It is designed to be modular and extensible, integrating multiple modules to enhance its capabilities.
Key Functionalities
Initialization
initialize: Sets up the initial owner and installs specified modules.
function initialize(
address initialK1Owner,
address[] calldata modules,
uint256[] calldata moduleTypeIds,
bytes[] calldata initData
) external {}
Execution
execute: Executes a batch or single call based on the mode provided.executeFromExecutor: Executes operations from an executor module.
function execute(
ModeCode mode,
bytes calldata executionCalldata // onlyEntryPointOrSelf
) external payable withHook(address(this), executionCalldata) {}
function executeFromExecutor(
ModeCode mode,
bytes calldata executionCalldata
)
external
payable
withHook(address(this), executionCalldata)
returns (
// onlyExecutorModule
bytes[] memory returnData // TODO returnData is not used
)
{}
User Operation
executeUserOp: Executes user operations as per ERC-4337 specifications.validateUserOp: Validates user operations to ensure they are authorized and correctly signed.
function executeUserOp(
PackedUserOperation calldata userOp,
bytes32 userOpHash // onlyEntryPoint
) external payable {}
function validateUserOp(
PackedUserOperation calldata userOp,
bytes32 userOpHash,
uint256 missingAccountFunds
)
external
payable
virtual
returns (
// onlyEntryPoint
// payPrefund(missingAccountFunds)
uint256 validSignature
)
{}
Module Management
installModule: Installs a new module based on its type.uninstallModule: Uninstalls a module based on its type.
function installModule(
uint256 moduleTypeId,
address module,
bytes calldata initData // onlyEntryPointOrSelf
) external payable {}
function uninstallModule(
uint256 moduleTypeId,
address module,
bytes calldata deInitData // onlyEntryPointOrSelf
) external payable {}
Signature Validation
isValidSignature: Validates a smart account signature against a specified hash and data.
function isValidSignature(
bytes32 hash,
bytes calldata data
) external view virtual override returns (bytes4) {}