# Staking Guide

## Getting Started

1. Visit [staking.zentachain.io](https://staking.zentachain.io)
2. Connect your Web3 wallet (MetaMask, Trust Wallet, or WalletConnect-compatible)
3. Ensure you have CHAIN tokens and ETH for gas fees in your wallet

***

## Understanding Pools

Before staking, review the available pool parameters:

| Parameter              | What It Means                                               |
| ---------------------- | ----------------------------------------------------------- |
| APR                    | Your annual reward rate (e.g., 16% APR = 1600 basis points) |
| Minimum Stake          | Lowest amount you can deposit                               |
| Maximum Stake Per User | Upper limit on your individual stake (if enforced)          |
| Pool Size              | Total capacity of the pool                                  |
| Claim Time Lock        | How long you must wait between claiming rewards             |
| Unstake Time Lock      | How long after staking before you can withdraw              |

***

## How to Stake

### Method 1: Standard Staking (Two Transactions)

1. Select a pool and review its parameters
2. Enter the amount of CHAIN you want to stake
3. **Transaction 1:** Approve the contract to spend your tokens
4. **Transaction 2:** Confirm the staking transaction

### Method 2: Permit-Based Staking (One Transaction)

For wallets that support ERC-2612 permits:

1. Select a pool and enter your amount
2. Sign the permit message (off-chain, no gas)
3. **Transaction:** Confirm staking — approval and deposit happen together

{% hint style="info" %}
Permit-based staking saves gas by combining approval and staking into a single transaction.
{% endhint %}

***

## Managing Your Stake

### Dashboard

After staking, your dashboard shows:

* **Active Stakes** — Your staked amounts across all pools
* **Accumulated Rewards** — Real-time reward tracking
* **Time Locks** — Remaining time until you can claim or unstake

### Claiming Rewards

1. Check that your claim time lock has elapsed
2. Click **Claim Rewards**
3. Confirm the transaction in your wallet
4. Rewards are minted directly to your wallet

{% hint style="warning" %}
Claiming resets the claim timer. You must wait the full claim time lock period before claiming again.
{% endhint %}

### Adding More Tokens (Compounding)

You can add tokens to an existing stake at any time:

* Your previous rewards continue accruing
* The **unstake timer resets** for the entire amount
* New rewards begin accruing on the combined total

***

## Unstaking

### Standard Unstake

1. Verify the unstake time lock has elapsed
2. Click **Unstake**
3. Confirm the transaction
4. Your staked tokens plus unclaimed rewards are returned to your wallet

### Emergency Unstake

Only available when a pool is in emergency mode:

* Bypasses time locks
* Returns all staked tokens plus accumulated rewards
* Emergency mode is controlled by the contract owner

***

## Pool Status Types

| Status    | Meaning                                          |
| --------- | ------------------------------------------------ |
| Active    | Normal operations — staking, claiming, unstaking |
| Paused    | Temporarily suspended — no new operations        |
| Emergency | Emergency mode — immediate unstake available     |

***

## APR Changes

APR changes are subject to a **48-hour delay** to prevent front-running:

1. A change is scheduled and becomes publicly visible on-chain
2. After 48 hours, the new APR takes effect
3. You can monitor pending changes through the dashboard

***

## Security

* **Reentrancy Protection** — All transactions are protected against reentrancy attacks
* **Smart Contract Callers Blocked** — Only externally owned accounts (wallets) can interact
* **Timestamp Buffer** — A 15-minute buffer prevents timestamp manipulation in reward calculations
* **Emergency Cooldown** — Emergency mode can only be toggled once every 24 hours

***

## Troubleshooting

| Issue                | Solution                                         |
| -------------------- | ------------------------------------------------ |
| Transaction fails    | Check you have enough CHAIN and ETH for gas      |
| Cannot claim rewards | Wait for the claim time lock to expire           |
| Cannot unstake       | Wait for the unstake time lock to expire         |
| Pool is paused       | Wait for the pool to be resumed by the admin     |
| Insufficient balance | Verify CHAIN tokens are in your connected wallet |

***

## Contracts

All contracts are verified on Etherscan:

| Contract    | Address                                                                                        |
| ----------- | ---------------------------------------------------------------------------------------------- |
| StakeChain  | [0xC00D35881...](https://etherscan.io/address/0xC00D35881e66E9eCC116De9696Ae12A18104B106#code) |
| CHAIN Token | [0x6B58cfBEd...](https://etherscan.io/address/0x6B58cfBEdCfe7C59d456c864c92257910A61D8FC#code) |

***

## Links

* **Staking Platform:** [staking.zentachain.io](https://staking.zentachain.io)
* **Technical Documentation:** [Staking Contract Docs](/chain-network/staking.md)
* **Support:** [zentachain.io/contact](https://zentachain.io/contact)


---

# 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.zentachain.io/chain-network/staking-guide.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.
