Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
LABS
Guides

Setting Up a Seedless Recovery System for Your Platform

A technical guide for developers implementing seed phrase recovery alternatives using social recovery, multi-party computation (MPC), and ERC-4337 account abstraction.
Chainscore © 2026
introduction
DEVELOPER TUTORIAL

Setting Up a Seedless Recovery System for Your Platform

A practical guide to implementing a non-custodial, user-friendly recovery mechanism that eliminates seed phrases.

Seedless recovery systems replace the traditional, user-hostile model of 12- or 24-word mnemonic phrases with more intuitive and secure methods. Instead of a single point of failure, these systems distribute trust across multiple social recovery guardians, hardware security modules (HSMs), or biometric authenticators. For developers, this means integrating with protocols like Ethereum's ERC-4337 Account Abstraction or Safe's Multi-Sig Modules to create programmable recovery logic. The core principle is to decouple ownership from a single secret key, enabling users to regain access through a pre-defined, on-chain process.

The first step is designing your recovery policy. This involves deciding on the recovery mechanism (e.g., social, time-lock, multi-factor), the threshold for approval (like 3-of-5 guardians), and any security delays to prevent malicious takeovers. For an ERC-4337 smart account, you would write a recovery module in Solidity. A basic social recovery setup might store a list of guardian addresses and require a majority to sign a recovery transaction, which would then execute a replaceSigner function on the user's account contract. Always audit this logic thoroughly, as it controls ultimate ownership.

Next, integrate the recovery flow into your application's frontend. Use SDKs from providers like Safe, ZeroDev, or Biconomy to simplify the process. Your UI should guide users through selecting guardians (which can be other wallets, trusted contacts, or institutions), setting up alternative factors like email or device-based authentication, and confirming the security settings. Crucially, the user must understand that their guardians never hold their funds; they only hold the power to initiate a recovery vote, which is executed transparently on-chain.

Testing is critical. Deploy your smart accounts and recovery modules to a testnet like Sepolia or Polygon Amoy. Simulate various scenarios: a user losing their device, a malicious guardian trying to act alone, and the full recovery process with the correct threshold. Use tools like Tenderly or OpenZeppelin Defender to monitor and simulate transactions. Ensure your system handles edge cases, such as a guardian's key being compromised, by allowing users to proactively replace guardians without triggering a full recovery.

Finally, consider the user experience post-recovery. After a successful recovery, the system should automatically invalidate the old signing keys and may optionally require the user to set up a fresh recovery configuration. Document the process clearly for your users, emphasizing the non-custodial nature of the setup. By implementing seedless recovery, you significantly reduce support burden related to lost keys while providing a security model that is both more robust and more accessible than traditional seed phrases.

prerequisites
FOUNDATION

Prerequisites and Setup

Before implementing a seedless recovery system, you must establish the core infrastructure and understand the underlying cryptographic primitives.

A seedless recovery system replaces the traditional 12-24 word mnemonic with a more user-friendly mechanism, typically based on social recovery or multi-party computation (MPC). The primary prerequisite is a smart contract wallet infrastructure, such as an ERC-4337 Account Abstraction wallet or a custom proxy contract. This wallet must have logic to change its ownership or signing keys based on a predefined recovery process, not a single private key. You will also need a backend service (a relayer or bundler) to submit user operations to the blockchain, as the recovering user may not have gas tokens.

The cryptographic foundation is critical. For social recovery, you will work with threshold signatures using libraries like @openzeppelin/contracts for on-chain verification and libsodium or tss-lib off-chain. A common pattern involves a user's guardians—trusted devices or contacts—who collectively hold shards of a secret. Setting up a development environment requires Node.js (v18+), a package manager like yarn or npm, and access to a blockchain node via a provider such as Alchemy or Infura for testing on Sepolia or Goerli.

