UniversalLogin is a design pattern for storing funds and connecting to Ethereum applications, aiming to simplify new users on-boarding.

Get the SDK


Ethereum is too complicated for the average user

  • Security badge


    Funds storage remains an unsolved problem. Users don't back up their accounts, don't own hardware wallets (or rarely used), and don't use Multisigs.

  • Web page


    Usability is hard. A new Ethereum user needs to get familiar with wallets, plugins, exchanges before he can start using the desired application.



  • Wallet

    Personal multisig

    Personal multisig makes it easy to use multiple authentications and recovery options while allowing the interface to be simple to use.

  • Simple UI

    Meta transactions

    Meta transaction allows skipping a lot of complicated UI while providing a user simple and actionable UI.

  • Universallogin logo

    Universal Login

    Universal login allows starting interacting with a favorite application, without setup, or redundant software. Just log in and use.

How does it work?

You can confirm transaction from your mobile device.
Any external web app or dapp can propose a transaction. The key does not contain any funds.
Relayer takes signed messages and converts them into transactions. It gets a refund from the identity.
Identity seamlessly interact with other wallets on Ethereum network.
You can recover your lost keys using a trusted 3rd party.
You can confirm transaction from your computer.
Identity smart contract stores all your funds that can be managed by external keys.

Getting started

With Universal Login SDK you can start creating applications in javascript in a few minutes.

$ npm install universal-login-sdk
import EthereumIdentitySDK from 'EthereumIdentitySDK';
const sdk = new EthereumIdentitySDK(

const [privateKey, contractAddress] = await sdk.create(

const message = {
	from: contractAddress,
	to: '0x88a5C2c290d9919e46F883EB62F7b8Dd9d0CC45b',
	data: '0x',
	value: '1000000000',
	gasToken: '0xEB62F7b8Dd9d0CC45b88a5C2c290d9919e46F883EB',
	gasPrice: 11000000000,
	gasLimit: 1000000

const transactionId = await sdk.execute(message, privateKey);

Making of

  • Advisor

    Alex Van de Sande

  • Core Team in Ethworks

    Marek Kirejczyk

    Justyna Broniszewska


  • ETH Price logo
  • Ethereum Community Fund logo

Open source contributors from all around the world.


Jan K


Lodz, Poland

Marek Kirejczyk


Warsaw, Poland

Justyna Broniszewska


Warsaw, Poland

George Spasov


Sofia, Bulgaria

Tullio Canepa


Genoa, Italy

Kyle Bryant


Boston, USA

Shine Lee


Freemont, USA

Alex Van de Sande


Rio de Janeiro