Skip to content

ISSUE #5: M-of-N Guardian Social Recovery & Cross-Device Passkey Synchronization #5

Description

@amankoli09

Title

[Contract/Recovery] On-Chain M-of-N Weighted Guardian Recovery and Key Rotation for Seedless Enclaves

Description

A hardware-bound WebAuthn passkey in Apple Secure Enclave is permanently tied to a single device. If a user loses their iPhone or MacBook, they must be able to recover their Soroban Smart Wallet without a 12-word seed phrase. This issue implements an on-chain M-of-N Weighted Guardian Social Recovery Contract, enabling trusted devices, secondary security keys, or guardian signers to collectively rotate the owner's public key.

Domain / Component

  • Component: Soroban Smart Contracts / Recovery Architecture
  • Layer: Account Abstraction & Key Management

Complexity & Priority

  • Complexity: Hard (Multi-sig consensus, time-locks, and key rotation)
  • Priority: P1 (Essential Account Safety & Loss Prevention)

Estimated Timeframe

  • 2 – 3 Weeks (Contract implementation, time-lock state machine, and client UI flow)

Technical Requirements

  1. Extend CustomAccountInterface storage to track a list of Guardian structs (address/public key, weight, and status).
  2. Create initiate_recovery(new_owner_pubkey) which starts a 48-hour time-locked recovery challenge period.
  3. Create support_recovery(recovery_id) allowing registered guardians to cast weighted votes.
  4. Allow the active owner to veto and cancel any unauthorized recovery attempt during the 48-hour time-lock window.

Acceptance Criteria

  • Users can register up to 5 guardian public keys with configurable quorum weights.
  • Recovery cannot be executed until the quorum threshold (e.g., 3-of-5 weight) AND the 48-hour time-lock are satisfied.
  • Active owner can successfully call cancel_recovery() at any point before time-lock expiration to block an attack.
  • Upon successful recovery execution, future transactions signed by new_owner_pubkey succeed and old key signatures are rejected.

Dependencies & Prerequisites

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions