# ADR 007: Specialization Groups
# Changelog
- 2019 Jul 31: Initial Draft
# Context
This idea was first conceived of in order to fulfill the use case of the creation of a decentralized Computer Emergency Response Team (dCERT), whose members would be elected by a governing community and would fulfill the role of coordinating the community under emergency situations. This thinking can be further abstracted into the conception of "blockchain specialization groups".
The creation of these groups are the beginning of specialization capabilities within a wider blockchain community which could be used to enable a certain level of delegated responsibilities. Examples of specialization which could be beneficial to a blockchain community include: code auditing, emergency response, code development etc. This type of community organization paves the way for individual stakeholders to delegate votes by issue type, if in the future governance proposals include a field for issue type.
# Decision
A specialization group can be broadly broken down into the following functions (herein containing examples):
- Membership Admittance
- Membership Acceptance
- Membership Revocation
- (probably) Without Penalty
- member steps down (self-Revocation)
- replaced by new member from governance
- (probably) With Penalty
- due to breach of soft-agreement (determined through governance)
- due to breach of hard-agreement (determined by code)
- (probably) Without Penalty
- Execution of Duties
- Special transactions which only execute for members of a specialization group (for example, dCERT members voting to turn off transaction routes in an emergency scenario)
- Compensation
- Group compensation (further distribution decided by the specialization group)
- Individual compensation for all constituents of a group from the greater community
Membership admittance to a specialization group could take place over a wide
variety of mechanisms. The most obvious example is through a general vote among
the entire community, however in certain systems a community may want to allow
the members already in a specialization group to internally elect new members,
or maybe the community may assign a permission to a particular specialization
group to appoint members to other 3rd party groups. The sky is really the limit
as to how membership admittance can be structured. We attempt to capture
some of these possiblities in a common interface dubbed the Electionator
. For
its initial implementation as a part of this ADR we recommend that the general
election abstraction (Electionator
) is provided as well as a basic
implementation of that abstraction which allows for a continuous election of
members of a specialization group.
Certain level of commonality likely exists between the existing code within
x/governance
and required functionality of elections. This common
functionality should be abstracted during implementation. Similarly for each
vote implementation client CLI/REST functionality should be abstracted
to be reused for multiple elections.
The specialization group abstraction firstly extends the Electionator
but also further defines traits of the group.
# Status
Proposed
# Consequences
# Positive
- increases specialization capabilities of a blockchain
- improve abstractions in
x/gov/
such that they can be used with specialization groups
# Negative
- could be used to increase centralization within a community