# Introduction

Greetings and welcome to the exciting future of money! Here, we will dive into the intricacies of ShiftCTRL and explore how our sound stablecoins platform seeks to empower you to regain financial sovereignty.

<figure><img src="/files/PAw6Jwa0K9mclytAFHii" alt=""><figcaption></figcaption></figure>


# Why ShiftCTRL

{% hint style="info" %}
**TLDR:** The way our current money system works leads to inflation, harms savings, increases inequality, reduces economic freedom, distorts market prices, and encourages risky behaviour. This makes it harder for everyday people to thrive and maintain financial stability.
{% endhint %}

## Money is BROKEN

In today’s world, we use fiat currencies, which means the money we use isn’t backed by anything physical like gold. This has created several economic problems.

#### Inflation

Governments can print as much money as they want. When they print too much, it leads to inflation, which means prices go up, and the money we have buys less. This reduces our purchasing power and lowers our standard of living. In extreme cases, this can lead to hyperinflation, where prices go up so fast that normal life becomes very difficult.

#### Impact on savings

Inflation doesn't just make things more expensive; it also eats away at our savings. The money we save loses its value over time, making it harder to plan for the future. People are often forced to spend quickly or take risks with their money to try to keep its value, which can undermine their financial security.

#### Economic inequality

Inflation tends to benefit those who get the new money first, usually banks and wealthy individuals. This is known as the Cantillon effect. By the time the rest of us feel the effects of more money in the system, prices have already gone up. This increases the gap between the rich and the rest of us.

#### **Loss of economic freedom**

When governments and central banks control the money supply, our economic freedom is reduced. If a government wants to fund a new project, like funding a war, it can simply print more money instead of raising taxes or using budget surpluses. This bypasses the need for public approval and careful budget management, reducing government accountability and citizens' influence over national interests.

#### **Distorted prices**

Inflation distorts prices, which are supposed to signal supply and demand. When prices don’t reflect what’s really happening in the market, it becomes harder for us to make good economic decisions. Our efforts and sacrifices can feel less meaningful because the economy doesn’t accurately represent our actions.

#### **Encouraging risky behaviour**

When money is easy to come by, it can lead to reckless financial behaviour. Banks and companies deemed ‘too big to fail’ might take big risks because they expect government bailouts if things go wrong. This can lead to moral hazard and cycles of economic booms and busts, making the economy unstable.


# What is Austrian Economics

Austrian economics is a way of thinking about how economies work that focuses on individual choices, the role of prices, and the importance of letting markets operate freely without much government interference.

{% hint style="info" %}
**TLDR:** Think of Austrian economics like a big market where everyone is trading. Each person decides what they want to buy or sell based on what’s important to them. Prices adjust based on demand (how much people want things) and supply (how much is available).&#x20;

Austrian economists believe this market works best without too many rules or a central authority telling people what to do. They also think the market is more stable if it uses sound money (like gold), rather than fiat money that can be printed in endless amounts.
{% endhint %}

## Basic ideas of Austrian Economics

### People make choices

Austrian economics starts with the idea that the economy is made up of individuals making choices based on what they value. Every economic decision comes down to individual preferences and actions.

### Value is personal

Things are valuable because people want them, not because of how much work went into making them. For example, some Pokemon cards are valuable not because it's costly to print, but because people desire it a lot.

### Small changes matter

The value of something changes depending on how much of it you already have. For example, the first slice of pizza when you're hungry is very valuable, but by the fourth slice, it's not as exciting (valuable).

### Future vs. present

People prefer to have things now rather than later. This preference for present goods over future ones affects how much people save and invest.

### Prices send signals

Prices in a free market tell us a lot. If prices are high, it means something is in demand. If prices are low, it means there's plenty of it. This helps businesses decide what to produce.

### Booms and busts

Austrian economists believe that when the government messes with interest rates (the cost of borrowing money) by printing money, it can cause economic bubbles (booms) and crashes (busts). They think it's better to let the market set these rates.

## Understanding money with Austrian Economics

### How money started

Money wasn’t created by governments. It started as a common agreement among people. For example, if everyone in a village starts using shells to trade because they’re easier than bartering goods directly, those shells become money.

### What money does

Money makes trading easier. Instead of swapping goods directly (barter), people use money as a middle step (medium of exchange). Money is also a way to keep track of value and save it for the future.

### Real money

Austrian economists like the idea of “sound money,” which means money that holds its value over time, like gold. They’re sceptical of fiat money that governments can print more of, because that can lead to inflation (where money loses value).

### Central banks and problems

They’re critical of central banks (like the Federal Reserve in the US) because they believe these banks can create problems by controlling the money supply and interest rates. Austrians think this leads to an unfair monetary landscape that benefits the few at the expense of the many.

## Further reading

For more in-depth learning, we recommend the following amazing books by&#x20;

<details>

<summary>Dr. Robert P. Murphy</summary>

***Lessons for the Young Economist***\
<https://mises.org/library/book/lessons-young-economist>

***Understanding Money Mechanics***\
<https://mises.org/library/book/understanding-money-mechanics>

</details>

<details>

<summary>Saifedean Ammous</summary>

***The Bitcoin Standard***\
<https://saifedean.com/tbs>\
<https://saifedean.com/poe>

</details>

<details>

<summary>Lyn Alden</summary>

***Broken Money***\
<https://www.lynalden.com/broken-money/>

</details>


# What is ShiftCTRL

## A global monetary framework for a brighter future

Imagine a financial system where economic stability and personal freedom flourish. A system where the economy serves people, not the other way around. That’s the vision of ShiftCTRL.

## Guided by Austrian Economics

ShiftCTRL respects individual rights, supports the free market, and believes in sound money principles. These ideas come from pioneering economic research.

## Inspired by the Classical Gold Standard

ShiftCTRL is modelled after the classical gold standard, known for its economic and personal freedom. However, it improves upon the original model with a few key changes:

* Gold is replaced by Bitcoin.
* Paper money is replaced by stablecoins.
* Central banks are replaced by community governance (decentralized governance).
* Centralized settlements are replaced by blockchain transactions.

