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:

  1. A new poll is created with an initial deposit that meets proposal_deposit

  2. The poll enters the voting phase, where it can be voted for by anybody with a staked SPEC position. Users can vote yes or no, and can assign how many of their staked SPEC to use for voting.

  3. The voting period ends after voting_period blocks have passed or yes or no votes reach threshold (50%) of all staked SPEC.

  4. The poll's votes are tallied and pass if both quorum (minimum participation of all staked SPEC) and threshold (minimum ratio of yes 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% and no vote is 30%. 60% (nopercentage from all votes; no/(no+yes)) will be taken away from deposited.

    • Example 3: Pass quorum and threshold; yes vote is 21% and no vote is 20%, full deposit will be return to proposer and poll is pass.

  5. If the poll passes, its contents will be executed after effective_delay blocks have ended. If the poll failed to execute prior to expiration_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