Universal Login is a tool 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.
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
- OPS - scripts for development and deployment
- React - library of React components
- Web3 - web3 provider connected allowing to use Universal Login without the need for modifying existing applications
- Wallet - Jarvis web wallet that used Universal Login
- Commons - standard functions and data structures used throughout the projects
- Domains:
poppularapp.test
,my-login.test
,universal-login.test
- Relayer url:
https://relayer-ropsten.universallogin.io
- Jarvis Wallet (web wallet): wallet-ropsten.universallogin.io
- Domain:
poppularapp.test
- Relayer url:
https://relayer-kovan.universallogin.io
- Domain:
poppularapp.test
- Relayer url:
https://relayer-rinkeby.universallogin.io
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 ci
cd docs
make html
Documentation will be compiled to docs/build/html
.
Universal Login SDK is released under the MIT License.