Under the classical gold standard, governments had to hold gold reserves to print money, usually at a cover ratio of 40%. This meant that for every 100 dollars printed, 40 dollars' worth of gold had to be in reserve. This system limited how much money could be printed.

ShiftCTRL uses a similar idea. Users can create stablecoins, called [**Tabs**](/introduction-1/introducing-tabs), which are pegged to any of the 155 national currencies, by depositing Bitcoin as reserves. These reserves must meet a minimum reserve ratio of 180%.

The core of ShiftCTRL’s model is its decentralization. No single entity can stop or control the system. Instead, all system parameters are managed through decentralized governance, ensuring fairness and stability.


# Introducing Tabs

## Sound Stablecoins

**Tabs** are sound, sound stablecoins that are soft-pegged to national currencies worldwide. At launch, there will be 155 different national currencies available through the protocol, such as sound USD (ⓢUSD), sound GBP (ⓢGBP), and sound ARS (ⓢARS).

Tabs are anchored to Bitcoin, the new gold of the digital era, embodying Bitcoin's core principles of fairness, decentralization, permission-lessness, and resistance to censorship.

## Key Features of Tabs

* **Fully decentralized**: Tabs are created by the community without any central authority. You have full control over your Bitcoin reserves and minted Tabs, maintaining your financial independence.
* **Enhanced usability**: ShiftCTRL is chain-agnostic, giving you the freedom to choose the blockchain that best fits your needs—whether it’s privacy, low fees, decentralization, or fast finality. Currently live on [Base](https://www.base.org/), ShiftCTRL will soon expand to additional blockchains, ensuring enhanced usability without compromise.
* **Community governed**: ShiftCTRL relies on decentralized decision-making. The community oversees the Tab protocol, ensuring it evolves with transparency and shared ownership.

## Existing stablecoins

In 2023, stablecoins facilitated over $12 trillion in transactions on the blockchain, showing their immense utility. However, most stablecoin systems are centralized and use fiat currencies or government securities as reserves. This means they are essentially just crypto versions of government-issued money.

These stablecoins don't solve the problem of inflation; in fact, they make it worse. The fiat reserves held by stablecoin operators increase the money supply through fractional or zero-reserve banking, inflating the currency both in traditional and cryptocurrency forms.

Additionally, there are custodial risks because the collateral for these stablecoins is held in bank accounts that can be prone censorship. They also depend heavily on the current banking system and are subject to changing regulations in different countries.


# The core mechanism

Tabs are minted by depositing Bitcoin reserves into vaults through smart contracts in the Tab Protocol. Users can manage this process via ShiftCTRL’s native user interface, **QWERTY**.

## Minting Tabs

1. **Create a vault**: Users start by creating a vault to deposit their Bitcoin reserves. These vaults are non-custodial, meaning users have full control over their reserves as long as they meet the required reserve ratio.
2. **Deposit reserves**: After creating a vault, users specify and deposit the amount of Bitcoin they want to use as reserves.
3. **Mint Tabs**: With the reserves in place, users can mint Tabs up to the Minimum Reserve Ratio.&#x20;
   * *<mark style="color:orange;">For instance, if you have 2 Bitcoins in your vault, and each Bitcoin is worth 60,000 ⓢUSD, and the MRR is 180%, you can mint up to 66,666.66 ⓢUSD (calculated as 2\*60,000/1.8).</mark>*

## Withdrawing reserves

Vault owners can withdraw their Bitcoin reserves at any time by burning the corresponding amount of Tabs, as long as the reserve requirements are met.


# Reserves

## Bitcoin

Gold has long been valued as reliable money due to its lasting value and scarcity. However, Bitcoin was specifically engineered to serve as money, making it even better than gold in key ways: it is more durable, more scarce, more divisible, more portable, and more fungible.&#x20;

Additionally, Bitcoin is counterfeit-proof, censorship-resistant, and resistant to manipulation. These qualities make Bitcoin the ideal form of sound money that ShiftCTRL uses as its reserve.

## Wrapped/Bridged Bitcoin

Since the ShiftCTRL protocol operates on the Base network, it uses wrapped or bridged ERC-20 versions of Bitcoin (BTC) as reserves. Initially, [cbBTC](https://www.coinbase.com/en-gb/cbbtc) (Coinbase Wrapped BTC) will be used. The community can vote on which versions of wrapped or bridged BTC to accept or remove from the protocol.

While cbBTC is widely trusted and used, its centralized nature, where custodians manage its integrity, has some drawbacks. ShiftCTRL plans to address this by supporting native BTC reserves directly on the Bitcoin network in the second phase of its development.


# Managing vaults

## Minimum reserve ratio (MRR)

The MRR is a safety buffer that helps the Tab protocol handle changes in Bitcoin's value. Vault owners must always keep their reserve ratio above this minimum to ensure stability.

## Risk penalty

If the value of the Bitcoin reserves in a vault drops below the MRR, a Risk Penalty is applied. This penalty is calculated based on how much additional reserve is needed to meet the MRR, multiplied by a penalty rate. The penalty is charged at regular intervals, both of which can be adjusted by the community.

Vault owners are encouraged to keep their reserve ratio well above the MRR to avoid penalties. If a vault’s reserve ratio falls below the MRR, the owner can fix this by adding more reserves or burning some Tabs.

The goal of the Risk Penalty is to encourage cautious behaviour and maintain the protocol's stability without placing an excessive financial burden on vault owners through immediate liquidation. This balanced approach helps make the system more efficient.

Before you can perform vault operations like minting or burning Tabs, withdrawing reserves, or creating a new vault, any outstanding Risk Penalty must be paid. If there's a penalty when new Tabs are minted, it’s automatically deducted from the new Tabs.


# Liquidation

## Liquidation ratio

A vault’s reserves will be liquidated if its reserve ratio drops below a certain threshold, known as the **Liquidation Ratio**. This ensures there are always enough reserves to back all the Tabs in circulation. Liquidations are conducted automatically through the Tab Protocol Auctions.

## Liquidation auction

When a vault is liquidated, its reserves are sold off in a special type of auction called a Dutch auction. Here’s how it works:

1. **Auction start**: The auction begins at a high price for the reserves and gradually lowers the price until enough reserves are sold to cover all the Tabs issued from that vault, including any risk penalties.
2. **Auction process**: The price keeps dropping until either all the needed reserves are sold, or the price reaches a set minimum. The auction is open to everyone, but bids must be in the same Tab currency as the vault being liquidated.
3. **Initial price and reductions**: The auction starts at a price slightly below the market price of the reserves (this is called the Auction Start Discount). If the first round of selling doesn’t cover all the Tabs, the price will drop further at regular intervals (the Auction Step Discount) until it hits a Minimum Liquidation Price, which is the lowest price that can still cover the outstanding Tabs.

This process ensures that there are always enough reserves to back the Tabs, maintaining the stability and reliability of the system.


# CTRL+ALT+DEL

## Currency de-peg

While pegging Tabs to fiat currencies gives them price stability, it also means Tabs will experience the same inflation as those currencies. For example, if the USD loses value due to inflation, the purchasing power of ⓢUSD will also decrease.

Although Bitcoin reserves can offset this inflation over time (since Bitcoin's increase in value allows more Tabs to be minted), this benefit primarily applies to users who mint their own Tabs. Others, who acquire Tabs through different means, won’t have the same protection.

Therefore, once a specific Tab has gained enough network effects, the goal is to de-peg from the fiat currency to eliminate its inflation effects. This de-pegging process is called **Ctrl+Alt+Del**.

## De-pegging process

1. **Initiation and approval**: The de-pegging process begins with a governance proposal. Once approved, the value of the Tab is anchored to Bitcoin at the de-pegging price.
   * *<mark style="color:orange;">For instance, if the de-pegging price is 1 Bitcoin = 60,000 ⓢUSD, then 1 ⓢUSD will be worth 0.00001667 BTC.</mark>*
2. **Reserve calculation**: The amount of Bitcoin required as reserves for the outstanding Tabs in each vault is calculated based on this new ratio.
3. **Consolidation**: All reserves are moved to a single protocol vault. Individual vaults will remain open for their owners claim any excess reserves.
4. **Tab management**: After de-pegging, minting and burning Tabs will occur only through the protocol vault, not individual vaults. The Minimum Reserve and Liquidation Ratios will no longer apply.

## Practical impact

For every 1 ⓢUSD, the protocol vault will hold 0.00001667 BTC in reserve, which can be redeemed on demand.

## Historical comparison

This system mirrors the Classical Gold Standard, where national currencies were defined by specific amounts of gold. For example, £1 was equal to 0.2352 ounces of gold, and $1 was equal to 0.0484 ounces of gold. This method reduced exchange rate volatility, increased currency transparency, boosted confidence, and lowered transaction costs, fostering international trade for many years.

Similarly, the Ctrl+Alt+Del de-peg aims to create a fair, stable, and transparent monetary system by anchoring Tabs to Bitcoin, providing a hedge against inflation and promoting long-term economic stability.


# How to mint Tabs

## Step 1 - Connect Your Wallet

1. Go to QWERTY App
2. Click "Connect Wallet" and link your Metamask wallet.

<figure><img src="/files/xNod3OqFhdpGNGFmSiYx" alt="" width="563"><figcaption></figcaption></figure>

<figure><img src="/files/HXL6Pnr0cvEI4SN72LQf" alt="" width="563"><figcaption></figcaption></figure>

## Step 2 – Choose the Tab Currency

1. Select from the Popular Tab Currencies or scroll down to see all available currencies, grouped by continents.
2. Once you've decided, click "Create Vault."

<figure><img src="/files/qTgSjrfuLD6Tjwo026NK" alt="" width="563"><figcaption></figcaption></figure>

<figure><img src="/files/1cBsQYWnlNAtom6Hoaqs" alt="" width="563"><figcaption></figcaption></figure>

## Step 3 – Deposit Reserves and Mint Tabs

1. Enter the amount of reserves you want to deposit and the amount of Tabs you wish to mint.
2. The simulator will show the reserve ratio of your vault based on your inputs. Ensure you maintain a buffer above the Minimum Reserve Ratio (MRR) to avoid risk penalties.
3. The simulator will also display the liquidation price of your vault. If Bitcoin's price falls below this, your reserves will be liquidated in an automated auction. Pay attention to this price.
4. Once satisfied with your configuration, click "Create Vault."

<figure><img src="/files/5Ig0TylnGmGbLYASRGrO" alt="" width="563"><figcaption></figcaption></figure>

5. In the confirmation pop-up, verify the vault details and then click "Create Vault" to confirm.
6. You will be submitting 2 transactions on-chain. \
   The first transaction is to approve the Protocol smart contract to spend your reserve token.\
   And the second transaction is to call the Protocol smart contract to carry out required operations.

<figure><img src="/files/L08RVwgNj0td7C8sexG9" alt="" width="563"><figcaption></figcaption></figure>

## Step 4 – Complete

1. Congratulations! Your vault is successfully created, and you have minted Tabs.
2. Click "Go to Vault" to view your new vault and get an overview of its key parameters.

<figure><img src="/files/GJb288AFsqrhLoDU9Ktc" alt="" width="563"><figcaption></figcaption></figure>

<figure><img src="/files/m0lSvXCVyZ8NQRaOpWep" alt="" width="563"><figcaption></figcaption></figure>


# How to withdraw reserves

## **Step 1 – Access Your Vault**

1. Go to QWERTY App and [connect your Metamask wallet](/guides/how-to-mint-tabs#step-1-connect-your-wallet).
2. Click "Your Vault" on the navigation bar at the top of the website.

<figure><img src="/files/Vqw92uTHruqa8rgFNSWx" alt="" width="563"><figcaption></figcaption></figure>

3. Select the vault you want to withdraw reserves from.

<figure><img src="/files/Je6aooW6cPvCLJymzpTR" alt="" width="563"><figcaption></figcaption></figure>

## **Step 2 – Withdraw Reserves**

1. Inside your vault, click "Withdraw Reserves."

<figure><img src="/files/ggLOxfkGphQHJU4hbooB" alt="" width="563"><figcaption></figcaption></figure>

2. Enter the amount of reserves you wish to withdraw.
3. The simulator will show the updated reserve ratio based on your withdrawal. Make sure to keep a buffer above the [Minimum Reserve Ratio (MRR)](/how-it-works/managing-vaults#minimum-reserve-ratio-mrr) to avoid risk penalties.
4. The simulator will also display the updated liquidation price of your vault based on the withdrawal amount. Consider this carefully.
5. Once satisfied with your configuration, click "Withdraw Reserves."

<figure><img src="/files/YDNAcGMVU0LYrratRmVi" alt="" width="563"><figcaption></figcaption></figure>

## **Step 3 – Complete**

1. Congratulations! You have successfully withdrawn reserves from your vault.

<figure><img src="/files/YAd1GcsGLh1xc6ZEPxtW" alt="" width="563"><figcaption></figcaption></figure>


# Overview

The ShiftCTRL Tab Protocol comprises both Onchain and Offchain modules.

<figure><img src="/files/0mUn72eS8810tSfOJGE7" alt=""><figcaption></figcaption></figure>

## Onchain

The Onchain module consists of a series of smart contracts deployed on the [Base chain](https://www.base.org/). These smart contracts govern the Tab Protocol and Governance.

### Tab Protocol

<figure><img src="/files/fvo8wcZeptsMXhXxDUCd" alt=""><figcaption></figcaption></figure>

The Tab Protocol is a comprehensive suite of smart contracts designed to manage reserves, Tabs, vault operations, oracles, and risk. Each component works in tandem to ensure the stability and reliability of the protocol.

### Governance

Governance is facilitated through a set of OpenZeppelin Governance smart contracts. These contracts, along with a timelock controller, ensure that only approved proposals are executed.

## Offchain

Offchain modules are integral to the Tab Protocol, focusing on oracle functions and risk monitoring.&#x20;

Although these modules currently operate offchain due to the high costs associated with on-chain execution, this is a necessary design compromise for a self-funded project like ShiftCTRL.

We are fully committed to transitioning all components on-chain as soon as it becomes feasible.

### Tab Oracle

The Tab Protocol's functionality relies on precise, real-time currency exchange rates, which are crucial for vault operations and risk monitoring.&#x20;

The Tab Oracle module receives these live rates from whitelisted oracle feed providers, carefully vetted by the community through Onchain governance. By aggregating data from multiple sources at regular intervals, the exchange rates are derived using median values to ensure accuracy and reliability.

This median rate is then signed and retrieved whenever a user performs vault operations—such as opening new vaults or withdrawing Tab & reserves.&#x20;

To maintain security, the Onchain smart contract verifies that the rate has been signed by an authorized signee, ensuring that only validated data is used in the protocol’s operations.

{% hint style="info" %}
**Note:** The oracle has been bootstrapped using three currency exchange rate providers. \
As the protocol grows, we anticipate that more oracle feeds will come directly from the community, supported by a reward system that compensates these providers for their services.
{% endhint %}

### Tab Keeper

The Tab Keeper module is essential to the stability of the Tab Protocol, continuously monitoring vaults to ensure their reserve ratios remain above the configured threshold. By regularly retrieving live exchange rates from the Tab Oracle, the module accurately assesses each vault’s reserve ratio.

If a vault’s reserve ratio falls below the set threshold (default 180%), a risk penalty is automatically applied to the vault. Should the ratio decline further and reach the liquidation threshold (default 120%), the Tab Keeper initiates vault liquidation. This process involves selling the reserves, starting at a higher price and gradually lowering it until sufficient reserves are sold to recover all outstanding Tabs from the liquidating vault, thereby protecting the integrity of the protocol.


# Tab Protocol Smart Contract

Github repository: [Tab Protocol](https://github.com/shiftctrl-money/tab-protocol)


# Governance

The ShiftCTRL Tab Protocol is governed by a Decentralized Autonomous Organization (DAO) through a series of onchain governance smart contracts, built on the robust and battle-tested OpenZeppelin frame

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


# Oracle

The ShiftCTRL Tab Protocol relies on two essential contracts for oracle management: the PriceOracleManager and PriceOracle contracts.

### PriceOracleManager contract

The PriceOracleManager contract is responsible for storing oracle-related configurations and managing oracle feed providers for the Tab Protocol.

Each oracle feed provider is whitelisted through a governance proposal, which involves executing the `addPriceOracleProvider` function in the GovernanceAction contract. It’s important to note that oracle feed providers are responsible for proposing the reward they wish to receive in CTRL tokens. The community then considers this reward when deciding whether to whitelist them.

```solidity
addPriceOracleProvider(
  address provider,
  address paymentTokenAddress,
  uint256 paymentAmtPerFeed,
  uint256 blockCountPerFeed,
  uint256 feedSize,
  bytes32 whitelistedIPAddr
)
```

Once an oracle feed provider is successfully whitelisted, it can be managed through corresponding GovernanceAction functions, which are mapped to the functions within the PriceOracleManager contract.

| GovernanceAction contract    | PriceOracleManager contract |
| ---------------------------- | --------------------------- |
| addPriceOracleProvider       | addProvider                 |
| configurePriceOracleProvider | configureProvider           |
| removePriceOracleProvider    | disableProvider             |
| pausePriceOracleProvider     | pauseProvider               |
| unpausePriceOracleProvider   | unpauseProvider             |

The Tab Oracle Offchain module monitors the performance of each feed provider and interacts with the PriceOracleManager at fixed intervals. This interaction increases the feed provider's payment value based on the number of feeds submitted.

```solidity
submitProviderFeedCount(
  address[10] calldata _providerList,
  uint256[10] calldata _feedCount,
  uint256 _timestamp
)
```

Feed providers' payments are calculated and stored according to their `paymentAmtPerFeed` setting.&#x20;

Feed providers can then call the PriceOracleManager function:

```solidity
withdrawPayment(address _withdrawToAddr)
```

at any time to claim their payment.

{% hint style="info" %}
**Note:** It is the responsibility of community governance to ensure that sufficient CTRL tokens are allocated to the PriceOracleManager contract. This ensures that feed providers receive their rewards, and that the oracle system operates seamlessly.
{% endhint %}

{% hint style="info" %}
**Note:** The updatePrice function is now obsolete. The Tab Oracle module has discontinued its use, no longer calling it at fixed intervals to update Tab rates in batches. This change was made to reduce operational costs. Instead, the protocol has adopted an on-demand rate update mechanism, where live rates are retrieved whenever a function requiring a live rate is called.
{% endhint %}

By default, this contract is configured with a `movementDelta` of 0.5% and an `inactivePeriod` of 1 hour. This means that a Tab's rate may remain unchanged (inactive) for up to 1 hour if market fluctuations are minimal (delta < 0.5%) during that period.&#x20;

After 1 hour of inactivity, the Tab Oracle Offchain module will force an update of the median rate to the latest rate, regardless of the fluctuation level. These values can be adjusted using the PriceOracleManager contract's updateConfig function.

### PriceOracle contract

The PriceOracle contract stores all active Tab rates as BTC/TAB pairs.&#x20;

To save operational costs, Tab rates are updated on-demand. When a user performs a vault operation requiring a Tab rate, the transaction is submitted along with the signed latest Tab price to the VaultManager contract. The signed Tab price is then passed to the PriceOracle by calling the `updatePrice` function.

{% hint style="info" %}
Note: The `setPrice` is now obsolete. The Tab Oracle module no longer calls `updatePrice` at fixed intervals, and as a result, the `setPrice` function is no longer utilized.
{% endhint %}


# Token

The ShiftCTRL Tab Protocol creates various types of ERC-20 tokens to serve different purposes:

### Governance Token

ShiftCTRL's native CTRL token is used as the [governance](/governance/decentralised-governance) token. It is ERC-20 compatible and has a hard cap of 1 billion (1,000,000,000) tokens.

### Tab Token

At inception, the Tab Protocol supports 155 Tab currencies.

For more details, please refer to the Tab addresses [here](https://www.shiftctrl.money/tabAddress.json).

{% hint style="info" %}
**Note:** Each Tab is associated with a `riskPenaltyPerFrame` value (default 1.5%), which determines the risk penalty amount charged to a vault if the vault's reserve ratio falls below the configured threshold (default 180%). These values can be updated through governance by calling the `GovernanceAction.updateTabParams` function.
{% endhint %}

### Tab Factory

All Tab contracts are deployed by the Tab Factory using create3 method. \
This approach ensures that Tab token addresses remain consistent across EVM chains.

TabFactory contratc itself relies on <https://github.com/ZeframLou/create3-factory> to have consistent contract address.

### Tab Registry

The Tab Registry contract is responsible for managing Tabs within the protocol. The ShiftCTRL community can propose changes to the Tab Registry, such as disabling or enabling Tabs, or creating new ones, by submitting a proposal to call a function in the GovernanceAction contract.

**To create a Tab pegged to a national currency not currently supported in the Tab Protocol**, submit a proposal that calls GovernanceAction.createNewTab. It's crucial to ensure that at least three corresponding oracle feeds are available for the oracle to derive an exchange rate for the new Tab. Without these feeds, the new Tab will remain in a frozen state.

**To create a new Tab that is pegged to another existing Tab** (e.g., sUSD), the proposal must include two actions: GovernanceAction.createNewTab to create the new Tab, and GovernanceAction.setPeggedTab to link the new Tab to an existing one.


# Reserves

### ReserveSafe contract

Tab Protocol stores BTC reserves into a dedicated ReserveSafe contract. \
No one has permission to unlock BTC from the Safe except Governance (for migration) or VaultManager contract, which is only authorized to perform withdrawal by vault owner.

### ReserveRegistry contract

The ShiftCTRL community can propose the addition of new reserves (such as other forms of wrapped or bridged BTC) or the disabling of a reserve already registered through the protocol's governance module.&#x20;

At inception, [cbBTC](https://www.coinbase.com/en-gb/cbbtc) (Base Mainnet: [0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf](https://basescan.org/address/0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf)) is pre-registered in the ReserveRegistry contract and can be used to create a vault for minting Tabs.&#x20;

{% hint style="info" %}
**Note:** The ReserveRegistry contract supports reserve tokens with varying decimal values. \
For example, while cbBTC operates with 8 decimals, vaults at the protocol level can support up to 18 decimals. The system will call the `ReserveSafe.getNativeTransferAmount` function to retrieve the correct reserve amount based on the reserve type's decimal value.
{% endhint %}

{% hint style="info" %}
**Note:**&#x20;

Each Tab type is associated with default configuration values below regardless of Reserve Type in use:

* Minimum reserve ratio: 180%
* Liquidation ratio: 120%

These values can be adjusted by calling the `GovernanceAction.updateTabParams` function.
{% endhint %}


# Vault

## VaultManager contract

The VaultManager contract is the core component of the Tab Protocol, responsible for managing and executing various vault operations:

1. **createVault:** Create a vault for depositing reserves into the protocol and minting Tabs from the deposited reserves. The QWERTY application retrieves the signed median rate from an authorized source and submits it to the `createVault` function.

{% hint style="info" %}
**Note:** Before calling the createVault function, the QWERTY application will invoke the`approve`function on the reserve token to grant sufficient allowance to the VaultManager.
{% endhint %}

2. **withdrawTab:** Mint additional Tabs from the user's vault. The signed median rate is included in the submission.
3. **paybackTab:** Burn Tabs from the user's wallet to reduce the outstanding Tab balance of the user's vault.

{% hint style="info" %}
**Note:** Before calling the paybackTab function, the QWERTY application will invoke the`approve`function on the Tab token to grant sufficient allowance to the VaultManager.
{% endhint %}

4. **withdrawReserve:** Withdraw reserves from the user's vault. The signed median rate is included in the submission.
5. **depositReserve:** Deposit additional reserves into the user's vault.

{% hint style="info" %}
**Note:** Before calling the depositReserve function, the QWERTY application will invoke the `approve` function on the reserve token to grant sufficient allowance to the VaultManager.
{% endhint %}

### chargeRiskPenalty function

The Tab Keeper module continuously monitors the reserve ratios of all vaults. If a vault's reserve ratio falls below the configured threshold, the system calculates the corresponding risk penalty and adds it to the vault's outstanding Tab balance.

If unaddressed, this risk penalty can further deteriorate the vault's reserve ratio, potentially leading to liquidation, especially if the market value of the reserve assets continues to decline.

To improve the reserve ratio of an existing vault, users can either use the `paybackTab` function to reduce the vault's outstanding Tab balance or the `depositReserve` function to increase the vault's reserve amount.

### liquidateVault function

When a vault's reserve ratio drops below the liquidation threshold (default 120%), the system triggers a liquidation process via the `liquidateVault` function. The vault's assets are auctioned off to cover the outstanding Tabs.&#x20;

Any excess reserves remaining after the auction are returned to the vault. The vault owner can then use the `withdrawReserve` function to claim the remaining reserves.

### ctrlAltDel function

The ShiftCTRL Tab Protocol community has the option to propose and vote to de-peg a Tab from its fiat currency to Bitcoin using the `ctrlAltDel` function.

Once the community successfully executes a Ctrl-Alt-Del de-peg, matching value of reserves are transferred into ProtocolVault contract, and excess reserves remain in their respective vaults. \
These vaults remain open until the vault owner claims the excess reserves using the `withdrawReserve` function.

## ProtocolVault contract

Following a successful Ctrl-Alt-Del de-peg action, a new Protocol Vault is created to consolidate the reserves from all de-pegged Tab vaults. The protocol then manages all future Tab minting and burning actions based on the newly defined BTC peg (e.g., 1 BTC : 55,000,000 sARS).

### buyTab function

The `buyTab` function allows users to mint Tabs by depositing reserves into the protocol vault.

{% hint style="info" %}
**Note:** Since the BTC peg is fixed and does not fluctuate, there is no need for excess reserves. \
Metrics such as minimum reserve ratios, liquidation thresholds, and risk penalties do not apply to Tabs that have been successfully de-pegged.
{% endhint %}

### sellTab function

The `sellTab` function enables users to withdraw BTC reserves from the protocol vault by burning their Tabs, based on configured conversion rate.


# Keeper

## VaultKeeper contract

The VaultKeeper contract manages the examination of vaults, including charging and managing risk penalties or triggering vault liquidations.

* #### Setting: riskPenaltyFrameInSecond

  Default is set to 86,400 seconds (24 hours). This defines the interval at which the risk penalty is calculated and accrued.

### checkVault function

The Tab Keeper module performs offchain monitoring and calculations of vault conditions at fixed intervals. When a vault's reserve ratio drops below the configured minimum reserve ratio (default 180%) established by the protocol, the Keeper triggers the `checkVault` function on-chain with the signed live median rate.

The on-chain `checkVault` function verifies the vault's reserve ratio and records the highest calculated risk penalty amount for the current time frame associated with the under-reserved vault.

Upon the maturity of the risk penalty time frame, or if the reserve ratio no longer breaches the minimum threshold, the accumulated risk penalty amount is applied to the corresponding vaults and reflected in the vault's outstanding Tabs.

If the vault's reserve ratio falls below the liquidation threshold, the `checkVault` function will immediately apply the highest recorded risk penalty and initiate vault liquidation.

### pushVaultRiskPenalty function

This function calculates the risk penalty amount and charges it to the vault.


# Auction

## AuctionManager contract

Vault Liquidation is performed using a variant of the Dutch auction. \
Commencing at a higher price point, the auction progressively lowers the price until adequate reserves are sold to cover all outstanding Tabs or until the price reaches its minimum threshold.&#x20;

All submitted bids must be in same Tab currency as the vault undergoing liquidation.

Refer to `Config` contract that stored auction settings:

`auctionStartPriceDiscount = 90` \
`(10% discount is applied to market price when auction is started)`

\
`auctionStepPriceDiscount = 97` \
`(3% discount is applied whenever auction proceeds to next round)`\
\
`auctionStepDurationInSec = 60` \
`(60 seconds of each auction round)`\
\
`maxStep = 9`\
`(maximum of 9 auction rounds)`

### bid function

The auction is open to all participants.

Bidders use Tabs to bid on discounted BTC reserves.

{% hint style="info" %}
**Note:** A sufficient balance of Tabs and allowance amount is required to place a bid. \
Ensure that you call the `approve` function on the Tab token to grant the AuctionManager contract the necessary spending permissions.
{% endhint %}

After the auction concludes, any excess or leftover reserves are returned to the user's vault. \
The vault owner can then use the `withdrawReserve` function to reclaim these excess reserves.


# Tab Oracle & Tab Keeper

Github repo: [Tab Oracle](https://github.com/shiftctrl-money/tab-oracle) & [Tab Keeper](https://github.com/shiftctrl-money/tab-keeper)

<figure><img src="/files/vByUFX4tit8kXMaqA883" alt=""><figcaption><p>Tab Oracle &#x26; Tab Keeper</p></figcaption></figure>

## [Tab Oracle](/developer/tab-protocol-smart-contract/oracle)

Oracle feed providers for the ShiftCTRL Tab Protocol are approved through governance. \
These providers are responsible for submitting feed data at fixed intervals (e.g., every 5 minutes) to the Tab Oracle module. The Tab Oracle processes all submitted feeds to derive the median exchange rates for all active Tab currencies.

A minimum of three providers is required to establish a median rate. If a median rate cannot be determined for three consecutive intervals, the affected Tab is set to a disabled state on-chain, preventing any vault operations involving that Tab. Vault operations can only be re-enabled once a valid median rate is established for three consecutive intervals.

Additionally, the Tab Oracle module tracks the performance of oracle feed providers. \
Each provider’s submission count is logged on-chain by calling the `PriceOracleManager.submitProviderFeedCount` function.

### Tab Oracle API Endpoints:

| Endpoint                                                             | Description                                                                                          |
| -------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
| /api/v1/auth/create\_or\_reset\_api\_token/\[provider\_pub\_address] | Authorized provider calls this endpoint to generate or reset API token to submit currrency rate data |
| /api/v1/feed\_provider/\[provider\_pub\_address]/feed\_submission    | Authorized provider calls this endpoint to submit currency rate data                                 |
| /api/v1/tab/list                                                     | Retrieve Tab details                                                                                 |
| /api/v1/peggedTab/list                                               | Retrieve Pegged Tab details                                                                          |
| /api/v1/price\_history/\[currency]                                   | Protected endpoint to retrieve historical prices                                                     |
| /api/v1/median\_price/\[currency]                                    | Protected endpoint to retrieve latest median price                                                   |
| /api/v1/median\_price/\[wallet\_address]/\[currency]                 | Proteced endpoint to retrieve signed latest median price                                             |
| /api/v1/feed\_provider/list                                          | Protected endpoint reserved for internal usage (e.g. used by tab-ui module)                          |

## [Tab Keeper](/developer/tab-protocol-smart-contract/keeper)

The Tab Keeper module comprises two submodules that operate at fixed intervals to monitor vault reserve ratios. These submodules are responsible for triggering liquidations when necessary and updating risk penalties onchain.

For detailed information on risk penalty calculations, please refer to the [whitepaper](https://qwerty.shiftctrl.money/shared/shiftCTRL_whitepaper.pdf).


# ShiftCTRL Public Testnet Launch

After more than two years of active development, we are excited to announce the launch of the ShiftCTRL public testnet!&#x20;

This testnet is open to developers, economists, and enthusiasts who want to experiment with ShiftCTRL.&#x20;

Participating in the testnet offers a hands-on opportunity to explore a new global monetary framework. Your input during this phase will be crucial in refining and advancing the network.

## **Important Links to Participate**

***QWERTY*** &#x20;

[https://test.shiftctrl.money/](https://test.shiftctrl.money)

***Price Oracle*** &#x20;

<https://test.shiftctrl.money/oracle>

***ShiftCTRL Faucet*** &#x20;

<https://test.shiftctrl.money/faucet>

***Base Sepolia Testnet Faucet***

<https://www.alchemy.com/faucets/base-sepolia>


# Testnet Participation Guide

Here's a Step-by-Step Guide

## Step 1 - Connect Wallet to the Base Sepolia Network

To interact with the ShiftCTRL testnet, you will first need to add the Base Sepolia network to your wallet. The process of adding Base Sepolia to your wallet may vary depending on the wallet you are using. The steps below are for MetaMask. If you are using a different wallet, there is likely a similar process you can follow.

1. Open your Metamask extension. You'll see your current network displayed on the top left. \
   Click on it.

<div data-full-width="true"><figure><img src="/files/YMmeOZtT25FwI6tFR97P" alt="" width="355"><figcaption></figcaption></figure></div>

2. When prompted to select a network, click ‘+ Add network’.

<figure><img src="/files/tdnhhVZu0ymXLSU4CmD7" alt="" width="356"><figcaption></figcaption></figure>

3. A new browser tab will open displaying the popular networks. \
   Click on "Add" for Base Mainnet, and then click ‘Add a network manually’ at the bottom of the screen to add testnet manually.

<figure><img src="/files/4xMQC5P8vaMjC1bHVfxs" alt="" width="563"><figcaption></figcaption></figure>

4. When prompted for network details, input the following information in each respective field and click ‘Save’:

<table data-header-hidden data-full-width="true"><thead><tr><th width="202"></th><th></th></tr></thead><tbody><tr><td>Network Name</td><td><pre><code>Base Sepolia
</code></pre></td></tr><tr><td>New RPC URL</td><td><pre><code>https://sepolia.base.org/
</code></pre></td></tr><tr><td>Chain ID</td><td><pre><code>84532
</code></pre></td></tr><tr><td>Currency Symbol</td><td><pre><code>ETH
</code></pre></td></tr><tr><td>Block Explorer URL</td><td><pre><code>https://sepolia-explorer.base.org/
</code></pre></td></tr><tr><td></td><td>You may refer to official <a href="https://docs.base.org/chain/network-information">Base Docs</a> too.</td></tr></tbody></table>

5. If the information is inputted correctly, a pop-up will inform you that the network has been added successfully. Click ‘Switch to Base Sepolia’ to continue.

<figure><img src="/files/lqHlBW51rbO1ybGzq6Vz" alt="" width="563"><figcaption></figcaption></figure>

5. **Step 1 complete!**  You have successfully connected your wallet to the Base Sepolia Network.

## Step 2 - Add Test Tokens to Wallet

Before retrieving tokens from the faucet, you need to add the test tokens to your wallet.

1. On your wallet page, click ‘+ Import tokens’.

<figure><img src="/files/c148Z0bK8nw9aNaYbiKu" alt="" width="563"><figcaption></figcaption></figure>

2. On the import token page, input the CTRL token contract address:

{% code title="CTRL Token Contract Address" %}

```
0x193410b8cdeD8F4D63E43D0f2AeD99bd862ed1Bc
```

{% endcode %}

<img src="/files/RkPhwNTeJh25NINfE4iq" alt="" width="563">

3. If you are on Base Sepolia testnet and token contract address is inputted correctly, the Token symbol and Token decimal should auto-populate. \
   Click ‘Next’ to continue.\
   ![](/files/5KQADRRVTuy46YQ95NoM)
4. On the subsequent (confirmation) page, click ‘Import’.

<img src="/files/y4n4rc16tXs1ipeLw4t7" alt="A screenshot of a computer" width="563">

5. You have successfully imported the CTRL token to your wallet. \
   Next, repeat the same procedure to import cbBTC and other Tab currencies you wish to test:

{% code title="cbBTC Token Address:" %}

```
0x7eC62ECbE14B6E3A8B70942dFDf302B4dd9d6a51 (to simulate actual cbBTC in mainnet)
```

{% endcode %}

&#x20;      Here are the token contract addresses for some of the popular Tab currencies

{% code title="sUSD Token Address:" %}

```
0xc99E6c8Fb2cD8adA848FFcDfafC46d2D300B443b
```

{% endcode %}

{% code title="sEUR Token Address:" overflow="wrap" %}

```
0xf42f613608Ff5Bb1B6B584243101552E11A58c7F
```

{% endcode %}

{% code title="sJPY Token Address:" %}

```
0x60e513F41aF473D447244076F8c3bF65152646a8
```

{% endcode %}

&#x20;      For all the Tab contract addresses, please refer to [this page](https://www.shiftctrl.money/tabAddress.json).&#x20;

6. Once completed, your wallet should look like the image below. **Step 2 is now complete.**

\<img src="/files/W0r84IgMUzr8H4S5PYbF" alt="A screenshot of a web page

" width="563">

## **Step 3 - Request Tokens from Faucets**

To perform tests on QWERTY, you will need ETH test tokens to pay for gas fees.

1. Requesting ETH Test Tokens:
   * Head over to [Alchemy Faucets](https://www.alchemy.com/faucets/ethereum-sepolia). ([https://www.alchemy.com/faucets/base-sepolia](https://www.alchemy.com/faucets/arbitrum-sepolia))<br>

     <figure><img src="/files/MFIeGM4dI3GX4IkCCAl0" alt=""><figcaption></figcaption></figure>
   * Copy your wallet address.
   * Paste your wallet address into the faucet and click ‘Send me ETH’ to receive ETH test tokens.

{% hint style="info" %}
Your wallet must have minimum balance of 0.001 ETH on Base mainnet to request for Base Sepolia ETH.
{% endhint %}

2. Requesting cbBTC and CTRL Test Tokens

* You will also need cbBTC test tokens to deposit as reserve for minting Tabs, and CTRL test tokens if you wish to test governance.
* To request cbBTC and CTRL, go to the [ShiftCTRL Faucet](https://test.shiftctrl.money/faucet).&#x20;

  <figure><img src="/files/k7ILurjjEbrihy7xWwtJ" alt="" width="563"><figcaption></figcaption></figure>
* Input your wallet address and click ‘Request’ to receive your test tokens.

3. **Step 3 is complete!** You are all set to begin testing.

{% hint style="info" %}
To test ShiftCTRL Governance with CTRL token, visit [Tally](https://www.tally.xyz/gov/shiftctrl-test).
{% endhint %}


# Feedback

We highly value feedback and insights from our community as they are essential for improving the protocol. Whether you have a bug report or a suggestion for enhancing the network, we want to hear from you.

Visit our dedicated [Discord](https://discord.gg/7w6JhTNt9K) server and navigate to the[ #testnet-feedback](https://discordapp.com/channels/1224277931875106876/1255541976317694076) channel. Here, you can post your issues and provide any relevant information. Our team closely monitors this channel and will respond as quickly as possible.

Thank you for your participation and support in making ShiftCTRL better!


# Decentralised governance

ShiftCTRL is a decentralized public protocol governed by its community members. \
Governance in ShiftCTRL is a democratic process where members can submit, vote on, and implement proposals. The CTRL token is the governance token, and each token gives the holder voting rights to decide on proposed changes.<br>


# Vote delegation

ShiftCTRL's governance system works through vote delegation. CTRL token holders can either self-delegate or delegate their voting power to others.

Good governance requires staying informed about various ideas and proposals, which can be challenging. These proposals often involve complex topics like statistics, economics, and technology.

Vote delegation helps by allowing community members to delegate their voting power to delegates who are knowledgeable and can make well-informed decisions. This not only increases overall participation but also improves the efficiency of the governance process, especially when there are many stakeholders involved.

Additionally, vote delegation makes ShiftCTRL's governance more inclusive. It allows people who don’t own CTRL tokens to participate and contribute to decision-making by aligning with trusted delegates.\
\
Visit testnet governance in [Tally](https://www.tally.xyz/gov/shiftctrl-test) to perform a delegation using CTRL token from faucet.

Refer to [this guide](https://docs.tally.xyz/how-to-use-tally/notifications) to subscribe to notifications of the project.


# Governance process

## Proposals

To submit a governance proposal, proposers need at least 0.5% of CTRL tokens delegated to them. This is to prevent spamming.

### Common types of proposals include:

* **Parameter Change**: Adjust protocol parameters.
* **Add Tab**: Create a new Tab currency, giving it a name and pegging it to Bitcoin or a fiat currency.
* **Freeze Tab**: Temporarily disable all operations for a Tab currency to protect it from potential threats.
* **Unfreeze Tab**: Re-enable a frozen Tab currency once the threat is resolved.
* **Add Oracle**: Approve a new price oracle for the protocol.
* **Remove Oracle**: Remove an existing price oracle.
* **Add Reserve**: Accept a new wrapped/bridged ERC-20 representation of Bitcoin as reserves.
* **Remove Reserve**: Remove an existing wrapped/bridged ERC-20 representation of Bitcoin from reserves.
* **Ctrl+Alt+Del**: De-peg a Tab from its fiat currency.

## Voting

After a proposal is submitted, there is a 2-day review period. Then, a 3-day voting period begins.&#x20;

#### During this time, delegates can vote:

* **Yes**: In favor of the proposal.
* **No**: Against the proposal.
* **Abstain**: Neither for nor against, but the vote counts towards the quorum.

#### For a proposal to be accepted, it must meet these conditions:

1. **Quorum**: A minimum level of voter participation.
2. **Threshold**: A majority of votes must be in favor.

If accepted, the proposal is placed in a timelock for 2 days before it can be implemented.

## Execution

Smart contracts manage the voting process. Each proposal has a Proposal Contract with specific actions. Once a proposal is accepted, the proposer can execute it after the timelock, and the changes are automatically applied by the proposal handler.


