Skip to main content

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) {}

Detailed Documentation