Skip to main content

Governance

RollApp “Governors” manage the onchain governance enabling features such as onchain votes for transferring tokens owned by the community pool and adjusting onchain parameters.

What is a Governor?

Governors do not operate nodes yet they receive token delegations, vote on onchain governance proposals and disburse the revenue (rewards) generated to their delegators. Each Governors sets their own commission rate. This commission is deducted from the rewards received from the RollApp.

It is permissionless to become a Governor for a RollApp. To enter the active set of Governors, a Governor needs to receive enough delegations to enter the active set determined by the maximum amount of Governors (e.g., if the max amount of Governors is 3, only the top 3 Governors with respect to amount of delegations will receive rewards and operate as governors).

Customizing Governance on Genesis

Example

"gov": {
"starting_proposal_id": "1",
"deposits": [],
"votes": [],
"proposals": [],
"deposit_params": {
"min_deposit": [
{
"denom": "arollapp",
"amount": "10000000"
}
],
"max_deposit_period": "172800s"
},
"voting_params": {
"voting_period": "172800s"
},
"tally_params": {
"quorum": "0.334000000000000000",
"threshold": "0.500000000000000000",
"veto_threshold": "0.334000000000000000"
}
},

min_deposit

This is the required amount of tokens for a proposal to be active for voting.

"min_deposit": [
{
"denom": "stake",
"amount": "10000000"
}
],

max_deposit_period

This is the amount of time a proposal has to reach the min_deposit prior to be discarded by the RollApp.

"max_deposit_period": "172800s"

voting_period

This is the amount of time a community has to vote on the active proposal after the deposit minimum is reached in time.

"voting_params": {
"voting_period": "172800s"
},

tally_params

  • Quorum: Percentage of RollApp stakers that must participate in the proposal for the result to be considered valid.
  • Threshold: Percentage of voters that must approve (i.e. vote Yes) or decline (i.e. vote No) on the proposal.
  • Veto threshold: Percentage of No With Veto votes that decline the proposal and move the deposited funds to the community pool.
"tally_params": {
"quorum": "0.334000000000000000",
"threshold": "0.500000000000000000",
"veto_threshold": "0.334000000000000000"
}

Staking

Token holders stake (i.e. delegate) their tokens with Governors. This allows token holders to receive a pro-rata share of the rewards that are distributed by the RollApp. To be eligible for this distribution a token holder must stake their tokens with a Governor in the active set.

Only RollApp token stakers may vote on governance proposals. If a staker does not vote, their chosen Governors vote on their behalf. Tokens may be unstaked at anytime. Unstaking requires undergoing an unbonding period which is adjustable by onchain governance parameters.

Customizing Staking on Genesis

Example

"staking": {
"params": {
"unbonding_time": "604800s",
"max_validators": 100,
"max_entries": 7,
"historical_entries": 10000,
"bond_denom": "arollapp",
"min_commission_rate": "0.000000000000000000"
},
}

unbonding_time

This is the amount of time it takes for a user to unbond their tokens after delegating. Primarily used for timing out IBC light clients (e.g.,"unbonding_time": "604800s").

max_validators

This is the maximum amount of active Governors for a RollApp at a time. The voting power is defined by the amount of tokens delegated to them (e.g.,"max_validators": 100). It is recommended to maintain less than 1000 max_validators, while not affecting consensus network this does add computational load to the RollApp.

max_entries

Users may undelegate and redelegate, however to prevent speculative shifts of delegation that could destabilize governance, max_entries limits the number of redelegations a delegator can make within a certain timeframe (e.g., "max_entries": 7).

historical_entries

The historical_entries parameter specifies how many of these snapshots the blockchain should retain. The primary purpose of maintaining historical_entries is to facilitate the IBC protocol and other mechanisms that need to verify the state at a specific block height in the past (e.g., "historical_entries": 10000).

bond_denom

The denom of the token required for delegating to a Governors (e.g., "bond_denom": "stake").

min_commission_rate

This is the minimum percetage that a Governor must charge delegators for participating in governance ("min_commission_rate": "0.05"). This may help in reducing centralization of 0% commission providers.