> For the complete documentation index, see [llms.txt](https://docs.polyflow.tech/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.polyflow.tech/stake/staking-workflow.md).

# Staking Workflow

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

## **Stake**

1-1. The user calls the contract's stake method to transfer USDT into the contract.

1-2. The user receives **USDT-pfUSDT-LP tokens** in return as proof of staking.

## **Swap**

2-1. The user can call the contract's swap method to exchange USDT for pfUSDT or vice versa.

* The swap method can specify a recipient address.
* **User exchanges for pfUSDT**:
  * **0% fee**
  * The exchangeable amount = The amount of pfUSDT available in the pool.
* **User exchanges for USDT**:
  * There is a redemption fee, which could be determined by a curve (fee model).
  * The exchangeable amount = The amount of USDT available in the pool.

2-2. The user receives **USDT or pfUSDT** in return.

## **Unstake**

3-1. The user calls the contract's unstake method to transfer **USDT-pfUSDT-LP tokens** back into the contract.

3-2. Based on the token quantity, the contract redeems a proportional amount of USDT or pfUSDT to the user.
