Architecture
Rewards Architecture
Rewards Architecture
All staking rewards on Starknet are paid in STRK, regardless of which asset is staked.
Reward Flow
User stakes wBTC --> VaubanManager --> BTC Pool
|
Rewards = STRK (not wBTC)
|
Claim --> User receives STRK
Restake --> STRK goes to STRK pool (not back to BTC pool)Product Types
| Product | Reward Type | Compound Behavior |
|---|---|---|
| vaSTRK | Auto (exchange rate increases) | Automatic |
| vaBTC | STRK rewards | Manual claim or restake |
| Native STRK | STRK | Claim or restake |
| Native BTC | STRK | Claim or restake to STRK pool |
Fee Structure
| Action | Fee | Rationale |
|---|---|---|
| Claim rewards | 5% | Protocol revenue |
| Restake / compound | 0% | Incentivize compounding |
| Vault compound (caller) | 0.1% incentive | Reward compound callers |
Reward Distribution (Synthetix Pattern)
The contract uses the Synthetix reward-per-token pattern (V2.8) for accurate pro-rata distribution:
reward_per_token = stored_reward_per_token + (new_rewards * 1e18 / total_staked)
user_earned = user_staked * (reward_per_token - user_paid_per_token) / 1e18This ensures fair distribution even with frequent stake/unstake operations.
Critical: USD Calculation
When displaying rewards in USD, always multiply by STRK price, not the staked asset's price:
// CORRECT
rewardsUSD = rewards * strkPrice;
// WRONG -- would show BTC price for STRK rewards
rewardsUSD = rewards * assetPrice;