Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 62 additions & 2 deletions docs/bnb-smart-chain/staking/user-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,14 +64,74 @@ After the unbonding period, you can claim your stakes by clicking the `Claim` bu

## FAQs

### Which wallet can be used to delegate to validators?
### Q1: Which wallet can be used to delegate to validators?

Currently, `MetaMask` and `TrustWallet` are supported, along with any wallets compatible
with `WalletConnect`.

### Can I delegate/undelegate/redelegate/claim stakes on explorers?
### Q2: Can I delegate/undelegate/redelegate/claim stakes on explorers?

If you want to do the aforementioned delegate/undelegate/redelegate/claim operations on BscScan or BscTrace,
you should call the staking hub contract in the following URLs:
* [BscScan Stake Hub](https://bscscan.com/address/0x0000000000000000000000000000000000002002#writeContract)
* [BscTrace Stake Hub](https://bsctrace.com/address/0x0000000000000000000000000000000000002002?tab=Contract&p=1&view=contract_write)

### Q3: What is staking credit (stBNB)?

When you delegate BNB to a validator, you receive **staking credit tokens** as proof of your stake. Each validator issues its own unique credit token:

**Token Naming:**
- Name: `Stake{{validator moniker}}Credit`
- Symbol: `st{{validator moniker}}`
- Example: Staking with "BNB48Club" → receive "stBNB48Club"

**Key Properties:**

- ✅ Represents your staked BNB + accumulated rewards
- ✅ Auto-compounding: value increases as validators earn rewards
- ✅ Rewards automatically distributed when you undelegate
- ❌ Non-transferable between addresses and each validator's credit is unique

### Q4: How to calculate my staking balance?

Your staking credit value in BNB can be calculated using:

```
Your BNB Value = (stCreditAmount × totalPooledBNB) ÷ totalSupply()
```

**Where:**

- `stCreditAmount`: Your staking credit balance
- `totalPooledBNB`: Total BNB in validator's pool (stakes + rewards)
- `totalSupply()`: Total supply of the validator's staking credit

**Example:**

| Time | totalPooledBNB | totalSupply | Your stCredit | Your Value | Profit |
|------|----------------|-------------|---------------|------------|--------|
| Day 1 | 10,000 BNB | 10,000 | 100 | 100 BNB | - |
| Day 30 | 11,000 BNB | 10,000 | 100 | **110 BNB** | +10 BNB (10%) |

Your staking credit automatically appreciates as the validator earns block rewards!

### Q5: How to query total pooled BNB programmatically?

Use this JavaScript example to query a validator's total pooled BNB:

```javascript
import { ethers } from 'ethers';

const provider = new ethers.JsonRpcProvider('https://bsc-dataseed.binance.org');
const OPERATOR = '0x...'; // validator operator address

const hub = new ethers.Contract('0x0000000000000000000000000000000000002002',
['function getValidatorCreditContract(address) view returns (address)'], provider);

const creditAddr = await hub.getValidatorCreditContract(OPERATOR);
const credit = new ethers.Contract(creditAddr,
['function getPooledBNB(address) view returns (uint256)'], provider);

const bnb = await credit.getPooledBNB(OPERATOR);
console.log('Pooled BNB:', ethers.formatEther(bnb));
```