Skip to content

Latest commit

 

History

History
27 lines (16 loc) · 1.73 KB

README.md

File metadata and controls

27 lines (16 loc) · 1.73 KB

Secret Social Recovery

The Recovery Pallet shipped with official Substrate Frame provides a nice M-of-N social recovery mechanism. However, it exposed the friends' accounts in plaintext and may introduces several attack vectors, such as collusions or targetet attacks

Through this pallet, we only store the merkle root of friends' accounts, and commit the merkle proofs to blockchain during the recovery period. It's both space effecient and privacy-preserving.

Basic Idea

The idea of secret social recovery is inspired by both Shawn Tabrizi's youtube talks and EIP2494: Secret Multisig Recovery

There can be multiple ways to implement a membership proof while maintain privacy, including both ZK and NonZK approachs. Here I take the simple path of taking advantage of merkle inclusion proof , although is not zero knowledge. More complex solutions might be implemented in the future.

Implementation

The implementation is base on Official Recovery Pallet, but there are some major changes:

  1. Store friends_merkle_root on chain, instead of plain friends list;
  2. Not include the economic measures like recovery depost and slash so far for simplicity;
  3. The friends should be invited one-by-one privately during the recovery process, they approve the recovery by signing the rescuer account , and the merkle_proof ought to be generated by the orignal account owner.

Development Status

Currently the pallet serves as a PoC for secret social recovery. It's already proven the idea but not yet production-ready. More development would be put in the future.