Skip to content

Architecture & Rationale

tspoff edited this page Apr 30, 2019 · 5 revisions

Technical Challenges

Enable requires solutions for a number of prominent challenges in the blockchain space.

  • Trusted decentralized identity
  • Decentralized data storage with privacy
  • Getting valid data about users on chain (while preserving data privacy)
  • Crowdfunded loans
  • UX & blockchain

Trusted Decentralized Identity

After research, we saw that there are existing solutions here to leverage. Bloom protocol has a decentralized identity and attestations, with plans for social attestation going forward.

Alternatives for identity:
  • 3Box: Will incorporate as another identity attestation
  • Blockstack: Not Ethereum based, but could be incorporated later on

The more types of identity that are verified (email, social accounts, government ID), the more confidence in the identity of the party.

Decentralized data storage with privacy

We're going to use encrypted data stored in an OrbitDB database that can be transferred between parties via the web app securely.

Alternatives for data privacy:
  • Stow Protocol

Getting valid data about users on chain

Bloom specified a format for storing data such that data could be verified on chain via merkle proof combined with the recorded signatures of subject & attester. However, the data is currently stored in a centralized fashion.

Crowdfunded loans

This required some custom logic, based off of openzeppelin's crowdsale contracts. This results in liquid debt tokens which can be traded just as any ERC20.

UX & blockchain

Bloom has solid design and UX, and uses metatransactions. We'll be using metatransactions for most blockchain actions as well, with web3 only required for write actions and integrated smoothly.

Architecture Diagram

Architecture Diagram