Begin by initializing a new project and installing essential packages. For an ERC-4337-based setup, you need the @account-abstraction SDK, ethers.js v6, and a smart contract development framework like Hardhat or Foundry. Your first step is to deploy the core contracts: a Wallet Factory, a EntryPoint contract (the standard for ERC-4337), and your custom Recovery Module. Use the following Foundry command to create a new project: forge init seedless-recovery && cd seedless-recovery. Then, add the necessary libraries with forge install OpenZeppelin/openzeppelin-contracts.

Next, design your recovery logic. Will it be a time-locked recovery initiated by the user, or an emergency recovery triggered by guardians after a vote? This determines your contract's functions. A basic social recovery contract might store a list of guardian addresses and a threshold (e.g., 3 out of 5). The initiateRecovery function would start a time delay, during which guardians submit approvals via approveRecovery. After the threshold and delay are met, executeRecovery calls the wallet contract to update its signing key. Always implement safeguards against malicious guardians with a security period allowing the original owner to cancel.

Finally, integrate the off-chain components. Your backend must securely manage guardian signatures, which should never be stored in plaintext. Use a secure enclave or hardware security module (HSM) in production. For development, simulate guardians with a simple Node.js script that signs recovery requests. Test the entire flow on a testnet: create a wallet, simulate losing access, have guardians sign, and execute a recovery to a new key. Monitor gas costs, as recovery transactions can be expensive, and consider implementing gas sponsorship via paymasters. Thorough testing with tools like Hardhat's network forking is essential before mainnet deployment.

key-concepts-text
CORE TECHNICAL CONCEPTS

Setting Up a Seedless Recovery System for Your Platform

Implementing a non-custodial, user-friendly recovery mechanism is essential for mainstream Web3 adoption. This guide explains how to architect a seedless recovery system using Account Abstraction (ERC-4337) and social recovery protocols.

A seedless recovery system eliminates the need for users to manage a 12 or 24-word seed phrase. Instead, recovery is managed through a smart contract wallet (like an ERC-4337 Account Abstraction wallet) that designates trusted entities or methods to authorize a wallet reset. The core components are a factory contract to deploy smart accounts, a verification module for recovery logic, and guardians—which can be other EOAs, smart contracts, or even centralized services that the user trusts to sign a recovery request. This shifts security from a single point of failure (the seed phrase) to a configurable, multi-factor model.

The most common implementation uses social recovery, where a user selects 3-5 guardians (e.g., friends, hardware wallets, or a dedicated app). To initiate recovery, a threshold (e.g., 3 out of 5) of these guardians must sign a recovery transaction, which is submitted to the wallet's EntryPoint contract via a Bundler. The wallet's verification logic validates the guardian signatures and, if the threshold is met, executes a function to replace the account's signing key. Popular libraries like Safe{Core} AA SDK and Stackup's UserOp.js provide the tools to build this flow, handling the complexities of UserOperation creation and gas sponsorship.

For developers, the setup involves several key steps. First, integrate an AA provider like Stackup, Alchemy, or Biconomy to handle bundler and paymaster services. Your frontend should use the provider's SDK to create a UserOperation for wallet deployment and recovery actions. The smart contract for the wallet (e.g., a modified Safe{Core} Protocol module or a simple SimpleAccount from account-abstraction tutorials) must include a function like executeRecovery(address newOwner) that is callable only after verifying guardian signatures. You'll also need an off-chain service or UI for guardians to easily review and sign recovery requests, which can be facilitated through EIP-712 typed structured data signatures for security and UX.

Critical considerations include guardian management (allowing users to add/remove guardians with a time-delayed security period), gas abstraction (using a paymaster to allow guardians to sign without holding gas tokens), and fallback options. A robust system often includes a time-locked self-recovery as a last resort, where the user can initiate recovery alone, but it only executes after a 1-2 week delay, giving guardians time to cancel it if it's fraudulent. Always audit recovery logic thoroughly, as it becomes a central attack vector. Testing on a testnet (like Sepolia) with tools from the Pimlico or Stackup platforms is essential before mainnet deployment.

