JoinSEEDS / seeds_light_wallet

http://www.joinseeds.earth/
MIT License
45 stars 23 forks source link

Guardian Recovery Flow and Chain Calls #349

Open n13 opened 3 years ago

n13 commented 3 years ago

1 - Open app - tap "I lost my key" small link somewhere

2 - On "I lost my key" - screen prompting user to enter their username

3 - Wallet creates new keypair and encodes the public key as firebase link - or just direct wallet link. It stores the private key.

4 - Screen prompts user to contact his guardians, and send each of them the recovery link via messenger or another messaging app 5 - App goes inot "recovery mode"- waiting for 3 signatures, displaying the link for copy/paste purposes.

Guardian 1

Guardian 2 - same thing

Guardian 3 - same thing plus the app notices that the signatures are complete, and fires off the multisig request to change the account key with 24h wait. Emergency message sent to original account

Original account still logged in

Chain Calls

n13 commented 3 years ago

@gguijarro-c-chwy @7flash @gguij004 @Rieki7 Please review

Let me know if this makes sense for the recovery flow, considering the following

Rieki7 commented 3 years ago

Ya, I think this makes a lot of sense. Loving the idea of a link to send to your guardians (initially I thought it would all happen in wallet - where they get a notification, but this seems cleaner and extra secure as they would have to remember and know who is their guardians to send it to (opposed to the app doing it).

I'm not entirely sure about the exploit potential since it is msig and 3/5 (or whatever) wouldn't they hvae to simultaneously exploit 3 in order to have an effect? I think this sounds pretty secure...

The attacks are interesting (since the msig is stored on-chain) but they woudn't know what their phone numbers are to send them a link...

I think we could get more sophisticated down the line - but honestly think this is pretty great. Since you can just do the account and it's up to you to send the link...

One way we could evolve this (to reduce exploit attempts) that could be great... Is that you have to send Seeds (or get someone else to sends Seeds) into a recovery contract that are burned if the recovery process isn't executed within 96 hours... So, that way spam attempts cost Seeds (and when I try to recover I just ask my firend to send some Seeds to this recovery contract and they get them back after my account is active)... Food for thought.

gguijarro-c-chwy commented 3 years ago

I think this is good. Would be helpful to note who starts the chain calls here.

Set guardians as signers on account (accept guardians) - Main Account Owner How many signatures does this need? -> 3, 5 - ? How many have signed -> [0..5] - ? Sign request to reset key - Guardian Execute request (when it has enough signatures) - ?

7flash commented 3 years ago

User has to initiate the process and then share secret link to his guardians, - that secret link allows guardians to sign transaction to smart contract, - when all guardians submitted transaction to agree with change of private key to the same another one, - it should execute permission change