owned this note
owned this note
Published
Linked with GitHub
*Todo: diagrams and examples illustrating relationships*
# Aura
Aura is a decentralized system to arrive at expert answers in a [domain](#Domains).
## Domains
A domain defines what [subjects](#Subjects) can be [evaluated](#Evaluations) and what questions are included in the evaluation. The first [team](#Teams) creating a domain makes and updates these definitions. If teams disagree about definitions, a domain can be forked, copying all subjects, teams, [participants](#Participants) and evaluations, but setting a new first team that can change the definitions.
A domain also sets the maximum number of teams a [player](#Players) can join.
### Subjects
Subjects are what [players](#Players) evaluate. In a *Restaurants* domain, for example, subjects would be restaurants.
## Evaluations
An evaluation is set of questions answered by a [player](#Players) about a [subject](#Subjects) (or a [trainer](#Trainers) about a player or a [manager](#Managers) about a trainer or other manager).
The evaluator also assigns a confidence rating (low, medium, high, very high) to each of their answers.
Evalutions are aggregated to determine whether a subject (or player, trainer, manager) has reached a certain [level](#Levels). This process is discussed in the [levels document](https://hackmd.io/Hz3uGS54Tyel50CjO_Ow7g).
## Levels
Levels are a convenient way to consistently measure quality. For example, a [subject](#Subjects) **level 1** communicates a certain level of quality about the subject.
As conditions in the network change, the underlying requirements to achieve a level might change, but the quality conveyed by the level will remain constant.
### Level definitions
Level definitions are team-specific and set by [team captains](#Team-captains). A team tries to create useful levels to increase their chance of being included in [leagues](#Leagues).
[Levels have their own document discussing their implementation and usage.](https://hackmd.io/Hz3uGS54Tyel50CjO_Ow7g)
## Participants
### Players
A player [evaluates](#Evaluations) [subjects](#Subjects). A player belongs to a number of [teams](#Teams), the limit of which is set by the [domain](#Domains). To join a team, a player must be evaluated by one or more [trainers](#Trainers) on that team and receive a positive [level](#Levels).
### Trainers
Trainers [evaluate](#Evaluations) [players](#Players) on how well they evaluate [subjects](#Subjects).
[Managers](#Managers) evaluate trainers; a trainer's [level](#Levels) comes from these evaluations.
### Managers
Managers [evaluate](#Evaluations) [trainers](#Trainers) on how well they train [players](#Players). Managers also evaluate other managers on how well they evaluate trainers and managers. Manager evaluations determine flows of *energy*, which is what eventually allows players to give [levels](#Levels) to [subjects](#Subjects). More information on energy flows is contained in the [levels document](https://hackmd.io/Hz3uGS54Tyel50CjO_Ow7g).
### Provisional participation
Anyone can start playing Aura before they join a [team](#Teams). They will be a *provisional player*, and their evaluations won't affect [subject](#Subjects) levels on any teams.
A [player](#Players) can become a *provisional trainer* or a *provisional manager*. As soon as they receive a [level](#Levels) as [trainer](#Trainers) (or [manager](#Managers)), they are no longer provisional.
### Teams
A [player](#Players) can join a team as soon as they receive a [level](#Levels) from that team (which comes from positive [evaluations](#Evaluations) by [trainers](#Trainers)). A player must belong to one or more teams before their evaluations will help determine the levels of [subjects](#Subjects).
Teams attract players, and try to become included in [leagues](#Leagues).
Teams are a key to resiliency, and leagues should try to include multiple teams in their [league level definitions](#League-levels), so they can quickly adapt if one or more teams proves to be corrupt or dysfunctional.
#### Team owners
A team starts with team owners which are one or more [managers](#Managers) that can bootstrap [evaluations](#Evaluations). Team owners expand the team by evaluating other managers and [trainers](#Trainers).
Team owners vote to add and remove team owners.
Team owners [define levels](#Level-definitions).
Team owners can copy a team into a different [domain](#Domains), taking its [participants](#Participants) and evaluations as a starting point.
## Leagues
Leagues are responsible for providing aggregate [evaluations](#Evaluations) of [subjects](#Subjects) to consuming apps. Anyone can form a league simply by defining an aggregation method. It's likely that apps will trust very few--perhaps only one--league, but it's a key feature of Aura that if a league becomes untrustworthy, defining a new one to replace it can be done quickly.
### League levels
Leagues assign different weights to [levels](#Levels) from different [teams](#Teams) and aggregate them into *league levels*.
League levels are meant to be a reliable and easy way to understand [evaluations](#Evaluations) of [subjects](#Subjects). It should be easy for an app to filter or rank subjects by their league levels.
For example, in the BrightID [domain](#Domains), the BrightID league might assign league levels to BrightID users with the following meanings.
* Level 1: most inclusive measurement of human uniqueness; may allow a moderate number of duplicate accounts, but should exclude large-scale sybil attacks.
* Level 2: medium inclusivity; some people may have difficulty finding [players](#Players) who can verify them. Allows fewer duplicate accounts than level 1.
* Level 3: harder to achieve for unique humans, but makes even small-scale sybil attacks unlikely.
Thus, an app can decide how to proceed with users having a league level of 1, 2, or 3--or simply choose one of the levels as a base requirement for app usage.