architecture-options
IMPLEMENTATION PATTERNS

Recovery Architecture Options

Seedless recovery systems use smart accounts and social authentication to eliminate seed phrase risk. Choose an architecture based on your platform's security model and user experience requirements.

06

Choosing Your Architecture

Select a model based on your application's primary constraints:

  • Maximum Security & Institutional Use: Opt for MPC Wallets or Smart Account Social Recovery.
  • Best User Experience for Mass Adoption: Implement Web2 OAuth & Cloud Backup or Hardware-Secured Enclaves.
  • Censorship Resistance & Decentralization: Prioritize Social Recovery Smart Accounts or DID-based systems.

Key Evaluation Metrics:

  • Time-to-recovery
  • Trust assumptions (number of guardians, reliance on providers)
  • Gas costs for on-chain operations
  • Compliance requirements (KYC integration)
SECURITY ARCHITECTURES

Recovery Method Comparison

A technical comparison of different approaches to seedless account recovery for Web3 platforms.

Feature / MetricSocial Recovery (Smart Contract Wallets)Multi-Party Computation (MPC)Biometric Cloud Wallets

Custodial Model

Non-custodial

Non-custodial

Semi-custodial

Private Key Storage

Fragmented across guardians

Distributed shards

Encrypted in secure enclave

Recovery Initiation

On-chain transaction

Off-chain protocol

Centralized service call

Recovery Time

~24-72 hours

< 5 minutes

< 1 minute

Gas Fees for Recovery

Requires On-Chain Identity

Typical Guardian/Share Count

3-5

2-of-3 or 3-of-5

Example Protocols

Safe, Argent

Fireblocks, Web3Auth

Privy, Magic

implement-social-recovery
GUIDE

Implementing Social Recovery with Safe{Wallet}

This guide explains how to integrate a seedless, social recovery system using Safe{Wallet}'s modular account abstraction stack, moving beyond traditional seed phrase vulnerabilities.

Traditional crypto wallets rely on a single, user-managed seed phrase as the ultimate recovery mechanism. This creates significant risks: loss, theft, or mismanagement of this phrase results in permanent fund loss. Social recovery offers a paradigm shift by distributing recovery authority among a set of trusted entities—friends, devices, or institutions—eliminating the single point of failure. Safe{Wallet}, through its Safe{Core} Account Abstraction SDK and Safe{Core} Protocol, provides the modular infrastructure to build this functionality directly into your application or smart account.

The core of social recovery in Safe is the Safe{Core} Protocol, a permissionless system for managing smart account modules. To implement recovery, you deploy a custom Social Recovery Module as a smart contract. This module defines the recovery logic: the set of guardians (EOA addresses or other smart accounts), the threshold of confirmations needed (e.g., 3 out of 5), and a security delay period. The module is then enabled on the user's Safe account via the enableModule function, making it a trusted manager capable of executing a recovery transaction.

A recovery flow is triggered when a user loses access. A designated recovery request is created, specifying the new signing authority. Guardians are notified off-chain (via your app) and submit their approvals as on-chain signatures to the module. Once the threshold is met and any delay has passed, anyone can execute the recovery, which calls the Safe's execTransactionFromModule to swap the account's owner. This process ensures no single guardian can act alone and introduces a time-lock for security.

For developers, the Safe{Core} Account Abstraction SDK (AA-SDK) simplifies integration. You can use its SafeSmartAccount class alongside a SocialRecoveryModule plugin. The setup involves initializing the module with guardian addresses and a threshold, then connecting it to the user's account. The Safe{Core} AA-SDK documentation provides code examples for creating recovery proposals and streaming guardian signatures.

Key security considerations include guardian selection (use diverse, reliable addresses), setting appropriate thresholds (balance security with practicality), and utilizing the security delay. This delay allows the original owner to cancel a malicious recovery attempt. For production use, you can audit or use community-vetted modules from the Safe{Core} Module Registry.

