Skip to content

[HARD][ACCOUNT RECOVERY] Add delayed multi-party recovery for lost embedded and linked wallets #142

Description

@Obiajulu-gif

Problem

Wallet loss, compromised devices, and inaccessible embedded-wallet sessions can strand a user from investments, repayments, or ownership records. A support-only account reset would create a dangerous unilateral takeover path.

Scope

  • Define recovery states: requested, challenged, cooling-off, approved, executed, cancelled, and disputed.
  • Require multiple independent factors such as the current session, verified contact channel, recovery key/guardian, and manual high-risk review.
  • Bind recovery to the exact old/new wallet, network, user, reason, nonce, and expiry.
  • Add a mandatory delay with notifications to every existing channel and a cancellation path from the old wallet.
  • Freeze only high-risk actions during recovery while preserving safe read-only access and required repayments.
  • Rebind Stellar ownership references through auditable migration records; never rewrite historical ownership.
  • Rate-limit attempts and detect repeated or correlated recovery abuse.

Acceptance criteria

  • No support agent or single factor can complete recovery alone.
  • Old-wallet proof can cancel a pending takeover before execution.
  • Historical transactions remain attributable to their original wallet.
  • Concurrent recovery attempts resolve deterministically.
  • Every transition is tamper-evident and redacts sensitive evidence.

Required tests

Lost device, compromised email, malicious support actor, old-key cancellation, simultaneous requests, expired approvals, partial provider outage, and audit redaction.

Non-goals

Do not store user private keys or seed phrases.

Metadata

Metadata

Labels

GrantFox OSSIssue tracked in GrantFox OSSMaybe RewardedIssue may be eligible for a GrantFox rewardOfficial Campaign | FWC26Campaign: Official Campaign | FWC26

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions