Universal Login is a design pattern for storing funds and connecting to Ethereum applications, aiming to simplify new users on-boarding.
This repository is a monorepo including sdk, relayer, smart contracts and example. Each public sub-package is independently published to NPM.
Learn documentation.
Documentation is available at universalloginsdk.readthedocs.io
This is a work in progress. Expect breaking changes. The code has not been audited and therefore can not be considered secure.
Technically Universal Login utilizes four major concepts:
- Personal multi-sig wallet - a smart contract used to store personal funds. A user gets his wallet created in a bearly noticeable manner. The user then gets engaged incrementally to add authorization factors and recovery options.
- Meta-transactions - that give user ability to interact with his wallet from multiple devices easily, without a need to store ether on each of those devices. Meta-transactions, also allow paying for execution with tokens.
- ENS names - naming your wallet with easy-to-remember human-readable name
- Universal login - ability to use the wallet as authorization layer to numerous web applications dapps
Packages maintained with this monorepo are listed below.
- Contracts - all contracts used in this project
- Relayer - node.js server application that allows interacting with blockchain without a wallet
- SDK - a JS library, that helps to communicate with relayer
- Example - example application written in React
- OPS - scripts for development and deployment
Contributions are always welcome, no matter how large or small. Before contributing, please read the code of conduct and contribution policy.
Before you issue pull request:
- Make sure all tests and linters pass.
- Make sure you have test coverage for any new features.
You can run lint via:
yarn lint
You can run tests:
yarn test
You can ran full clean:
yarn clean
And you can emulate full CI process by:
yarn clean
yarn
yarn ci
Universal Login SDK is released under the MIT License.