Available Now

Smart Wallets

ERC-4337 account abstraction wallets

Next-generation smart contract wallets with account abstraction. Social recovery, session keys, batch transactions, and gasless experiences out of the box.

Smart Contract Wallets

Upgradeable wallets with programmable logic and security.

Social Recovery

Recover accounts using trusted guardians, not seed phrases.

Session Keys

Temporary permissions for apps without repeated signing.

Multi-sig Support

Require multiple approvals for high-value transactions.

Back to Web3 Overview

Get Your API Key

Start building in under 5 minutes

99.999%
Uptime
<50ms
Latency
100+
Chains

No credit card required. Free tier includes 300M compute units/month.

Trusted by developers building:

DeFiNFTsPaymentsGamingAI Agents

Key Capabilities

Everything you need, nothing you don't.

Smart Contract Wallets

Upgradeable wallets with programmable logic and security.

Social Recovery

Recover accounts using trusted guardians, not seed phrases.

Session Keys

Temporary permissions for apps without repeated signing.

Multi-sig Support

Require multiple approvals for high-value transactions.

Batch Transactions

Execute multiple operations in a single transaction.

Multi-chain

Same wallet address across all EVM chains.

Custom Modules

Extend functionality with modular security plugins.

Time-locked Actions

Schedule transactions and set spending limits.

Transaction History

Complete audit trail of all wallet activity.

Simple to Integrate

Get started with just a few lines of code. SDKs for every language.

SmartAccount.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

import "@account-abstraction/contracts/core/BaseAccount.sol";
import "@hanzo/wallet/ISessionKeyManager.sol";
import "@hanzo/wallet/ISocialRecovery.sol";

contract HanzoSmartAccount is BaseAccount, ISocialRecovery {
    address public owner;
    ISessionKeyManager public sessionManager;

    mapping(address => bool) public guardians;
    uint256 public guardianCount;
    uint256 public recoveryThreshold;

    constructor(
        IEntryPoint _entryPoint,
        address _owner,
        address[] memory _guardians,
        uint256 _threshold
    ) BaseAccount(_entryPoint) {
        owner = _owner;
        recoveryThreshold = _threshold;
        for (uint i = 0; i < _guardians.length; i++) {
            guardians[_guardians[i]] = true;
            guardianCount++;
        }
    }

    // Validate UserOperation signature
    function _validateSignature(
        UserOperation calldata userOp,
        bytes32 userOpHash
    ) internal override returns (uint256 validationData) {
        // Check if signed by owner or valid session key
        bytes32 hash = keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", userOpHash));
        address signer = ECDSA.recover(hash, userOp.signature);

        if (signer == owner) return 0;
        if (sessionManager.isValidSession(signer, userOp.callData)) return 0;

        return SIG_VALIDATION_FAILED;
    }

    // Execute batch of calls
    function executeBatch(
        address[] calldata targets,
        uint256[] calldata values,
        bytes[] calldata datas
    ) external onlyEntryPoint {
        for (uint i = 0; i < targets.length; i++) {
            (bool success,) = targets[i].call{value: values[i]}(datas[i]);
            require(success, "Batch call failed");
        }
    }

    // Social recovery - guardians can recover to new owner
    function executeRecovery(address newOwner, bytes[] calldata signatures) external {
        require(signatures.length >= recoveryThreshold, "Not enough signatures");
        // Verify guardian signatures
        owner = newOwner;
    }
}

Built For

Consumer Wallets

User-friendly wallets without seed phrase management.

Gaming

Session keys for seamless in-game transactions.

Enterprise Treasury

Multi-sig controls for corporate crypto management.

DeFi Power Users

Batch operations and automated strategies.

Supported Chains

Ethereum
Polygon
Arbitrum
Optimism
Base
BNB Chain
Avalanche
zkSync
Linea

Start Building with Smart Wallets

Get your free API key and ship your first request in under 5 minutes. No credit card required.