Implementing social recovery transforms user onboarding and security. It enables seedless onboarding where a user starts with email/social login, with recovery set up later. This significantly improves UX while providing superior custody. By leveraging Safe's battle-tested protocol, you integrate a robust, non-custodial recovery system that makes self-custody accessible and secure for mainstream users.

implement-erc4337-recovery
TUTORIAL

Building Recovery with ERC-4337 Account Abstraction

A guide to implementing a secure, non-custodial social recovery system using ERC-4337 smart accounts, eliminating the need for seed phrases.

Traditional private key management presents a critical point of failure for users. ERC-4337 Account Abstraction introduces a new paradigm where user accounts are smart contracts, enabling programmable logic for security and recovery. This allows developers to build seedless recovery systems where a user's access is managed by a set of configurable guardians—trusted devices, friends, or services—instead of a single, vulnerable seed phrase. The core concept is to separate the signer from the account, making recovery a programmable feature.

The recovery flow is managed by a custom Account Recovery Module. This is a smart contract attached to the user's ERC-4337 smart account (like a Safe{Core} Account or SimpleAccount). The module defines rules: for example, requiring 3 out of 5 designated guardians to sign a recovery transaction. Guardians are added during account setup and can be EOAs, other smart accounts, or even decentralized identifier (DID) providers. The module's executeRecovery function validates the guardian signatures and then calls the core account's execute function to replace the account's signer with a new public key.

Here is a simplified example of a recovery module's core logic using Solidity and the ERC-4337 interfaces. It shows the structure for initiating and executing a recovery request.

solidity
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.23;
import "@account-abstraction/contracts/interfaces/IAccount.sol";

contract SocialRecoveryModule {
    address public account;
    mapping(address => bool) public guardians;
    uint256 public threshold;
    RecoveryRequest public pendingRequest;

    struct RecoveryRequest {
        address newOwner;
        uint256 approvals;
        mapping(address => bool) hasApproved;
    }

    function initiateRecovery(address _newOwner) external {
        require(guardians[msg.sender], "Not a guardian");
        pendingRequest.newOwner = _newOwner;
        _approveRecovery(msg.sender);
    }

    function _approveRecovery(address guardian) internal {
        if (!pendingRequest.hasApproved[guardian]) {
            pendingRequest.hasApproved[guardian] = true;
            pendingRequest.approvals++;
        }
        if (pendingRequest.approvals >= threshold) {
            IAccount(account).execute(
                account,
                0,
                abi.encodeWithSignature("setOwner(address)", pendingRequest.newOwner)
            );
        }
    }
}

To integrate this into your platform, you must deploy the module and attach it to user accounts during onboarding. Use a Bundler service (like Stackup, Alchemy, or Biconomy) to submit the recovery UserOperation to the EntryPoint contract. The bundler handles gas payment, allowing guardians to approve recovery without holding ETH. For a production system, add features like time delays, multiple recovery methods, and guardian rotation. Security audits are essential, as the module has privileged control over the user's account.

Key considerations for a robust system include guardian management (easy addition/removal), recovery latency (implementing a security delay to counter malicious takeovers), and fallback mechanisms. Services like Web3Auth or Lit Protocol can act as institutional guardians. By implementing ERC-4337 social recovery, you significantly improve user security and onboarding UX, moving away from the fragility of seed phrases. This is a foundational step for mainstream adoption of decentralized applications.

implement-mpc-recovery
TUTORIAL

Implementing MPC-Based Recovery

A guide to setting up a seedless, non-custodial recovery system using Multi-Party Computation (MPC) to eliminate single points of failure for user keys.

