It is often hard to define what Unlock is and what it is not. This document provides an explanation about our products and their relationships. But, first, we need a quick reminder of the Ethereum stack and interactions.
The Ethereum blockchain is, before anything else, a network. As of Ethereum 1.x, each node in the network includes an (eventually) identical copy of a virtual computer. These nodes communicate together to stay in sync while still being able to evolve their state.
At the core of the Virtual Computer, sits the Ethereum Virtual Machine (or EVM) that is in charge of "executing" transactions to alter the data stored in it. You can think of it as the operating system of a distributed computer. Among other things, it stores the ledger that keeps track of the ether balances of each account. Ether is the native currency of the Ethereum ecosystem. Smart contracts are the equivalent of apps running inside of the EVM. They can store data and have methods that can be invoked by users or other smart contracts. As these applications consume resources on the EVM (compute, storage...), they can only run if the caller supplies "gas", which is spent to cover the cost of these resources. Gas is paid in Ether.
In order to communicate with the distributed computer each node provides an RPC interface: it is a way to send transactions, as well as read state. These interface are fairly standardized which means that users could, in theory, connect to any node. The RPC calls can be used to transfer funds, but, more importantly to execute transactions in smart contracts.
To make it easy to interface with smart contracts, developers are building "dapps" (distributed apps), which are generally only using state stored in the EVM with a user-friendly interface (almost always web-based). Since the state of each application is "public", multiple dapps can be built for the same smart contract. Some advanced dapps will let users interact with several smart contracts in single interface.
Finally, wallets are "wrappers" around private keys that let user sign messages and transactions sent through Dapps and RPC to distributed computer. These wallet can also store valuable state for users such as their balance of Ether, or even data from some specific smart contracts, such as their balances of certain tokens.
Given the popularity of the Ethereum main-net, several side-chains and "layer 2" have emerged. They provide a very similar architecture and can be "connected" to the Ethereum mainnet through "gateways" whose role is to transfer tokens from a network to another.
The most central piece of what Unlock **is building is the "protocol" for memberships**. The protocol defines what locks and keys are, how to deploy the former or purchase the latter. A membership is represented by keys to a given lock.
The protocol is implemented in the form of smart contracts. It is visible in our open source code under
As we've seen above RPC calls are ways to interact with smart contracts. Unlock-js is a wrapper around these RPC calls to provide specific ways to interact with the smart contracts. The code can be found in our code repository under
We are building several products at the front-end level with different purposes.
The dashboard is to a tool for creators and consumers. For creators it provides a way to deploy or update locks, view key owners, as well as withdraw funds from the locks. For consumers, it provides a "keychain" which lets them view all of their keys, the related information, as well as sell or cancel them.
We also provide several products which are using the paywall infrastructure. For example, you could look at our "donations" product.
Tickets is an application that lets event organizers sell tickets to their event in the form of keys to a lock. Organizers can create an event, attendees can purchase keys and, the organizers can then check the validity of these keys at the event itself.
Even though we believe that most people should eventually own a wallet themselves, there is a strong need in today's market for a convenience layer that lets consumers interact with locks without having to know (or care) about their private keys, gas fees, or Ethereum as a currency. Our convenience is similar to an Ethereum wallet for the Unlock ecosystem. It lets users purchase keys using their credit or debit cards, only for applicable locks.