# Staking PassKashToken (PKT)

The PassKashStaking contract allows PKT holders to stake tokens and earn rewards based on predefined staking plans. Staking helps secure the PassCash ecosystem, incentivizes long-term holding, and rewards users proportional to their stake and chosen plan duration.

#### Staking Plans

Users can choose from **three distinct staking plans**, each offering different reward rates and lock-up periods:

| Plan ID | Duration | Daily Reward Rate | Locked? | Description                                                   |
| ------- | -------- | ----------------- | ------- | ------------------------------------------------------------- |
| 1       | 30 days  | 5% (500 bps)      | No      | Flexible plan, withdraw anytime after 30 days without penalty |
| 2       | 180 days | 15% (1500 bps)    | Yes     | Locked plan with higher rewards                               |
| 3       | 365 days | 30% (3000 bps)    | Yes     | Long-term locked plan with highest rewards                    |

*Note:* Reward rates are expressed in basis points (bps), where 100 bps = 1%.

### Staking Requirements

* **Minimum stake amount:** 1,000 PKT
* **Maximum stake amount:** 500,000 PKT
* **Token:** PassKashToken (PKT) — ERC20 compliant

### How Staking Works

1. **Stake Tokens:**\
   Users deposit PKT tokens into the staking contract under their chosen plan. Tokens are transferred securely using OpenZeppelin’s SafeERC20 methods.
2. **Lock-up Period:**
   * Locked plans require tokens to remain staked for the full duration (180 or 365 days) before withdrawal.
   * The flexible plan allows withdrawal any time after 30 days.
3. **Reward Calculation:**\
   Rewards accrue daily based on the staked amount and plan’s daily reward rate:

   Reward=Amount×RewardRate (bps)×Days Staked10,000\text{Reward} = \frac{\text{Amount} \times \text{RewardRate (bps)} \times \text{Days Staked}}{10,000}Reward=10,000Amount×RewardRate (bps)×Days Staked​
4. **Withdrawal:**\
   After the minimum duration (and lock-up for locked plans), users can withdraw their initial stake plus rewards. Early withdrawal is restricted on locked plans.

### Contract Address

Staking is performed via the official PassKashStaking smart contract deployed at:\ <mark style="color:red;">0x188AEb82B227b515A7b899c30B1bb155f5B12798</mark>

*Always confirm the contract address from official PassCash channels before interacting.*

#### Security & Upgradability

* The contract uses OpenZeppelin’s upgradeable libraries, enabling future improvements without disrupting user stakes.
* It implements `ReentrancyGuard` to prevent reentrancy attacks and `Pausable` functionality to pause operations in emergencies.
* Ownership is restricted to authorized PassCash team members to maintain contract integrity.