Traditional private key management presents a critical security and usability challenge: users must safeguard a single, permanent seed phrase. Lose it, and funds are irrecoverable. Multi-Party Computation (MPC) offers a solution by distributing the signing power of a private key across multiple parties. No single party ever holds the complete key. For recovery, we can design a system where a user's key share is split between the user's device, a cloud backup (encrypted), and one or more trusted guardians. A predefined threshold (e.g., 2-of-3) of these shares is required to reconstruct the signing capability, enabling recovery without a seed phrase.

The core of an MPC-based recovery system is a threshold signature scheme (TSS), such as GG20 or FROST. Libraries like ZenGo's tss-lib or Bitcoin-S's secp256k1-tss implement these protocols. The setup involves a Key Generation ceremony where all participants (user device, backup service, guardians) collaboratively generate their secret shares and compute a common public address without any entity learning the full private key. This is a one-time, interactive process that establishes the distributed key.

For the recovery flow, the system must orchestrate a secure share refresh. If a user loses their device (and its share), they authenticate via their remaining factors (e.g., cloud backup password, guardian approvals) to initiate a recovery session. The participating parties (e.g., cloud service and one guardian) run a resharing protocol. This protocol generates a new secret share for the user's fresh device, rendering the lost share useless. Critically, the full private key is never assembled, and the public address remains unchanged. This process is more secure than sharding and transmitting the original key material.

Implementing this requires a robust backend service to coordinate protocols. Below is a simplified Node.js example using a hypothetical MPC service SDK to initiate key generation. The service would handle the network communication between parties.

javascript
import { MPCService } from 'mpc-recovery-sdk';

const mpcService = new MPCService({
  threshold: 2,
  partyCount: 3 // User, Encrypted Backup, Guardian
});

// Each participant calls joinCeremony with a session ID
const keyGenSession = await mpcService.joinKeyGenCeremony('session-uuid-123');

// After all parties join, the ceremony runs interactively
const keyResult = await keyGenSession.generateKey();
// keyResult contains: publicKey, userShare (to store securely locally)

Security considerations are paramount. The cloud backup share must be encrypted client-side with a user password before storage. Guardian selection can be automated (using other user devices) or social (trusted contacts). The coordination server must be designed to be non-custodial; it facilitates communication but cannot derive shares or block recovery. Audit the MPC library and use hardened, isolated environments (HSMs, secure enclaves) for share storage on servers. Regularly scheduled proactive share rotation can further mitigate long-term key compromise risks.

Adopting MPC-based recovery significantly improves user experience and security over seed phrases. It enables familiar recovery flows (like password resets) for blockchain accounts while maintaining non-custodial principles. Platforms like Web3Auth and Safe (formerly Gnosis Safe) use MPC variants for wallet management. By implementing this, you reduce support burden related to lost keys and position your platform at the forefront of usable crypto security. Start by prototyping with established libraries and rigorously testing the recovery ceremony under various failure scenarios.

RECOVERY METHOD COMPARISON

Security and Trust Trade-offs

Comparing the security assumptions, user experience, and decentralization of different seed phrase recovery methods.

Feature / MetricTraditional Seed PhraseMulti-Party Computation (MPC)Social Recovery (Smart Contract)

User Responsibility

High (User stores secret)

Medium (Key shards distributed)

Low (Guardians manage recovery)

Single Point of Failure

Requires On-Chain Transaction

Recovery Gas Cost

$0

$0

$10 - $50+

Trust Assumption

User only

Service provider(s)

Pre-selected guardians

Theft Resistance (Phishing)

Loss Resistance (Device Failure)

Time to Recover

< 1 min

1-5 min

1-48 hours

ux-flows-best-practices
USER EXPERIENCE FLOWS AND BEST PRACTICES

Setting Up a Seedless Recovery System for Your Platform

This guide explains how to implement a secure and user-friendly seedless recovery system using modern Web3 Account Abstraction standards, moving beyond traditional seed phrase management.

