Detailed docs: https://docs.zenguard.xyz
About:
ZenGuard provides the easiest way to onboard users to Web3 and yet ensures that they never have to worry about losing access to their wallets. The secure recovery solutions that are seamless to set up ensure that the user always retains control of the wallet.
Wallet recovery is an important aspect of the wallet UX, but this has been the missing piece in many existing wallets until now. The currently available recovery method in smart contract wallets is social recovery. Vitalik too has been the advocate of social recovery wallets for quite some time. But there are plenty of things to consider in social recovery to make it secure and easy to use as pointed out here: https://twitter.com/VitalikButerin/status/1636608740513263617?s=20
At Zenguard we are trying to provide the best recovery solution leveraging the concept of social recovery but considering a whole lot of other things to make this as secure and convenient as possible for normal wallet users.
With the help of ZenGuard, a user can quickly get started with social logins, email, or even existing wallets. Users can set various recovery mechanisms such as biometrics, email, or even arbitration.
Built on:
ZenGuard has been built with the help:
- Safe SDKs (auth and account abstraction)
- Web3Auth for authentication and email JWT generation and server verification
- Base Goerli chain for all the Safe and recovery contract deployments
How does it work?
Wallet recovery is an important aspect of the wallet UX, so we focus on making this secure and convenient for the user. Vitalik has been the advocate of social recovery wallets for quite some time. But there are plenty of things to consider in social recovery to make it secure and easy to use as pointed out here: https://twitter.com/VitalikButerin/status/1636608740513263617?s=20
At Zenguard we are trying to provide the best recovery solution leveraging the concept of social recovery but considering other factors as well.
In this hackathon, we are leveraging the account abstraction SDKs of Safe to create a Safe wallet for a user with basic social login authentication. Once the user has a wallet, they can then set the recovery mechanism with a few simple clicks and also set a secondary account or beneficiary for the wallet with additional guards like time delay. We leverage Safe modules to add these functionalities.
References:
Thanks to the following design and ideas for references:
Candide Wallet social recovery module: https://github.com/candidelabs/CandideWalletContracts
oAuth 2.0 verification guide by Stackup: https://www.notion.so/oAuth-2-0-verification-cac17e20dec94845973603bd34e9ce9b
Feature highlights:
Here are the features that are served by ZenGuard
- Frictionless onboarding
- No more seed phrases: Thanks to smart contract wallets leveraging account abstraction that provides easy authentication mechanisms
- Gas sponsorships: Completely sponsor the transaction fee for the user or pay them in any tokens.
- Granular transaction permissions
- Transaction guards such as 2FA can be added to provide additional security at the transaction level.
- Secure and convenient recovery
- Thanks to smart contract wallets that enable secure and convenient recovery of wallets
- ZenGuard leverages Safe modules to provide the secure recovery features
- Additional recovery guards (conditions) can be added to enable the inheritance mechanisms.
ZenGuard makes two things easy and secure.
- Wallet Onboarding
- Wallet Recovery
Wallet Onboarding:
- Create a wallet by using simple auth mechanisms like social logins, email, touch ID, and face ID or even with the existing wallets like MetaMask.
- Perform transactions without the native currency to pay for transaction fee. Transaction fee can be completely sponsored or paid in any token.
- Additional security can be added for the wallet while performing transactions such as MultiSig (Provided by Safe thresholds) and 2-factor authentication
- MultiSig Guards: Add more than one signer (user) to approve the transaction
- 2FA Guards: Enable 2FA such as mobile, email OTP, Touch ID, and Face ID authentications to approve transactions
- Transaction limits: Set transaction limits for each crypto asset
Wallet Recovery
ZenGuard allows a recovery mechanism to be added to the wallet anytime.
- Users can add recovery mechanisms for each wallet. A recovery module will be enabled for the wallet with the help of ZenGuard's recovery infrastructure.
- Wallet users can select between various recovery options:
Recovery types:
- Social recovery: Recover the wallet with the help of other devices, family and friends, or custodial signers
- 2FA-based recovery with the help of email, mobile number biometrics (touch ID, face ID with the help of WebAuthn)
- Add your secondary email, a mobile number which will be verified before the wallet is recovered
- Add your biometric recovery methods with the help of a mobile device touch ID or face ID
- We make use of Web3Auth OAuth verification and LitProtocol Auth verification for this
Addition recovery conditions (guards):
To enhance and further the security of the wallet recovery process, additional conditions can be added. We call them recovery guards.
- Additional conditions are simple conditions that are verified only onchain
- These conditions provide users to set inheritance mechanisms for their wallets where the beneficiary gets access to the wallet only after an event is verified.
These guards could be:
- Cooling period: Allows users/ beneficiaries to access the wallet after a specified inactivity period.
- Date/session-based: Allows the beneficiary to access the wallet at a specified date and time for a specified time duration.
- Arbitration-based: Allows the beneficiary to access the wallet after a specified onchain or off-chain event has been proven such as the demise of the wallet owner. We use decentralized court Kleros for this