agora/docs/tech-design/governor.md

1.7 KiB

Governor technical design

Specification Implementation Last revision
WIP WIP v0.1 2022-02-03

Specification ownership: Jack Hodgkinson

Authors:

Implementation ownership: unassigned

Current Status:

First draft. Subject to review by @emiflake.


The governor is a simpler component than others in the system but still provides an invaluable role.

Governor responsibilities

The governor acts as the central authority through which all governance proceeds indirectly. You can think of it as the single point for issuing rights to actors.

Minting of authority tokens

The main responsibility for the governor is allowing the minting of authority tokens, and ensuring they are sent to effects. The governor needs to check that this happens as a result of a proposal finishing its voting phase.

Guarding creation of proposals

The governor is also responsible for allowing the creation of proposals. There are a few rules for the creation of a proposal, and the governor ensures these rules are followed.

In order for proposals to have sequential IDs, the governor keeps track of a counter which it uses to ensure the ID has not been taken yet. The governor also needs to keep global settings that influence how proposals behave: thresholds for state transitions, how long each phase lasts, etc.

The governor itself is sensitive to authority token burning in order to allow all of this to be able to mutate.