A “position” = one stake account per role
Each wallet has one position per role — a Program-Derived Address (PDA) seeded by your wallet and the role:| Field | Meaning |
|---|---|
amount | $SGL currently staked in this position |
status | active, unstaking, or slashed |
staked_at | When the position was opened |
unlock_at | Absolute time you can withdraw (set when you unstake) |
reward_per_token_paid | Your USDC reward checkpoint |
sgl_reward_per_token_paid | Your $SGL reward checkpoint |
The vaults
Staked tokens never sit in a wallet the platform controls. They live in program-owned vaults whose authority is a PDA, so only the program can move them — and only back to you:| Vault | Holds |
|---|---|
| Stake vault | All staked $SGL principal |
| Reward vault (USDC) | USDC rewards waiting to be claimed |
| Reward vault ($SGL) | $SGL rewards waiting to be claimed |
| Penalty vault | Slashed $SGL (tamper penalties), pending burn |
Config
A singleStakingConfig account holds the live parameters — minimums, cooldowns, and the authority keys. These are adjustable on-chain (no redeploy), so the network can tune economics over time. The current values are listed on each Staker Type page.