Universal Login is a design pattern for storing funds and connecting to Ethereum applications, aiming to simplify on-boarding of new users.
This repository is a monorepo including the sdk, relayer, smart contracts and examples. 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 barely noticeable manner. The user then incrementally adds authorization factors and recovery options.
- Meta-transactions - these give users the ability to interact with their wallets from multiple devices easily, without a need to store ether on each of those devices. Meta-transactions, also allow one to pay for execution with tokens.
- ENS names - naming your wallet with easy-to-remember human-readable names.
- Universal login - ability to use the wallet as an 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
Our goal is to formally verify functions declared in ethereum smart contracts used in our project. Please, see Formal Verification README for details and instructions.
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.
To install dependencies:
yarn install
To build all projects:
yarn build
Running run tests for all projects:
yarn test
Running linter for all projects:
yarn lint
To clean the project:
yarn clean
You can run all of above scripts (install
, build
, test
, lint
, clean
) from individual project directories.
To emulate the full CI process:
yarn clean
yarn
yarn ci
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 proxy released under the LGPL-v3 License.