> For the complete documentation index, see [llms.txt](https://docs.shiftctrl.money/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.shiftctrl.money/developer/tab-protocol-smart-contract/governance.md).

# Governance

## Governance Contracts

### ShiftCtrlGovernor

The ShiftCtrlGovernor is the primary governance contract used by the ShiftCTRL Tab Protocol community. It is designed to optimize transparency by implementing delayed voting and execution, ensuring that all users are informed and prepared to respond. Additionally, it encourages broad community participation by maintaining a low proposal threshold.

`Proposal Threshold: 10,000`[`CTRL`](/developer/tab-protocol-smart-contract/token.md#governance-token)

`Voting Delay: 2 days`

`Voting Period: 3 days`

`Quorum: 5% required for proposal to pass`

`TimelockController: 2 days before passed proposal can be executed`

### ShiftCtrlEmergencyGovernor

The ShiftCtrlEmergencyGovernor is a specialized governance contract, similar to the standard ShiftCtrlGovernor, but with distinct parameters tailored for emergency situations. It features more stringent proposal criteria and faster execution timeframes, making it ideal for addressing urgent scenarios, such as applying security patches or triggering the Tab freeze function to safeguard the protocol.

`Proposal Threshold: 1,000,000`[`CTRL`](/developer/tab-protocol-smart-contract/token.md#governance-token)

`Voting Delay: Immediate`

`Voting Period: 30 minutes`

`Quorum: 5% required for proposal to pass`

`TimelockController: Immediate. Can execute right after proposal is passed.`

### GovernanceAction

The GovernanceAction contract serves as a utility contract that simplifies the process of proposing common actions. It allows community members to call functions within a single contract, eliminating the need for technical expertise, such as knowing which contracts to call, having to call multiple contracts, and ensuring they are called in the correct sequence.

Currently, the GovernanceAction contract supports the following functions:

<pre class="language-solidity"><code class="lang-solidity"><strong>1. setDefBlockGenerationTimeInSecond(uint256 sec)
</strong><strong>
</strong>2. updateReserveParams(
  bytes32[] calldata _reserveKey,
  uint256[] calldata _processFeeRate,
  uint256[] calldata _minReserveRatio,
  uint256[] calldata _liquidationRatio)
  
3. updateTabParams(
  bytes3[] calldata _tab,
  uint256[] calldata _riskPenaltyPerFrame,
  uint256[] calldata _processFeeRate)
  
4. updateAuctionParams(
  uint256 _auctionStartPriceDiscount,
  uint256 _auctionStepPriceDiscount,
  uint256 _auctionStepDurationInSec,
  address _auctionManager)
  
5. disableTab(bytes3 _tab)

6. enableTab(bytes3 _tab)

7. disableAllTabs()

8. enableAllTabs()

9. setPeggedTab(bytes3 _ptab, bytes3 _tab, uint256 _priceRatio)

10. createNewTab(bytes3 _tab)

11. addReserve(
  bytes32 _reserveKey,
  address _token,
  address _vaultManager)
  
12. disableReserve(bytes32 _reserveKey)

13. addPriceOracleProvider(
  address provider,
  address paymentTokenAddress,
  uint256 paymentAmtPerFeed,
  uint256 blockCountPerFeed,
  uint256 feedSize,
  bytes32 whitelistedIPAddr)
  
14. configurePriceOracleProvider(
  address provider,
  address paymentTokenAddress,
  uint256 paymentAmtPerFeed,
  uint256 blockCountPerFeed,
  uint256 feedSize,
  bytes32 whitelistedIPAddr)
  
15. removePriceOracleProvider(
  address _provider,
  uint256 _blockNumber,
  uint256 _timestamp)
  
16. pausePriceOracleProvider(address _provider)

17. unpausePriceOracleProvider(address _provider)

18. ctrlAltDel(bytes3 _tab, uint256 _btcTabRate)
</code></pre>
