Parts

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/5726b98b-02cc-4bc6-95b5-20ac3dffad2f/F126C3CA-D41E-4221-9002-DE86756C1798.png

The protocol (Upala)

A set of smart-contracts that provide main functionality. Basically is a ledger that keeps track of users, groups and scores and provides scoring/exploding functionality.

Github

User side (Multipassport)

Multipassport.eth (Upala wallet app) Lets users interact with the protocol, manage groups membership, track scores, explode if they want to break bad.

Github

DApp side (App)

Uniqueness library (front) Node library to let DApps provide authorization interface to users.

Upala API Allows DApps provide authorization functionality to users.

Group management side (Group)

Group management tools. Manages an Upala group - assigns scores, publishes Merkle tree to DB and root to Upala. Groups may have very different entry logic, so as the interfaces.

merkle-distributer lib lives here (forked from Uniswap).

Entry tests. Smart contracts that assign scores to users based on a condition. E.g. the first entry tests may use MolochDAO, MetaCartel, Gitcoin membership as an entry condition. Or off-chain logic that brings outside score to Upala. User needs to prove ownership of Upala ID in this case. e.g. bringing Bright ID scores to Upala.

Github

Decentralized storage (DB)

Stores user score proofs. Both multipassport and DApps utilizing Upala protocol will retrieve these paths for a user.