-
Notifications
You must be signed in to change notification settings - Fork 120
ARC-85: Revocable Decentralized Recovery (ReDeRec) #344
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,74 @@ | ||||||||||||
| --- | ||||||||||||
| arc: 85 | ||||||||||||
| title: Revocable Decentralized Recovery (ReDeRec) | ||||||||||||
| description: Revocable Decentralized Recovery protocol utilizing rekeying and multisigs instead of sharing mnemonic shards. | ||||||||||||
| author: Tasos Bitsios (@tasosbit) | ||||||||||||
| discussions-to: https://github.com/algorandfoundation/ARCs/issues/344 | ||||||||||||
| status: Draft | ||||||||||||
| type: Standards Track | ||||||||||||
| category: ARC | ||||||||||||
| subcategory: Wallet | ||||||||||||
| created: 2025-06-18 | ||||||||||||
| --- | ||||||||||||
|
|
||||||||||||
| ## Abstract | ||||||||||||
| This ARC outlines a new approach to Decentralized Recovery which enables revocability. Instead of sharing private key shards with custodians, an Algorand account can be rekeyed to a specially crafted multisig so that the owner account can self-sign, and the recovery custodians can combine in a multisig threshold fashion (2/3, 3/4, etc) to help recover the account. Self-signing is enabled by repeating the owner account's key in the subsigners field, in order to satisfy the threshold requirement as a standalone signer. Revoking custodians is as simple as rekeying to another authorizer account. | ||||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||
|
|
||||||||||||
| ## Motivation | ||||||||||||
| Sharing private key shards for decentralized recovery purposes is a concern that is worth addressing. This ARC improves upon the irrevocable nature of "classic" decentralized recovery by introducing an "active-state" method to achieve the same result without the potential for private key compromise if enough shards are compromised over time. | ||||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||
|
|
||||||||||||
| ## Specification | ||||||||||||
| The key words "**MUST**", "**MUST NOT**", "**REQUIRED**", "**SHALL**", "**SHALL NOT**", "**SHOULD**", "**SHOULD NOT**", "**RECOMMENDED**", "**MAY**", and "**OPTIONAL**" in this document are to be interpreted as described in <a href="https://www.ietf.org/rfc/rfc2119.txt">RFC-2119</a>. | ||||||||||||
|
|
||||||||||||
| An active decentralized recovery signer account is a multi-signature composed the owner account and the "custodian" accounts. | ||||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||
|
|
||||||||||||
| - The Owner Account (OA) MUST be able to sign for transactions without requiring signatures from any other party. | ||||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||
| - Custodian accounts (CAs) MUST be able to sign for transactions when enough signatures are presented to meet the recovery threshold. | ||||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||
| - The recovery threshold (T) is the number of CA signatures required to recover an account. | ||||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||
| - The OA is repeated in the multisig sub-signers group T times, in order to be able to self-sign. | ||||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||
|
|
||||||||||||
| Note: Algorand allows for a single-signature account to be rekeyed to a multisig wherein the single-sig is its own sub-signer, which enables users to use this pattern without requiring a new private key (and corresponding mnemonic to save.) | ||||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||
|
|
||||||||||||
| Example: Alice wants to add Bob, Eve and Steve as recovery custodians to her account. She wants any 2 of the 3 custodians to be able to help her recover her account. | ||||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||
|
|
||||||||||||
| Owner Account: `ALICE234..` | ||||||||||||
|
|
||||||||||||
| Custodians: | ||||||||||||
| - `BOB345..` | ||||||||||||
| - `EVE456..` | ||||||||||||
| - `STEVE567..` | ||||||||||||
|
|
||||||||||||
| Threshold: 2 | ||||||||||||
|
|
||||||||||||
| Multisig configuration: | ||||||||||||
|
|
||||||||||||
| ``` | ||||||||||||
| { | ||||||||||||
| version: 1, | ||||||||||||
| threshold: 2, | ||||||||||||
| addrs: [ | ||||||||||||
| "ALICE234..", | ||||||||||||
| "ALICE234..", | ||||||||||||
| "BOB345..", | ||||||||||||
| "EVE456..", | ||||||||||||
| "STEVE567..", | ||||||||||||
| ] | ||||||||||||
| } | ||||||||||||
| ``` | ||||||||||||
|
|
||||||||||||
| ## Backwards Compatibility | ||||||||||||
| This method requires a wallet that supports rekeying and multi-signature accounts. Beyond that on-chain compatibility should be 100%, as transaction signature schemes are transparent as far as Applications are concerned. Off-chain systems validating account ownership for "login" functionality must be able to support multi-sig accounts. | ||||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||
|
|
||||||||||||
| ## Test Cases | ||||||||||||
| TODO | ||||||||||||
|
|
||||||||||||
| ## Reference Implementation | ||||||||||||
| TODO | ||||||||||||
|
|
||||||||||||
| ## Security Considerations | ||||||||||||
| Note that when accounts are closed out (i.e. taken to a zero ALGO balance) their rekeying status reverts to the default, so users of active DeRec are RECOMMENDED to maintain a minimum balance requirement above the base account MBR (0.1 ALGO) as a safety precaution against accidental close-outs. | ||||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||
|
|
||||||||||||
| Availability of the custodian account private keys is not enforced in this standard. A periodic heartbeat mechanism could be built for CA subsigners to prove that their private keys are still available. | ||||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||
|
|
||||||||||||
| ## Copyright | ||||||||||||
| Copyright and related rights waived via <a href="https://creativecommons.org/publicdomain/zero/1.0/">CCO</a>. | ||||||||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.