Validator Modules
IModule
This base interface defines the common methods and properties that all modules should implement. It allows for installation, uninstallation, and type checking of modules.
Interface Breakdown:
interface IModule {
error AlreadyInitialized(address smartAccount);
error NotInitialized(address smartAccount);
function onInstall(bytes calldata data) external;
function onUninstall(bytes calldata data) external;
function isModuleType(uint256 moduleTypeId) external view returns (bool);
function isInitialized(address smartAccount) external view returns (bool);
}
Module Types Overview
Each module type in the AXR wallet system is specialized for a particular function. These include validators, executors, hooks, and fallback modules, which are built upon the base IModule
interface.
Validator Modules
Overview
Validator modules are responsible for validating user operations within the wallet. These operations are crucial for verifying transactions and ensuring that all actions are authorized before being executed.
- Module Type ID:
MODULE_TYPE_VALIDATOR
- Interface: Implements
IValidator
.
Interface
interface IValidator is IModule {
error InvalidTargetAddress(address target);
function validateUserOp(
PackedUserOperation calldata userOp,
bytes32 userOpHash
) external returns (uint256);
function isValidSignatureWithSender(
address sender,
bytes32 hash,
bytes calldata data
) external view returns (bytes4);
}
Sample Validator Modules
- MultiSig Validator: Requires multiple signatures from different authorized addresses before a transaction can proceed.
- Threshold Validator: Allows transactions only if the value being transferred exceeds a specific threshold.
Installation and Uninstallation
All modules follow a similar installation and uninstallation process. When a module is installed or uninstalled, the corresponding onInstall
or onUninstall
functions are called with any necessary initialization or cleanup data.
Module Type Verification
Modules implement the isModuleType
function to verify their type (Validator, Executor, Hook, Fallback), as specified by their moduleTypeId
.