Governance

Understanding Polkadot's On-Chain Governance System

Polkadot's Governance System

Polkadot features a sophisticated on-chain governance system that allows token holders to propose and vote on changes to the protocol. This system ensures that the network can evolve and adapt without requiring hard forks.

OpenGov (Governance v2)

Polkadot uses OpenGov, a more flexible and efficient governance system that replaced the original governance model:

Key Features

  • • Multiple concurrent referenda
  • • Flexible voting periods
  • • Conviction voting
  • • Delegation support
  • • Track-based system

Benefits

  • • Faster decision making
  • • Better participation
  • • Reduced governance overhead
  • • More flexible voting
  • • Better representation

Governance Tracks

OpenGov uses different tracks for different types of proposals, each with its own requirements and timelines:

Root Track

For the most critical changes that require the highest level of approval.

  • • Runtime upgrades
  • • Treasury management
  • • Parameter changes
  • • Highest approval threshold

Treasury Track

For treasury proposals and spending decisions.

  • • Treasury spending
  • • Bounty management
  • • Tip management
  • • Medium approval threshold

Whitelist Track

For whitelisting certain operations or addresses.

  • • Address whitelisting
  • • Operation permissions
  • • Lower approval threshold

Voting System

Polkadot's voting system includes several innovative features:

Voting Features:

  • Conviction Voting: Longer lock periods increase voting power
  • Delegation: Users can delegate their voting power to others
  • Split Voting: Vote differently on different options
  • Abstain Option: Express neutrality on proposals
  • Vote Tallying: Automatic calculation of results

Governance Operations

Let's explore how to interact with Polkadot's governance system:

// Governance operations with Polkadot.js API
import { ApiPromise, WsProvider } from '@polkadot/api';

const api = await ApiPromise.create({ provider: new WsProvider('wss://rpc.polkadot.io') });

// 1. Submit a proposal
const proposal = api.tx.system.remark('Hello, Polkadot!');
const proposalTx = api.tx.referenda.submit(
  { Origins: 'Root' }, // track
  { Lookup: { Hash: proposal.hash, len: proposal.length } }, // proposal
  { After: 100 } // enactment delay
);

// 2. Vote on a referendum
const voteTx = api.tx.convictionVoting.vote(
  0, // referendum index
  {
    Standard: {
      vote: { aye: true, conviction: 'Locked1x' },
      balance: 1000000000000
    }
  }
);

// 3. Delegate voting power
const delegateTx = api.tx.convictionVoting.delegate(
  { Origins: 'Root' }, // track
  '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY', // delegate
  'Locked1x', // conviction
  1000000000000 // balance
);

// 4. Undelegate voting power
const undelegateTx = api.tx.convictionVoting.undelegate({ Origins: 'Root' });

// 5. Get referendum information
const referendumInfo = await api.query.referenda.referendumInfoFor(0);
console.log('Referendum info:', referendumInfo.toHuman());

Council and Technical Committee

While OpenGov is the primary governance mechanism, Polkadot also has specialized bodies:

Council

Elected body that represents passive stakeholders and can propose referenda.

  • • Elected by token holders
  • • Can propose referenda
  • • Manages treasury
  • • Provides oversight

Technical Committee

Technical experts who can fast-track emergency proposals.

  • • Composed of development teams
  • • Can fast-track proposals
  • • Emergency response
  • • Technical oversight

Treasury Management

The treasury is a key component of Polkadot's governance system:

// Treasury operations
// 1. Propose treasury spending
const treasuryProposal = api.tx.treasury.proposeSpend(
  1000000000000, // amount
  '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY' // beneficiary
);

// 2. Approve treasury proposal
const approveTx = api.tx.treasury.approveProposal(0);

// 3. Reject treasury proposal
const rejectTx = api.tx.treasury.rejectProposal(0);

// 4. Get treasury information
const treasuryBalance = await api.query.treasury.proposalCount();
const treasuryInfo = await api.query.treasury.proposals(0);
console.log('Treasury balance:', treasuryBalance.toString());
console.log('Treasury proposal:', treasuryInfo.toHuman());

Governance Best Practices

Governance Best Practices:

  • Stay Informed: Follow governance discussions and proposals
  • Research Proposals: Understand the implications before voting
  • Participate Actively: Vote on proposals that affect you
  • Consider Delegation: Delegate to trusted community members
  • Use Conviction Voting: Lock tokens for longer periods to increase influence
  • Monitor Treasury: Keep track of treasury spending and proposals
  • Engage in Discussion: Participate in community discussions

Summary

In this chapter, we've explored Polkadot's governance system:

  • • OpenGov provides flexible and efficient governance
  • • Multiple tracks handle different types of proposals
  • • Conviction voting allows for increased influence
  • • Delegation enables representative governance
  • • Council and Technical Committee provide oversight
  • • Treasury management is integrated into governance

In the next chapter, we'll explore parachains and XCM, learning how different blockchains can communicate and interoperate within the Polkadot ecosystem.