Personalized Login allows users to login to dApps through a personalized way. User can setup their login preference in registry and login with their ENS name.
Personalized login enables users to log in to any application by inputting their ENS names. An on-chain registry will parse out how the user wants to authenticate themselves and follow their preference to log in. We believe this is a paradigm shift from application-centric logic to user-centric logic. In Personalized login, users would be able to log in by simply inputting their ENS name, the next pop-up will be based on the user's preference. If a user prefers to authenticate with email OTP, they can log in by inputting the right OTP code sent to their email. Personalized Login is also friendly to user onboarding. Any user can simply input an email address to log in, which there will be an ENS subdomain automatically generated and born with the account, so that the next time, the user can log in by inputting the ENS name.
This project uses ENS as the global username for users to log in. We utilized the ENS off-chain subdomain example app to assign a free ENS subdomain to any new account registered through the app with email. There is an authentication registry that records users' preferences on how they want to log in, including their auth type, their authServiceRpcUrl, and signingServiceRpcUrl. For the hackathon, we didn't make it to finish the on-chain registry part, instead, we used a local JSON object to store the info. For new users registered with their email, we utilized the dAuth to do email OTP. To demonstrate the value of the user-centric modal, all the new accounts registered are custodial wallets where keys are stored in the local database, but. this can simply improve to non-custodial by integrating MPC solutions. We also thought about how to resolve the ENS name. different layer2s without the trust issue caused by the gateway. We proposed a thought using EIP-4804 to read the ENS resolver on-chain with a simpler implementation than Chainlink's CCIP, but we didn't have time to finish and deploy.