# 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>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.shiftctrl.money/developer/tab-protocol-smart-contract/governance.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
