Skip to content
This repository has been archived by the owner on May 15, 2024. It is now read-only.

UniLogin/UniLogin

Repository files navigation

UniLogin

UniLogin

Ethereum Universal Login

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.

Disclaimer

This is a work in progress. Expect breaking changes. The code has not been audited and therefore can not be considered secure.

Technical concepts

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.

Structure

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

Testing environment:

Ropsten:

  • Domains: poppularapp.test, my-login.test, universal-login.test
  • Relayer url: https://relayer-ropsten.universallogin.io
  • Jarvis Wallet (web wallet): wallet-ropsten.universallogin.io

Kovan:

  • Domain: poppularapp.test
  • Relayer url: https://relayer-kovan.universallogin.io

Rinkeby:

  • Domain: poppularapp.test
  • Relayer url: https://relayer-rinkeby.universallogin.io

Contributing

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.

Building, running, linting & tests

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

Building documentation:

cd docs
make html

Documentation will be compiled to docs/build/html.

License

Universal Login SDK is released under the MIT License.