A seedless recovery system eliminates the need for users to manually back up and secure a 12 or 24-word mnemonic phrase, which is a major point of failure and friction in Web3 onboarding. Instead, it leverages social recovery or multi-party computation (MPC) to secure a user's account. The core principle involves distributing cryptographic key shards among trusted entities—such as the user's other devices, friends (guardians), or a secure cloud service—so that no single party holds the complete private key. This approach is standardized under ERC-4337 (Account Abstraction), which enables smart contract wallets to define custom logic for recovery and transaction validation.

The user experience flow begins at account creation. Instead of presenting a seed phrase, your platform should prompt the user to set up their recovery method. A common pattern is to ask them to designate guardians—typically 3 to 5 trusted email addresses or wallet addresses. The system then uses an MPC protocol or a smart contract to create a wallet where a threshold of guardians (e.g., 2 out of 3) is required to recover access. It's critical to educate users during this step: explain the role of guardians, the recovery threshold, and that they should only choose trustworthy, reliable contacts. Provide clear, non-technical warnings about the risks of poor guardian selection.

For the technical implementation, you can integrate with SDKs from providers like Safe (formerly Gnosis Safe) for smart contract-based social recovery, Web3Auth for MPC and social logins, or Privy for embedded wallets. Here's a conceptual code snippet for initiating a social recovery setup using a hypothetical SDK:

javascript
// Example: Initiating guardian setup with a smart account
const socialRecoveryModule = await SocialRecoveryModule.setup({
  guardians: [
    '0xGuardian1Address',
    'user@email.com', // Resolved to a guardian module
    '0xGuardian3Address'
  ],
  threshold: 2, // Need 2/3 approvals to recover
  recoveryPeriod: 24 * 3600 // 24-hour security delay
});

await smartAccount.enableModule(socialRecoveryModule);

The recovery process itself must include a mandatory security delay period (e.g., 24-48 hours) after a recovery request is initiated. This delay, enforced by the smart contract, gives the legitimate user time to cancel the request if it was fraudulent, and should be communicated clearly in the UI.

Best practices for the recovery UX are crucial. The interface should provide a straightforward path to initiate recovery, often via a "Forgot account?" link. Once initiated, show a clear countdown for the security delay and list the guardians who have approved the request. Notifications (email, in-app) should be sent to all guardians and the user. Never allow instant recovery, as it negates the security benefit. Furthermore, consider offering a fallback method, such as a time-locked hardware wallet signature or a commercial custodian like Coinbase's dapp wallet recovery, for users who lose access to all their guardians.

Finally, continuous user education is part of the product. Your platform should offer a dedicated security settings page where users can view their guardian list, change guardians (which also triggers a security delay), and simulate the recovery process to understand it. Transparency about the smart contract address holding the recovery logic and links to block explorers build trust. By implementing seedless recovery, you significantly lower the barrier to entry while providing a security model that is often more robust than a poorly stored seed phrase, aligning with the next generation of user-centric Web3 experiences.

SEEDLESS RECOVERY

Frequently Asked Questions

Common questions and troubleshooting for developers implementing seedless recovery systems using MPC, social recovery, and smart contract wallets.

Seedless recovery is a user authentication model that eliminates the need for users to manage a single, vulnerable 12-24 word mnemonic seed phrase. Instead, it uses cryptographic techniques to distribute key management.

Key differences:

  • Traditional Seed Phrase: A single secret stored by the user. Loss or theft results in permanent, irreversible loss of funds.
  • Seedless Recovery: Uses Multi-Party Computation (MPC) or social recovery vaults to split key material. No single party holds the complete private key.

Common implementations:

  • MPC Wallets (e.g., ZenGo, Fireblocks): The private key is split between the user's device and a server/guardian network. Transactions require signatures from multiple parties.
  • Smart Account Social Recovery (e.g., Safe, Argent): A smart contract wallet is controlled by a primary key. A separate set of "guardians" (other wallets or trusted entities) can collectively recover access if the primary key is lost.

The core advantage is shifting risk from a single point of failure (the seed phrase) to a recoverable, programmable system.