Governance
Governance is the democratized process through which proposals for change in Spectrum Protocol are introduced and accepted by the community through voting.
There is no admin key with privileged access. After the initial bootstrapping of contracts, the Gov contract is set to be the owner of the Spectrum Protocol contracts and all changes must be made through the governance with the procedure defined in this section.
SPEC Token
The SPEC Token (SPEC) serves as Spectrum Protocol's governance token. Only users with a staked SPEC position can vote on polls, and each user receives voting power weighted by their amount of staked SPEC. For every poll, a user can choose to allocate up to their total staked SPEC. Users with higher SPEC stake will therefore have more influence when deciding in governance polls.
Although a user receives 1 vote per staked SPEC for every poll, voting in polls does not have any effect on the user's current staking balance.
Polls
New governance proposals in Spectrum Protocol are called polls. Any user can create a poll by paying an initial deposit of SPEC tokens. If the poll fails to pass the minimum voting quorum or minimum threshold, the deposited SPEC will be deducted based on failing percentage and is given to SPEC stakers and distributed proportionately according to their relative stake.
Polls consist of a text description of the proposition (with perhaps an external link to further resources / discussions), and include an executable message encoding the instructions to be run if it passes. The message will be executed with the privileges of the Spectrum Gov contract, which has the power to invoke any function defined by the other Spectrum Protocol smart contracts.
Once submitted, a poll can be voted on by the community until its voting period has concluded. If the poll passes quorum and threshold conditions (defined below), it is ratified and its contents can automatically be applied after a set period of time. These changes take effect without requiring updates to the core Mirror Protocol contracts.
Staked SPEC tokens utilized in on-going polls cannot be withdrawn until the poll is completed. In addition, the number of SPEC used in a proposal cannot be modified after the vote has been submitted.
Procedure
The following steps outline the governance procedure:
A new poll is created with an initial deposit that meets
proposal_deposit
The poll enters the voting phase, where it can be voted for by anybody with a staked SPEC position. Users can vote
yes
orno
, and can assign how many of their staked SPEC to use for voting.The voting period ends after
voting_period
blocks have passed oryes
orno
votes reachthreshold
(50%) of all staked SPEC.The poll's votes are tallied and pass if both
quorum
(minimum participation of all staked SPEC) andthreshold
(minimum ratio ofyes
to all votes) are met.If poll doesn't contain execution message, there will be no penalty.
If poll contains execution message(s), poll's votes do not pass quorum or threshold, deposited SPEC will be distributed to SPEC stakers proportionally of failing percentage to pass quorum or threshold.
Example 1: Does not pass quorum; quorum is 10%,
yes
vote is 6%. 40% (missing percentage to meet quorum;(quorum - yes)/quorum
) will be taken away from deposited.Example 2: Does not pass threshold;
yes
vote is 20% andno
vote is 30%. 60% (no
percentage from all votes;no/(no+yes)
) will be taken away from deposited.Example 3: Pass quorum and threshold;
yes
vote is 21% andno
vote is 20%, full deposit will be return to proposer and poll is pass.
If the poll passes, its contents will be executed after
effective_delay
blocks have ended. If the poll failed to execute prior toexpiration_period,
poll can be terminated and no longer be considered valid.
Initial Setup
Name
Description
Value
proposal_deposit
SPEC deposited amount required to create poll
2,500 SPEC
quorum
minimum participation of all staked SPEC
10%
threshold
minimum ratio of yes
to all votes
50%
voting_period
period for voting
7 days
effective_delay
time to wait before execution
1 day
expiration_period
time to allow poll termination if there is no execution
8 days
Last updated