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.
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:
- Create an issue and discuss with us to see if feature fits the project
- For bigger PRs - setup a pair programing session with us :)
- Split big PRs into multiple smaller PRs
- Make sure all tests and linters pass.
- Make sure you have test coverage for any new features.
You can run lint via:
yarn lint
Running tests:
yarn test
To clean the project:
yarn clean
To emulate the full CI process:
yarn clean
yarn
yarn ci
Building documentation:
cd docs
make html
Documentation will be compile to docs/build/html
.
Universal Login SDK is released under the MIT License except for smart contracts in common and proxies released under the LGPL-v3 License.