About the Project
RecoverFi was inspired by the growing need for secure and user-friendly recovery options in the world of cryptocurrency wallets. Many users face irreversible loss of funds simply because they forgot their passwords or lost access to their seed phrases. This project aims to bridge that gap by introducing a system that securely stores encrypted wallet information and leverages a decentralized trust model using “guardians” — trusted contacts who can approve wallet recovery requests.
What Inspired Me The idea came from seeing countless stories of people losing millions due to lost credentials and realizing that traditional password recovery mechanisms don't apply to decentralized wallets. I wanted to create a tool that empowers users to regain access without compromising on security or privacy.
What I Learned Cryptography & Encryption: I dived deep into symmetric encryption using AES, implemented via the CryptoJS library, to securely store and decrypt wallet data. State Management in React: Handling multiple states like passwords, errors, approvals, and conditional UI rendering was a great exercise in React hooks. Decentralized Trust Models: Designing the guardian approval system introduced me to concepts of multi-party authentication and consensus mechanisms. LocalStorage & Security Concerns: Balancing usability with security, I learned about the limitations and risks of storing sensitive data on the client side. How I Built It The app is built with React for the frontend, utilizing functional components and hooks for state management. The cryptographic functions rely on CryptoJS for AES encryption/decryption. Wallet data is encrypted client-side before being saved to localStorage to avoid sending sensitive data over the network.
Guardians are stored as JSON arrays and can be “notified” via the UI to approve recovery requests. Once a threshold number of guardians approve, the wallet can be restored securely.
Challenges Faced Ensuring Secure Encryption and Decryption: It was tricky to guarantee that encrypted data could only be decrypted with the exact password and to handle edge cases where corrupted or incomplete data might cause silent failures. Simulating Guardian Approvals: Since this is a client-only demo, simulating asynchronous approvals and ensuring correct state updates was challenging. Error Handling and User Feedback: Providing clear and immediate feedback to the user on incorrect passwords or missing data required thoughtful UI design. Balancing Security and UX: Storing encrypted data locally is inherently risky, so I had to carefully consider how to mitigate possible attack vectors while keeping the app simple and usable.

Log in or sign up for Devpost to join the conversation.